考虑这个 BNF 语法:
<assign> = <id> = <expr>
<id> = A|B|C
<expr> = <id> + <expr>|<id> * <expr>|(<expr>)|<id>
这个语法没有歧义,因为一个语句只能绘制一个解析树。但是,这显然不遵循运算符优先级规则。运算符 *,+,() 具有相同的优先级。这个语法是明确的,还是只是不模棱两可?如果它是明确的,那么语法可以在不遵循运算符关联性和优先级规则的情况下是明确的,这是真的吗?
考虑这个 BNF 语法:
<assign> = <id> = <expr>
<id> = A|B|C
<expr> = <id> + <expr>|<id> * <expr>|(<expr>)|<id>
这个语法没有歧义,因为一个语句只能绘制一个解析树。但是,这显然不遵循运算符优先级规则。运算符 *,+,() 具有相同的优先级。这个语法是明确的,还是只是不模棱两可?如果它是明确的,那么语法可以在不遵循运算符关联性和优先级规则的情况下是明确的,这是真的吗?