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 */ |