stage4/generate_c/type_initial_value.cc
changeset 98 d0cdf1d00b74
parent 70 e1f0ebd2d9ec
child 160 59d58f5e6caa
equal deleted inserted replaced
97:55ffcf693d6d 98:d0cdf1d00b74
   190       return handle_type_spec(symbol->subrange_specification, symbol->signed_integer);
   190       return handle_type_spec(symbol->subrange_specification, symbol->signed_integer);
   191     }
   191     }
   192 /*  integer_type_name '(' subrange')' */
   192 /*  integer_type_name '(' subrange')' */
   193     void *visit(subrange_specification_c *symbol) {
   193     void *visit(subrange_specification_c *symbol) {
   194      /* if no initial value explicitly given, then use the lowest value of the subrange */
   194      /* if no initial value explicitly given, then use the lowest value of the subrange */
   195       return symbol->subrange->accept(*this);
   195       if (symbol->subrange != NULL)
       
   196         return symbol->subrange->accept(*this);
       
   197       else
       
   198         return symbol->integer_type_name->accept(*this);
   196     }
   199     }
   197 /*  signed_integer DOTDOT signed_integer */
   200 /*  signed_integer DOTDOT signed_integer */
   198     void *visit(subrange_c *symbol)	{return symbol->lower_limit;}
   201     void *visit(subrange_c *symbol)	{return symbol->lower_limit;}
   199 /*  enumerated_type_name ':' enumerated_spec_init */
   202 /*  enumerated_type_name ':' enumerated_spec_init */
   200     void *visit(enumerated_type_declaration_c *symbol) {
   203     void *visit(enumerated_type_declaration_c *symbol) {
   251 	// NOTE: We are leaking memory, as the array_initial_elements will never get free'd!!
   254 	// NOTE: We are leaking memory, as the array_initial_elements will never get free'd!!
   252       array_initial_elements_c *array_initial_elements = new array_initial_elements_c(integer, init_value);
   255       array_initial_elements_c *array_initial_elements = new array_initial_elements_c(integer, init_value);
   253 	// NOTE: We are leaking memory, as the array_initial_elements_list will never get free'd!!
   256 	// NOTE: We are leaking memory, as the array_initial_elements_list will never get free'd!!
   254       array_initial_elements_list_c *array_initial_elements_list  = new array_initial_elements_list_c();
   257       array_initial_elements_list_c *array_initial_elements_list  = new array_initial_elements_list_c();
   255       array_initial_elements_list->add_element(array_initial_elements);
   258       array_initial_elements_list->add_element(array_initial_elements);
   256       return (void *)array_initial_elements_list;
   259       return array_initial_elements_list;
   257     }
   260     }
   258 /* helper symbol for array_specification */
   261 /* helper symbol for array_specification */
   259 /* array_subrange_list ',' subrange */
   262 /* array_subrange_list ',' subrange */
   260     void *visit(array_subrange_list_c *symbol)	{ERROR; return NULL;}
   263     void *visit(array_subrange_list_c *symbol)	{ERROR; return NULL;}
   261 /* array_initialization:  '[' array_initial_elements_list ']' */
   264 /* array_initialization:  '[' array_initial_elements_list ']' */