【发布时间】:2015-05-02 19:18:41
【问题描述】:
我正在为LTL公式编写CFG语法,其中原子命题直接由逻辑公式表示。但是,当我尝试为逻辑和 LTL 公式实现括号时,我的语法变得模糊不清(逻辑公式的括号应该具有更高的优先级)。这是我的语法;当我取消注释 ltl nonterminal 中的括号规则时,我遇到了 shift/reduce 冲突。如何解决?
%left TPLUS TMINUS
%left TMUL TDIV
%left TAND TOR TIMP
%left TRSHIFT TLSHIFT
%left TEQUAL TCNE TCGE TCGT TCLE TCLT
%left TUNTIL TWEAK TFUT TGLOB TREL TNEG
%start ltlformula
%%
ltlformula
: ltl {}
formula
: lexpr {}
;
lterm
: TLPAREN lexpr TRPAREN {}
| arexpr binary_la_oper arexpr {}
;
lnterm
: lterm {}
| TNEG lnterm {}
;
lexpr
: lterm {}
| lexpr binary_ll_oper lnterm {}
;
ltl
: formula {}
| TFUT ltl {}
| TGLOB ltl {}
| ltl TUNTIL ltl {}
| ltl TREL ltl {}
| ltl TWEAK ltl {}
| TNEG ltl {}
// | TLPAREN ltl TRPAREN { } - here comes the trouble...
;
【问题讨论】:
标签: parsing grammar bison context-free-grammar