diff -r 9e8e1ba5ca46 -r 8b2a31dea131 absyntax_utils/search_base_type.cc --- a/absyntax_utils/search_base_type.cc Sun Jul 06 23:31:08 2014 +0100 +++ b/absyntax_utils/search_base_type.cc Sun Jul 13 12:26:58 2014 +0100 @@ -361,7 +361,7 @@ string_type_declaration_size, string_type_declaration_init) // may be == NULL! */ -void *search_base_type_c::visit(string_type_declaration_c *symbol) {return (void *)symbol;} +void *search_base_type_c::visit(string_type_declaration_c *symbol) {return (void *)symbol;} /* function_block_type_name ASSIGN structure_initialization */ @@ -373,6 +373,27 @@ +/* ref_spec: REF_TO (non_generic_type_name | function_block_type_name) */ +// SYM_REF1(ref_spec_c, type_name) +void *search_base_type_c::visit(ref_spec_c *symbol) {return (void *)symbol;} + +/* For the moment, we do not support initialising reference data types */ +/* ref_spec_init: ref_spec [ ASSIGN ref_initialization ]; */ +/* NOTE: ref_initialization may be NULL!! */ +// SYM_REF2(ref_spec_init_c, ref_spec, ref_initialization) +void *search_base_type_c::visit(ref_spec_init_c *symbol) { + return symbol->ref_spec->accept(*this); +} + +/* ref_type_decl: identifier ':' ref_spec_init */ +// SYM_REF2(ref_type_decl_c, ref_type_name, ref_spec_init) +void *search_base_type_c::visit(ref_type_decl_c *symbol) { + this->current_basetype_name = symbol->ref_type_name; + return symbol->ref_spec_init->accept(*this); +} + + + /*****************************/ /* B 1.5.2 - Function Blocks */ /*****************************/