Antlr 左递归

问题描述 投票:0回答:1

我正在编写一种简单的语言,但我有一个左递归,我不知道如何解决。

booleanExpression
    : expression EQUALS expression
    ;

numericExpression
    :
    ;

expression
    : booleanExpression
    | numericExpression
    ;

正如您所看到的

booleanExpression
expression
一样递归,因为例如这是一个布尔表达式
1 == 1
并且等号的每一侧都可以有任何内容,并且在这种情况下的任何内容都是由表达式定义的。

我该如何解决这个问题?

谢谢

antlr antlr4
1个回答
0
投票

ANTLR4 不支持间接左递归,但是直接左递归

expression
    : expression HIGHER_PRECEDENCE_OPERATOR expression
    | expression EQUALS expression
    | expression LOWER_PRECEDENCE_OPERATOR expression
    | ...
    | '(' expression ')'
    | NUMBER
    | STRING
    | ... 
    ;
© www.soinside.com 2019 - 2024. All rights reserved.