class AdLint::Cc1::Expression

Public Class Methods

new() click to toggle source
Calls superclass method AdLint::Cc1::SyntaxNode::new
# File lib/adlint/cc1/syntax.rb, line 456
def initialize
  super
  @full = false
end

Public Instance Methods

arithmetic?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 494
def arithmetic?
  subclass_responsibility
end
bitwise?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 498
def bitwise?
  subclass_responsibility
end
constant?(interp_bridge) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 486
def constant?(interp_bridge)
  ExpressionConstancy.new(interp_bridge).check(self)
end
full=(expr_is_full) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 461
def full=(expr_is_full)
  @full = expr_is_full

  # NOTE: The ISO C99 standard says;
  #
  # Annex C (informative) Sequence points
  #
  # 1 The following are the sequence points described in 5.1.2.3:
  #
  #   -- The end of a full expression: an initializer (6.7.8); the
  #      expression in an expression statement (6.8.3); the controlling
  #      expression of a while or do statement (6.8.5); each of the
  #      expressions of a for statement (6.8.5.3); the expression in a
  #      return statement (6.8.6.4).
  if expr_is_full
    append_sequence_point!
  else
    delete_sequence_point!
  end
end
have_side_effect?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 482
def have_side_effect?
  subclass_responsibility
end
logical?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 490
def logical?
  subclass_responsibility
end
object_specifiers() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 502
def object_specifiers
  ObjectSpecifierCollector.new.tap { |col|
    self.accept(col)
  }.object_specifiers
end
to_complemental_logical() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 512
def to_complemental_logical
  # NOTE: This method must be invoked on a normalized expression.
  subclass_responsibility
end
to_normalized_logical(parent_expr = nil) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 508
def to_normalized_logical(parent_expr = nil)
  subclass_responsibility
end
to_s() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 517
def to_s
  subclass_responsibility
end

Private Instance Methods

create_normalized_logical_of(expr) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 522
def create_normalized_logical_of(expr)
  EqualityExpression.new(Token.new("!=", "!=", expr.location),
                         GroupedExpression.new(expr),
                         ConstantSpecifier.of_zero(expr.location))
end