在我做的语法下面。
- S' -> 平方英尺
- sqf -> 声明
- 声明 ->声明
- 声明 ->声明声明
- 声明 ->关系
- 声明 -> 无关系
- 关系->头体
- norelation -> relatts
- norelation -> reldata
- norelation -> relatts reldata
- head -> 相关名称属性
- 正文 -> 相关数据
- 正文 ->空
- 相关名称 -> 相关标识符
- 属性 -> 相对
- 属性 ->空
- Relatts -> attname
- Relatts -> Attname Relatts
- reldata -> DATAKW 元组
- 相关数据 -> DATAKW
- 元组 ->元组
- 元组 -> 元组元组
- 收件人名称 -> ATTKW 标识符
- 元组 -> 值
- 空 ->
问题是语法是模棱两可的,因为对于某些规则存在移位/减少冲突。特别
在以下DATAKW规则中,我们有转移/减少冲突
- 关系->头体
- 正文 -> 相关数据
- 正文 ->空
- reldata -> DATAKW 元组
- 相关数据 -> DATAKW
- *空 -> *
在以下DATAKW规则中,我们有转移/减少冲突
- norelation -> relatts
- norelation -> relatts reldata
- reldata -> DATAKW 元组
- 相关数据 -> DATAKW
在以下ATTKW规则中,我们有转移/减少冲突
- 头 -> 相关名称属性
- 属性 -> 相对
- 属性 ->空
- Relatts -> attname
- Relatts -> Attname Relatts
- *空 -> *
- 收件人名称 -> ATTKW 标识符
在以下ATTKW规则中,我们有转移/减少冲突
- Relatts -> attname
- Relatts -> Attname Relatts
- Relatts -> attname
- Relatts -> Attname Relatts
- 收件人名称 -> ATTKW 标识符
谁能帮我解决这些冲突,请。
一个问题是语法无法确定一个declaration
在哪里结束,下一个在哪里开始。
这个一般问题的简单例子:norelation
可以只是一个relatts
,它可以是attname
的列表。所以如果你有两个连续的norelation
,那可能是两个attname
序列。如何区分两个连续序列和一个较长的序列?还是三个较短的?等。
同一问题还有许多其他实例。
除非您错误地转录了语言,否则这是语言设计的问题,分号是常见的解决方案。