I think that every time we talk about this, we realize that the problems lie in lookahead where you cannot decide what to do in certain cases. I think that the quantum token idea is a much better one in that a token can simultaneously be ID and WHERE or any other token that it is flagged as being possible to be. This removes context from the lexer and allows the parser to decide.
Predicates would still work and any other ambiguity should work out? It means that input.LA(n) would also need input.LA(n, TYPE) and perhaps input.LT(n).getType(TYPE) which would return TYPE if LT(n)/LA(n) can be one, otherwise the main type that it actually is. Could have Boolean versions instead/as well of course. WHERE :: ID, KEYWORD : 'WHERE' ; Or something like that. I think that this is well worth looking in to. Jim > -----Original Message----- > From: [email protected] [mailto:antlr-interest- > [email protected]] On Behalf Of Terence Parr > Sent: Wednesday, February 16, 2011 2:09 PM > To: antlr-interest Interest > Subject: Re: [antlr-interest] Context Sensitive Keyword Support? > > hiya. yep, i had a similar proposal way back when for v3.0 but I > abandoned; can't remember why at this point. i love idea but impl had > some issues. > ter > On Feb 16, 2011, at 2:02 PM, Scott Stanchfield wrote: > > > Has anyone looked at the context-sensitive-scanning proposal I sent a > > while back? > > > > http://javadude.com/articles/antlr-context-sensitive-scanner.html > > > > -- Scott > > > > ---------------------------------------- > > Scott Stanchfield > > http://javadude.com > > > > > > > > On Wed, Feb 16, 2011 at 4:38 PM, Jim Idle <[email protected]> > wrote: > >> No you do this in the parser by allowing the keywords where ID is > >> expected then by predicating the WHERE keyword in the LINQ rules: > >> > >> > >> .... ((WHERE)=>where_clause)? .... > >> > >> > >> id : ID | WHERE | .... > >> > >> > >> I have fully working C# lexer, parser, tree walker if that is what > >> you are trying to build. It is a commercial product though. > >> > >> Jim > >> > >>> -----Original Message----- > >>> From: [email protected] [mailto:antlr-interest- > >>> [email protected]] On Behalf Of chris king > >>> Sent: Wednesday, February 16, 2011 1:32 PM > >>> To: [email protected] > >>> Subject: [antlr-interest] Context Sensitive Keyword Support? > >>> > >>> Does ANTLR support context sensitive keywords? For example, in C# > >>> "where" is a keyword only in a LINQ expression. To support this > >>> ANTLR would need to change the lexer behavior given feedback from > >>> the parser letting it know what context it is in. From what I hear > >>> ANTLR lexes the entire file before passing it onto the parser. If > >>> that's true than I guess it doesn't support this language concept. > >>> In that case, is there a way to work around? > >>> > >>> Thanks, > >>> Chris > >>> > >>> List: http://www.antlr.org/mailman/listinfo/antlr-interest > >>> Unsubscribe: > >>> http://www.antlr.org/mailman/options/antlr-interest/your- > >>> email-address > >> > >> List: http://www.antlr.org/mailman/listinfo/antlr-interest > >> Unsubscribe: > >> http://www.antlr.org/mailman/options/antlr-interest/your-email- > addres > >> s > >> > > > > List: http://www.antlr.org/mailman/listinfo/antlr-interest > > Unsubscribe: > > http://www.antlr.org/mailman/options/antlr-interest/your-email- > address > > > List: http://www.antlr.org/mailman/listinfo/antlr-interest > Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your- > email-address 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.
