[antlr-interest] get Line and Column in TreeParser with antlr 2.7.7 generating C# Code

Sergio Paracuellos sparacuellos at zitralia.com
Tue Jul 3 01:18:32 PDT 2012


Hello,

I am trying to get the line and column in class TreeParser but I only
getting 0.

I have been reading in internet about it, but there is not seem to be
too many information about it.

I have written my own class extending of CommonAST like this:

using CommonAST             = antlr.CommonAST;
using Token                 = antlr.Token;
using IToken                = antlr.IToken;
using CommonToken           = antlr.CommonToken;
using AST                   = antlr.collections.AST;
using System;

public class fpc2ilASTWalker: CommonAST 
{
    private int line;
    private int col;

    public void initialize (Token t)
    {
        base.initialize(t);
        line = t.getLine();
        col = t.getColumn();
    }

    
    public void initialize (AST t)
    {
        base.initialize(t);
        line = t.getLine();
        col = t.getColumn();
    }

    public int getLine() { return line; }
    public int getColumn() { return col; }
}

and the in the main I have this:

...

fpc2ilParser parser = new fpc2ilParser ( lexer );
                    parser.setFilename( args[0] );
                    parser.setASTNodeClass("fpc2ilASTWalker");
                    parser.program();

                    fpc2ilASTWalker t = (fpc2ilASTWalker)parser.
getAST();

                    fpc2ilTreeParser treeParser = new
fpc2ilTreeParser();
                    treeParser.setASTNodeClass("fpc2ilASTWalker");
                    treeParser.program(t);

but when I try to getLine like:

factor:
    id:IDENT
    {
       Console.WriteLine("IDENT:" + id.getText() + " " + id.getLine());
    }
;

I only obtain:

$ mono compiler.exe examples/procedureYfunction.pas 
IDENT:x 0

What am I doing wrong?

Thanks in advance.

Sergio
-- 
Sergio Paracuellos sparacuellos at zitralia.com
ZITRALIA C/Manuel Tovar, 16 28034 Madrid Tlf: 91 417 07 10 Fax: 91 182
26 63
AVISO LEGAL: El contenido de este correo electrónico y sus anexos son
estrictamente confidenciales, secretos y restringidos. La divulgación o
el suministro, en todo o en parte, a cualquier tercero, no podrá ser
realizada sin el previo, expreso y escrito consentimiento de ZITRALIA
SEGURIDAD INFORMÁTICA S.L. En caso que no sea el destinatario y haya
recibido este mensaje por error, agradecemos que nos lo comunique
inmediatamente al remitente sin difundir, almacenar o copiar su
contenido. 
Le informamos que los datos personales de esta comunicación, están
incorporados en un fichero bajo nuestra responsabilidad, para el
tratamiento de datos de carácter personal, con la finalidad de
informarle de los productos y servicios que ofrece ZITRALIA SEGURIDAD
INFORMÁTICA S.L.
Vd., como interesado directo, tiene derecho de acceso, rectificación,
cancelación y oposición al tratamiento de la información que le
concierne y autoriza a que pase a formar parte del fichero, ante el cual
puede ejercer sus derechos, y recibir información y publicidad de
nuestros productos y servicios. Los derechos precitados podrán hacerse
efectivos ante ZITRALIA SEGURIDAD INFORMÁTICA S.L. en la dirección de
email: info at zitralia.com o la siguiente dirección: c/Manuel Tovar, 16.
28234 Madrid.
(Ley orgánica 15/1999 de 13 de diciembre de protección de datos de
 carácter personal).






More information about the antlr-interest mailing list