Das ist echt gar nicht so schwer wie ich immer dachte. Werde das glaube zum üben jetzt häufiger nutzen.

  • jenesaisquoi@feddit.org
    link
    fedilink
    English
    arrow-up
    2
    ·
    7 days ago

    Naja, Regex ist ja erstmal nur die Syntax zur Beschreibung eines Textes. Das muss ja dann ein Parser noch interpretieren und damit etwas machen.

    Ich verstehe was du meinst. Falls die Implementation die Regex direkt zu einem Parser kompiliert und in einer VM ausführt, ist sie quasi selber der Parser bzw der Quellcode dafür. Aber ich verstehe deine Sicht, ich sage nicht dass du falsch liegst.

    Bei so einem Parser Combinator purzelt ja direkt ein Parser-Programm heraus, wenn ich das richtig verstehe.

    Nein, das wäre der Fall bei yacc & co, wo man eine Grammatik schreibt und ein Parser generiert wird. nom ist vielmehr eine Bibliothek, mit welcher man von Hand eigene Parser implementiert. Sie besteht aus ganz einfachen, ganz generalisierten Komponenten, die man kombiniert - deswegen der Name Parser Combinator Library.

    aber es ist nicht nur eine Beschreibung des Textes, sondern formuliert direkt die Parser-Logik.

    Es gibt viele direkte Equivalenzen. Es gibt Kombinatoren für “eine oder mehrere Leerschläge” und “exakt ein Kleinbuchstabe” und “optional eine Ziffer” und so weiter - das ist genau dasselbe, was man in Regex auch ausdrückt. Ich würde sagen, nom ist ein Superset von Regex.