| Current File : //proc/self/root/proc/self/root/proc/self/root/opt/alt/ruby34/share/ruby/prism/compiler.rb |
# frozen_string_literal: true
# :markup: markdown
=begin
--
This file is generated by the templates/template.rb script and should not be
modified manually. See templates/lib/prism/compiler.rb.erb
if you are looking to modify the template
++
=end
module Prism
# A compiler is a visitor that returns the value of each node as it visits.
# This is as opposed to a visitor which will only walk the tree. This can be
# useful when you are trying to compile a tree into a different format.
#
# For example, to build a representation of the tree as s-expressions, you
# could write:
#
# class SExpressions < Prism::Compiler
# def visit_arguments_node(node) = [:arguments, super]
# def visit_call_node(node) = [:call, super]
# def visit_integer_node(node) = [:integer]
# def visit_program_node(node) = [:program, super]
# end
#
# Prism.parse("1 + 2").value.accept(SExpressions.new)
# # => [:program, [[[:call, [[:integer], [:arguments, [[:integer]]]]]]]]
#
class Compiler < Visitor
# Visit an individual node.
def visit(node)
node&.accept(self)
end
# Visit a list of nodes.
def visit_all(nodes)
nodes.map { |node| node&.accept(self) }
end
# Visit the child nodes of the given node.
def visit_child_nodes(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a AliasGlobalVariableNode node
def visit_alias_global_variable_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a AliasMethodNode node
def visit_alias_method_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a AlternationPatternNode node
def visit_alternation_pattern_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a AndNode node
def visit_and_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ArgumentsNode node
def visit_arguments_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ArrayNode node
def visit_array_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ArrayPatternNode node
def visit_array_pattern_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a AssocNode node
def visit_assoc_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a AssocSplatNode node
def visit_assoc_splat_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BackReferenceReadNode node
def visit_back_reference_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BeginNode node
def visit_begin_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BlockArgumentNode node
def visit_block_argument_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BlockLocalVariableNode node
def visit_block_local_variable_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BlockNode node
def visit_block_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BlockParameterNode node
def visit_block_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BlockParametersNode node
def visit_block_parameters_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a BreakNode node
def visit_break_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CallAndWriteNode node
def visit_call_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CallNode node
def visit_call_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CallOperatorWriteNode node
def visit_call_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CallOrWriteNode node
def visit_call_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CallTargetNode node
def visit_call_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CapturePatternNode node
def visit_capture_pattern_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CaseMatchNode node
def visit_case_match_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a CaseNode node
def visit_case_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassNode node
def visit_class_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassVariableAndWriteNode node
def visit_class_variable_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassVariableOperatorWriteNode node
def visit_class_variable_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassVariableOrWriteNode node
def visit_class_variable_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassVariableReadNode node
def visit_class_variable_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassVariableTargetNode node
def visit_class_variable_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ClassVariableWriteNode node
def visit_class_variable_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantAndWriteNode node
def visit_constant_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantOperatorWriteNode node
def visit_constant_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantOrWriteNode node
def visit_constant_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantPathAndWriteNode node
def visit_constant_path_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantPathNode node
def visit_constant_path_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantPathOperatorWriteNode node
def visit_constant_path_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantPathOrWriteNode node
def visit_constant_path_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantPathTargetNode node
def visit_constant_path_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantPathWriteNode node
def visit_constant_path_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantReadNode node
def visit_constant_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantTargetNode node
def visit_constant_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ConstantWriteNode node
def visit_constant_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a DefNode node
def visit_def_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a DefinedNode node
def visit_defined_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ElseNode node
def visit_else_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a EmbeddedStatementsNode node
def visit_embedded_statements_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a EmbeddedVariableNode node
def visit_embedded_variable_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a EnsureNode node
def visit_ensure_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a FalseNode node
def visit_false_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a FindPatternNode node
def visit_find_pattern_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a FlipFlopNode node
def visit_flip_flop_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a FloatNode node
def visit_float_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ForNode node
def visit_for_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ForwardingArgumentsNode node
def visit_forwarding_arguments_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ForwardingParameterNode node
def visit_forwarding_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ForwardingSuperNode node
def visit_forwarding_super_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a GlobalVariableAndWriteNode node
def visit_global_variable_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a GlobalVariableOperatorWriteNode node
def visit_global_variable_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a GlobalVariableOrWriteNode node
def visit_global_variable_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a GlobalVariableReadNode node
def visit_global_variable_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a GlobalVariableTargetNode node
def visit_global_variable_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a GlobalVariableWriteNode node
def visit_global_variable_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a HashNode node
def visit_hash_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a HashPatternNode node
def visit_hash_pattern_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a IfNode node
def visit_if_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ImaginaryNode node
def visit_imaginary_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ImplicitNode node
def visit_implicit_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ImplicitRestNode node
def visit_implicit_rest_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InNode node
def visit_in_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a IndexAndWriteNode node
def visit_index_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a IndexOperatorWriteNode node
def visit_index_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a IndexOrWriteNode node
def visit_index_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a IndexTargetNode node
def visit_index_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InstanceVariableAndWriteNode node
def visit_instance_variable_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InstanceVariableOperatorWriteNode node
def visit_instance_variable_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InstanceVariableOrWriteNode node
def visit_instance_variable_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InstanceVariableReadNode node
def visit_instance_variable_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InstanceVariableTargetNode node
def visit_instance_variable_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InstanceVariableWriteNode node
def visit_instance_variable_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a IntegerNode node
def visit_integer_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InterpolatedMatchLastLineNode node
def visit_interpolated_match_last_line_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InterpolatedRegularExpressionNode node
def visit_interpolated_regular_expression_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InterpolatedStringNode node
def visit_interpolated_string_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InterpolatedSymbolNode node
def visit_interpolated_symbol_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a InterpolatedXStringNode node
def visit_interpolated_x_string_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ItLocalVariableReadNode node
def visit_it_local_variable_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ItParametersNode node
def visit_it_parameters_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a KeywordHashNode node
def visit_keyword_hash_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a KeywordRestParameterNode node
def visit_keyword_rest_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LambdaNode node
def visit_lambda_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LocalVariableAndWriteNode node
def visit_local_variable_and_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LocalVariableOperatorWriteNode node
def visit_local_variable_operator_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LocalVariableOrWriteNode node
def visit_local_variable_or_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LocalVariableReadNode node
def visit_local_variable_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LocalVariableTargetNode node
def visit_local_variable_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a LocalVariableWriteNode node
def visit_local_variable_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MatchLastLineNode node
def visit_match_last_line_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MatchPredicateNode node
def visit_match_predicate_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MatchRequiredNode node
def visit_match_required_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MatchWriteNode node
def visit_match_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MissingNode node
def visit_missing_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ModuleNode node
def visit_module_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MultiTargetNode node
def visit_multi_target_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a MultiWriteNode node
def visit_multi_write_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a NextNode node
def visit_next_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a NilNode node
def visit_nil_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a NoKeywordsParameterNode node
def visit_no_keywords_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a NumberedParametersNode node
def visit_numbered_parameters_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a NumberedReferenceReadNode node
def visit_numbered_reference_read_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a OptionalKeywordParameterNode node
def visit_optional_keyword_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a OptionalParameterNode node
def visit_optional_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a OrNode node
def visit_or_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ParametersNode node
def visit_parameters_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ParenthesesNode node
def visit_parentheses_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a PinnedExpressionNode node
def visit_pinned_expression_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a PinnedVariableNode node
def visit_pinned_variable_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a PostExecutionNode node
def visit_post_execution_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a PreExecutionNode node
def visit_pre_execution_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ProgramNode node
def visit_program_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RangeNode node
def visit_range_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RationalNode node
def visit_rational_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RedoNode node
def visit_redo_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RegularExpressionNode node
def visit_regular_expression_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RequiredKeywordParameterNode node
def visit_required_keyword_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RequiredParameterNode node
def visit_required_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RescueModifierNode node
def visit_rescue_modifier_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RescueNode node
def visit_rescue_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RestParameterNode node
def visit_rest_parameter_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a RetryNode node
def visit_retry_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ReturnNode node
def visit_return_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SelfNode node
def visit_self_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a ShareableConstantNode node
def visit_shareable_constant_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SingletonClassNode node
def visit_singleton_class_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SourceEncodingNode node
def visit_source_encoding_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SourceFileNode node
def visit_source_file_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SourceLineNode node
def visit_source_line_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SplatNode node
def visit_splat_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a StatementsNode node
def visit_statements_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a StringNode node
def visit_string_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SuperNode node
def visit_super_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a SymbolNode node
def visit_symbol_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a TrueNode node
def visit_true_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a UndefNode node
def visit_undef_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a UnlessNode node
def visit_unless_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a UntilNode node
def visit_until_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a WhenNode node
def visit_when_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a WhileNode node
def visit_while_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a XStringNode node
def visit_x_string_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
# Compile a YieldNode node
def visit_yield_node(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end
end
end