Class: AdLint::Cc1::TypeDeclarationBuilder
- Inherits:
-
Object
- Object
- AdLint::Cc1::TypeDeclarationBuilder
- Defined in:
- lib/adlint/cc1/syntax.rb
Instance Attribute Summary collapse
-
#type_declarations ⇒ Object
readonly
Returns the value of attribute type_declarations.
Instance Method Summary collapse
-
#initialize(sym_tbl) ⇒ TypeDeclarationBuilder
constructor
A new instance of TypeDeclarationBuilder.
- #visit_enum_specifier(node) ⇒ Object
- #visit_specifier_qualifier_list(node) ⇒ Object
- #visit_standard_type_specifier(node) ⇒ Object
- #visit_struct_declaration(node) ⇒ Object
- #visit_struct_specifier(node) ⇒ Object
- #visit_typedef_type_specifier(node) ⇒ Object
- #visit_typeof_type_specifier(node) ⇒ Object
- #visit_union_specifier(node) ⇒ Object
Constructor Details
#initialize(sym_tbl) ⇒ TypeDeclarationBuilder
Returns a new instance of TypeDeclarationBuilder.
4455 4456 4457 4458 |
# File 'lib/adlint/cc1/syntax.rb', line 4455 def initialize(sym_tbl) @symbol_table = sym_tbl @type_declarations = [] end |
Instance Attribute Details
#type_declarations ⇒ Object (readonly)
Returns the value of attribute type_declarations.
4460 4461 4462 |
# File 'lib/adlint/cc1/syntax.rb', line 4460 def type_declarations @type_declarations end |
Instance Method Details
#visit_enum_specifier(node) ⇒ Object
4484 4485 4486 4487 4488 4489 |
# File 'lib/adlint/cc1/syntax.rb', line 4484 def visit_enum_specifier(node) if node.enumerators sym = @symbol_table.create_new_symbol(EnumTag, node.identifier) @type_declarations.push(EnumTypeDeclaration.new(node, sym)) end end |
#visit_specifier_qualifier_list(node) ⇒ Object
4498 4499 4500 |
# File 'lib/adlint/cc1/syntax.rb', line 4498 def visit_specifier_qualifier_list(node) node.type_specifiers.each { |child| child.accept(self) } end |
#visit_standard_type_specifier(node) ⇒ Object
4462 4463 |
# File 'lib/adlint/cc1/syntax.rb', line 4462 def visit_standard_type_specifier(node) end |
#visit_struct_declaration(node) ⇒ Object
4494 4495 4496 |
# File 'lib/adlint/cc1/syntax.rb', line 4494 def visit_struct_declaration(node) node.specifier_qualifier_list.accept(self) end |
#visit_struct_specifier(node) ⇒ Object
4468 4469 4470 4471 4472 4473 4474 |
# File 'lib/adlint/cc1/syntax.rb', line 4468 def visit_struct_specifier(node) if node.struct_declarations node.struct_declarations.each { |child| child.accept(self) } sym = @symbol_table.create_new_symbol(StructTag, node.identifier) @type_declarations.push(StructTypeDeclaration.new(node, sym)) end end |
#visit_typedef_type_specifier(node) ⇒ Object
4465 4466 |
# File 'lib/adlint/cc1/syntax.rb', line 4465 def visit_typedef_type_specifier(node) end |
#visit_typeof_type_specifier(node) ⇒ Object
4491 4492 |
# File 'lib/adlint/cc1/syntax.rb', line 4491 def visit_typeof_type_specifier(node) end |
#visit_union_specifier(node) ⇒ Object
4476 4477 4478 4479 4480 4481 4482 |
# File 'lib/adlint/cc1/syntax.rb', line 4476 def visit_union_specifier(node) if node.struct_declarations node.struct_declarations.each { |child| child.accept(self) } sym = @symbol_table.create_new_symbol(UnionTag, node.identifier) @type_declarations.push(UnionTypeDeclaration.new(node, sym)) end end |