Seite 1 von 1

Parsing Indention

Verfasst: Donnerstag 16. August 2012, 14:17
von dulo
Hat jemand eine Idee wie man einen Parser basteln koennte der folgendes unterscheiden kann :
{
.b
.{
..d
..e
.}
.c
}
richtig


{
.b
.{
..d
.e
.}
.c
}
falsch

Ein normaler Parser wie simpleparse kann das garnicht, weil er nicht State aware ist oder uebersehe ich da irgendwas ??

Re: Parsing Indention

Verfasst: Donnerstag 16. August 2012, 14:29
von DasIch
Am einfachsten ist es du machst parsing in 2 Schritten. Im ersten Schritt erzeugst du Token und kümmerst dich dabei auch um die Einrückung und im zweiten Schritt parst du die Token.

Es gibt allerdings Sprachen in denen du Informationen aus dem Parser im Tokenizer brauchst und dann funktioniert dass nicht mehr (so gut).

Re: Parsing Indention

Verfasst: Donnerstag 16. August 2012, 17:00
von lunar
@dulo: Stelle die entsprechende Grammatik auf, und verwende dann einen Parsing-Bibliothek wie PyParsing. Versuche besser nicht, den Parser selbst zu schreiben, denn das ist je nach Komplexität der Grammatik nicht mehr trivial.

Laut Website geht das im Übrigen auch mit "simpleparse", zumindest behauptet die Dokumentation, simpleparse könne EBNF-Grammatiken parsen.