diff -r 0c2ef191b22a -r d48f53715f77 absyntax_utils/search_varfb_instance_type.hh --- a/absyntax_utils/search_varfb_instance_type.hh Wed Feb 01 13:01:08 2012 +0000 +++ b/absyntax_utils/search_varfb_instance_type.hh Wed Feb 01 19:49:11 2012 +0000 @@ -1,7 +1,7 @@ /* * matiec - a compiler for the programming languages defined in IEC 61131-3 * - * Copyright (C) 2003-2011 Mario de Sousa (msousa@fe.up.pt) + * Copyright (C) 2003-2012 Mario de Sousa (msousa@fe.up.pt) * Copyright (C) 2007-2011 Laurent Bessard and Edouard Tisserant * * This program is free software: you can redistribute it and/or modify @@ -77,28 +77,37 @@ * * Member functions: * ================ + * get_basetype_id() ---> returns 2A (implemented, although currently it is not needed! ) * get_basetype_decl() ---> returns 2B * get_type_id() ---> returns 1A * - * Since we haven't yet needed them, we don't yet implement - * get_basetype_id() ----> would return 2A - * get_type_decl() ----> would return 1B + * Since we haven't yet needed it, we don't yet implement + * get_type_decl() ---> returns 1B */ -class search_varfb_instance_type_c: public search_base_type_c { +class search_varfb_instance_type_c : null_visitor_c { private: search_var_instance_decl_c search_var_instance_decl; - decompose_var_instance_name_c *decompose_var_instance_name; - symbol_c *current_structelement_name; - symbol_c *current_typeid; - symbol_c *current_basetypeid; + search_base_type_c search_base_type; + +// symbol_c *current_type_decl; + symbol_c *current_type_id; + symbol_c *current_basetype_decl; + symbol_c *current_basetype_id; + + symbol_c *current_field_selector; + bool is_complex; + + /* sets all the above variables to NULL, or false */ + void init(void); public: search_varfb_instance_type_c(symbol_c *search_scope); symbol_c *get_basetype_decl(symbol_c *variable_name); - symbol_c *get_type_decl(symbol_c *variable_name); + symbol_c *get_basetype_id (symbol_c *variable_name); +// symbol_c *get_type_decl(symbol_c *variable_name); symbol_c *get_type_id(symbol_c *variable_name); /* NOTE: this function should be remvoed/deleted. @@ -130,12 +139,11 @@ * to be a type, unlike this class that allows a variable instance * of a function block type... */ - void *visit(identifier_c *type_name); +// void *visit(identifier_c *type_name); /********************************/ /* B 1.3.3 - Derived data types */ /********************************/ - /* identifier ':' array_spec_init */ void *visit(array_type_declaration_c *symbol); @@ -170,7 +178,20 @@ void *visit(structure_element_initialization_c *symbol); /* should never get called... */ - + /*********************/ + /* B 1.4 - Variables */ + /*********************/ + void *visit(symbolic_variable_c *symbol); + + /********************************************/ + /* B.1.4.1 Directly Represented Variables */ + /********************************************/ + /*************************************/ + /* B 1.4.2 - Multi-element variables */ + /*************************************/ + void *visit(array_variable_c *symbol); + void *visit(structured_variable_c *symbol); + /**************************************/ /* B.1.5 - Program organization units */ /**************************************/