класс Prism::Compiler
Компилятор — это посетитель, который возвращает значение каждого узла при его посещении. В отличие от посетителя, который только проходит по дереву. Это может быть полезно, когда вы пытаетесь скомпилировать дерево в другой формат.
Например, чтобы создать представление дерева в виде s-выражений, вы можете написать:
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]]]]]]]]
Методы публичного экземпляра
Исходный код
# File lib/prism/compiler.rb, line 29 def visit(node) node&.accept(self) end
Посетить отдельный узел.
Компилировать узел AliasGlobalVariableNode
Исходный код
# File lib/prism/compiler.rb, line 34
def visit_all(nodes)
nodes.map { |node| node&.accept(self) }
end Посетить список узлов.
Компилировать узел AlternationPatternNode
Компилировать узел ArrayPatternNode
Компилировать узел BackReferenceReadNode
Компилировать узел BlockArgumentNode
Компилировать узел BlockLocalVariableNode
Компилировать узел BlockParameterNode
Компилировать узел BlockParametersNode
Компилировать узел CallAndWriteNode
Компилировать узел CallOperatorWriteNode
Компилировать узел CapturePatternNode
Исходный код
# File lib/prism/compiler.rb, line 39
def visit_child_nodes(node)
node.compact_child_nodes.map { |node| node.accept(self) }
end Обработать дочерние узлы данного узла.
Компиляция узла ClassVariableAndWriteNode
Компиляция узла ClassVariableOperatorWriteNode
Компиляция узла ClassVariableOrWriteNode
Компиляция узла ClassVariableReadNode
Компиляция узла ClassVariableTargetNode
Компиляция узла ClassVariableWriteNode
Компиляция узла ConstantAndWriteNode
Компиляция узла ConstantOperatorWriteNode
Компиляция узла ConstantOrWriteNode
Компиляция узла ConstantPathAndWriteNode
Компиляция узла ConstantPathOperatorWriteNode
Компиляция узла ConstantPathOrWriteNode
Компиляция узла ConstantPathTargetNode
Компиляция узла ConstantPathWriteNode
Компилировать узел ConstantTargetNode
Компилировать узел ConstantWriteNode
Компилировать узел EmbeddedStatementsNode
Компилировать узел EmbeddedVariableNode
Компилировать узел ForwardingArgumentsNode
Компилировать узел ForwardingParameterNode
Компилировать узел ForwardingSuperNode
Компилировать узел GlobalVariableAndWriteNode
Компилировать узел GlobalVariableOperatorWriteNode
Компилировать узел GlobalVariableOrWriteNode
Компилировать узел GlobalVariableReadNode
Компилировать узел GlobalVariableTargetNode
Компилировать узел GlobalVariableWriteNode
Компилировать узел ImplicitRestNode
Компилировать узел IndexAndWriteNode
Компилировать узел IndexOperatorWriteNode
Компилировать узел IndexOrWriteNode
Компилировать узел InstanceVariableAndWriteNode
Компилировать узел InstanceVariableOperatorWriteNode
Компилировать узел InstanceVariableOrWriteNode
Компилировать узел InstanceVariableReadNode
Компилировать узел InstanceVariableTargetNode
Компилировать узел InstanceVariableWriteNode
Компилировать узел InterpolatedMatchLastLineNode
Компилировать узел InterpolatedRegularExpressionNode
Компилировать узел InterpolatedStringNode
Компилировать узел InterpolatedSymbolNode
Компилировать узел InterpolatedXStringNode
Компилировать узел ItLocalVariableReadNode
Компилировать узел ItParametersNode
Компилировать узел KeywordRestParameterNode
Компилировать узел LocalVariableAndWriteNode
Компилировать узел LocalVariableOperatorWriteNode
Компилировать узел LocalVariableOrWriteNode
Компилировать узел LocalVariableReadNode
Компилировать узел LocalVariableTargetNode
Компилировать узел LocalVariableWriteNode
Компилировать узел MatchLastLineNode
Компилировать узел MatchPredicateNode
Компилировать узел MatchRequiredNode
Компилировать узел NoKeywordsParameterNode
Компилировать узел NumberedParametersNode
Компилировать узел NumberedReferenceReadNode
Компилировать узел OptionalKeywordParameterNode
Компилировать узел OptionalParameterNode
Компилировать узел PinnedExpressionNode
Компилировать узел PinnedVariableNode
Компилировать узел PostExecutionNode
Компилировать узел PreExecutionNode
Компилировать узел RegularExpressionNode
Компилировать узел RequiredKeywordParameterNode
Компилировать узел RequiredParameterNode
Компилировать узел RescueModifierNode
Компилировать узел RestParameterNode
Компилировать узел SingletonClassNode
Компилировать узел SourceEncodingNode
Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.