193 /********************************/ |
193 /********************************/ |
194 /* subrange_type_name ':' subrange_spec_init */ |
194 /* subrange_type_name ':' subrange_spec_init */ |
195 void *visit(subrange_type_declaration_c *symbol) { |
195 void *visit(subrange_type_declaration_c *symbol) { |
196 TRACE("subrange_type_declaration_c"); |
196 TRACE("subrange_type_declaration_c"); |
197 |
197 |
198 s4o_incl.print("typedef "); |
198 s4o_incl.print("__DECLARE_DERIVED_TYPE("); |
199 current_basetypedeclaration = subrangebasetype_bd; |
199 current_basetypedeclaration = subrangebasetype_bd; |
200 symbol->subrange_spec_init->accept(*this); |
200 symbol->subrange_spec_init->accept(*this); |
201 current_basetypedeclaration = none_bd; |
201 current_basetypedeclaration = none_bd; |
202 s4o_incl.print(" "); |
202 s4o_incl.print(", "); |
203 symbol->subrange_type_name->accept(*basedecl); |
203 symbol->subrange_type_name->accept(*basedecl); |
204 s4o_incl.print(";\n"); |
204 s4o_incl.print(")\n"); |
205 |
205 |
206 current_type_name = symbol->subrange_type_name; |
206 current_type_name = symbol->subrange_type_name; |
207 |
207 |
208 current_basetypedeclaration = subrangetest_bd; |
208 current_basetypedeclaration = subrangetest_bd; |
209 symbol->subrange_spec_init->accept(*this); |
209 symbol->subrange_spec_init->accept(*this); |
338 |
338 |
339 /* identifier ':' array_spec_init */ |
339 /* identifier ':' array_spec_init */ |
340 void *visit(array_type_declaration_c *symbol) { |
340 void *visit(array_type_declaration_c *symbol) { |
341 TRACE("array_type_declaration_c"); |
341 TRACE("array_type_declaration_c"); |
342 |
342 |
343 s4o_incl.print("typedef "); |
343 s4o_incl.print("__DECLARE_ARRAY_TYPE("); |
344 current_basetypedeclaration = arraybasetypeincl_bd; |
344 current_basetypedeclaration = arraybasetypeincl_bd; |
345 symbol->array_spec_init->accept(*this); |
345 symbol->array_spec_init->accept(*this); |
346 current_basetypedeclaration = none_bd; |
346 current_basetypedeclaration = none_bd; |
347 s4o_incl.print(" "); |
347 s4o_incl.print(","); |
348 symbol->identifier->accept(*basedecl); |
348 symbol->identifier->accept(*basedecl); |
|
349 s4o_incl.print(","); |
349 current_basetypedeclaration = arraysubrange_bd; |
350 current_basetypedeclaration = arraysubrange_bd; |
350 symbol->array_spec_init->accept(*this); |
351 symbol->array_spec_init->accept(*this); |
351 current_basetypedeclaration = none_bd; |
352 current_basetypedeclaration = none_bd; |
352 s4o_incl.print(";\n"); |
353 s4o_incl.print(")\n"); |
353 |
354 |
354 if (search_base_type.type_is_subrange(symbol->identifier)) { |
355 if (search_base_type.type_is_subrange(symbol->identifier)) { |
355 s4o.print("#define __CHECK_"); |
356 s4o.print("#define __CHECK_"); |
356 symbol->identifier->accept(*this); |
357 symbol->identifier->accept(*this); |
357 s4o.print(" __CHECK_"); |
358 s4o.print(" __CHECK_"); |
441 |
442 |
442 /* simple_type_name ':' simple_spec_init */ |
443 /* simple_type_name ':' simple_spec_init */ |
443 void *visit(simple_type_declaration_c *symbol) { |
444 void *visit(simple_type_declaration_c *symbol) { |
444 TRACE("simple_type_declaration_c"); |
445 TRACE("simple_type_declaration_c"); |
445 |
446 |
446 s4o_incl.print("typedef "); |
447 s4o_incl.print("__DECLARE_DERIVED_TYPE"); |
447 symbol->simple_spec_init->accept(*this); |
448 symbol->simple_spec_init->accept(*this); |
448 s4o_incl.print(" "); |
449 s4o_incl.print(","); |
449 symbol->simple_type_name->accept(*basedecl); |
450 symbol->simple_type_name->accept(*basedecl); |
450 s4o_incl.print(";\n"); |
451 s4o_incl.print(");\n"); |
451 return NULL; |
452 return NULL; |
452 } |
453 } |
453 |
454 |
454 /* simple_specification [ASSIGN constant] */ |
455 /* simple_specification [ASSIGN constant] */ |
455 //SYM_REF2(simple_spec_init_c, simple_specification, constant) |
456 //SYM_REF2(simple_spec_init_c, simple_specification, constant) |
513 /* structure_type_name ':' structure_specification */ |
514 /* structure_type_name ':' structure_specification */ |
514 //SYM_REF2(structure_type_declaration_c, structure_type_name, structure_specification) |
515 //SYM_REF2(structure_type_declaration_c, structure_type_name, structure_specification) |
515 void *visit(structure_type_declaration_c *symbol) { |
516 void *visit(structure_type_declaration_c *symbol) { |
516 TRACE("structure_type_declaration_c"); |
517 TRACE("structure_type_declaration_c"); |
517 |
518 |
518 s4o_incl.print("typedef "); |
519 s4o_incl.print("__DECLARE_STRUCT_TYPE("); |
519 symbol->structure_specification->accept(*this); |
520 symbol->structure_specification->accept(*this); |
520 s4o_incl.print(" "); |
521 s4o_incl.print(","); |
521 symbol->structure_type_name->accept(*basedecl); |
522 symbol->structure_type_name->accept(*basedecl); |
522 s4o_incl.print(";\n"); |
523 s4o_incl.print(");\n"); |
523 return NULL; |
524 return NULL; |
524 } |
525 } |
525 |
526 |
526 /* structure_type_name ASSIGN structure_initialization */ |
527 /* structure_type_name ASSIGN structure_initialization */ |
527 /* structure_initialization may be NULL ! */ |
528 /* structure_initialization may be NULL ! */ |