Parsing 不遵循运算符关联性和优先规则的BNF语法可以被视为明确的语法吗?

Parsing 不遵循运算符关联性和优先规则的BNF语法可以被视为明确的语法吗?,parsing,context-free-grammar,ambiguous,bnf,ambiguous-grammar,Parsing,Context Free Grammar,Ambiguous,Bnf,Ambiguous Grammar,考虑以下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>

此语法没有歧义,因为一条语句只能绘制一个解析树。但是,这显然不符合运算符存在性规则。运算符*、+,具有相同的优先级。此语法是明确的,还是仅仅没有歧义?如果它是明确的,那么语法就可以是明确的,而不遵循运算符关联性和优先级规则,是这样吗?

明确和不含糊的意思完全相同,即只有一种可能的解释。这不是你所期望的解释是不相关的

这语法清楚吗

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


对。运算符关联性和优先级是数学和编程语言的约定。模棱两可或缺乏模棱两可与语法是否符合这些惯例无关。

语法不模棱两可并不意味着它没有被破坏。