不使用括号并仅考虑加法,减法,乘法和除法,以下描述这些简单算术运算的无上下文语法是不正确的,因为它是右关联而不是左关联?
- E -> T | T + E | T - E
- T -> int | int * T | int / T
正确的语法是:
- E -> T | E + T | E - T
- T -> int | T * int | T / int
这种推理是否正确?
答案 0 :(得分:1)
“正确”是你定义的任何东西。在语法学校教授的非关联算子的“传统”含义是左联想的,所以从这个意义上讲,左递归语法是“正确的”,而正确的递归语法则不是,但这是一个非常循环的定义。
此外,你的左侧语法需要添加E -> T
是正确的(因为它没有描述任何有限的字符串)