Abstrakte Syntaxbäume (ASTs) repräsentieren die rekursive Struktur eines formalen Dokuments (Programmquellcode).

Mehr über abstract-syntax-tree...

Ich benutze transform} Funktion von der Typencript Compiler-API, um meinen Code zu ändern. Diese Funktion ist rekursiv und besucht jeden Knoten. Wenn ich ein {StringLiteral foo von foo fand, möchte ich {foo} hinzufügen, um zu importieren, wo my-lib folgt: import { foo } from 'my-lib'; Der Code kann....
27 Mai 2021 im 16:48
Wenn ich über die Quellcodes von Eclipse gelesen habe, habe ich eine Datei mit dem Namen "$ classname $ .java" gefunden. Ein Teil seines Inhalts ist wie folgt: package $packageName$; % if viewType =="treeViewer" import java.util.ArrayList; % endif import org.eclipse.swt.widgets.Composite; import ....
27 Mai 2021 im 12:43
Ich möchte {bar: true} {{{x} mit typtecript ast hinzufügen. Diese Code-Cerate The bar: true: factory.createPropertyAssignment( factory.createIdentifier("bar"), factory.createTrue() ); Ich weiß, dass ich diese Funktion zurücksenden muss, um es an AST hinzuzufügen. Wenn ich das tue, dann ist ....
25 Mai 2021 im 20:44
Ich versuche, ein AST und einen hübschen Drucken zu erstellen. Ich pariere Teile der C-Sprache. Wenn ich jedoch eine leere Erklärung darstellen muss, was ist {} Ich bin völlig stecken, weil ich nicht einfach eine neue Daten erstellen kann, die so etwas enthält. Oder wenn es der folgende ist {{}} W....
Ich habe ein großes Projekt und eine Reihe von C ++ - Klassenmitgliedsfunktionen des Formulars: Return CClass::MemberFunction( Arg1 arg1, //... std::weak_ptr<IMemberFunctionListenerInterface> listener) { //... } Ich versuche, einen Matcher zu schreiben, der Funktionen wie diese findet, der....
Ich versuche, Namen in einer Python-Datei zu ersetzen. Dafür habe ich eine Klasse geschrieben, die Namen erkennt und ersetzt. Alles funktioniert gut. Die Funktionsnamen der importierten Module sind jedoch auch .......
27 Feb. 2021 im 22:49
Ich habe dieses einfache Python-Codebeispiel, das einen Python-Code analysiert und die darin zugewiesenen Variablen extrahiert: import ast import sys import astunparse import json tree=ast.parse('''\ a = 10 b,c=5,6 [d,e]=7,8 (f,g)=9,10 h=20 ''',mode="exec") for thing in tree.body: if isinstanc....
Ich versuche, alle Variablen in meinem Code zu extrahieren, die keinen Einzug haben. Hier ein einfaches Beispiel: import ast import astunparse class AnalysisNodeVisitor(ast.NodeVisitor): def __init__(self, nodename): super().__init__() self.nodename=nodename self.setVar....
Ich habe hier auf StackOverflow eine Reihe vorhandener Fragen gelesen, aber ich kann meine Grammatik nicht klarstellen. statement "Statement" = assignment / primitive / reference / operation operation "Operation" = statement operator:operator statement operator "Operator" = "+" * Beacht....
Nachdem ich den Artikel Verwenden der Compiler-API gelesen hatte, konnte ich ihn erhalten der AST aus String-Code. Aber wenn ich versuche, den Code (von escodegen) von AST (nicht transpilieren) in Code zu generieren, habe ich eine Fehlermeldung erhalten: Unknown node type: undefined Gibt es ein....
9 Dez. 2020 im 12:23
Ich habe eine grobe AST-ähnliche Struktur; Ein Array, das entweder eine Zeichenfolge oder ein Objekt enthält, wobei das Objekt eine ID und Argumente hat, wobei die Argumente wie oben ein Array einer Zeichenfolge oder eines Objekts sind. Das Ziel besteht darin, eine Zeichenfolge aus den rekursiv erst....
30 Nov. 2020 im 13:08
für Kontext - Die OCL-Ausdrücke werden zusammen mit einer "Ecore" -Datei angegeben, die Informationen zur UML enthält, der der Ausdruck zugeordnet ist. Als Teil einer von mir durchgeführten Forschung versuche ich, einen OCL-Ausdruck in einen abstrakten Syntaxbaum (AST) zu analysieren, den ich durc....
13 Nov. 2020 im 18:00
Gibt es ein AST-Tool, mit dem Metadaten einfach aus einer Java-Methode extrahiert werden können? Verwenden Sie beispielsweise das folgende Codefragment /* Checks if a target integer is present in the list of integers. */ public Boolean contains(Integer target, List<Integer> numbers) { for(Integ....
Situativer Hintergrund: XSD mit SCH XML-Schema (XSD) Ich habe eine XML-Schemadefinition ("das Schema"), die mehrere andere XSDs enthält, die sich alle im selben Namespace befinden. Einige davon importieren andere XSDs aus fremden Namespaces. Insgesamt deklariert das Schema mehrere globale Elemente, ....
Betrachten wir zunächst die Grammatik von Python3.8.5 Ich bin daran interessiert herauszufinden, wie man Python-Vergleiche mit c transpiliert. Nehmen wir der Einfachheit halber an, wir haben es mit einer sehr kleinen trivialen Python-Teilmenge zu tun und wollen nur triviale Vergleichsausdrücke tran....
Ich habe viele Datenzeilen (ich kann sie nicht manuell ändern), die als Wörterbuch als Schlüssel / Wert-Paare dargestellt werden. Das Problem ist, dass es einen Wörterbuchschlüssel gibt, der mehrmals (für undefinierte Zahlen: kann zweimal, dreimal, zehnmal usw. sein) mit unterschiedlichen Werten ang....
Angenommen, ich habe eine Reihe von Funktionen a, b, c, d und e und möchte herausfinden, ob sie eine Methode von aufrufen das random Modul: def a(): pass def b(): import random def c(): import random random.randint(0, 1) def d(): import random as ra ra.randint(0, 1) def e....
Für den Anfang habe ich einen AST, in dem ich eine Vorwärtserklärung erstellen muss, aber anscheinend ist dies nicht der Fall genau koscher in den neuesten C ++ - Compilern? Um dies zu überwinden, kann ich den Rest der Grammatik durcharbeiten, glaube ich. Als Referenz schreibe ich den Parser mehr od....
Ich habe eine imaginäre Liste mit verschiedenen Verschachtelungsebenen oder ignoriere die hässlichen Typen einer API-Antwort, dh: a ::(Num a, Num [a], Num [[a]]) => [[a]] a = [1, 2, [3, 4]] b :: (Num a, Num [a], Num [[a]], Num [[[a]]]) => [[[[a]]]] b = [[1,2,[3]],4] Die Funktion, die ich erstellen....
30 Okt. 2018 im 13:45
Ich versuche, Go-Dateien statisch zu analysieren. Dazu muss ich Variablen des folgenden Formats analysieren: shape.color = color.red Ich muss alle Variablen finden, auf die mit Punktnotation zugegriffen wird. Zum Beispiel muss ich wissen, dass die Formvariable das Farbattribut hat. Und außerdem mus....
25 Okt. 2018 im 19:53
Mein Problem ist die Neudefinition des Operators +, der den Ausdruck mit ast auswertet. Ich habe eine Liste von Ausdrücken und es ist einfach mit eval () zu lösen: >>> expr = '1+2*3**4/5' >>> print(eval(expr)) 33.4 Aber ich mag es, den + - Operator (Zusatz) für die Liste neu zu definieren und so zu....
19 Aug. 2018 im 14:56
Ich habe den CPython-Quellcode durchgesehen und den folgenden Code aus der Standardbibliothek gefunden (ast.py). if isinstance(node.op, UAdd): return + operand else: return - operand Ich habe Folgendes in meinem Python-Interpreter versucht >>> def s(): ... ....
Ich entwickle ein Tool zum Auffinden von Überlaufproblemen im Untertypbereich im Ada-Quellcode. Zu diesem Zweck verwende ich ASIS zum Auffinden von Zuweisungsanweisungen im Ada-Quellcode und zum Auffinden des Typs der Variablen auf der rechten Seite des Zuweisungsausdrucks. Jetzt möchte ich Um die ....
20 Juni 2018 im 13:53
Ich habe eine Reihe ähnlicher Fragen zum Stapelüberlauf geprüft, konnte jedoch keine Antwort finden, die für meine Daten / Zeichenfolge gilt. Ich habe eine Zeichenfolge, die praktisch eine Liste von Wörterbüchern ist. In den Feldern werden Zahlen nicht in doppelte Anführungszeichen gesetzt. Wenn ich....
3 Sept. 2017 im 06:03
Es gibt eine Testzeichenfolge: Modul ([Zuweisen ([Name ('a', Store ())], Num (2)), Zuweisen ([Name ('b', Store ())], Num (3)), Zuweisen ([Name ( 'c', Store ())], Str ('Hello')), Assign ([Name ('x', Store ())], BinOp (Name ('a', Load ()), Add (), Name ('b', Load ()))), Assign ([Name ('x', Store ())],....