歧义语法和无歧义语法的区别

歧义语法和无歧义语法的区别

1. 歧义语法:

如果存在多个派生树或解析树,则与上下文无关的语法称为歧义语法。

例子:

S -> S + S / S * S / S / a

2. 明确的语法:

如果存在且仅存在一个派生树或解析树,则与上下文无关的语法称为明确语法。

例子 –

X -> AB
A -> Aa / a
B -> b

歧义语法和明确语法的区别:

歧义语法 明确语法
1 在歧义语法中,最左和最右的派生是不一样的。 | 在明确的语法中,最左和最右的派生是相同的。
2 歧义语法中非终点词的数量比无歧义语法少。 | 在无歧义语法中非终结点的数量多于歧义语法。
3 在二义语法中,解析树的长度相对较短。 | 在无歧义语法中,解析树的长度相对较大。
4 在歧义语法中推导树的速度比在无歧义语法中快。 | 在无歧义语法中推导树的速度比歧义语法慢。
5 歧义语法会生成多个解析树。 | 无歧义语法只生成一个解析树。
6 歧义语法包含歧义。 | 无歧义语法不包含任何歧义。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程