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

xml - 任何 BPEL 解析器和 XML 生成器一起使用?

我想生成/写入然后解析(写入和读取)bpel 进程(xml)。有什么方法可以解决这个问题,比如 wsdl4j ...?

谢谢阿德南

0 投票
2 回答
864 浏览

error-handling - 具有固定节点而不是 antlr 中的错误节点的 AST

我有一个使用 C 目标的 antlr 生成的 Java 解析器,它工作得很好。问题是我还希望它解析错误代码并生成有意义的 AST。如果我用一个导入提供一个最小的 Java 类,然后缺少一个分号,它会生成两个“树错误节点”对象,其中“导入”令牌和导入类的令牌应该是。

但是由于它正确解析了以下代码并为此代码生成了正确的节点,因此它必须通过添加分号或重新同步来从错误中恢复。有没有办法让 antlr 反映它在 AST 内部产生的这个固定输入?或者我至少可以以某种方式获得产生“树节点错误”的令牌/文本吗?

在第 200 行附近的 C 目标 antlr3commontreeadaptor.c中,以下片段表明 C 目标目前仅创建虚拟错误节点:

我在这里运气不好,只有Java目标产生的错误节点才能让我检索错误节点的文本?

0 投票
1 回答
227 浏览

compiler-construction - 识别以前未定义为令牌的 CFG 生产中的终端

我正在制作 LL(1) 解析器的生成器,我的输入是 CoCo/R 语言规范。我已经为该输入准备了一个扫描仪生成器。假设我有以下规范:

所以,如果由这个语法生成的解析器接收到一个单词“1+1”,它就会被接受,即会找到一个解析树。

我的问题是,字符“+”从未在标记中定义,但它出现在非终端“表达式”中。我生成的 Scanner 应该如何识别它?它不会将其识别为令牌。

那么这是一个有效的输入吗?我应该在 TOKENS 中添加这个终端,然后考虑一个扫描程序的错误例程让它跳过它吗?

通常的语言规范如何处理这个问题?

0 投票
3 回答
2682 浏览

ruby - 在 ruby​​ 中创建解析器的最佳对应物是 ANTLR?

我已经使用 antlr 和 javacc/freecc 有一段时间了。现在我需要使用 antlr 语法编写一堆解析器,但是这样的解析器需要用 ruby​​ lang 编写。

我用谷歌搜索但没有找到。是否有任何使用 antlr 语法并创建解析器的 ruby​​ 解析器生成器?如果有很多,你认为哪个是最好的?

蒂亚保罗

0 投票
2 回答
695 浏览

haskell - 我们如何在使用 Happy/Haskell 进行解析时保留多个语义值

我正在尝试在 Haskell 中使用 Alex/Happy 构建一个简单的词法分析器/解析器,并且我想将文本文件中的一些本地化信息保留到我的最终 AST 中。

我设法使用 Alex 构建了一个词法分析器,它构建了一个具有本地化的令牌列表:

在我的 Happy 文件中,当声明 %token 部分时,我可以用 $$ 符号声明令牌的语义部分

在解析规则中,$i 将引用这个 $$。

有没有办法引用 AlexPosn 部分FOO 令牌的 Foo 部分?现在我只知道如何只引用其中一个。我可以找到有关“添加多个 $$”的方法的信息,并在之后参考它们。

有没有办法这样做?

五。

0 投票
3 回答
1453 浏览

parsing - LALR 解析器生成器实现问题

我目前正在尝试实现一个 LALR 解析器生成器,如“编译器原理技术和工具”(也称为“龙书”)中所述。

很多已经奏效了。解析器生成器当前能够生成完整的 goto-graph。

转到图:

我在实现生成动作表的算法时遇到了麻烦!我的算法计算以下输出:

sx... 转移到状态 x
rx... 减少到状态 x

r? 意味着我不知道如何获取解析器应该减少的状态(?)。有谁知道一个算法得到?使用上面的goto-graph?

如果有什么描述不够清楚,请询问,我会尽力解释得更好!谢谢你的帮助!

0 投票
1 回答
1532 浏览

parsing - 在 Java 中解析类乳胶语言

我正在尝试用Java 编写一个类似于Latex 的简单语言的解析器,即它包含许多非结构化文本,其中有几个\commands[with]{some}{parameters}。像 \\ 这样的转义序列也必须考虑在内。

我尝试使用 JavaCC 为其生成解析器,但看起来像 JavaCC 这样的编译器编译器只适用于高度结构化的代码(通常用于通用编程语言),而不适用于凌乱的类似 Latex 的标记。到目前为止,似乎我必须走低级并编写自己的有限状态机。

所以我的问题是,解析大部分非结构化输入的最简单方法是什么,中间只有几个类似 Latex 的命令?

编辑:使用有限状态机进行低级处理很困难,因为 Latex 命令可以嵌套,例如 \cmd1{\cmd2{\cmd3{...}}}

0 投票
5 回答
4172 浏览

parsing - Packrat 解析与 LALR 解析

许多网站声明 Packrat 解析器可以在线性时间内解析输入。
所以乍一看,它们比 yacc 或 bison 工具构建的 LALR 解析器更快。

我想知道当使用普通输入(如编程语言源文件)而不是任何理论输入进行测试时,packrat 解析器的性能是否比 LALR 解析器的性能更好/更差。

有谁可以解释这两种方法之间的主要区别。
谢谢!

0 投票
2 回答
791 浏览

haskell - Haskell Parsec and Unordered Properties

I am trying to use Parsec to parse something like this:

I am implementing the iCalendar spec and on every like there is a name:parameters:value triplet, very much like the way that XML has a name:attributes:content triplet. Infact you could very easily convert an iCalendar into XML format (thought I can't really see the advantages).

My point is that the parameters do not have to come in any order at all and each paramater may have a different type. One parameter may be a string while the other is the numeric id of another element. They may share no similarity yet, in the end, I want to place them correctly in the right record fields for whatever 'SomeObjectInstance' that I wanted the parser to return. How do I go about doing this sort of thing (or can you point me to an example of where somebody had to parse data like this)?

Thankyou, I know that my question is probably a little confused but that reflects my level of understanding of what I need to do.

Edit: I was trying to avoid giving the expected output (because it is large, not because it is hidden) but here is an example of an input file (from wikipedia):

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

As you can see it contains one VEvent inside a VCalendar, I have made data structures that represent them here.

I am trying to write a parser that parses that type of file into my data structures and I am stuck on the bit where I need to handle properties coming in any order with any type; date, time, int, string, uid, ect. I hope that makes more sense without repeating the entire iCalendar spec.

0 投票
3 回答
1332 浏览

c - XML -> C 解析器生成器

我有 ac 程序,它从 XML 文件中获取其设置。目前我正在使用 Xerces 来遍历数据,但是将每个 XML 值映射到一个变量变得相当乏味。

Java程序也可以读取相同的XML,由于JAXB在Java中创建了所有必要的类等,因此更加方便。我正在寻找可以创建“结构结构”或类似的东西。获得 c 结构而不是 c++ 类很重要,因为此代码将在 GPU 上运行。

我找到了“XML Booster”,目前正在阅读它的文档。你知道其他选择吗?需要在linux中可用。