问题标签 [antlrworks]

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

antlr - Antlr 错误“角色没有可行的替代方案”

我正在使用此处提供的 Objective C 语法,并尝试解析此代码:

这是一个目标 c 代码,它应该被解析,但是当我调用函数 translation_unit 时它给了我以下错误。错误是:

0 投票
1 回答
340 浏览

antlrworks - ANTLRWorks 1.4.3 不显示竖线和开括号等字符

如果此问题已在本网站的其他地方提出并解决,请原谅我。当我在 ANTLRWorks 1.4.3 中输入示例语法时,编辑器不显示某些字符,例如竖线 ('|') 或左括号'('。我注意到在这个站点的某个地方 Maya Posch 提出了一个问题关于扩展的 ASCII 字符没有被正确处理,但我似乎有不同的情况。当我输入教程中的示例语法时,我在编辑器屏幕中看不到这些字符。但是,编辑器窗格下方的语法图表似乎识别那些“缺失”字符的存在。以下是语法(奇怪的是,当我在这里复制和粘贴时,它们显示如下!):

这是我在编辑器中看到的:

代码看起来很混乱,因为竖线和左括号字符在编辑器窗格中不可见。但是,当我将文本从编辑器复制到此帖子的代码段时,那些丢失的字符确实会显示为我最初在上面发布的内容。但是,文字左括号 ('(') 确实仍然可见。这可能是编辑器的配置问题吗?

当我生成代码时,一切正常。此外,语法图正确显示了规则。令人不安的是语法规则中缺少/不可见的字符。我在 MacBook Pro 上运行 ANTLRWorks。

编辑:按照 Bart 的建议,我尝试了不同的字体,并且那些不可见的字符确实显示在编辑器窗格中。我进入首选项页面,将字体更改为默认 Courier New 以外的其他字体。我的电脑是 MacBook Pro,所以这可能特定于 Mac 环境。希望这可以帮助其他遇到同样问题的人。谢谢,巴特!

0 投票
1 回答
325 浏览

antlr - 如何使用 ANTLRWorks 创建/指定用于测试树语法的 AST 输入?

背景:我创建了一个 ANTLR 语法。我能够使用 ANTLRWorks 对其进行测试和调试,并验证解析器创建了我心中的 AST。现在,我想为 AST 编写一个树语法,解析树并使用 ANTLRWorks 调试树语法。

问:我想用 ANTLRWorks 测试和调试树语法。因此,我想解析由解析器创建的 AST。使用 ANTLRWorks 测试树语法时,如何将 AST 指定为输入?

PS我已经研究了问题/答案是否有人知道在ANTLRWorks中调试树语法的方法,但它没有回答我的问题。尽管被 OP 接受,但他发表了类似的评论。

0 投票
0 回答
2337 浏览

java - 如何从antlr的解析器中获取所有令牌

我想从我的解析器中获取所有标记,然后我想过滤输出,得到一个 AST(myAST) 列表:

我的语言有一个 TreeAdaptor:

以下是我的一些语法规则:

所以 P、F 和 A 在我的规则中是 Id,我正在尝试使用以下代码:

但我只想处理 IdAST(我的想法),

我不能这样做,因为 currentToken 是 CommonToken,我怎样才能只获得那些 Id?我正在使用 antlr 3 问候 Zinov

0 投票
2 回答
500 浏览

java - ANTLRworks 从语法创建解释器

嘿,我有一个快速的问题。我正在使用 ANTLRworks 从一组语法中创建一个 Java 解释器。我打算用手把它写出来,但后来意识到我没有必要因为 antlrworks。虽然我收到了这个错误

Tg:9:23:标签 ID 与同名令牌冲突

从语法创建解释器时,ANTLR 是否可行。你们在我的代码中看到任何错误吗?

我正在尝试将 ID 设为一个来自 az 的字母,并且不区分大小写。并在每个词位之间留有空白。谢谢你

这是语法

0 投票
1 回答
157 浏览

java - 无法解释 ANTLRWorks 输出

我正在使用以下简单的语法来了解 ANTLR。

当我尝试在 ANTLRWorks 中为 input 运行语法时1+2,我在控制台中收到以下错误:

[16:54:08] 解释...... [16:54:08] 在 2:0
NoViableAltException(''@[1:1: Tokens : (ID | INT | PLUS | ADDNUM);])

谁能帮我理解我哪里出错了。

0 投票
4 回答
465 浏览

antlr - 如何解决这种模棱两可的语法?

我写了这个语法:

很明显,我省略了 INT,FLOAT,ID 的词法分析器规则。

问题是c2规则,因为'('而模棱两可,我找不到解决方案,你能给我一个解决方案吗?

0 投票
2 回答
3163 浏览

java - ANTLR 检查 commontree 是否正确或如何检查给定的输入是否与 ANTLR 语法匹配?

嗨,我想做一个 java 或 c# 方法,它将根据给定的输入返回一个布尔表达式 true 或 false。例如:

if(输入匹配 antlr 语法)返回 true;否则返回假;所以问题是我不知道如何检查公共树是否有任何不匹配的令牌。我试图遍历树,但它没有给出任何 mismatchetoken 作为树的节点。问题可能在于 AST 仅在解析树中不显示不匹配的标记。如果有人告诉我如何从解析器中获取解析树,它也会有所帮助?

我已经完成了 ANTLR .g 文件,它运行良好,现在我需要执行以下操作:我必须检查输入是否正确,我已经这样做了,但它不起作用:

因此,我希望我的方法仅在输入字符串正确时返回 true,否则返回 false。我这样做的方式总是返回true,但是当字符串不正确时它会打印

“第 1:4 行无关输入 '+' 期待 EOF”

在控制台中。

0 投票
2 回答
429 浏览

antlr - ANTLR 忽略 AST 运算符

我正在使用 ^ 和 ! 运算符分别设置根节点和不包含在 AST 中。但是,它对 ANTLRWorks 生成的树没有影响。所以我不确定我的语法是否不正确,或者 ANTLRWorks 是否没有创建正确的树。

这是我的语法片段

这些括号不应包含在 AST 中。

加号或减号应该是 AST 中的根节点。

然而,这些事情都没有像我期望的那样发生。当我删除它们或将它们放回去时,它们没有区别。ANTLRWorks 1.4.3 ANTLR 3.4

0 投票
1 回答
5125 浏览

antlr - 从 ANTLR 语法生成 AST

对于@BartKiers 建议的问题和语法(谢谢!),我添加了options块以指定输出为

但是,我无法弄清楚如何访问输出,即AST. 我需要遍历树并处理输入中指定的每个操作。


在这里使用您的示例,我正在尝试实现返回值的规则。但是,我遇到了以下错误:

编译错误:

你能帮我理解为什么编译失败吗?


添加了 pastebin:http://pastebin.com/u1Bv3L0A