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

java - 在以编程方式创建的 .jar 文件中加载类

这是我的目标:使用 SableCC 在运行时生成多个解析器/词法分析器,并加载它们的实例以进行解析和词法分析。

所以我想我的步骤是:

  1. .java使用 SableCC生成文件。我想我已经做到了,很好。

  2. .java将文件编译为.class文件。我使用JavaCompiler. 我认为这也很好。

  3. 将生成的文件放在一个.jar文件中,保留文件结构。我用这个作为模板来做这个。.jar使用JarBrowser检查文件显示包的文件结构被保留。使用它,Jar Catalog 看起来与常规.jar文件相同。但是,使用 JarBrowser,我的 jar 不会显示在“CLASSPATH 目录”下。这让我相信我的.jar文件没有正确创建。

  4. .jar将文件加载到URLClassLoader. 我正在尝试使用它来加载它,Class.forName()但它似乎不起作用。

每当我执行第 4 步时,我都会得到一个java.lang.ClassNotFoundException. 有没有人知道为什么会这样?

0 投票
1 回答
139 浏览

parsing - 更改语法中的关联模式

我正在尝试使用 SableCC 为模型生成解析器,我称之为 LAM。LAM 本身很简单,其中一个简单的语法(我省略了很多东西)是:

我写了这个语法:

这基本上有效,但有一个副作用:它是左关联的。例如,如果我有

然后解析如下:

我想优先考虑“;” 运算符,因此 L 被解析为

(其他东西,比如“||”,可以保持左结合)

我的问题是:

  1. 有以“自动”方式进行此类转换的技巧吗?
  2. 怎么可能是所有优先级都在“;”上的语法??

它也被接受“RTFM链接”:-D 谢谢大家

0 投票
2 回答
1153 浏览

odata - 用于 OData URI 查询的 EBNF 语法

有谁知道或知道在哪里可以找到用于 OData URI 查询的 EBNF 语法?

我想将它与 SableCC 一起使用来生成用于解析 OData URI 查询的 C++ 类。

0 投票
1 回答
1229 浏览

java - SableCC 语法文件的问题

我似乎在 SableCC 生成相关词法分析器、节点和解析内容时遇到问题,这些内容通常会从语法文件中自动生成。我目前没有实现抽象语法树。

当我尝试使用以下语法文件运行 SableCC 时,我收到以下错误:

[41,33] AFunctionHead.Id 的重新定义。我知道问题出在哪里,但似乎是制作领域的问题。我可能错过了什么吗?

0 投票
1 回答
977 浏览

java - SableCC 期待:EOF

我正在为我的大学做编译器的作业,我是第一次使用 SableCC 3.7。我正在尝试定义我的语法文件,但是当我尝试运行它(通过命令行)时,我收到了这个错误:

“ParserException:[51,5] 期待:EOF

代币

忽略的令牌

有谁知道如何解决这个问题?在线文档不是最好的。

0 投票
1 回答
455 浏览

sablecc - SableCC 没有使用解释器方法

我是 SableCC 的新手。刚刚在http://sablecc.sourceforge.net/thesis/thesis.html#PAGE26上运行了计算器示例。我按原样使用语法文件和解释器文件,并尝试解析简单的算术表达式,如“45 * 5 + 2”。问题是,解释器方法 caseAMultFactor 似乎没有被命中。如果我将“+”更改为“-”,我看到它命中 caseAPlusExpr 或 caseAMinusExpr。那么 Start.apply(DepthFirstAdapter) 方法是否只通过顶部模式节点?如何像示例代码似乎那样遍历所有节点?我正在使用 Java 1.7,希望这不是问题。

为了您的方便,我在这里粘贴了语法和解释器代码。谢谢你的帮助。

0 投票
1 回答
340 浏览

java - SableCC 解析给出错误结果

我尝试使用 sablecc 解析有效消息。有三种有效的消息格式。

  1. 啊;(三个连续的字母字符 +semi {messageid} messageid semi
  2. 毫米; (或两个连续的字母或数字字符{flightnum} carriercode semi
  3. -amm(或连字符 + 字母字符 + 2 个连续的字母或数字字符{load} hypene co semi

当我向程序输入有效字符串时,它不起作用。

输入:

美国广播公司;//类型 1

Z Z; //类型 2

Z Z; //类型 2

-ab2; //type3

sablecc 语法代码:

编译成功,运行java代码时抛出解析器异常:

simpleAdders.parser.ParserException:[1,1] 期望:messageid,carriercode,'-'

即使第一个字符串是有效的。

0 投票
1 回答
521 浏览

java - 在 Eclipse 中设置 Sablecc

我已按照链接中提到的步骤操作:在 Eclipse 中设置 sablecc 以安装 sablecc。我正在尝试执行链接中提到的第 9 步,但出现错误:无法找到或加载主类。谁能指导我如何在 Eclipse 中设置 sable cc。有没有其他方法可以做到这一点。

0 投票
1 回答
319 浏览

sablecc - 了解 SableCC 中的语法

我正在为我的一个项目使用 sableCC,但我对语法文件几乎没有任何疑问。1. Helper 和 Tokens 有什么区别?2. helper 和 Token 应该放什么?3. 最重要的是什么是Productions?

0 投票
1 回答
441 浏览

sablecc - 开始使用 SableCC

我是编程的初学者,在学校我必须做一个小的 SableCC 项目。但是我不确定如何正确使用 SableCC。

我已经从 sablecc.org 下载了它,并按照自述文件中的说明进行了安装。

因此,在使用java -jar lib/sablecc.jar命令安装后,控制台会告诉我使用情况如何,例如

或使用

到我希望 sablecc 工作的地方(我猜)。

但是,当我使用此列表中的任何内容时,它只会说:

Sablecc 未被识别为内部或外部命令

我做错了什么?谢谢!