class AdLint::Exam::CBuiltin::W0707::ExpressionTransformer
Public Class Methods
new(ary_name)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 16851 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 16998 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 16958 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 16980 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 16984 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 17022 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 16883 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 16911 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 16906 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 16988 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 17071 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 17065 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 16934 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 17052 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 16867 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 17016 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 16855 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 17028 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 16889 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 16879 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 17034 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 16962 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 17078 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 17040 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 17046 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 16901 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 16896 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 16992 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 16875 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 16859 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 16925 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 16916 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 16949 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 16940 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 17010 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 17004 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 17059 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 16972 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 16976 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 16871 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 16967 def visit_unary_arithmetic_expression(node) Cc1::UnaryArithmeticExpression.new( node.operator, node.operand.accept(self)) end