Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:parsy

Dies ist eine alte Version des Dokuments!


Inhaltsverzeichnis

Allgemein

  • Parsing-Library
  • für einfachere Parses benutzbar

Arbeitsweise

  • Ein Parser-Objekt definiert einen Ausdruck/Element des zu parsenden Strings
    • prüft ob der Ausdruck auf den zu parsenden Teil zutrifft
      • ist das der Fall wird geguckt ob es ein Nachfolgeobjekt gefunden wird (diese können über verschiedene Methoden definiert werden) und wenn ein solches existiert dieses aufgerufen
        • dieses wiederum geht den gleichen Vorgang durch → dadurch entsteht eine Kette
        • validiert das Nachfolgeobjekt auf False (oder eines seiner Nachfolger) und es gibt keine Alternative (OR) wird eine Exception ParseError geraised
      • ist kein Nachfolgeobjekt vorhanden oder alle sind ohne Exception durchgelaufen wird das Ergebnis zurückgegeben

Seltsamheiten

  • um einen möglichst guten Workflow (hinteinanderaufrufen von Methoden und Objekten) zu ermöglichen geben die meisten Aufrufe von Methoden des Parser-Objektes eine Kopie des gleichen Objektes zurück

from parsy import regex

a = regex(r"\d{1,4}").descr("Year").map(int)
a In obigem Beispiel wird die Funktion regex aufgerufen, die einen Parser für einen regulären Ausdruck zurückgibt.
Anschließend wird die „descr“-Methode des Parser-Objektes aufgerufen und eine Beschreibung gesetzt → was geht da die Funktion ja ein Parser-Objekt zurückgegeben hat und sich der Aufruf auf die Rückgabe der Funktion bezieht.
Danach wird „map“ des Parser-Objektes aufgerufen - das das geht würde man normalerweise nicht erwarten. Das geht weil descr ein neues Parser-Objekt zurückgegeben hat und man auf die Methode „map“ eben jenes zugreift.
a wird dann ein Parser zugewiesen der eine Beschreibung (gesetzt über .descr) und eine Typumwandlung (gesetzt über map) beinhaltet.

python/parsy.1617892010.txt.gz · Zuletzt geändert: 2021/04/08 16:26 von root