> -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Cliff Hudson > Sent: Friday, April 02, 2010 4:59 PM > To: [email protected] > Subject: Re: [antlr-interest] Ambiguous lexing task > > I've played around with it a bit, and I modified NAMECHAR to be: > > fragment NAMECHAR > : LETTER > | DIGIT > | '_' > | {input.LA(2) != '>'}?=> '-' > ; > > This seems to do the trick. However, I'm concerned this is > not a best practice for this kind of situation. Could I get > a suggestion as to the "correct" way to go about this? >
Is it every possible that that text should be interpreted as my-identifier- > foo (That is, my-identifier- "greater than" foo?) If it is, then the language is ambiguous to the lexer and you will have a lot of complications to deal with. If this is not a valid interpretation, then that is a reasonable way to handle it. Troy > On Fri, Apr 2, 2010 at 1:48 PM, Cliff Hudson > <[email protected]>wrote: > > > I have a string which I need to parse for IDs and > operators. This is > > normally pretty easy, but there is one case where a > character in the > > ID can also match one character in the operator. The tokens are: > > > > OP_TRANSFORM : '->' > > > > ID : (LETTER | '_') (options { greedy=true } : NAMECHAR)* > > > > fragment NAMECHAR : LETTER | DIGIT | '_' | '-' ; > > > > LETTER : 'a'..'z' | 'A'..'Z' ; > > NUMBER: '0'..'9' ; > > > > > > The issue is in parsing the following string: > > > > my-identifier->foo > > > > The ID token of course matches 'my-identifier-', and then I am left > > with an extraneous '>'. Is there a way to construct a set > of lexing > > rules, possibly with actions, that would correctly separate > out the -> > > from the ID? In this case, I want the '-' in OP_TRANSFORM > to be the > > preferred path and to match '->' even in the above case. > > > > Thanks. > > > > 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.
