[antlr-interest] Re: ANTLR problem

Zulfiqar Malik zulfiqar.malik at gmail.com
Sun Jul 30 03:14:06 PDT 2006


One thing that i forgot to mention is that everything works fine in
debug mode i.e. Debug CRT (Multithreaded Debug DLL). Obviously i don't
want this.

On 7/30/06, Zulfiqar Malik <zulfiqar.malik at gmail.com> wrote:
> Hi,
>
> I am using ANTLR 2.7.6. I am familiar with other parser generating
> tools like bison, slk etc. but this is the first time i am using
> ANTLR. I am writing a grammar with a C# like syntax and bison was
> proving to be quite restrivtive so i decided to switch to ANTLR.
> I got everything up and running and made a dll (VS8.0) for usage in
> C++. Trying out the minimalistic parser given in the "getting started"
> page i encounter an exception at the following line of code (for any
> token, in this particular case mNEWLINE in the lexer):
>
>         if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken &&
> _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
>            _token = makeToken(_ttype);
>            _token->setText(text.substr(_begin, text.length()-_begin));
>         }
>         _returnToken = _token; // <--- CRASH ON THIS LINE
>
> and it should crash since _returnToken is not initialized and points
> to an invalid memory address. I don't know how to solve this problem.
> I am using VS8.0 on WinXP SP2 (which shouldn't be an issue). Thanks in
> advance.
>
> Grammar is given below:
>
> options {
>         language="Cpp";
> }
>
> class P extends Parser;
> options {
>         k = 2;
> }
>
> startRule
>     :   n:NAME
>         //{printf("Hi there, %s\n", n);}
>     ;
>
> class L extends Lexer;
>
> // one-or-more letters followed by a newline
> NAME:   ( 'a'..'z'|'A'..'Z' )+ NEWLINE
>     ;
>
> NEWLINE
>     :   '\r' '\n'   // DOS
>     |   '\n'        // UNIX
>                 {
>                 /*_ttype = antlr::Token::SKIP; newline();*/ }
>     ;
>
> --
> Regards,
> Zulfiqar Inayat Malik.
>


-- 
Regards,
Zulfiqar Inayat Malik.


More information about the antlr-interest mailing list