问题标签 [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.
xml - 任何 BPEL 解析器和 XML 生成器一起使用?
我想生成/写入然后解析(写入和读取)bpel 进程(xml)。有什么方法可以解决这个问题,比如 wsdl4j ...?
谢谢阿德南
error-handling - 具有固定节点而不是 antlr 中的错误节点的 AST
我有一个使用 C 目标的 antlr 生成的 Java 解析器,它工作得很好。问题是我还希望它解析错误代码并生成有意义的 AST。如果我用一个导入提供一个最小的 Java 类,然后缺少一个分号,它会生成两个“树错误节点”对象,其中“导入”令牌和导入类的令牌应该是。
但是由于它正确解析了以下代码并为此代码生成了正确的节点,因此它必须通过添加分号或重新同步来从错误中恢复。有没有办法让 antlr 反映它在 AST 内部产生的这个固定输入?或者我至少可以以某种方式获得产生“树节点错误”的令牌/文本吗?
在第 200 行附近的 C 目标 antlr3commontreeadaptor.c中,以下片段表明 C 目标目前仅创建虚拟错误节点:
我在这里运气不好,只有Java目标产生的错误节点才能让我检索错误节点的文本?
compiler-construction - 识别以前未定义为令牌的 CFG 生产中的终端
我正在制作 LL(1) 解析器的生成器,我的输入是 CoCo/R 语言规范。我已经为该输入准备了一个扫描仪生成器。假设我有以下规范:
所以,如果由这个语法生成的解析器接收到一个单词“1+1”,它就会被接受,即会找到一个解析树。
我的问题是,字符“+”从未在标记中定义,但它出现在非终端“表达式”中。我生成的 Scanner 应该如何识别它?它不会将其识别为令牌。
那么这是一个有效的输入吗?我应该在 TOKENS 中添加这个终端,然后考虑一个扫描程序的错误例程让它跳过它吗?
通常的语言规范如何处理这个问题?
ruby - 在 ruby 中创建解析器的最佳对应物是 ANTLR?
我已经使用 antlr 和 javacc/freecc 有一段时间了。现在我需要使用 antlr 语法编写一堆解析器,但是这样的解析器需要用 ruby lang 编写。
我用谷歌搜索但没有找到。是否有任何使用 antlr 语法并创建解析器的 ruby 解析器生成器?如果有很多,你认为哪个是最好的?
蒂亚保罗
haskell - 我们如何在使用 Happy/Haskell 进行解析时保留多个语义值
我正在尝试在 Haskell 中使用 Alex/Happy 构建一个简单的词法分析器/解析器,并且我想将文本文件中的一些本地化信息保留到我的最终 AST 中。
我设法使用 Alex 构建了一个词法分析器,它构建了一个具有本地化的令牌列表:
在我的 Happy 文件中,当声明 %token 部分时,我可以用 $$ 符号声明令牌的语义部分
在解析规则中,$i 将引用这个 $$。
有没有办法引用 AlexPosn 部分和FOO 令牌的 Foo 部分?现在我只知道如何只引用其中一个。我可以找到有关“添加多个 $$”的方法的信息,并在之后参考它们。
有没有办法这样做?
五。
parsing - LALR 解析器生成器实现问题
我目前正在尝试实现一个 LALR 解析器生成器,如“编译器原理技术和工具”(也称为“龙书”)中所述。
很多已经奏效了。解析器生成器当前能够生成完整的 goto-graph。
转到图:
我在实现生成动作表的算法时遇到了麻烦!我的算法计算以下输出:
sx... 转移到状态 x
rx... 减少到状态 x
r? 意味着我不知道如何获取解析器应该减少的状态(?)。有谁知道一个算法得到?使用上面的goto-graph?
如果有什么描述不够清楚,请询问,我会尽力解释得更好!谢谢你的帮助!
parsing - 在 Java 中解析类乳胶语言
我正在尝试用Java 编写一个类似于Latex 的简单语言的解析器,即它包含许多非结构化文本,其中有几个\commands[with]{some}{parameters}。像 \\ 这样的转义序列也必须考虑在内。
我尝试使用 JavaCC 为其生成解析器,但看起来像 JavaCC 这样的编译器编译器只适用于高度结构化的代码(通常用于通用编程语言),而不适用于凌乱的类似 Latex 的标记。到目前为止,似乎我必须走低级并编写自己的有限状态机。
所以我的问题是,解析大部分非结构化输入的最简单方法是什么,中间只有几个类似 Latex 的命令?
编辑:使用有限状态机进行低级处理很困难,因为 Latex 命令可以嵌套,例如 \cmd1{\cmd2{\cmd3{...}}}
parsing - Packrat 解析与 LALR 解析
许多网站声明 Packrat 解析器可以在线性时间内解析输入。
所以乍一看,它们比 yacc 或 bison 工具构建的 LALR 解析器更快。
我想知道当使用普通输入(如编程语言源文件)而不是任何理论输入进行测试时,packrat 解析器的性能是否比 LALR 解析器的性能更好/更差。
有谁可以解释这两种方法之间的主要区别。
谢谢!
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.
c - XML -> C 解析器生成器
我有 ac 程序,它从 XML 文件中获取其设置。目前我正在使用 Xerces 来遍历数据,但是将每个 XML 值映射到一个变量变得相当乏味。
Java程序也可以读取相同的XML,由于JAXB在Java中创建了所有必要的类等,因此更加方便。我正在寻找可以创建“结构结构”或类似的东西。获得 c 结构而不是 c++ 类很重要,因为此代码将在 GPU 上运行。
我找到了“XML Booster”,目前正在阅读它的文档。你知道其他选择吗?需要在linux中可用。