Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 此解析器生成器表示此语法不是';但是我有我的疑问_Java_Parsing_Context Free Grammar_Lr1 - Fatal编程技术网

Java 此解析器生成器表示此语法不是';但是我有我的疑问

Java 此解析器生成器表示此语法不是';但是我有我的疑问,java,parsing,context-free-grammar,lr1,Java,Parsing,Context Free Grammar,Lr1,我已经用Java编写了一个解析器生成器,经过几次修改(例如,早期版本并不特别喜欢左递归),我成功地使用了一些简单的语法(因此我可以手动验证生成的结果是否正确) 我尝试给它提供一个更复杂的语法,结果是它不是LR(1)语法(源自被解析的对象在解析表中的同一个单元格上尝试写入两次的事实) 有问题的语法是 S->aAb|SA A->aA | e | S 我很确定这个语法是LR(1),无论如何,这是我程序的输出 任何建议都是非常宝贵的,谢谢(如果有人有一个解析器生成器,可以输出自动机和解析表,这样我就可

我已经用Java编写了一个解析器生成器,经过几次修改(例如,早期版本并不特别喜欢左递归),我成功地使用了一些简单的语法(因此我可以手动验证生成的结果是否正确) 我尝试给它提供一个更复杂的语法,结果是它不是LR(1)语法(源自被解析的对象在解析表中的同一个单元格上尝试写入两次的事实)

有问题的语法是

S->aAb|SA
A->aA | e | S

我很确定这个语法是LR(1),无论如何,这是我程序的输出

任何建议都是非常宝贵的,谢谢(如果有人有一个解析器生成器,可以输出自动机和解析表,这样我就可以面对它们,那就更好了)

这个语法不能是LR(1),因为它是不明确的。这里有两种方法可以导出字符串
ab

→ aAb→ ab

→ 沙特阿拉伯→ 阿巴→ 阿巴→ ab

您的LR(1)集合实际上包含shift/reduce冲突。签出状态5,其中包括以下项目:

[A->S. { $a }]
[A->.aA { $a }]
这是移位/减少冲突:您是在
a
上移位,还是在
a
上减少?因此,该工具在这个输入上看起来是正确的:语法不是LR(1),并且它发现它不是LR(1)

希望这有帮助

这个语法不能是LR(1),因为它是不明确的。这里有两种方法可以导出字符串
ab

→ aAb→ ab

→ 沙特阿拉伯→ 阿巴→ 阿巴→ ab

您的LR(1)集合实际上包含shift/reduce冲突。签出状态5,其中包括以下项目:

[A->S. { $a }]
[A->.aA { $a }]
这是移位/减少冲突:您是在
a
上移位,还是在
a
上减少?因此,该工具在这个输入上看起来是正确的:语法不是LR(1),并且它发现它不是LR(1)

希望这有帮助