小编jla*_*lam的帖子

具有减少减少冲突的简单歧义语法

以下解析逻辑表达式的简单语法会导致减少/减少冲突:

%token AND OR
%token NUMBER VARIABLE
%%
logical_expr
    : logical_expr AND logical_term
    | logical_expr OR logical_term
    | logical_term
    ;
logical_term
    : VARIABLE
    | comparison
    | '(' logical_expr ')'
    ;
comparison
    : expr '<' expr
    | expr '>' expr
    ;
expr
    : expr '+' term
    | expr '-' term
    | term
    ;
term
    : NUMBER
    | VARIABLE
    | '(' expr ')'
    ;
%%
Run Code Online (Sandbox Code Playgroud)

野牛的状态报告有:

state 2

    4 logical_term: VARIABLE .
   13 term: VARIABLE .

    ')'       reduce using rule 4 (logical_term) …
Run Code Online (Sandbox Code Playgroud)

grammar bison reduce-reduce-conflict ambiguous-grammar

3
推荐指数
1
解决办法
375
查看次数