class RubyVM::AbstractSyntaxTree::Node
RubyVM::AbstractSyntaxTree::Node Instanzen werden durch Parser-Methoden in RubyVM::AbstractSyntaxTree erstellt.
Diese Klasse ist spezifisch für MRI.
Öffentliche Instanzmethoden
Source
# File ast.rb, line 205 def all_tokens Primitive.ast_node_all_tokens end
Gibt alle Tokens für das Eingabeskript zurück, unabhängig vom Empfänger-Knoten. Gibt nil zurück, wenn keep_tokens beim Aufruf der Parser-Methode nicht aktiviert ist.
root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true) root.all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...] root.children[-1].all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
Source
# File ast.rb, line 216 def children Primitive.ast_node_children end
Gibt die AST-Knoten unter diesem zurück. Jede Art von Knoten hat unterschiedliche Kinder, abhängig von der Art des Knotens.
Das zurückgegebene Array kann andere Knoten oder nil enthalten.
Source
# File ast.rb, line 148 def first_column Primitive.ast_node_first_column end
Die Spaltennummer im Quellcode, wo der Text dieses AST begann.
Source
# File ast.rb, line 140 def first_lineno Primitive.ast_node_first_lineno end
Die Zeilennummer im Quellcode, wo der Text dieses AST begann.
Source
# File ast.rb, line 224 def inspect Primitive.ast_node_inspect end
Gibt Debugging-Informationen über diesen Knoten als String zurück.
Source
# File ast.rb, line 164 def last_column Primitive.ast_node_last_column end
Die Spaltennummer im Quellcode, wo der Text dieses AST endete.
Source
# File ast.rb, line 156 def last_lineno Primitive.ast_node_last_lineno end
Die Zeilennummer im Quellcode, wo der Text dieses AST endete.
Source
# File ast.rb, line 280 def locations Primitive.ast_node_locations end
Gibt Standortobjekte zurück, die mit dem AST-Knoten verknüpft sind. Das zurückgegebene Array enthält RubyVM::AbstractSyntaxTree::Location.
Source
# File ast.rb, line 235 def node_id Primitive.ast_node_node_id end
Gibt eine interne node_id Nummer zurück. Beachten Sie, dass dies eine API für die interne Verwendung von Ruby, für Debugging und Forschung ist. Verwenden Sie dies nicht für andere Zwecke. Die Kompatibilität ist nicht garantiert.
Source
# File ast.rb, line 247 def script_lines Primitive.ast_node_script_lines end
Gibt den ursprünglichen Quellcode als Array von Zeilen zurück.
Beachten Sie, dass dies eine API für die interne Verwendung von Ruby, für Debugging und Forschung ist. Verwenden Sie dies nicht für andere Zwecke. Die Kompatibilität ist nicht garantiert.
Source
# File ast.rb, line 263 def source lines = script_lines if lines lines = lines[first_lineno - 1 .. last_lineno - 1] lines[-1] = lines[-1].byteslice(0...last_column) lines[0] = lines[0].byteslice(first_column..-1) lines.join else nil end end
Gibt das Codefragment zurück, das diesem AST entspricht.
Beachten Sie, dass dies eine API für die interne Verwendung von Ruby, für Debugging und Forschung ist. Verwenden Sie dies nicht für andere Zwecke. Die Kompatibilität ist nicht garantiert.
Beachten Sie auch, dass diese API ein unvollständiges Codefragment zurückgeben kann, das nicht geparst werden kann; z. B. kann ein Here-Dokument nach einem Ausdruck fallen gelassen werden.
Source
# File ast.rb, line 184 def tokens return nil unless all_tokens all_tokens.each_with_object([]) do |token, a| loc = token.last if ([first_lineno, first_column] <=> [loc[0], loc[1]]) <= 0 && ([last_lineno, last_column] <=> [loc[2], loc[3]]) >= 0 a << token end end end
Gibt die Tokens zurück, die dem Standort des Knotens entsprechen. Gibt nil zurück, wenn keep_tokens beim Aufruf der Parser-Methode nicht aktiviert ist.
root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true) root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...] root.tokens.map{_1[2]}.join # => "x = 1 + 2"
Token ist ein Array von
-
id
-
Token-Typ
-
Quellcode-Text
-
Standort [
first_lineno,first_column,last_lineno,last_column]
Source
# File ast.rb, line 132 def type Primitive.ast_node_type end
Gibt den Typ dieses Knotens als Symbol zurück.
root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2") root.type # => :SCOPE lasgn = root.children[2] lasgn.type # => :LASGN call = lasgn.children[1] call.type # => :OPCALL