问题标签 [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 回答
5299 浏览

eclipse - XText 没有提供哪些 ANTLR 功能?

我刚刚遇到了非常好的工具 Xtext 来创建 DSL 以及用于编辑的 IDE。我在网上做了一些搜索,发现有人说它不提供 ANTLR 的所有功能。我使用 ANTLR 作为我的解析器生成器。

我什至不确定要为我的语言编写完整的解析器需要 ANTLR 的哪些功能,但 ANTLR 已经存在了很长时间,并且可能支持比 Xtext 更多的功能。

任何人都可以举一些Xtext语法中不能指定的例子吗?

0 投票
2 回答
734 浏览

c# - 解析自定义数据标记并用 C# 中的值替换

我有大约 10 条记录中的数据,我希望能够定义返回此数据的字符串的布局,并可以选择保留一些数据。我的想法是使用枚举为我的标记/字段提供整数值,然后使用类似{0}{1}{2}{3} 或复杂的格式{4} - {3}{1} [{8}]。标记的含义与我的数据库中的字段有关。例如,我有这个与付款相关的代币的枚举。

帐户掩码是一个类似 VXXXXX1234 的字符串,其中 V 代表签证,1234 是卡的最后 4 位数字。有时客户想要 V,有时他们想要第一位数字(将卡片类型转换为第一位数字很容易)。

我的目标是创建可重用的东西,以使用格式字符串中的标记生成字符串,然后使用与标记内的数字相关联的数据对数据进行就地替换。

因此,例如,如果我想定义格式,则使用上面的掩码和我的枚举9{2}{1}{4:[0:0000000000]}

如果项目编号是 678934

然后将转换为 9412340000678934 ,其中令牌 4 的内部部分成为String.Format该值的 a 的定义。此外,放置在令牌周围的数据将被忽略并保留在适当的位置。

我的问题涉及字符串的操作和最佳实践。有人告诉我,如果您要即时创建正则表达式,它们的成本可能会很高。作为一名 CS 专业的学生,​​我觉得“正确”(无论多么复杂)的解决方案是为我的令牌制作一个词法分析器/解析器。我没有用 C# 编写词法分析器/解析器的经验,所以我不确定围绕它的最佳实践。我正在这里寻找有关高效且易于调整的系统的指导。

0 投票
2 回答
397 浏览

java - ANTLR 的基本帮助

我试图创建一个解析器,它将英语句子翻译成画布上的绘制形状。例如:“创建一个红色框”应该在画布上创建一个红色框。

我从您的 wiki 上的教程中提出了这个语法文件。不知道是否正确,如果有人可以检查它会很好=)

然后我使用这段代码生成词法分析器和解析器。我下一步要做什么。我如何使用解析器,例如将“创建”转换为对象的创建。有人能指出我正确的方向吗?

0 投票
2 回答
480 浏览

php - json 文本拆分 reg 表达式或解析器

是否有正则表达式可以在 php 中使用 preg_split 进行拆分?

基本上我需要与 json_decode() 相同的内容,但不需要BOTH value上的引号,并且key唯一转义的是四个字符\{ \, \} \:

0 投票
2 回答
1202 浏览

c - C 子集的抽象语法树

出于教学目的,我们正在为 C 代码(的子集)构建一个 javascript 逐步解释器。

基本上我们有:int,float...,数组,函数,for,while...没有指针。javascript 解释器完成并允许我们解释如何评估布尔表达式,将显示变量堆栈...

目前,我们正在手动将我们的 C 示例转换为一些 javascript,这些 javascript 将运行并构建一组操作(情感、函数调用......),这些操作可以在以后用于逐步执行操作。由于我们将自己限制为 C 的一个子集,因此很容易做到。

现在我们想将 C 代码编译为我们的 javascript 表示。我们所需要的只是 C 代码的抽象语法树,并且 javascript 生成很简单。

你知道一个好的 C 解析器可以生成这样的树吗?无需使用 javascript(但这将是完美的),任何语言都可以,因为这可以离线完成。

我看过 Emscripten ( https://github.com/kripken/emscripten ) 但它更像是一个 C=>javascript 编译器,这不是我们想要的。

0 投票
2 回答
2453 浏览

parsing - Python3 解析器生成器

我正在寻找一种适用于 Python3 的相当复杂的语言(与 Python 本身的复杂性相似)的解析器生成器。如果它可以自动生成 AST,这将是一个奖励,但如果它只是在解析时调用规则,我很好。我没有特殊要求,也不必非常高效/快速。

0 投票
1 回答
676 浏览

input - 来自源代码的 mscgen / trace2uml 输入文件生成器

有没有办法从源代码生成 Mscgen / trace2uml 兼容的输入文件(描述文件/文本),以便以后能够生成序列图?项目主页提到似乎没有程序生成的消息序列图描述。我不想检查整个代码并自己创建序列描述符。其他可以让我从源代码生成序列图的工具也会有所帮助。

0 投票
3 回答
1842 浏览

ocaml - 在 OCamlyacc 中使用外部类型声明

我在 expr.ml 文件中有一个 expr 类型。在 parser.mly(OCamlyacc 文件)中,我定义了 expr 规则并给出了类型:

但是,我得到:

我尝试添加

在 .mly 文件的开头,但它仍然不起作用。如何在外部文件中定义此 expr 类型并将其用作我的规则的返回值?谢谢。

0 投票
2 回答
2407 浏览

python - ANTLR 解析 MismatchedTokenException

我正在尝试为我正在编写的更简单的语言编写一个简单的解析器。它由后缀表达式组成。截至目前,我遇到了解析器的问题。当我在输入上运行它时,2 2 * test >>我得到一个 MismatchedTokenException。

另外,我将如何实现递归后缀解析器?

这是我的代码:

0 投票
3 回答
1019 浏览

parsing - 生产编译器是否使用解析器生成器?

我听说“真正的编译器编写者”使用他们自己的手工解析器而不是使用解析器生成器。我还听说解析器生成器不适合现实世界的语言。据推测,有许多特殊情况很难使用解析器生成器来实现。我对此表示怀疑:

  1. 从理论上讲,GLR 解析器生成器应该能够处理大多数编程语言设计(可能 C++ 除外......)
  2. 我知道至少一种使用解析器生成器的生产语言:Ruby [1]。
  3. 当我在学校上编译器课程时,我们使用了解析器生成器。

所以我的问题是:使用解析器生成器编写生产编译器是否合理,或者使用解析器生成器是否被编译器社区认为是一个糟糕的设计决策?

[1] https://github.com/ruby/ruby/blob/trunk/parse.y