问题标签 [earley-parser]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 的 Earley 解析器生成器
我正在寻找一个Earley 解析器生成器,它能够生成 Java 输出代码,即为词法分析器和解析器生成 Java 代码,并允许包含为语法规则执行的操作(实现为 Java 代码)。
我查看了两个生成 Java 代码(Pep和PEN)的 Earley 解析器生成器,但它们似乎都不允许将动作嵌入到语法中。
parsing - 在 Earley 算法中需要一些解释
如果有人可以为我说明 ono wikipedia 中提到的示例,我将非常高兴:
http://en.wikipedia.org/wiki/Earley_algorithm
考虑语法:
并输入:
Earley 算法的工作原理如下:
这只是第一组 S(0) 但我的问题是:为什么算法在步骤 (4) 中从 (3) 进行预测,但它忽略了 (2) 的预测?
我希望有人理解想法并可以帮助我
python - 在 NLTK 解析器中使用整数/日期作为终端
我正在尝试使用 NLTK 中的 Earley 解析器来解析句子,例如:
如果日期在 2010 年 12 月 21 日之前,则序列号 = 10
为此,我正在尝试编写 CFG,但问题是我需要将日期和整数的通用格式作为终端,而不是特定值。有没有办法将生产规则的右侧指定为正则表达式,这将允许这种处理?
就像是:
它将处理所有整数。
parsing - 编写手动解析器
我需要手动编写解析器。不能在 LL(*) 和 LR 之间进行选择(也许试试 Earley?)。我应该使用自下而上的解析,因为 LL 的语法会相当困难吗?
algorithm - Earley 识别器到 Earley 解析器
我设法创建了 Earley 识别器,一切正常。我有所有适当的情况。但我只能用它来决定单词是否被语法接受。如何让它解析?我需要一些文章或解释,似乎我需要与产生新情况的情况建立关联。任何帮助,将不胜感激。
我的实现完全基于:http ://www.cs.uvic.ca/~nigelh/Publications/PracticalEarleyParsing.pdf
parsing - NLP - 你将如何解析高度嘈杂的句子(使用 Earley 解析器)
我需要解析一个句子。现在我有一个实现的 Earley 解析器和它的语法。当一个句子没有拼写错误时,一切都很好。但问题是我必须处理的很多句子都非常嘈杂。我想知道是否有一种将解析与纠错相结合的算法?可能的错误是:
- 拼写错误 'cheker' 而不是 'checker'
- 像“拼写检查器”而不是“拼写检查器”这样的拼写错误
- 像“Ear par”这样的收缩而不是“Earley parser”
如果你知道一篇可以回答我的问题的文章,我会申请一个链接。
parsing - 将算术表达式的模糊语法转换为明确语法
我正在尝试为算术表达式提出一个明确的语法,以使 Earley 解析器更快,但我似乎遇到了麻烦。这是给定的模棱两可的语法
这是我试图使它明确
它解析一切都很好,但与使用模棱两可的相比没有任何显着的加速。
parsing - 带有 epsilon 转换的简单 CFG 解析器
我偶然发现了许多不同的算法(CYK 和 Earley)来检查字符串是否是提供 CFG 的 CFL 的一部分。我正在寻找一些易于理解和实施的东西。我需要知道的是字符串是否在 CFG 中。CFG 通常以以下形式给出
该解决方案也应该接受 epsilon 转换,例如 S1-> a | e
有任何想法吗?
python - Earley 解析器递归
Earley 解析器是否存在与简单循环有关的预期问题?
我已经做了自己的实现,但它与这个非常相似,它非常易读,总共大约 150 行(当然,我没有写它):
http://www.nightmare.com/rushing/python/earley.py
那个对我来说看起来不错,并且在提供的测试用例中完美运行,但是语法非常简单
似乎不起作用。它应该生成任意数量的“ident”标记,假设 E 是起始非终端并且 ident 是终端。但是这个语法,以及任何类似风格的语法,都被解析器完全忽略了。
这是 Earley 算法中的问题(我认为不是),还是此实现中的问题;如果它是基于实现的,是否有(相对)简单的解决方案或者是否需要重建算法?
perl - Marpa 解析器库是否支持错误恢复?
我知道Perl 的“Marpa” Earley 解析器有很好的错误报告。
但我无法在其文档中或通过谷歌搜索找到它是否有错误恢复。
例如,大多数 C/C++ 编译器都有错误恢复功能,它们用于报告多个语法错误,而其他编译器通常会在第一个错误处停止。
我实际上是在解析自然语言,想知道是否有办法在输入的一部分失败后重新同步和恢复解析。
例如,对于那些可以理解它的人:
我正在解析老挝语的音节。在老挝语中,一些元音是变音符号,它们被编码为单独的字符并呈现在前一个辅音之上。在解析老挝维基百科的随机文章时,我遇到了一些这样的元音加倍的文本。这在老挝语正字法中是不允许的,所以一定是错字。但我知道在几个字符内,文本又好了。
无论如何,这是一个真实的例子,它激起了我对错误恢复或与令牌流重新同步的普遍兴趣。