absyntax_utils/search_base_type.cc
changeset 1045 428e0748b5cd
parent 1016 91bef6704b44
equal deleted inserted replaced
1044:519a30dbf96c 1045:428e0748b5cd
   253     this->current_equivtype = symbol;
   253     this->current_equivtype = symbol;
   254   return symbol->integer_type_name->accept(*this);
   254   return symbol->integer_type_name->accept(*this);
   255 }
   255 }
   256 
   256 
   257 /*  signed_integer DOTDOT signed_integer */
   257 /*  signed_integer DOTDOT signed_integer */
   258 void *search_base_type_c::visit(subrange_c *symbol)                                     {ERROR; return NULL;} /* should never get called... */
   258 void *search_base_type_c::visit(subrange_c *symbol)                           {ERROR; return NULL;} /* should never get called... */
   259 
   259 
   260 /*  enumerated_type_name ':' enumerated_spec_init */
   260 /*  enumerated_type_name ':' enumerated_spec_init */
   261 void *search_base_type_c::visit(enumerated_type_declaration_c *symbol) {
   261 void *search_base_type_c::visit(enumerated_type_declaration_c *symbol) {
   262   this->current_basetype_name = symbol->enumerated_type_name;
   262   this->current_basetype_name = symbol->enumerated_type_name;
   263   /* NOTE: We want search_base_type_c to return a enumerated_type_declaration_c as the base datatpe if possible
   263   /* NOTE: We want search_base_type_c to return a enumerated_type_declaration_c as the base datatpe if possible
   291   return (void *)current_basetype;
   291   return (void *)current_basetype;
   292 }
   292 }
   293 
   293 
   294 /* enumerated_type_name '#' identifier */
   294 /* enumerated_type_name '#' identifier */
   295 // SYM_REF2(enumerated_value_c, type, value)
   295 // SYM_REF2(enumerated_value_c, type, value)
   296 void *search_base_type_c::visit(enumerated_value_c *symbol)                             {ERROR; return NULL;} /* should never get called... */
   296 void *search_base_type_c::visit(enumerated_value_c *symbol)                   {ERROR; return NULL;} /* should never get called... */
   297 
   297 
   298 /*  identifier ':' array_spec_init */
   298 /*  identifier ':' array_spec_init */
   299 void *search_base_type_c::visit(array_type_declaration_c *symbol) {
   299 void *search_base_type_c::visit(array_type_declaration_c *symbol) {
   300   this->current_basetype_name = symbol->identifier;
   300   this->current_basetype_name = symbol->identifier;
   301   return symbol->array_spec_init->accept(*this);
   301   return symbol->array_spec_init->accept(*this);
   310    */  
   310    */  
   311   return symbol->array_specification->accept(*this);
   311   return symbol->array_specification->accept(*this);
   312 }
   312 }
   313 
   313 
   314 /* ARRAY '[' array_subrange_list ']' OF non_generic_type_name */
   314 /* ARRAY '[' array_subrange_list ']' OF non_generic_type_name */
   315 void *search_base_type_c::visit(array_specification_c *symbol)                          {return (void *)symbol;}
   315 void *search_base_type_c::visit(array_specification_c *symbol)                {return (void *)symbol;}
   316 
   316 
   317 /* helper symbol for array_specification */
   317 /* helper symbol for array_specification */
   318 /* array_subrange_list ',' subrange */
   318 /* array_subrange_list ',' subrange */
   319 void *search_base_type_c::visit(array_subrange_list_c *symbol)                          {ERROR; return NULL;} /* should never get called... */
   319 void *search_base_type_c::visit(array_subrange_list_c *symbol)                {ERROR; return NULL;} /* should never get called... */
   320 
   320 
   321 /* array_initialization:  '[' array_initial_elements_list ']' */
   321 /* array_initialization:  '[' array_initial_elements_list ']' */
   322 /* helper symbol for array_initialization */
   322 /* helper symbol for array_initialization */
   323 /* array_initial_elements_list ',' array_initial_elements */
   323 /* array_initial_elements_list ',' array_initial_elements */
   324 void *search_base_type_c::visit(array_initial_elements_list_c *symbol)                  {ERROR; return NULL;} /* should never get called... */
   324 void *search_base_type_c::visit(array_initial_elements_list_c *symbol)        {ERROR; return NULL;} /* should never get called... */
   325 
   325 
   326 /* integer '(' [array_initial_element] ')' */
   326 /* integer '(' [array_initial_element] ')' */
   327 /* array_initial_element may be NULL ! */
   327 /* array_initial_element may be NULL ! */
   328 void *search_base_type_c::visit(array_initial_elements_c *symbol)                       {ERROR; return NULL;} /* should never get called... */
   328 void *search_base_type_c::visit(array_initial_elements_c *symbol)             {ERROR; return NULL;} /* should never get called... */
   329 
   329 
   330 /*  structure_type_name ':' structure_specification */
   330 /*  structure_type_name ':' structure_specification */
   331 /* NOTE: structure_specification will point to either a
   331 /* NOTE: structure_specification will point to either a
   332  *       initialized_structure_c
   332  *       initialized_structure_c
   333  *       OR A
   333  *       OR A
   337   this->current_basetype_name = symbol->structure_type_name;
   337   this->current_basetype_name = symbol->structure_type_name;
   338   return symbol->structure_specification->accept(*this);
   338   return symbol->structure_specification->accept(*this);
   339 }
   339 }
   340 
   340 
   341 /*  var1_list ':' structure_type_name */
   341 /*  var1_list ':' structure_type_name */
   342 void *search_base_type_c::visit(structured_var_declaration_c *symbol) {
   342 void *search_base_type_c::visit(structured_var_declaration_c *symbol)         {return symbol;}
   343 	return symbol;
       
   344 }
       
   345 
   343 
   346 /* structure_type_name ASSIGN structure_initialization */
   344 /* structure_type_name ASSIGN structure_initialization */
   347 /* structure_initialization may be NULL ! */
   345 /* structure_initialization may be NULL ! */
   348 void *search_base_type_c::visit(initialized_structure_c *symbol)	{
   346 void *search_base_type_c::visit(initialized_structure_c *symbol)              {return symbol->structure_type_name->accept(*this);}
   349   return symbol->structure_type_name->accept(*this);
       
   350 }
       
   351 
   347 
   352 /* helper symbol for structure_declaration */
   348 /* helper symbol for structure_declaration */
   353 /* structure_declaration:  STRUCT structure_element_declaration_list END_STRUCT */
   349 /* structure_declaration:  STRUCT structure_element_declaration_list END_STRUCT */
   354 /* structure_element_declaration_list structure_element_declaration ';' */
   350 /* structure_element_declaration_list structure_element_declaration ';' */
   355 void *search_base_type_c::visit(structure_element_declaration_list_c *symbol)           {return (void *)symbol;}
   351 void *search_base_type_c::visit(structure_element_declaration_list_c *symbol) {return (void *)symbol;}
   356 
   352 
   357 /*  structure_element_name ':' *_spec_init */
   353 /*  structure_element_name ':' *_spec_init */
   358 void *search_base_type_c::visit(structure_element_declaration_c *symbol)                {ERROR; return NULL;} /* should never get called... */
   354 void *search_base_type_c::visit(structure_element_declaration_c *symbol)      {return symbol->spec_init->accept(*this);}
   359 
   355 
   360 /* helper symbol for structure_initialization */
   356 /* helper symbol for structure_initialization */
   361 /* structure_initialization: '(' structure_element_initialization_list ')' */
   357 /* structure_initialization: '(' structure_element_initialization_list ')' */
   362 /* structure_element_initialization_list ',' structure_element_initialization */
   358 /* structure_element_initialization_list ',' structure_element_initialization */
   363 void *search_base_type_c::visit(structure_element_initialization_list_c *symbol)        {ERROR; return NULL;} /* should never get called... */
   359 void *search_base_type_c::visit(structure_element_initialization_list_c *symbol) {ERROR; return NULL;} /* should never get called... */
   364 
   360 
   365 /*  structure_element_name ASSIGN value */
   361 /*  structure_element_name ASSIGN value */
   366 void *search_base_type_c::visit(structure_element_initialization_c *symbol)             {ERROR; return NULL;} /* should never get called... */
   362 void *search_base_type_c::visit(structure_element_initialization_c *symbol)   {ERROR; return NULL;} /* should never get called... */
   367 
   363 
   368 /*  string_type_name ':' elementary_string_type_name string_type_declaration_size string_type_declaration_init */
   364 /*  string_type_name ':' elementary_string_type_name string_type_declaration_size string_type_declaration_init */
   369 /*
   365 /*
   370 SYM_REF4(string_type_declaration_c,	string_type_name,
   366 SYM_REF4(string_type_declaration_c,	string_type_name,
   371 					elementary_string_type_name,
   367 					elementary_string_type_name,
   372 					string_type_declaration_size,
   368 					string_type_declaration_size,
   373 					string_type_declaration_init) // may be == NULL!
   369 					string_type_declaration_init) // may be == NULL!
   374 */
   370 */
   375 void *search_base_type_c::visit(string_type_declaration_c *symbol)                      {return (void *)symbol;}
   371 void *search_base_type_c::visit(string_type_declaration_c *symbol)            {return (void *)symbol;}
   376 
   372 
   377 
   373 
   378 /*  function_block_type_name ASSIGN structure_initialization */
   374 /*  function_block_type_name ASSIGN structure_initialization */
   379 /* structure_initialization -> may be NULL ! */
   375 /* structure_initialization -> may be NULL ! */
   380 // SYM_REF2(fb_spec_init_c, function_block_type_name, structure_initialization)
   376 // SYM_REF2(fb_spec_init_c, function_block_type_name, structure_initialization)
   384 
   380 
   385 
   381 
   386 
   382 
   387 /* ref_spec:  REF_TO (non_generic_type_name | function_block_type_name) */
   383 /* ref_spec:  REF_TO (non_generic_type_name | function_block_type_name) */
   388 // SYM_REF1(ref_spec_c, type_name)
   384 // SYM_REF1(ref_spec_c, type_name)
   389 void *search_base_type_c::visit(ref_spec_c *symbol)                                     {return (void *)symbol;}
   385 void *search_base_type_c::visit(ref_spec_c *symbol)                           {return (void *)symbol;}
   390 
   386 
   391 /* For the moment, we do not support initialising reference data types */
   387 /* For the moment, we do not support initialising reference data types */
   392 /* ref_spec_init: ref_spec [ ASSIGN ref_initialization ]; */ 
   388 /* ref_spec_init: ref_spec [ ASSIGN ref_initialization ]; */ 
   393 /* NOTE: ref_initialization may be NULL!! */
   389 /* NOTE: ref_initialization may be NULL!! */
   394 // SYM_REF2(ref_spec_init_c, ref_spec, ref_initialization)
   390 // SYM_REF2(ref_spec_init_c, ref_spec, ref_initialization)
   395 void *search_base_type_c::visit(ref_spec_init_c *symbol) {
   391 void *search_base_type_c::visit(ref_spec_init_c *symbol)                      {return symbol->ref_spec->accept(*this);}
   396   return symbol->ref_spec->accept(*this);
       
   397 }
       
   398 
   392 
   399 /* ref_type_decl: identifier ':' ref_spec_init */
   393 /* ref_type_decl: identifier ':' ref_spec_init */
   400 // SYM_REF2(ref_type_decl_c, ref_type_name, ref_spec_init)
   394 // SYM_REF2(ref_type_decl_c, ref_type_name, ref_spec_init)
   401 void *search_base_type_c::visit(ref_type_decl_c *symbol)  {
   395 void *search_base_type_c::visit(ref_type_decl_c *symbol)  {
   402   this->current_basetype_name = symbol->ref_type_name;
   396   this->current_basetype_name = symbol->ref_type_name;
   408 /*****************************/
   402 /*****************************/
   409 /* B 1.5.2 - Function Blocks */
   403 /* B 1.5.2 - Function Blocks */
   410 /*****************************/
   404 /*****************************/
   411 /*  FUNCTION_BLOCK derived_function_block_name io_OR_other_var_declarations function_block_body END_FUNCTION_BLOCK */
   405 /*  FUNCTION_BLOCK derived_function_block_name io_OR_other_var_declarations function_block_body END_FUNCTION_BLOCK */
   412 // SYM_REF3(function_block_declaration_c, fblock_name, var_declarations, fblock_body)
   406 // SYM_REF3(function_block_declaration_c, fblock_name, var_declarations, fblock_body)
   413 void *search_base_type_c::visit(function_block_declaration_c *symbol)                   {
   407 void *search_base_type_c::visit(function_block_declaration_c *symbol)         {return (void *)symbol;}
   414 	return (void *)symbol;
       
   415 }
       
   416 
   408 
   417 
   409 
   418 
   410 
   419 /*********************************************/
   411 /*********************************************/
   420 /* B.1.6  Sequential function chart elements */
   412 /* B.1.6  Sequential function chart elements */