stage3/constant_folding.hh
changeset 969 706a152731ab
parent 967 544ff4dff04f
child 973 f86d5d6bb04e
--- a/stage3/constant_folding.hh	Thu Dec 25 08:40:15 2014 +0000
+++ b/stage3/constant_folding.hh	Fri Dec 26 08:09:34 2014 +0000
@@ -61,21 +61,25 @@
     /* the current IL operand being analyzed */
     symbol_c *il_operand;
 
+
+
   public:
-	constant_folding_c(symbol_c *symbol = NULL);
-	virtual ~constant_folding_c(void);
-	int get_error_count();
-	int handle_var_extern_global_pair(symbol_c *extern_var_name, symbol_c *extern_var_decl, symbol_c *global_var_name, symbol_c *global_var_decl);
+    constant_folding_c(symbol_c *symbol = NULL);
+    virtual ~constant_folding_c(void);
+    int get_error_count();
+    int handle_var_extern_global_pair(symbol_c *extern_var_name, symbol_c *extern_var_decl, symbol_c *global_var_name, symbol_c *global_var_decl);
+    typedef std::map <std::string, const_value_c> map_values_t;
   private:
-	void *handle_var_list_decl(symbol_c *var_list, symbol_c *type_decl);
-	void *handle_var_decl     (symbol_c *var_list, bool fixed_init_value);
-	// Flag to indicate whether the variables in the variable declaration list will always have a fixed value when the POU is executed!
-	// VAR CONSTANT ... END_VAR will always be true
-	// VAR          ... END_VAR will always be true for functions (who initialise local variables every time they are called), but false for FBs and PROGRAMS
-	bool fixed_init_value_; 
-	bool function_pou_;
-	bool is_constant(symbol_c *option);
-	bool is_retain  (symbol_c *option);
+    map_values_t values;
+    void *handle_var_list_decl(symbol_c *var_list, symbol_c *type_decl);
+    void *handle_var_decl     (symbol_c *var_list, bool fixed_init_value);
+    // Flag to indicate whether the variables in the variable declaration list will always have a fixed value when the POU is executed!
+    // VAR CONSTANT ... END_VAR will always be true
+    // VAR          ... END_VAR will always be true for functions (who initialise local variables every time they are called), but false for FBs and PROGRAMS
+    bool fixed_init_value_; 
+    bool function_pou_;
+    bool is_constant(symbol_c *option);
+    bool is_retain  (symbol_c *option);
 
 
   public:
@@ -124,14 +128,16 @@
     /******************************************/
     /* B 1.4.3 - Declaration & Initialisation */
     /******************************************/
-    void *visit(var1_init_decl_c             *symbol);
     void *visit(        input_declarations_c *symbol);
     void *visit(       output_declarations_c *symbol);
     void *visit( input_output_declarations_c *symbol);
     void *visit(          var_declarations_c *symbol);
     void *visit(retentive_var_declarations_c *symbol);
     void *visit( external_var_declarations_c *symbol);
-    void *visit(external_declaration_c       *symbol);
+    void *visit(   global_var_declarations_c *symbol);
+    void *visit(  external_declaration_c     *symbol);
+    void *visit(global_var_decl_c            *symbol);
+    void *visit( var1_init_decl_c            *symbol);
 
     /**************************************/
     /* B.1.5 - Program organization units */
@@ -152,7 +158,13 @@
     /**********************/
     /* B 1.5.3 - Programs */
     /**********************/
-    void *visit(program_declaration_c *symbol);
+    void *visit(       program_declaration_c *symbol);
+
+    /********************************/
+    /* B 1.7 Configuration elements */
+    /********************************/
+    void *visit( configuration_declaration_c *symbol);
+    void *visit(      resource_declaration_c *symbol);
 
 
     /****************************************/