tdparser.

Eine sehr einfache Parsingbibliothek, basierend auf dem Top-Down-Algorithmus
Jetzt downloaden

tdparser. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • MIT/X Consortium Lic...
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Raphael Barrois
  • Website des Verlags:
  • https://github.com/rbarrois/

tdparser. Stichworte


tdparser. Beschreibung

TDParser ist eine Python-Bibliothek, die darauf abzielt, einen effizienten Weg zum Schreiben einfacher Lexer / Parser in Python, mit dem Top-Down-Parsing-Algorithmus bereitzustellen. Andere Python-Bibliotheken bieten Analyse- / Lexing-Tools (siehe http://nedbatchelder.com/text/python) -parser.html für ein paar Beispiele); Unterscheidungsmerkmale von TDParser sind: - Vermeiden Sie docstring-basierte Grammatikdefinitionen - stellen Sie eine generische Parserstruktur bereit, die in der Lage ist, jede Grammatik abzuwickeln. Lassen Sie den Benutzer nicht generieren. Lassen Sie den Benutzer die Art der Parsing-Ergebnisse entscheiden: Abstract Syntaxbaum, Endausdruck ,. .. Was das Token bewertet, um "" "" self.Valueclass Addition (Token) zurückzugeben: LBP = 10 # Priordec Def LED (Self, Links, Kontext): "" Rechen Sie den Wert dieses Tokens, wenn zwischen zwei Ausdrücken. «» # Halten Sie den Ausdruck nach rechts ab und stoppen Sie an der nächsten Begrenzung derselben Vorreiter rechts Kontext): Return links - context.expression (self.lbp) def nud (self, context): "" "Wenn ein '-' auf der linken Seite vorhanden ist ein Ausdruck Links, Kontext): Return links * context.expression (self.lbp) lexer = lexer (with_parens = true) lexer.register_token (integer, re.compile (r '\ d +')) lexer.register_token (Zusatz, re.compile (R '\ +')) Lexer.Register_Token (Substraction, Re.circil (R '-')) Lexer.Register_Token (Multiplikation, Re.compile (R '*')) Def Parse (Text): Return lexer.parse (Text) Verwenden Sie es den erwarteten Wert zurück: >>> Parse ("1 + 1") 2 >>> Parse ("1 + -2 * 3") - 5Adding Neue Token ist unkompliziert: Klassenabteilung (Token): LBP = 20 # gleiche Vorrangzeit als Multiplikation def LED (Self, Links, Kontext): Return links // context.expression (self.lbp) lexer.register_token (Division, Re.comPile (R '/')) und mit IT:> >> Parse ("3 + 12/3) 7let's Fügen Sie den Exponentiation-Operator hinzu: Klassenmacht (Token): LBP = 30 # höher als Multif-def-LED (Selbst, Links, Kontext): # Wir wählen Ausdrücke mit einem niedrigeren Vorrang aus, so dass # 2 ** 3 ** 2 AS 2 ** (3 ** 2) Return links ** context.expression (self.lbp - 1) lexer .Register_token (POWER, RE.COMPILE (R '\ * \ *')) und verwenden Sie es: >>> Parse ("2 ** 3 ** 2") 512Product's Homepage


tdparser. Zugehörige Software