diff -r fde2d08ebaee -r 96d8b6e006f0 absyntax_utils/search_base_type.hh --- a/absyntax_utils/search_base_type.hh Wed Sep 02 13:39:05 2009 +0200 +++ b/absyntax_utils/search_base_type.hh Wed Sep 02 14:05:27 2009 +0200 @@ -34,6 +34,9 @@ * new_int_t is really an INT!! * new_int2_t is also really an INT!! * new_subr_t is also really an INT!! + * + * Note that a FB declaration is also considered a base type, as + * we may have FB instances declared of a specific FB type. */ @@ -53,6 +56,27 @@ bool type_is_enumerated(symbol_c* type_decl); public: + /*********************/ + /* B 1.2 - Constants */ + /*********************/ + + /******************************/ + /* B 1.2.1 - Numeric Literals */ + /******************************/ + /* Numeric literals without any explicit type cast have unknown data type, + * so we continue considering them as their own basic data types until + * they can be resolved (for example, when using '30+x' where 'x' is a LINT variable, the + * numeric literal '30' must then be considered a LINT so the ADD function may be called + * with all inputs of the same data type. + * If 'x' were a SINT, then the '30' would have to be a SINT too! + */ + void *visit(real_c *symbol); + void *visit(integer_c *symbol); + void *visit(binary_integer_c *symbol); + void *visit(octal_integer_c *symbol); + void *visit(hex_integer_c *symbol); + + /***********************************/ /* B 1.3.1 - Elementary Data Types */ /***********************************/ @@ -77,8 +101,11 @@ void *visit(lword_type_name_c *symbol); void *visit(string_type_name_c *symbol); void *visit(wstring_type_name_c *symbol); + +/* void *visit(constant_int_type_name_c *symbol); void *visit(constant_real_type_name_c *symbol); +*/ /******************************************************/ /* Extensions to the base standard as defined in */ @@ -162,6 +189,14 @@ string_type_declaration_init) // may be == NULL! */ void *visit(string_type_declaration_c *symbol); + + /*****************************/ + /* B 1.5.2 - Function Blocks */ + /*****************************/ + /* FUNCTION_BLOCK derived_function_block_name io_OR_other_var_declarations function_block_body END_FUNCTION_BLOCK */ + // SYM_REF3(function_block_declaration_c, fblock_name, var_declarations, fblock_body) + void *visit(function_block_declaration_c *symbol); + }; // search_base_type_c