stage4/generate_c/search_var_instance_decl.cc
changeset 117 550c3bd2df16
parent 70 e1f0ebd2d9ec
equal deleted inserted replaced
116:f81527b1287b 117:550c3bd2df16
   298 /*| global_var_name location */
   298 /*| global_var_name location */
   299 //SYM_REF2(global_var_spec_c, global_var_name, location)
   299 //SYM_REF2(global_var_spec_c, global_var_name, location)
   300     void *visit(global_var_spec_c *symbol) {
   300     void *visit(global_var_spec_c *symbol) {
   301       if (symbol->global_var_name != NULL && compare_identifiers(symbol->global_var_name, search_name) == 0)
   301       if (symbol->global_var_name != NULL && compare_identifiers(symbol->global_var_name, search_name) == 0)
   302           return current_type_decl;
   302           return current_type_decl;
   303       else 
   303       else
   304         return symbol->location->accept(*this);
   304         return symbol->location->accept(*this);
   305     }
   305     }
   306 
   306 
   307 /*| global_var_list ',' global_var_name */
   307 /*| global_var_list ',' global_var_name */
   308 //SYM_LIST(global_var_list_c)
   308 //SYM_LIST(global_var_list_c)
   318 
   318 
   319 /*  [variable_name] location ':' located_var_spec_init */
   319 /*  [variable_name] location ':' located_var_spec_init */
   320 /* variable_name -> may be NULL ! */
   320 /* variable_name -> may be NULL ! */
   321 //SYM_REF4(located_var_decl_c, variable_name, location, located_var_spec_init, unused)
   321 //SYM_REF4(located_var_decl_c, variable_name, location, located_var_spec_init, unused)
   322     void *visit(located_var_decl_c *symbol) {
   322     void *visit(located_var_decl_c *symbol) {
   323       if (symbol->variable_name != NULL && compare_identifiers(symbol->variable_name, search_name) == 0) {
   323       if (symbol->variable_name != NULL && compare_identifiers(symbol->variable_name, search_name) == 0)
   324         return symbol->located_var_spec_init;
   324         return symbol->located_var_spec_init;
   325       }
   325       else {
   326       else
   326         current_type_decl = symbol->located_var_spec_init;
   327         return NULL;
   327         return symbol->location->accept(*this);
       
   328       }
   328     }
   329     }
   329 
   330 
   330 /*| global_var_spec ':' [located_var_spec_init|function_block_type_name] */
   331 /*| global_var_spec ':' [located_var_spec_init|function_block_type_name] */
   331 /* type_specification ->may be NULL ! */
   332 /* type_specification ->may be NULL ! */
   332 // SYM_REF2(global_var_decl_c, global_var_spec, type_specification)
   333 // SYM_REF2(global_var_decl_c, global_var_spec, type_specification)
   333 // TODO!!
   334 // TODO!!
   334 
   335 
   335 /*| global_var_name location */
       
   336 // SYM_REF2(global_var_spec_c, global_var_name, location)
       
   337 // TODO!!
       
   338 
       
   339 /*  AT direct_variable */
   336 /*  AT direct_variable */
   340 // SYM_REF2(location_c, direct_variable, unused)
   337 // SYM_REF2(location_c, direct_variable, unused)
   341 // TODO!!
   338     void *visit(location_c *symbol) {
   342 
   339       if (compare_identifiers(symbol->direct_variable, search_name) == 0)
       
   340         return current_type_decl;
       
   341       else
       
   342         return NULL;
       
   343     }
       
   344         
   343 /*| global_var_list ',' global_var_name */
   345 /*| global_var_list ',' global_var_name */
   344 // SYM_LIST(global_var_list_c)
   346 // SYM_LIST(global_var_list_c)
   345 // TODO!!
   347 // TODO!!
   346 
   348 
   347 /*  var1_list ':' single_byte_string_spec */
   349 /*  var1_list ':' single_byte_string_spec */