[antlr-interest] AntlrWorks just hangs when trying to step through the tutorial..

Terence Parr parrt at cs.usfca.edu
Sun Dec 5 16:58:39 PST 2010


Did you give it some input? did you debug remote?
Ter
On Dec 5, 2010, at 4:24 PM, Jeffrey Newman wrote:

> I'm just learning Antlr and AntlrWorks.
> I have downloaded AntlrWorks (I assume antlr came with it).
> It comes up. (On Linux 64, with the latest Java from Sun.
> I put the java bins in my path. My CLASSPATH is empty.)
> 
> I started on the AntlrWorks tutorial.
> Below is the grammer, and the events.
> 
> When I ran the interpreter, I was able to see a parse tree. Cool.
> When I ran the debugger, it hung.
> I tried to single step.
> Below is as far as I got before it hung.
> 
> Can anyone explain why.
> 
> Now, back to Terence's book...
> 
> thanks
> 
> Jeffrey
> 
> 
>> From Events.
> 
> 0
> Commence
> 
> 
> 
> 
> 1
> Enter
> rule /home/jeffn/Expr.g:prog
> 
> 
> 
> 
> 2
> Location
> (15,1)
> 
> 
> 
> 
> 3
> Enter alt 1
> 
> 
> 
> 
> 4
> Location
> (15,9)
> 
> 
> 
> 
> 5
> Enter
> subrule 1
> 1
> 
> 
> 
> 
> 
> Grammer
> 
> rammar Expr;
> 
> @header {
> package test;
> import java.util.HashMap;
> }
> 
> @lexer::header {package test;}
> 
> @members {
> /** Map variable name to Integer object holding value */
> HashMap memory = new HashMap();
> }
> 
> prog:   stat+ ;
> 
> stat:   expr NEWLINE {System.out.println($expr.value);}
>    |   ID '=' expr NEWLINE
>        {memory.put($ID.text, new Integer($expr.value));}
>    |   NEWLINE
>    ;
> 
> expr returns [int value]
>    :   e=multExpr {$value = $e.value;}
>        (   '+' e=multExpr {$value += $e.value;}
>        |   '-' e=multExpr {$value -= $e.value;}
>        )*
>    ;
> 
> multExpr returns [int value]
>    :   e=atom {$value = $e.value;} ('*' e=atom {$value *= $e.value;})*
>    ; 
> 
> atom returns [int value]
>    :   INT {$value = Integer.parseInt($INT.text);}
>    |   ID
>        {
>        Integer v = (Integer)memory.get($ID.text);
>        if ( v!=null ) $value = v.intValue();
>        else System.err.println("undefined variable "+$ID.text);
>        }
>    |   '(' e=expr ')' {$value = $e.value;}
>    ;
> 
> ID  :   ('a'..'z'|'A'..'Z')+ ;
> INT :   '0'..'9'+ ;
> NEWLINE:'\r'? '\n' ;
> WS  :   (' '|'\t')+ {skip();} ;
> 
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address



More information about the antlr-interest mailing list