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 */ |