Class: AdLint::Cc1::TypeDeclarationBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/adlint/cc1/syntax.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_declarationsObject (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