问题标签 [antlr4]

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 投票
0 回答
254 浏览

antlr4 - antlr4 puppet 风格的声明性语法问题

我正在尝试为木偶风格的声明性语言编写语法。我有我的基本语法和一个 JUnit 测试,试图实现一个 Listener 方法来加载它。JUnit 测试捕获第一个资源而不是第二个资源,这几乎就像resources规则从未被评估一样。我在我的加载器中添加了日志语句,并且永远不会进入/退出资源。

我的 BaseListener 实现:

我的 JUnit 测试

我的测试输出:

0 投票
2 回答
16683 浏览

java - ANTLR 4 和 AST 访客

我正在尝试将 AST 与 ANTLR4 一起使用,并带有以下文件:

生成器.java

ExprTestListener:

表达式:

我有这个输出:

我发现使用 ANTLR4 很难理解访问者。

我有树目标:

  • 获取 MEASURE 和 ACTION 的收集 INT(在两个不同的集合中)
  • 替换一些 OP(例如 != by <>)
  • 获取替换了 OP 的 condexpr(顶部项目)字符串(参见我的前一点)
0 投票
2 回答
6515 浏览

antlr - 在 antlr4 词法分析器中,如何有一个规则将所有剩余的“单词”捕获为未知标记?

我有一个 antlr4 词法分析器语法。它有许多单词规则,但我也希望它为其他规则无法匹配的任何单词创建一个未知标记。我有这样的事情:

现在生成的匹配器将 '~' 捕获为未知,但会为输入 '~~~' 创建 3 个 '~' 未知标记,而不是单个 '~~~' 标记。我应该怎么做才能告诉词法分析器为未知的连续字符生成单词标记。我也试过“未知:.;” 和“未知:.+ ;” 没有结果。

编辑:在当前的 antlr 版本中 .+? 现在捕获剩余的单词,所以这个问题似乎得到了解决。

0 投票
1 回答
843 浏览

performance - ANTLR4:调用 getInterpreter().adaptivePredict 时性能不佳

帕尔和亲爱的社区,

首先,我要感谢您出色的 Antlr4(以及整个 antlr :-))。在过去的 6 个月里,我一直在使用 Antlr 3(我已经很高兴了),但我对 antlr4 更满意。我注意到使用 java 作为目标语言在语法简单性和生成时间方面有了很大的改进。不幸的是,我对 antlr3 所没有的运行时性能有些担心。

这里摘录我的语法:

这里生成的代码(我添加了 System.out.println 用于跟踪):

这里的痕迹:

调用 _alt = getInterpreter().adaptivePredict(_input,68,_ctx); 时我损失了 60'' 第二次但小于 1' 时调用 _alt = getInterpreter().adaptivePredict(_input,68,_ctx); 第一次。改变的当然是参数_input 和_ctx。

问题很可能出在我的语法上,但我束手无策;-)。1. 你能告诉我我可以在哪里寻找解决方案吗?2. 无论如何,adaptivePredict 中发生了什么;-)

谢谢您的帮助!

亲切的问候,沃尔夫冈·哈默

0 投票
1 回答
172 浏览

antlr4 - LL_EXACT_AMBIG_DETECTION - 插话

使用 PredictionMode::LL_EXACT_AMBIG_DETECTION 时,我收到以下错误消息:

我该如何解释 d 属性。它是否引用了我的语法中的规则,我如何找出哪个规则?

根据代码:

属性 d 是 DFA 中的一个决策。但是我还没有弄清楚如何使用这些信息回到语法中的规则。感谢您的帮助。亲切的问候,沃尔夫冈·哈默

0 投票
1 回答
15272 浏览

java - ANTLR 4 $channel = HIDDEN 和选项

在决定从 v3 切换到 v4 后,我需要 ANTLR 4 语法方面的帮助。我对 ANTLR 不是很有经验,所以如果我的问题很愚蠢,我真的很抱歉;)

在 v3 中,我使用以下代码来检测 Java 样式的注释:

在 v4 中没有特定于规则的选项。动作(移动到隐藏频道)也是无效的。

有人可以给我一个提示如何在 ANTLR v4 中做到这一点吗?

0 投票
1 回答
602 浏览

antlr4 - TestRig - 从 TDA4R 第 1 章运行示例

多年来,我在 ANTLR3 上花费了很多时间,我非常希望 ANTLR4 能够正常工作。我从 TDA4R 书第 1 章中的示例开始。我到了尝试运行TestRig的地步,我得到了......

我正在运行 Windows 7 - 64 位,但我认为 jar 文件是 32 位的。这可能是问题吗?还是我没有使用正确的 Java 版本 - java version = "1.6.0_24"?

我该怎么办?我真的不想编译整个系统。

谢谢。

0 投票
1 回答
411 浏览

antlr - ANTLR - StringTemplate - CamelCase

在树转换中将 antlr 令牌转换为骆驼大小写 StringTemplate 属性的最佳模式(独立于语言,用于可重定向的生成代码)是什么?示例:我的 DSL 有 MY_FIELD 定义,在 StringTemplate 输出中我需要 myField。

0 投票
1 回答
1442 浏览

antlr4 - 具有替代方案的规则集 - 如何避免 reportAttemptingFullContext 和 reportContextSensitivity

我在理解 'reportAttemptingFullContext' 和 'reportContextSensitivity' 时遇到了一些麻烦,并且在我的语法中无法避免这些问题。这里有一个例子:

这里摘录我的语法:

和错误信息:

整个语法相当大。这是一个简单的例子。每次我有替代品时,我基本上都会遇到一个问题(如上面的“expr_not”)。我该如何避免这些?我曾尝试使用语义谓词,但这只有在规则中标记的位置在代码生成时固定时才有可能(据我所知)。在以下代码中注释时(更复杂的示例):

我将解析时间乘以 20;这是相当痛苦的。在这种情况下,我也会得到一个“reportAttemptingFullContext”。

我的问题:如何避免替代方案中的“reportAttemptingFullContext”。

谢谢您的帮助。亲切的问候,沃尔夫冈·哈默

0 投票
1 回答
615 浏览

antlr4 - 使用 ANTLR4 的岛解决方案

我想与您分享一个我必须在 ANTLR4 中实施的孤岛解决方案。

  1. 语言的结构。我必须为其编写语法的语言源自 PL/SQL,并带有一些额外的结构。我不会在这里详细介绍,因为这是题外话。
  2. PUT该语言定义了一个具有以下结构的特殊命令:

    PUT [<SPECIALISED LANGUAGE>].

我的解决方案是:

  1. 覆盖 Lexer 的nextToken方法:

    /li>
  2. 在 Lexer 中添加一些代码:

    /li>

此外ANTLRStringStream,必须定义在 ANTLR 4 中消失的类:

非常欢迎任何反馈!亲切的问候,沃尔夫冈·哈默