简单算术的无上下文语法

时间:2013-11-10 20:52:37

标签: context-free-grammar operator-precedence

不使用括号并仅考虑加法,减法,乘法和除法,以下描述这些简单算术运算的无上下文语法是不正确的,因为它是右关联而不是左关联?

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

正确的语法是:

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

这种推理是否正确?

1 个答案:

答案 0 :(得分:1)

“正确”是你定义的任何东西。在语法学校教授的非关联算子的“传统”含义是左联想的,所以从这个意义上讲,左递归语法是“正确的”,而正确的递归语法则不是,但这是一个非常循环的定义。

此外,你的左侧语法需要添加E -> T是正确的(因为它没有描述任何有限的字符串)