[antlr-interest] Please help to left-refactor this simple ebnf grammar
Jim Idle
jimi at temporal-wave.com
Sun Sep 20 08:28:44 PDT 2009
Your pareser rules are all starting with upper case letters and they
should start with lower case.
Jim
On Sep 20, 2009, at 3:45 AM, Artem Golubev <artemkagolubev at gmail.com>
wrote:
> I just can't get how I can left-refactor the following grammar.
> Please, help.
> Currently I get "(211): ebnf.g:1:8: [fatal] rule Tokens has non-LL
> (*) decision due to recursive rule invocations reachable from alts
> 8,9. Resolve by left-factoring or using syntactic predicates or
> using backtrack=true option." error with it.
>
> grammar ebnf;
>
> options {
> output = AST;
> language = CSharp2;
> }
>
> tokens {
> OPENBRACKET = '(';
> CLOSEBRACKET = ')';
> ONEORMOREKEYWORD= '+';
> ANYKEYWORD = '*';
> OPTIONALKEYWORD = '?';
> ORKEYWORD = '|';
> }
>
> /*------------------------------------------------------------------
> * PARSER RULES
> *------------------------------------------------------------------*/
> OrList : List (ORKEYWORD List)*;
>
> List : (Mutliplication)+;
>
> Mutliplication : Atom ( ONEORMOREKEYWORD | OPTIONALKEYWORD |
> ANYKEYWORD )?;
>
> Atom : IDENTIFIER | Group;
>
> Group : OPENBRACKET OrList CLOSEBRACKET;
>
> /*------------------------------------------------------------------
> * LEXER RULES
> *------------------------------------------------------------------*/
>
> IDENTIFIER : (DIGIT)+ ;
>
> WHITESPACE : ( '\t' | ' ' | '\r' | '\n' )+ { $channel = HIDDEN; } ;
>
> fragment DIGIT : '0'..'9' ;
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
More information about the antlr-interest
mailing list