class AdLint::Cc1::CommaSeparatedExpression

Attributes

expressions[R]

Public Class Methods

new(fst_expr) click to toggle source
Calls superclass method AdLint::Cc1::Expression::new
# File lib/adlint/cc1/syntax.rb, line 2200
def initialize(fst_expr)
  super()
  @expressions = []
  push(fst_expr)
end

Public Instance Methods

arithmetic?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2220
def arithmetic?
  @expressions.last.arithmetic?
end
bitwise?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2224
def bitwise?
  @expressions.last.bitwise?
end
have_side_effect?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2212
def have_side_effect?
  @expressions.any? { |expr| expr.have_side_effect? }
end
inspect(indent = 0) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2265
def inspect(indent = 0)
  " " * indent + "#{short_class_name}\n" +
    @expressions.map { |expr| expr.inspect(indent + 1) }.join("\n")
end
location() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2208
def location
  head_location
end
logical?() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2216
def logical?
  @expressions.last.logical?
end
push(expr) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2245
def push(expr)
  self.head_token = expr.head_token if @expressions.empty?
  @expressions.push(expr)
  self.tail_token = expr.tail_token

  # NOTE: The ISO C99 standard says;
  #
  # 6.5.17 Comma operator
  #
  # Semantics
  #
  # 2 The left operand of a comma operator is evaluated as a void
  #   expression; there is a sequence point after its evaluation.  Then the
  #   right operand is evaluated; the result has its type and value.  If an
  #   attempt is made to modify the result of a comma operator or to access
  #   it after the next sequence point, the behavior is undefined.
  @expressions[-2].append_sequence_point! if @expressions.size > 1
  self
end
to_complemental_logical() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2237
def to_complemental_logical
  @expressions.last.to_complemental_logical
end
to_normalized_logical(parent_expr = nil) click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2228
def to_normalized_logical(parent_expr = nil)
  case parent_expr
  when nil, LogicalAndExpression, LogicalOrExpression
    create_normalized_logical_of(@expressions.last)
  else
    self
  end
end
to_s() click to toggle source
# File lib/adlint/cc1/syntax.rb, line 2241
def to_s
  @expressions.map { |expr| expr.to_s }.join(",")
end