D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
thread-self
/
root
/
proc
/
self
/
root
/
opt
/
alt
/
ruby34
/
share
/
ruby
/
prism
/
Filename :
compiler.rb
back
Copy
# 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