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.
4474 4475 4476 4477 |
# File 'lib/adlint/cc1/syntax.rb', line 4474 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.
4479 4480 4481 |
# File 'lib/adlint/cc1/syntax.rb', line 4479 def type_declarations @type_declarations end |
Instance Method Details
#visit_enum_specifier(node) ⇒ Object
4503 4504 4505 4506 4507 4508 |
# File 'lib/adlint/cc1/syntax.rb', line 4503 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
4517 4518 4519 |
# File 'lib/adlint/cc1/syntax.rb', line 4517 def visit_specifier_qualifier_list(node) node.type_specifiers.each { |child| child.accept(self) } end |
#visit_standard_type_specifier(node) ⇒ Object
4481 4482 |
# File 'lib/adlint/cc1/syntax.rb', line 4481 def visit_standard_type_specifier(node) end |
#visit_struct_declaration(node) ⇒ Object
4513 4514 4515 |
# File 'lib/adlint/cc1/syntax.rb', line 4513 def visit_struct_declaration(node) node.specifier_qualifier_list.accept(self) end |
#visit_struct_specifier(node) ⇒ Object
4487 4488 4489 4490 4491 4492 4493 |
# File 'lib/adlint/cc1/syntax.rb', line 4487 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
4484 4485 |
# File 'lib/adlint/cc1/syntax.rb', line 4484 def visit_typedef_type_specifier(node) end |
#visit_typeof_type_specifier(node) ⇒ Object
4510 4511 |
# File 'lib/adlint/cc1/syntax.rb', line 4510 def visit_typeof_type_specifier(node) end |
#visit_union_specifier(node) ⇒ Object
4495 4496 4497 4498 4499 4500 4501 |
# File 'lib/adlint/cc1/syntax.rb', line 4495 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 |