# Antlr



## waterhouse533-lp (31. Mai 2005)

Hallo Leute, 
 kennst sich irgendjemand mit ANTLR aus?
 Ich benutze ANTLR2.75 und Eclipse um eine etwas längere Textdatei zu zerlegen und zu parsen. Dabei komme ich immer wieder mit meiner Tokendefinition durcheinander, d.h. ich bin ständig damit beschäftigt die Tokens zu strukturieren. Kennt jemand eine gute Strategie?
 Kann man sich irgendwie anzeigen lassen, welches Token der Parser gefunden hat, wenn er eine Fehlermeldung herausgibt?


----------



## Thomas Darimont (31. Mai 2005)

Hallo!

hast du schonmal die Antlr Artikel durchgeschaut?
http://www.antlr.org/article/list

Gruß Tom


----------



## waterhouse533-lp (31. Mai 2005)

Hallo Tom, 
  ich denke, dass ich das meiste von Parr&Co gelesen habe.
 Durch die Komplexität meines Textes habe ich ernsthafte Schwierigkeiten. Ich muss viele Tokens definieren und diese dann im Parser wieder zu komplizierten Gebilden zusammenfassen. Dabei mache ich natürlich jede Menge Fehler, die dann in richtig häßlichen Errorstatements enden.
  z.B.
  Line: 48,22: 
  expecting 'n', found '\r'
  Wenn ich jetzt irgendwo ein Token 'n' definiert hätte, wäre die Lösung ja machbar aber so weiss ich wirklich nicht weiter.
 Leider hilft Eclipse an dieser Stelle überhaupt nicht mehr weiter. Bessere Erklärungen für die Fehler finde ich einfach nicht und der Debugger hilft mir auch nur ganz selten.
 Im Moment spiele ich wie ein schlechter Perlprogrammierer alle mir einfallenden Variationen durch und komme so natürlich nicht richtig weiter. An der o.g. Fehlermeldung bastle ich schon 4 Stunden. Mit Verlaub, das ist einfach Sch... . Ich bin total frustriert. 
  Hilfe!


----------



## waterhouse533-lp (31. Mai 2005)

Ich habe den Fehler. Ein lookahead von 4 reicht wohl nicht, wenn man 'Markt' und 'Marktnr' unterscheiden will. Daher kommt auch das gesuchte 'n'. Der Lexer hat zuerst die 'Marktnr' gematched und sich dann gewundert wo denn das 'n' bleibt, das noch am 'Markt' hängen sollte.
 Dank an alle, die sich Gedanken gemacht haben.


----------

