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.



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