计算机科学-结合语法中缀、后缀和前缀



我正在使用Jflex和CUP编写某种计算器,我能够制作中缀、后缀和前缀表示法的语法,如下所示,如果我只使用每种语法而不组合它们,它们就能很好地工作。

现在的问题是我如何能结合他们没有得到减少/移位错误,我已经这样做了几天了,我不能真正弄清楚。主要问题是当F -> NUMBER和E -> NUMBER时,它们会有减少/移位错误,我也尝试添加更多规则来减轻减少/移位错误,但我没有正确地得到它。还请注意,我可以组合任意两个组合,但不能组合三个。

我所做的一种方法是尝试通过将E更改为T并创建一个新规则T -> E|Number来合并前缀和后缀到中缀,但我仍然

如果有人能给我一个解释,告诉我如何将它们结合起来,那将是非常有帮助的。

这是我的语法

 /* INFIX */
   E --> E - T | E + T| T
   T --> T * F | T / F | F
   F --> NUMBER

/*PRE fix */
   E --> + E E | - E E | / E E | * E E | NUMBER

/*POST fix*/
   E --> E E + | E E -| E E * |E E / |NUMBER

语法

program ->中缀|前缀|后缀

E -> E - T | E + T | T | T * F | T/F | F

F -> (E) | n

prefix -> Epre

Fpre -> + Fpre Fpre | - Fpre Fpre | * Fpre Fpre |/Fpre Fpre

Fpre -> Epre | n

postfix -> post

Epost -> Fpost Fpost + | Fpost Fpost - | Fpost Fpost * | Fpost Fpost Fpost/

Fpost -> Epost | n

相关内容

  • 没有找到相关文章

最新更新