class AdLint::Cc1::SyntaxNode

DESCRIPTION

SyntaxNode class hierarchy

SyntaxNode
  <-- Expression
        <-- ErrorExpression
        <-- PrimaryExpression
              <-- ObjectSpecifier
              <-- ConstantSpecifier
              <-- StringLiteralSpecifier
              <-- NullConstantSpecifier
              <-- GroupedExpression
        <-- PostfixExpression
              <-- ArraySubscriptExpression
              <-- FunctionCallExpression
              <-- MemberAccessByValueExpression
              <-- MemberAccessByPointerExpression
              <-- BitAccessByValueExpression
              <-- BitAccessByPointerExpression
              <-- PostfixIncrementExpression
              <-- PostfixDecrementExpression
              <-- CompoundLiteralExpression
        <-- UnaryExpression
              <-- PrefixIncrementExpression
              <-- PrefixDecrementExpression
              <-- AddressExpression
              <-- IndirectionExpression
              <-- UnaryArithmeticExpression
              <-- SizeofExpression
              <-- SizeofTypeExpression
              <-- AlignofExpression
              <-- AlignofTypeExpression
        <-- CastExpression
        <-- BinaryExpression
              <-- MultiplicativeExpression
              <-- AdditiveExpression
              <-- ShiftExpression
              <-- RelationalExpression
              <-- EqualityExpression
              <-- AndExpression
              <-- ExclusiveOrExpression
              <-- InclusiveOrExpression
              <-- LogicalAndExpression
              <-- LogicalOrExpression
              <-- ConditionalExpression
              <-- SimpleAssignmentExpression
              <-- CompoundAssignmentExpression
        <-- CommaSeparatedExpression
  <-- Declaration
  <-- FunctionDeclaration -------------------- SymbolicElement <<module>>
  <-- VariableDeclaration ----------------------+  |  |  |  |
  <-- Definition                                   |  |  |  |
        <-- VariableDefinition --------------------+  |  |  |
              <-- PseudoVariableDefinition            |  |  |
        <-- FunctionDefinition -----------------------+  |  |
              <-- KandRFunctionDefinition                |  |
              <-- AnsiFunctionDefinition                 |  |
        <-- ParameterDefinition                          |  |
  <-- TypeDeclaration -----------------------------------+  |
        <-- TypedefDeclaration                              |
        <-- StructTypeDeclaration                           |
              <-- PseudoStructTypeDeclaration               |
        <-- UnionTypeDeclaration                            |
              <-- PseudoUnionTypeDeclaration                |
        <-- EnumTypeDeclaration                             |
              <-- PseudoEnumTypeDeclaration                 |
  <-- DeclarationSpecifiers                                 |
  <-- InitDeclarator                                        |
  <-- TypeSpecifier                                         |
        <-- StandardTypeSpecifier                           |
        <-- TypedefTypeSpecifier                            |
        <-- StructSpecifier                                 |
        <-- UnionSpecifier                                  |
        <-- TypeofTypeSpecifier                             |
  <-- StructDeclaration                                     |
  <-- MemberDeclaration                                     |
  <-- SpecifierQualifierList                                |
  <-- StructDeclarator                                      |
  <-- EnumSpecifier                                         |
  <-- Enumerator -------------------------------------------+
  <-- Declarator
        <-- IdentifierDeclarator
        <-- GroupedDeclarator
        <-- ArrayDeclarator
        <-- FunctionDeclarator
              <-- AnsiFunctionDeclarator
              <-- KandRFunctionDeclarator
              <-- AbbreviatedFunctionDeclarator
        <-- AbstractDeclarator
              <-- PointerAbstractDeclarator
              <-- GroupedAbstractDeclarator
              <-- ArrayAbstractDeclarator
              <-- FunctionAbstractDeclarator
  <-- ParameterTypeList
  <-- ParameterDeclaration
  <-- Statement
        <-- ErrorStatement
        <-- LabeledStatement
              <-- GenericLabeledStatement
              <-- CaseLabeledStatement
              <-- DefaultLabeledStatement
        <-- CompoundStatement
        <-- ExpressionStatement
        <-- SelectionStatement
              <-- IfStatement
              <-- IfElseStatement
              <-- SwitchStatement
        <-- IterationStatement
              <-- WhileStatement
              <-- DoStatement
              <-- ForStatement
              <-- C99ForStatement
        <-- JumpStatement
              <-- GotoStatement
              <-- ContinueStatement
              <-- BreakStatement
              <-- ReturnStatement
  <-- TranslationUnit
  <-- TypeName
  <-- Initializer

Attributes

head_token[RW]
subsequent_sequence_point[R]
tail_token[RW]

Public Class Methods

new() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 165
def initialize
  @head_token = nil
  @tail_token = nil
  @subsequent_sequence_point = nil
end

Public Instance Methods

head_location() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 179
def head_location
  @head_token ? @head_token.location : nil
end
inspect(indent = 0) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 187
def inspect(indent = 0)
  subclass_responsibility
end
location() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 175
def location
  subclass_responsibility
end
short_class_name() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 191
def short_class_name
  self.class.name.sub(/\A.*::/, "")
end
tail_location() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 183
def tail_location
  @tail_token ? @tail_token.location : nil
end

Protected Instance Methods

append_sequence_point!() click to toggle source

DESCRIPTION

Append a subsequent sequence-point of this node.

# File lib/adlint/cc1/syntax.rb, line 198
def append_sequence_point!
  @subsequent_sequence_point = SequencePoint.new(self)
end
delete_sequence_point!() click to toggle source

DESCRIPTION

Delete a subsequent sequence-point of this node.

# File lib/adlint/cc1/syntax.rb, line 204
def delete_sequence_point!
  @subsequent_sequence_point = nil
end