Nicely put. Thanks for helping me understand. Hiten
On Sat, Mar 19, 2011 at 9:50 AM, Kevin J. Cummings < [email protected]> wrote: > On 03/19/2011 08:18 AM, Wojciech Tomasz Cichon wrote: > > i’m struggling with this grammar for a few days now, and nothing really > working, > > so i started from beginning and i have : > > grammar myGrammar; > > > > options { > > language = Java; > > k=1; > > } > > > > rule: term ; > > > > factor : '-'? NUMBER > > ; > > > > term : factor '*' term > > | factor '/' term > > | factor '%' term > > | factor; > > This is the classic case where the following is probably the proper left > factored LL(1) for you: > > term : factor ( ( '*' | '/' | '%' ) factor )* > ; > > Now you have a single "factor" that will always match at the beginning > of your term rule, and not have to chose which of the 4 choices to > associate a '-' with without changing to k=2 or k=3, or turning on > backtracking. > > > NUMBER : '0'..'9'+ > > ; > > WS : ( ' ' > > | '\t' > > | '\r' > > | '\n' > > ) {$channel=HIDDEN;} > > ; > > > > > > and i got errors: > > warning(200): /ANTLR_TEST/myGrammar.g:13:7: Decision can match input such > as "'-'" using multiple alternatives: 1, 2, 3, 4 > > As a result, alternative(s) 2,3,4 were disabled for that input > > |---> term : factor '*' term > > It can't tell which of your 4 term alternatives to choose based on a '-' > look-ahead character.... > > > warning(200): /ANTLR_TEST/myGrammar.g:13:7: Decision can match input such > as "NUMBER" using multiple alternatives: 1, 2, 3, 4 > > As a result, alternative(s) 2,3,4 were disabled for that input > > |---> term : factor '*' term > > The same here, which of the 4 term alternatives does it choose when the > look-ahead character is a NUMBER? > > > error(201): /ANTLR_TEST/myGrammar.g:13:7: The following alternatives can > never be matched: 2,3,4 > > |---> term : factor '*' term > > Because it "chose" the first alternative for the 2 cases above, it will > never try a division, modulus, or simple factor. > > > can anyone tell me what i’m doing wrong > > left factor your grammar.... > > > regards > > -- > Kevin J. Cummings > [email protected] > [email protected] > [email protected] > Registered Linux User #1232 (http://counter.li.org) > > 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.
