класс 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 28 def visit(node) node&.accept(self) end
Посещение отдельного узла.
Компиляция узла AliasGlobalVariableNode
# File lib/prism/compiler.rb, line 33
def visit_all(nodes)
nodes.map { |node| node&.accept(self) }
end Посещение списка узлов.
Компиляция узла AlternationPatternNode
Компиляция узла BackReferenceReadNode
Компиляция узла BlockLocalVariableNode
Компиляция узла BlockParameterNode
Компиляция узла BlockParametersNode
Компиляция узла CallOperatorWriteNode
Компиляция узла CapturePatternNode
# File lib/prism/compiler.rb, line 38
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
Компилировать узел EmbeddedStatementsNode
Компилировать узел EmbeddedVariableNode
Компилировать узел ForwardingArgumentsNode
Компилировать узел ForwardingParameterNode
Компилировать узел ForwardingSuperNode
Компилировать узел GlobalVariableAndWriteNode
Компилировать узел GlobalVariableOperatorWriteNode
Компилировать узел GlobalVariableOrWriteNode
Компилировать узел GlobalVariableReadNode
Компилировать узел GlobalVariableTargetNode
Компилировать узел GlobalVariableWriteNode
Компилировать узел IndexOperatorWriteNode
Компилировать узел InstanceVariableAndWriteNode
Компилировать узел InstanceVariableOperatorWriteNode
Компилировать узел InstanceVariableOrWriteNode
Компилировать узел InstanceVariableReadNode
Компилировать узел InstanceVariableTargetNode
Компилировать узел InstanceVariableWriteNode
Компилировать узел InterpolatedMatchLastLineNode
Компилировать узел InterpolatedRegularExpressionNode
Компилировать узел InterpolatedStringNode
Компилировать узел InterpolatedSymbolNode
Компилировать узел InterpolatedXStringNode
Компилировать узел KeywordRestParameterNode
Компилировать узел LocalVariableAndWriteNode
Компилировать узел LocalVariableOperatorWriteNode
Компилировать узел LocalVariableOrWriteNode
Компилировать узел LocalVariableReadNode
Компилировать узел LocalVariableTargetNode
Компилировать узел LocalVariableWriteNode
Компилировать узел NoKeywordsParameterNode
Компилировать узел NumberedParametersNode
Компилировать узел NumberedReferenceReadNode
Компилировать узел OptionalKeywordParameterNode
Компилировать узел OptionalParameterNode
Компилировать узел PinnedExpressionNode
Компилировать узел RegularExpressionNode
Компилировать узел RequiredKeywordParameterNode
Компилировать узел RequiredParameterNode
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.