rse / astq

Abstract Syntax Tree (AST) Query Engine
https://npmjs.com/astq
202 stars 15 forks source link

Beispiele im WIKI #6

Open Asc2011 opened 5 years ago

Asc2011 commented 5 years ago

Hallo Ralf, danke für die lib. Ich hab' einen Adapter für den aktuellen CoffeeScript-AST gemacht. Der zukünftige CS-AST wird - aller Voraussicht nach - Babel-kompatibel sein. Ich würde mir noch das eine oder andere Beispiel wünschen. Möglicherweise im WIKI ? Insbesondere die Möglichkeiten des Ob und Wie man mit einem match oder einem result umgeht. Also ich kann bspw. alle require-expressions finden und als Ergebnis erhalten. Dann kann ich die Elemente, die ich brauche selbst extrahieren. Netter wäre es, wenn ich die gesuchten Teil-Elemente direkt benennen könnte - so wie in deinem Beispiel mit der /:id und /:init-Notation. Ist es möglich ein Ergebnis weiter zu filtern ?

// Assign [
    / Value / Call / Value / IdentifierLiteral [@value=='require']
  ]

Die interessanten Teile befinden sich nun in einem anderen Pfad im Assign-Knoten : Assign / Variable / Value / IdentifierLiteral

Ein kleines Beispiel, wie man eigene (Extraktions)-Funktionen verwendet wäre auch hilfreich ? Ich könnte da auch gerne was im WIKI formulieren - sobald ich verstanden habe wie es gemacht wird.

LG Andreas

Asc2011 commented 5 years ago

Noch etwas, der derzeitige CS-AST kennt keine parent-funktion und es werden auch keine expliziten parent-properties gesetzt. Daher muss ich den Baum vorbereiten und einmal durchlaufen. Das ist nicht besonders effizient :-) Beim Traversieren des Baumes kennt ASTQ ja die parent-Knote(n) bereits - wäre es nicht möglich die getParentNode-fn im Adapter auf einen 'mach-es-selbst-modus' einzustellen ?

LG