Ter, First of all, let me explain that the only reason I'm being such a nuisance is that I really want this to work! However, I'm afraid that in the end, ANTLR falls just short of being a scannerless tool.
The problem lies with distinguishing between keywords, and identifiers that happen to start with the same letters as a keyword. The sample at http://bit.ly/gT3Q1C cannot distinguish between "returnme;" and "return me;", because kreturn is expressed as: kreturn : 'r' 'e' 't' 'u' 'r' 'n' ws? ; My first thought was, just make the whitespace not optional. But, in C for example, we can have return; return me; whereas "returnme;" would be a syntax error. Now, making ws not optional is no longer possible; what is really needed is a way to express "'r' 'e' 't' 'u' 'r' 'n' followed by anything that can NOT be part of an identifier". Although you could re-write the return statement rule to something awful like retstat: kreturn ws? colon | kreturn ws id colon ; the underlying problem remains: there is no way to prevent ANTLR entering rule kreturn upon seeing an identifier like "returnme" that happens to start with the same letters as keyword "return". In Rats!, you would write KRETURN = "return" !LetterOrDigit ws? ; where the "!" operator denotes a syntactic predicate meaning "LetterOrDigit must not match, and corresponding input will not be consumed" Without the ability to express "something followed by anything that is not a letter or digit", I don't see how to get it right in ANTLR. I very much hope I am wrong though! 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.