如何解决如何使它能够使用LALR解决1
*X-> Ya| cYb | Zb | cZa
Y-> q | Eplison | XaZ
Z-> f | q*
我已经完成了LR(1)解析表的工作,并且还证明这不是LALR(1),但是有什么方法可以使其成为LALR(1)吗?
解决方法
您必须消除语法的歧义,因为LALR解析器仅适用于明确的语法。
问题是:
- 使用LALR(1)解析器,当我们阅读q(对于您的语法)时,我们无法理解y或z的导出位置,因此我们必须解决此问题
示例
让字符串“ qa”成为语法的输入字符串: 我们有两种情况,第一种:
|---------------------|------------------|
| terminal | character |
|---------------------|------------------|
| | q |
|---------------------|------------------|
|---------------------|------------------|
| q | a |
|---------------------|------------------|
|---------------------|------------------|
| y | a |
|---------------------|------------------|
|---------------------|------------------|
| yq | |
|---------------------|------------------|
|---------------------|------------------|
| x | |
|---------------------|------------------|
第二个:
|---------------------|------------------|
| terminal | character |
|---------------------|------------------|
| | q |
|---------------------|------------------|
|---------------------|------------------|
| q | a |
|---------------------|------------------|
|---------------------|------------------|
| z | a |
|---------------------|------------------|
|---------------------|------------------|
| za | | <--- there your parser stuck
|---------------------|------------------|
解决方案
我们的语法中必须有一个q。 因此我们的y和z变为:
所以现在总是输入字符串“ qa”:
|---------------------|------------------|
| terminal | character |
|---------------------|------------------|
| | q |
|---------------------|------------------|
|---------------------|------------------|
| q | a |
|---------------------|------------------|
|---------------------|------------------|
| D | a |
|---------------------|------------------|
|---------------------|------------------|
| Da | |<--- there your parser stuck
|---------------------|------------------|
所以我们的解析器再次卡住了? 不幸的是,因为现在d同时出现在y和z中,所以我们可以尝试像这样统一它们:
并像这样更改x:
立即可以理解,这种生成方式也是模棱两可的,因此得出的结论是,可以将每个LALR解析器转换为LR解析器,反之则不能
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。