Christian Convey wrote:
>> ----------------
>> /* Tokens */
>> NEWLINE: '\n' ;
>> E: 'E';
>> C: 'C';
>> CALL: 'CALL';
>> // default greediness ensures "CALL" is matched as CALL instead of C.
>
> Thanks, but 'C' can also be the name of a variable, as long as it's
> not in the first column. So I don't think greediness solves the whole
> problem.
>
I wonder if this would work better in that case:
---------------------------
/* Tokens */
NEWLINE: '\n' ;
/* Parsing rules */
stmt : 'E' ... NEWLINE
| 'C' ... NEWLINE
| 'CALL' ... NEWLINE
;
---------------------------
Nor sure since I don't know how explicitly defined tokens are treated
differently from tokens implicitly defined in parsing rules.
Alternatively, you can apply semantic predicate to lexer rules like this:
------------------------
C: { $pos == 0 }?=> 'C' ;
------------------------
It should only match "C" at the beginning of the line, but I found (in
my noob experiences) semantic predicate can be pretty tricky due to
"hoisting out" business and how it affects prediction DFA construction -
I'm sure more experienced hands can tell you better.
Good luck.
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.