[antlr-interest] Q: Peek at token without consumeing

Gustaf Johansson gustaf.j at gmail.com
Sun May 22 10:06:37 PDT 2011


Hi,

I have a tricky problem that i cant seem to get right.

I have a static semantics rule which says " ';' is optional if
preceding statement ends with '}' or the statement is last in list"
Basically meaning either have LA(-1) == '}' or LA(1) == '}' or we
should expect a ';'.

This rule is used in many places throughout the grammar so a generic
approach would be best.

I would like this case to produce good error messages since missing
';' is quite common.
Can i use a "standard" rule and mark it somehow to not consume a token
if it shouldnt (like the below example)?

end:
        : ';'
        | '}' { doNotConsume() }
        | ( LA(-1) == '}' ) { doNotConsume() } ;

BR Gustaf


More information about the antlr-interest mailing list