问题标签 [parser-generator]

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.

0 投票
1 回答
741 浏览

php - 这个语法不是LR(1)吗?

我正在为 PHP 开发解析生成器。目前我正在尝试实现规范的 LR(1) 解析器,但它在以下语法上输出 reduce-reduce 冲突。这个语法不是LR(1)吗?还是我应该重新检查我的算法?

Bison(-like) 表示法的语法:

编辑:

计算表:

和冲突:

0 投票
4 回答
2249 浏览

.net - 任何具有测试功能的 BNF IDE

我正在研究一种新语言,在编写语法时,我希望能够测试语法的完整性、冲突和类似情况。我并不真正关心底层解析器生成器(但最好使用 .NET 的一个)

因此,简而言之,功能列表将是:

  • 文本编辑器构建功能
  • 语法/语义错误报告
  • 冲突报告
  • 语法测试功能(即在预期语法中编写代码以验证语法定义正确性的窗口)

一个名为 Irony 的 CodePlex 项目确实有一些与我所要求的类似的东西,但不支持将语法编写为所需的 BNF。

0 投票
4 回答
10962 浏览

php - PHP 中的 Lex 和 Yacc

PHP 中有 Lex 和 Yacc 的实现吗?

如果没有,任何人都可以建议一个词法分析器和解析器生成器(即,任何像 Lex 和 Yacc 之类的东西)来创建 PHP 代码。我不太担心生成的解析器的性能。

我厌倦了使用正则表达式来解析真正不应该用正则表达式解析的东西......

0 投票
4 回答
4961 浏览

compiler-construction - GLR解析算法资源

我正在编写一个GLR 解析器生成器,并希望在互联网上和死树品种(不熟悉极客语言的人的书籍)上获得与该算法相关的资源的一些建议。

我知道 Bison 可以生成 GLR 解析器,并且鉴于它在 GPL 下,我可以检查它的代码,但是最好对算法进行完整描述。

那么,有人知道我可以利用的任何好的资源吗?谢谢。

0 投票
6 回答
3709 浏览

language-agnostic - 无扫描器解析器生成器

序言:虽然解析器(上下文无关文法)识别的语言集严格大于扫描器(常规文法),但大多数解析器生成器都需要扫描器。

(请不要试图解释背后的原因,我很了解)。

我见过解析器,不需要像

不使用扫描仪有一定的优势:

  • 只有一个概念(上下文无关语法)而不是两个
  • 在一个文件中解析多种语言(如 HTML/Javascript)
  • 解析没有保留关键字的语言(如PL/1

通常,使用“变通方法”,例如根据解析器的请求切换扫描仪。

问题:你知道任何其他无扫描解析器生成器(任何语言)吗?这些在使用中是否实用(或纯粹是学术性的)?除了富田/GLR 还有其他方法吗?

答案:

0 投票
3 回答
143 浏览

language-agnostic - 用于更改文件的解析器生成器

是否有任何生成解析器的解析器生成器能够执行以下操作:解析文件,如果您更改第 n 行,那么它只会重新解析因此而更改的行或行。这样解析器就不需要重新解析整个文件。

问候,

马蒂亚斯

0 投票
2 回答
933 浏览

http - HTTP/1.1 的开源机器可读语法?

是否有用于 HTTP/1.1 请求和响应的开源机器可读语法?具体来说,我正在寻找一种流行的解析器生成器(例如,ANTLR、CUP、BNFC 等)接受的语法。

0 投票
2 回答
1061 浏览

parsing - 编程语言解析器的来源?

我正在清理我的一个旧项目,它计算了一些关于大型软件项目的简单指标。指标之一是文件/类/方法的长度。目前我的代码“猜测”其中类/方法边界基于非常粗略的算法(遍历文件,保持“当前深度”并在遇到不带引号的括号时对其进行调整;当您返回到类或方法开始的级别时,认为它已退出)。但是,此过程存在许多问题,并且检测深度何时发生变化的“简单”方法并不总是有效的。

为了得到准确的结果,我需要使用规范的方式(在每种语言中)检测函数定义、类定义和深度变化。这相当于编写一个简单的解析器来为我希望我的项目适用的每种语言生成至少包含这些元素的解析树。

显然,之前已经为所有这些语言编写过解析器,所以看起来我不应该重复这项工作(即使编写解析器很有趣)。 是否有一些开源项目为一堆源语言收集现成的解析器库?或者我应该只是使用 ANTLR 从头开始​​制作我自己的? (注意:我很高兴将项目移植到另一种语言以利用现有的大量资源,因此,如果您知道其中一种,那么它是用哪种语言编写的并不重要。)

0 投票
3 回答
209 浏览

parsing - 用于内联文档的解析器生成器

为了拥有一个可以提取多种语言的内联文档的通用文档系统,需要针对每种语言的解析器。因此需要一个解析器生成器(实际上不必那么完整或高效)。

http://antlr.org/是一个很好的解析器生成器,它已经有许多流行语言的语法。是否有更好的替代方案,即支持为更多开箱即用的语言生成解析器的更简单的替代方案?

0 投票
1 回答
784 浏览

.net - .NET 的 JavaCC?

我一直在为大学的作业生成 JavaCC 解析器,想知道是否有类似的简单的 .NET 解析器生成器框架可用?

我知道有 ANTLR,但我发现它对我的口味来说有点太大了,并且真的开始喜欢 JavaCC 带来的简单性。

问候丹尼尔