Parsing Indention

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dulo
User
Beiträge: 1
Registriert: Donnerstag 16. August 2012, 10:29

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 ??
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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).
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.
Antworten