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 il-antlr-inter...@googlegroups.com. To unsubscribe from this group, send email to il-antlr-interest+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.