问题标签 [sablecc]

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 回答
282 浏览

parsing - Sablecc 转移/减少带有标识符的产品的冲突

我正在尝试为 minipython 版本(带有后缀/前缀递增和递减运算符)编写 sablecc 的规范文件,并且一些产品自然需要使用标识符,但我在解析过程中遇到了这些冲突:

我从遵循该语言的给定 bnf 开始并做到了这一点。这是语法文件:

其中标识符当然是一个标记,可以找到它的有问题的产生是function_call,prepost_operand,expression_value。我实验性地删除了前缀/后缀和 prepost_operand 以查看冲突是否至少会发生一些变化,但这只会留下最后两个冲突。有什么办法可以在不改变语法的情况下解决这些冲突,还是我走上了完全错误的道路?

0 投票
1 回答
179 浏览

linux - 在 Eclipse Linux 中安装 SableCC

我正在尝试在 Linux 机器的 Eclipse 中安装 SableCC。我已按照此 http://web.archive.org/web/20090318023544/http://www.comp.nus.edu.sg/~sethhetu/rooms/Tutorials/EclipseAndSableCC.html 上给出的说明进行操作,该说明适用于Windows,但在第 9 步我找不到 Linux 机器的匹配文件。

我尝试过的路径如下:

位置:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/bin/javaws
工作目录:我选择“浏览工作区...”
参数:-classpath /home/[user_name]/Downloads/sablecc -3.7/lib/sablecc.jar org.sablecc.sablecc.SableCC [项目名称]

但我仍然收到错误消息:
“netx: Invalid argument: net.sourceforge.jnlp.util.optionparser.InvalidArgumentException: [-classpath, /home/[user_name]/Downloads/sablecc-3.7/lib/sablecc.jar, org. sablecc.sablecc.SableCC,项目名称]"

Ι 还尝试将参数从 [Project_Name] 更改为从“变量...”给出的 ${resource_name},但我收到此错误:
Variable references empty selection: ${resource_name}

任何想法??先感谢您!:)

0 投票
1 回答
187 浏览

parsing - 条件 - 解析语法 SableCC

我正在使用 sableCC 并尝试构建一个接受 C 中的条件的语法。但是,当我尝试在条件上添加括号时出现错误,因为与表达式的括号冲突。例如,它接受 4 = 3 或 x = 95 mod 5 和 5 = 5 但没有任何括号。我也觉得“不”语法规则不正确。

0 投票
1 回答
356 浏览

parsing - 使用 Sablecc 转移/减少冲突

我应该使用 Sablecc 为 MiniPython 编写一个 .grammar 文件。我遇到了这些转变/减少冲突:

一些令牌是:

我的 .grammar 文件的一部分是这样的:

这是我尝试消除左递归后的语法。我注意到如果我assert从生产中删除规则something,我不会遇到任何冲突。此外,{empty}exprsn,tpwrmltprules 中删除规则不会给我带来任何冲突,但我认为这不是解决此问题的正确方法。

任何提示将不胜感激。

更新:这是整个语法,在删除左递归之前,根据要求:

现在的移位/减少冲突是:

0 投票
0 回答
64 浏览

compiler-construction - 使用 SableCC 转移/减少冲突

我正在努力解决此冲突,我尝试消除 exp 上的递归,但由于班次不消耗 PontoEVirg 令牌,班次/减少冲突仍然存在。

此外,任何减少/减少冲突的技巧都将不胜感激,因为我也遇到了这些问题

部分语法:

0 投票
0 回答
27 浏览

context-free-grammar - 这种任意语言中的“开始”和“结束”是否应该与 CFG 有关?

因此,我正在编写一个 CFG 主体以通过 SableCC 生成编译器,并且给定的示例在程序的开头和结尾分别有这些“ Start ”和“ End ”。

示例代码

我想它们也是代币,因为不会出现在 Productions 上。所以我用语法写了它们,比如:

虽然我没有信心,如何写作品仍然让我感到困惑,但我想得到帮助。

0 投票
1 回答
82 浏览

maven - 在 generate-sources 阶段,Maven 如何知道输入文件来自哪里以及输出文件去哪里?

我是Maven的新手。我有一个项目,其中包含一个由 SableCC 读取的语法定义文件,它是一个解析器生成器。SableCC 读取一个语法文件并生成 Java 源代码,一旦编译,就会创建一个解析器。我的项目的其余部分使用解析器。

我不认为我的问题是 SableCC 问题,因为我已经看到类似的 POM.XML 文件使用 Antlr(另一个与 SableCC 相当的解析器生成器),并且该POM.XML 的部分看起来与我的部分<plugin>几乎相同<plugin>在我的 POM.XML 文件中。

这是我项目的文件结构,标识了 SableCC 使用的那些部分:

在此处输入图像描述

这是我完整的 POM.XML 文件,我根据迄今为止看到的插件示例(特别是 SableCC 的示例)拼凑而成:

我的问题是 SableCC 插件如何知道输入文件在哪里以及生成的 4 类输出 Java 源文件(分析、词法分析器、节点和解析器)应该去哪里?我怀疑我需要在我的 POM 文件中添加更多 Maven“东西”,但我不知道是什么。

0 投票
1 回答
226 浏览

eclipse - Maven 在 Maven 构建期间未运行生成目标或 Eclipse 中的 Maven 生成源

我是 Maven 新手,似乎无法运行生成目标。我在 Eclipse 中使用 Maven。

这是 POM.XML:

我希望 sablecc-maven-plugin 运行。该插件调用 SableCC,它是 YAPG(又一个解析器生成器),它读取语法文件并在<configuration>元素中指定的目录中生成源代码。该插件似乎从未运行过。在从 Exclipse 做了一个之后Maven generate-sources,SableCC 生成的源文件仍然很旧(从 2018 年开始),所以我知道 SableCC 没有运行。此外,Maven 调试输出中没有任何内容表明它甚至试图运行插件。这是输出:

我究竟做错了什么?