如果对于给定的输入字符串, 存在不止一个最左导数, 不止一个最右导数或不止一个解析树, 那么语法就是模棱两可的。如果语法不是模棱两可的, 那么就将其称为模棱两可。
例:
S = aSb | SS
S = ∈
对于字符串aabb, 以上语法生成两个解析树:
如果语法有歧义, 则对编译器构造不利。没有方法可以自动检测并消除歧义, 但是你可以通过重写整个语法而不会产生歧义来消除歧义。
如果对于给定的输入字符串, 存在不止一个最左导数, 不止一个最右导数或不止一个解析树, 那么语法就是模棱两可的。如果语法不是模棱两可的, 那么就将其称为模棱两可。
S = aSb | SS
S = ∈
对于字符串aabb, 以上语法生成两个解析树:
如果语法有歧义, 则对编译器构造不利。没有方法可以自动检测并消除歧义, 但是你可以通过重写整个语法而不会产生歧义来消除歧义。
评论前必须登录!
注册