Re: [ANTLR] Zeile und Spalte bei Fehler in Treeparser ermitteln



Am Mon, 05 Sep 2005 17:31:28 +0200 schrieb Jochen Theodorou:

> Peter Rill schrieb:
>> Hallo,
>>
>> ich habe für meine Anwendung eine Skriptspreache mit ANTLR realisiert.
>> Jetzt hätte ich gerne beim Auftreten eines Fehlers im Treeparser dem
>> Benutzer die genaue Stelle im Skript angezeigt, bei der der Fehler
>> auftritt. Das Interface AST bietet ja die Methoden getLine() und
>> getColumn(). Bei mir kommt dort aber immer nur 0,0 raus.
> [...]
>>
>> Leider ist ja die Javadoc zu ANTLR auch sehr lückenhaft und viele Methoden
>> werden gar nicht dokumentiert.
>
> der Source (und auch diverse Dokumente im Netz) verraten, dass BaseAST
> (Vater von CommonAST) zwar eine getLine-Methode hat, diese aber immer 0
> zurückgibt. Wenn du selber was implementieren willst, dann musst du eine
> eigene AST-klasse verwenden, die dann sowas macht:
>
> class MyAST{
> [...]
> public void initialize(AST ast) {
> super.initialize(ast);
> line = ast.getLine();
> col = ast.getColumn();
> }
> }

Die Methode wird bei mir nie aufgerufen :-(

> um die ast-Klasse zu setzen musst du sowas machen:
>
> parser.setASTNodeClass("MyAST");

Ich habe auch noch gefunden, dass man es den options setzen kann:

options {
ASTLabelType=MyAST; }

Dann wird im erzeugten Quellcode MyAST anstelle von AST verwendet.

Ich habe jetzt die Lösung gefunden. Man muss void initialize(Token token)
überschreiben:

public void initialize(final Token token)
{
super.initialize(token);
line = token.getLine();
column = token.getColumn();
}

--
Tschüß
Peter
.



Relevant Pages

  • Re: [ANTLR] Zeile und Spalte bei Fehler in Treeparser ermitteln
    ... public void initialize(final Token token) ... nur, wenn man den AST von ANTLR slebst bauen will, aber mit ... unterstützung von ANTLR... ... Gruss theo ...
    (de.comp.lang.java)
  • Re: Formelparser
    ... >> Abstract Syntax Tree (AST) und Expression Parsing. ... Der Begriff Token ist leider auch im Compilerbau relativ überladen. ... >> wird nahezu immer Parser gennant. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Formelparser
    ... Ich meine den Baum der die Tokens miteinander verbindet (ein Knoten ... > im Token gespeichert. ... > Im AST werden i.d.R. keinen Tokens mehr referenziert, ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Generating AST using javacc and jjtree
    ... It supports not only Java but C++ and C#. Written in Java v.1.1 and can be ... Parser (which can build AST) and AST Grammar Walker (with ... At ANTLR site ...
    (comp.lang.java.softwaretools)
  • Re: Lexer/Parser in Matlab
    ... But you can use ANTLR, generate a java object (e.g. for AST) and then access it from Matlab. ...
    (comp.soft-sys.matlab)