移位减少冲突



在我做的语法下面。

  1. S' -> 平方英尺
  2. sqf -> 声明
  3. 声明 ->声明
  4. 声明 ->声明声明
  5. 声明 ->关系
  6. 声明 -> 无关系
  7. 关系->头体
  8. norelation -> relatts
  9. norelation -> reldata
  10. norelation -> relatts reldata
  11. head -> 相关名称属性
  12. 正文 -> 相关数据
  13. 正文 ->空
  14. 相关名称 -> 相关标识符
  15. 属性 -> 相对
  16. 属性 ->空
  17. Relatts -> attname
  18. Relatts -> Attname Relatts
  19. reldata -> DATAKW 元组
  20. 相关数据 -> DATAKW
  21. 元组 ->元组
  22. 元组 ->
  23. 元组元组
  24. 收件人名称 -> ATTKW 标识符
  25. 元组 -> 值
  26. 空 ->

问题是语法是模棱两可的,因为对于某些规则存在移位/减少冲突。特别

在以下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序列。如何区分两个连续序列和一个较长的序列?还是三个较短的?等。

同一问题还有许多其他实例。

除非您错误地转录了语言,否则这是语言设计的问题,分号是常见的解决方案。

相关内容

  • 没有找到相关文章

最新更新