class AdLint::Exam::CBuiltin::W0705::ExpressionTransformer
Public Class Methods
new(ary_name)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16523 def initialize(ary_name) @ary_name = ary_name end
Public Instance Methods
visit_additive_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16670 def visit_additive_expression(node) Cc1::AdditiveExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_address_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16630 def visit_address_expression(node) Cc1::AddressExpression.new(node.operator, node.operand.accept(self)) end
visit_alignof_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16652 def visit_alignof_expression(node) Cc1::AlignofExpression.new(node.operator, node.operand.accept(self)) end
visit_alignof_type_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16656 def visit_alignof_type_expression(node) node end
visit_and_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16694 def visit_and_expression(node) Cc1::AndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_array_subscript_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16555 def visit_array_subscript_expression(node) Cc1::ArraySubscriptExpression.new( node.expression.accept(self), node.array_subscript.accept(self), node.operator) end
visit_bit_access_by_pointer_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16583 def visit_bit_access_by_pointer_expression(node) Cc1::BitAccessByPointerExpression.new( node.expression.accept(self), node.constant, node.operator) end
visit_bit_access_by_value_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16578 def visit_bit_access_by_value_expression(node) Cc1::BitAccessByValueExpression.new( node.expression.accept(self), node.constant, node.operator) end
visit_cast_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16660 def visit_cast_expression(node) Cc1::CastExpression.new(node.type_name, node.operand.accept(self)) end
visit_comma_separated_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16743 def visit_comma_separated_expression(node) exprs = node.expressions.map { |expr| expr.accept(self) } transformed = Cc1::CommaSeparatedExpression.new(exprs.shift) exprs.each { |expr| transformed.expressions.push(expr) } transformed end
visit_compound_assignment_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16737 def visit_compound_assignment_expression(node) Cc1::CompoundAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_compound_literal_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16606 def visit_compound_literal_expression(node) Cc1::CompoundLiteralExpression.new( node.type_name, node.initializers.map { |init| init.accept(self) }, node.operator) end
visit_conditional_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16724 def visit_conditional_expression(node) Cc1::ConditionalExpression.new(node.condition.accept(self), node.then_expression.accept(self), node.else_expression.accept(self), Token.new("?", "?", node.location)) end
visit_constant_specifier(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16539 def visit_constant_specifier(node) node end
visit_equality_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16688 def visit_equality_expression(node) Cc1::EqualityExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_error_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16527 def visit_error_expression(node) node end
visit_exclusive_or_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16700 def visit_exclusive_or_expression(node) Cc1::ExclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_function_call_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16561 def visit_function_call_expression(node) Cc1::FunctionCallExpression.new( node.expression.accept(self), node.argument_expressions.map { |expr| expr.accept(self) }, node.operator) end
visit_grouped_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16551 def visit_grouped_expression(node) Cc1::GroupedExpression.new(node.expression.accept(self)) end
visit_inclusive_or_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16706 def visit_inclusive_or_expression(node) Cc1::InclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_indirection_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16634 def visit_indirection_expression(node) Cc1::IndirectionExpression.new( node.operator, node.operand.accept(self)) end
visit_initializer(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16750 def visit_initializer(node) case when node.expression Cc1::Initializer.new(node.expression.accept(self), nil) when node.initializers Cc1::Initializer.new( nil, node.initializers.map { |i| i.accept(self) }) end end
visit_logical_and_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16712 def visit_logical_and_expression(node) Cc1::LogicalAndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_logical_or_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16718 def visit_logical_or_expression(node) Cc1::LogicalOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_member_access_by_pointer_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16573 def visit_member_access_by_pointer_expression(node) Cc1::MemberAccessByPointerExpression.new( node.expression.accept(self), node.identifier, node.operator) end
visit_member_access_by_value_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16568 def visit_member_access_by_value_expression(node) Cc1::MemberAccessByValueExpression.new( node.expression.accept(self), node.identifier, node.operator) end
visit_multiplicative_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16664 def visit_multiplicative_expression(node) Cc1::MultiplicativeExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_null_constant_specifier(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16547 def visit_null_constant_specifier(node) node end
visit_object_specifier(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16531 def visit_object_specifier(node) if node.identifier.value == @ary_name Cc1::ConstantSpecifier.new(Token.new(:CONSTANT, "0", node.location)) else node end end
visit_postfix_decrement_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16597 def visit_postfix_decrement_expression(node) # NOTE: The postfix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end
visit_postfix_increment_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16588 def visit_postfix_increment_expression(node) # NOTE: The postfix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end
visit_prefix_decrement_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16621 def visit_prefix_decrement_expression(node) # NOTE: The prefix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end
visit_prefix_increment_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16612 def visit_prefix_increment_expression(node) # NOTE: The prefix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end
visit_relational_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16682 def visit_relational_expression(node) Cc1::RelationalExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_shift_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16676 def visit_shift_expression(node) Cc1::ShiftExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_simple_assignment_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16731 def visit_simple_assignment_expression(node) Cc1::SimpleAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end
visit_sizeof_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16644 def visit_sizeof_expression(node) Cc1::SizeofExpression.new(node.operator, node.operand.accept(self)) end
visit_sizeof_type_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16648 def visit_sizeof_type_expression(node) node end
visit_string_literal_specifier(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16543 def visit_string_literal_specifier(node) node end
visit_unary_arithmetic_expression(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16639 def visit_unary_arithmetic_expression(node) Cc1::UnaryArithmeticExpression.new( node.operator, node.operand.accept(self)) end