[antlr-interest] How to remove mutual left recursion from this grammar?

Seref Arikan serefarikan at kurumsalteknoloji.com
Wed Jan 4 09:34:31 PST 2012


Greetings,
This simple grammar represents a setup  I could not fix. Obviously the
target is to create nested boolean statements, but I could not fix the
recursion. This pattern repeats in a larger grammar, so solving this will
help me fix more problems. Any clues that you can think of?

//--------------------------------------------------------------------------------
grammar testg;

rul    :  contains_expr    ;

contains_expr: 'CONTAINS' contains_expression
                  //'CONTAINS' contains_or
        ;

contains_expression : class_expression
                        | contains_expression_boolean
                        |'(' contains_expression_boolean ')'
        ;

contains_expression_boolean : contains_expression 'OR' contains_expression
                              | contains_expression 'AND'
contains_expression
                              | contains_expression 'XOR'
contains_expression
        ;




class_expression
    : ID
    ;



ID  :    ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
    ;



Best regards
Seref


More information about the antlr-interest mailing list