Your IP : 3.139.234.68
# frozen_string_literal: true
=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
# 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
alias visit_alias_global_variable_node visit_child_nodes
# Compile a AliasMethodNode node
alias visit_alias_method_node visit_child_nodes
# Compile a AlternationPatternNode node
alias visit_alternation_pattern_node visit_child_nodes
# Compile a AndNode node
alias visit_and_node visit_child_nodes
# Compile a ArgumentsNode node
alias visit_arguments_node visit_child_nodes
# Compile a ArrayNode node
alias visit_array_node visit_child_nodes
# Compile a ArrayPatternNode node
alias visit_array_pattern_node visit_child_nodes
# Compile a AssocNode node
alias visit_assoc_node visit_child_nodes
# Compile a AssocSplatNode node
alias visit_assoc_splat_node visit_child_nodes
# Compile a BackReferenceReadNode node
alias visit_back_reference_read_node visit_child_nodes
# Compile a BeginNode node
alias visit_begin_node visit_child_nodes
# Compile a BlockArgumentNode node
alias visit_block_argument_node visit_child_nodes
# Compile a BlockLocalVariableNode node
alias visit_block_local_variable_node visit_child_nodes
# Compile a BlockNode node
alias visit_block_node visit_child_nodes
# Compile a BlockParameterNode node
alias visit_block_parameter_node visit_child_nodes
# Compile a BlockParametersNode node
alias visit_block_parameters_node visit_child_nodes
# Compile a BreakNode node
alias visit_break_node visit_child_nodes
# Compile a CallAndWriteNode node
alias visit_call_and_write_node visit_child_nodes
# Compile a CallNode node
alias visit_call_node visit_child_nodes
# Compile a CallOperatorWriteNode node
alias visit_call_operator_write_node visit_child_nodes
# Compile a CallOrWriteNode node
alias visit_call_or_write_node visit_child_nodes
# Compile a CallTargetNode node
alias visit_call_target_node visit_child_nodes
# Compile a CapturePatternNode node
alias visit_capture_pattern_node visit_child_nodes
# Compile a CaseMatchNode node
alias visit_case_match_node visit_child_nodes
# Compile a CaseNode node
alias visit_case_node visit_child_nodes
# Compile a ClassNode node
alias visit_class_node visit_child_nodes
# Compile a ClassVariableAndWriteNode node
alias visit_class_variable_and_write_node visit_child_nodes
# Compile a ClassVariableOperatorWriteNode node
alias visit_class_variable_operator_write_node visit_child_nodes
# Compile a ClassVariableOrWriteNode node
alias visit_class_variable_or_write_node visit_child_nodes
# Compile a ClassVariableReadNode node
alias visit_class_variable_read_node visit_child_nodes
# Compile a ClassVariableTargetNode node
alias visit_class_variable_target_node visit_child_nodes
# Compile a ClassVariableWriteNode node
alias visit_class_variable_write_node visit_child_nodes
# Compile a ConstantAndWriteNode node
alias visit_constant_and_write_node visit_child_nodes
# Compile a ConstantOperatorWriteNode node
alias visit_constant_operator_write_node visit_child_nodes
# Compile a ConstantOrWriteNode node
alias visit_constant_or_write_node visit_child_nodes
# Compile a ConstantPathAndWriteNode node
alias visit_constant_path_and_write_node visit_child_nodes
# Compile a ConstantPathNode node
alias visit_constant_path_node visit_child_nodes
# Compile a ConstantPathOperatorWriteNode node
alias visit_constant_path_operator_write_node visit_child_nodes
# Compile a ConstantPathOrWriteNode node
alias visit_constant_path_or_write_node visit_child_nodes
# Compile a ConstantPathTargetNode node
alias visit_constant_path_target_node visit_child_nodes
# Compile a ConstantPathWriteNode node
alias visit_constant_path_write_node visit_child_nodes
# Compile a ConstantReadNode node
alias visit_constant_read_node visit_child_nodes
# Compile a ConstantTargetNode node
alias visit_constant_target_node visit_child_nodes
# Compile a ConstantWriteNode node
alias visit_constant_write_node visit_child_nodes
# Compile a DefNode node
alias visit_def_node visit_child_nodes
# Compile a DefinedNode node
alias visit_defined_node visit_child_nodes
# Compile a ElseNode node
alias visit_else_node visit_child_nodes
# Compile a EmbeddedStatementsNode node
alias visit_embedded_statements_node visit_child_nodes
# Compile a EmbeddedVariableNode node
alias visit_embedded_variable_node visit_child_nodes
# Compile a EnsureNode node
alias visit_ensure_node visit_child_nodes
# Compile a FalseNode node
alias visit_false_node visit_child_nodes
# Compile a FindPatternNode node
alias visit_find_pattern_node visit_child_nodes
# Compile a FlipFlopNode node
alias visit_flip_flop_node visit_child_nodes
# Compile a FloatNode node
alias visit_float_node visit_child_nodes
# Compile a ForNode node
alias visit_for_node visit_child_nodes
# Compile a ForwardingArgumentsNode node
alias visit_forwarding_arguments_node visit_child_nodes
# Compile a ForwardingParameterNode node
alias visit_forwarding_parameter_node visit_child_nodes
# Compile a ForwardingSuperNode node
alias visit_forwarding_super_node visit_child_nodes
# Compile a GlobalVariableAndWriteNode node
alias visit_global_variable_and_write_node visit_child_nodes
# Compile a GlobalVariableOperatorWriteNode node
alias visit_global_variable_operator_write_node visit_child_nodes
# Compile a GlobalVariableOrWriteNode node
alias visit_global_variable_or_write_node visit_child_nodes
# Compile a GlobalVariableReadNode node
alias visit_global_variable_read_node visit_child_nodes
# Compile a GlobalVariableTargetNode node
alias visit_global_variable_target_node visit_child_nodes
# Compile a GlobalVariableWriteNode node
alias visit_global_variable_write_node visit_child_nodes
# Compile a HashNode node
alias visit_hash_node visit_child_nodes
# Compile a HashPatternNode node
alias visit_hash_pattern_node visit_child_nodes
# Compile a IfNode node
alias visit_if_node visit_child_nodes
# Compile a ImaginaryNode node
alias visit_imaginary_node visit_child_nodes
# Compile a ImplicitNode node
alias visit_implicit_node visit_child_nodes
# Compile a ImplicitRestNode node
alias visit_implicit_rest_node visit_child_nodes
# Compile a InNode node
alias visit_in_node visit_child_nodes
# Compile a IndexAndWriteNode node
alias visit_index_and_write_node visit_child_nodes
# Compile a IndexOperatorWriteNode node
alias visit_index_operator_write_node visit_child_nodes
# Compile a IndexOrWriteNode node
alias visit_index_or_write_node visit_child_nodes
# Compile a IndexTargetNode node
alias visit_index_target_node visit_child_nodes
# Compile a InstanceVariableAndWriteNode node
alias visit_instance_variable_and_write_node visit_child_nodes
# Compile a InstanceVariableOperatorWriteNode node
alias visit_instance_variable_operator_write_node visit_child_nodes
# Compile a InstanceVariableOrWriteNode node
alias visit_instance_variable_or_write_node visit_child_nodes
# Compile a InstanceVariableReadNode node
alias visit_instance_variable_read_node visit_child_nodes
# Compile a InstanceVariableTargetNode node
alias visit_instance_variable_target_node visit_child_nodes
# Compile a InstanceVariableWriteNode node
alias visit_instance_variable_write_node visit_child_nodes
# Compile a IntegerNode node
alias visit_integer_node visit_child_nodes
# Compile a InterpolatedMatchLastLineNode node
alias visit_interpolated_match_last_line_node visit_child_nodes
# Compile a InterpolatedRegularExpressionNode node
alias visit_interpolated_regular_expression_node visit_child_nodes
# Compile a InterpolatedStringNode node
alias visit_interpolated_string_node visit_child_nodes
# Compile a InterpolatedSymbolNode node
alias visit_interpolated_symbol_node visit_child_nodes
# Compile a InterpolatedXStringNode node
alias visit_interpolated_x_string_node visit_child_nodes
# Compile a KeywordHashNode node
alias visit_keyword_hash_node visit_child_nodes
# Compile a KeywordRestParameterNode node
alias visit_keyword_rest_parameter_node visit_child_nodes
# Compile a LambdaNode node
alias visit_lambda_node visit_child_nodes
# Compile a LocalVariableAndWriteNode node
alias visit_local_variable_and_write_node visit_child_nodes
# Compile a LocalVariableOperatorWriteNode node
alias visit_local_variable_operator_write_node visit_child_nodes
# Compile a LocalVariableOrWriteNode node
alias visit_local_variable_or_write_node visit_child_nodes
# Compile a LocalVariableReadNode node
alias visit_local_variable_read_node visit_child_nodes
# Compile a LocalVariableTargetNode node
alias visit_local_variable_target_node visit_child_nodes
# Compile a LocalVariableWriteNode node
alias visit_local_variable_write_node visit_child_nodes
# Compile a MatchLastLineNode node
alias visit_match_last_line_node visit_child_nodes
# Compile a MatchPredicateNode node
alias visit_match_predicate_node visit_child_nodes
# Compile a MatchRequiredNode node
alias visit_match_required_node visit_child_nodes
# Compile a MatchWriteNode node
alias visit_match_write_node visit_child_nodes
# Compile a MissingNode node
alias visit_missing_node visit_child_nodes
# Compile a ModuleNode node
alias visit_module_node visit_child_nodes
# Compile a MultiTargetNode node
alias visit_multi_target_node visit_child_nodes
# Compile a MultiWriteNode node
alias visit_multi_write_node visit_child_nodes
# Compile a NextNode node
alias visit_next_node visit_child_nodes
# Compile a NilNode node
alias visit_nil_node visit_child_nodes
# Compile a NoKeywordsParameterNode node
alias visit_no_keywords_parameter_node visit_child_nodes
# Compile a NumberedParametersNode node
alias visit_numbered_parameters_node visit_child_nodes
# Compile a NumberedReferenceReadNode node
alias visit_numbered_reference_read_node visit_child_nodes
# Compile a OptionalKeywordParameterNode node
alias visit_optional_keyword_parameter_node visit_child_nodes
# Compile a OptionalParameterNode node
alias visit_optional_parameter_node visit_child_nodes
# Compile a OrNode node
alias visit_or_node visit_child_nodes
# Compile a ParametersNode node
alias visit_parameters_node visit_child_nodes
# Compile a ParenthesesNode node
alias visit_parentheses_node visit_child_nodes
# Compile a PinnedExpressionNode node
alias visit_pinned_expression_node visit_child_nodes
# Compile a PinnedVariableNode node
alias visit_pinned_variable_node visit_child_nodes
# Compile a PostExecutionNode node
alias visit_post_execution_node visit_child_nodes
# Compile a PreExecutionNode node
alias visit_pre_execution_node visit_child_nodes
# Compile a ProgramNode node
alias visit_program_node visit_child_nodes
# Compile a RangeNode node
alias visit_range_node visit_child_nodes
# Compile a RationalNode node
alias visit_rational_node visit_child_nodes
# Compile a RedoNode node
alias visit_redo_node visit_child_nodes
# Compile a RegularExpressionNode node
alias visit_regular_expression_node visit_child_nodes
# Compile a RequiredKeywordParameterNode node
alias visit_required_keyword_parameter_node visit_child_nodes
# Compile a RequiredParameterNode node
alias visit_required_parameter_node visit_child_nodes
# Compile a RescueModifierNode node
alias visit_rescue_modifier_node visit_child_nodes
# Compile a RescueNode node
alias visit_rescue_node visit_child_nodes
# Compile a RestParameterNode node
alias visit_rest_parameter_node visit_child_nodes
# Compile a RetryNode node
alias visit_retry_node visit_child_nodes
# Compile a ReturnNode node
alias visit_return_node visit_child_nodes
# Compile a SelfNode node
alias visit_self_node visit_child_nodes
# Compile a SingletonClassNode node
alias visit_singleton_class_node visit_child_nodes
# Compile a SourceEncodingNode node
alias visit_source_encoding_node visit_child_nodes
# Compile a SourceFileNode node
alias visit_source_file_node visit_child_nodes
# Compile a SourceLineNode node
alias visit_source_line_node visit_child_nodes
# Compile a SplatNode node
alias visit_splat_node visit_child_nodes
# Compile a StatementsNode node
alias visit_statements_node visit_child_nodes
# Compile a StringNode node
alias visit_string_node visit_child_nodes
# Compile a SuperNode node
alias visit_super_node visit_child_nodes
# Compile a SymbolNode node
alias visit_symbol_node visit_child_nodes
# Compile a TrueNode node
alias visit_true_node visit_child_nodes
# Compile a UndefNode node
alias visit_undef_node visit_child_nodes
# Compile a UnlessNode node
alias visit_unless_node visit_child_nodes
# Compile a UntilNode node
alias visit_until_node visit_child_nodes
# Compile a WhenNode node
alias visit_when_node visit_child_nodes
# Compile a WhileNode node
alias visit_while_node visit_child_nodes
# Compile a XStringNode node
alias visit_x_string_node visit_child_nodes
# Compile a YieldNode node
alias visit_yield_node visit_child_nodes
end
end