[antlr-interest] Can't see the wood (@init and @after)
Paul Keir
paul at paulkeir.com
Wed Jul 18 03:12:17 PDT 2007
I know you're dying to hear the conclusion of this one :) Well here it
is, and I'm delighted.
I'd always assumed that in a rule, the Actions inside an '@init' would
be called as often as Actions after the start colon (in a rule without
ORs). In the following example, from ANTLR's C example grammar, I had
assumed that "a" would be printed as often as " b":
expression
@init { System.out.println("a"); }
: { System.out.println(" b"); } assignment_expression (','
assignment_expression)*
;
This isn't true. "a" is printed many more times than " b". I had been
happily updating many (global) member variables inside @init and @after,
to recently devastatingly confusive results.
I find putting the Actions within the rules quite messy, so that was why
I'd 'standardised' on using mainly @init and @after. I will now begin to
change everything. I'm surprised it worked for so long.
Regards,
Paul
More information about the antlr-interest
mailing list