0

現在、私の楽しいプロジェクトをパーサーとして bison/flex に移行していますが、reduce/reduce の競合を解決するのに問題があります。

// https://github.com/X39/yaoosl/blob/master/code-gen/yaoosl.y#L761-L766
ifthen: YST_IF YST_ROUNDO expression code_ifstart YST_ROUNDC codebody code_ifendnoelse
        | YST_IF YST_ROUNDO expression code_ifstart YST_ROUNDC ifthen_clsd YST_ELSE code_ifelse ifthen code_ifendelse
        ;
ifthen_clsd: codebody
           | YST_IF YST_ROUNDO expression code_ifstart YST_ROUNDC ifthen_clsd code_ifelse YST_ELSE ifthen_clsd code_ifendelse
           ;

注: code_ で始まるものは中間アクションです

これを適切に解決する方法と、「頼りになる」解決策が間違っているか、機能しなかった理由を誰かに説明してもらえますか? ありがとう、X39

4

1 に答える 1