能否将不遵循算子关联性和优先级规则的BNF语法视为明确的语法?

问题描述 投票:0回答:2

考虑此BNF语法:

<assign> = <id> = <expr>
<id> = A|B|C
<expr> = <id> + <expr>|<id> * <expr>|(<expr>)|<id>

此语法不是模棱两可的,因为只能为一个语句绘制一棵解析树。但是,这显然不遵循运算符优先规则。运算符*,+,()具有相同的优先级。此语法是明确的还是才不not昧吗?如果它是明确的,那么语法就可以是明确的,而无需遵循运算符的关联性和优先级规则,这是真的吗?

parsing context-free-grammar ambiguous bnf ambiguous-grammar
2个回答
1
投票

“明确”和“不明确”表示完全相同的事物,即只有一种可能的解释。那不是您期望的解释是不相关的。


0
投票

此语法是否明确?

因此,不遵循运算符的关联性和优先级规则,语法可以是明确的,对吗?

是。运算符的关联性和优先级是数学和编程语言中的约定。歧义或缺乏歧义与语法是否符合那些约定无关。

© www.soinside.com 2019 - 2024. All rights reserved.