问题标签 [antlr3]

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 投票
2 回答
1291 浏览

java - 如何在 ANTLR3 TreeParser 中获取行号

我正在尝试获取 ANTLR3 树语法中的行号(ANTLR3 生成的代码属于 TreeParser 类)。
谷歌只找到了 ANTLR2 的解决方案,遗憾的是在 ANTLR3 中不起作用。
为了澄清我正在尝试访问 .g 文件本身中的行号。

我想我必须覆盖一个方法或扩展一个我只是不知道是哪一个的类。

tnx 提前

编辑:我应该指出我正在使用 java api

0 投票
1 回答
957 浏览

antlr - Antlr3 中的所有语法选项在哪里?

在 Antlr2 中有许多可以设置的语法选项(参考)。现在在 Antlr3 中,我们拥有大约 1/3 的选项(参考)。

所以我对此有两个问题:

  1. 有谁知道为什么这么多选择被取消并且他们中的任何一个会回来吗?
  2. 即使没有所有这些选项,Antlr3 是否有能力做 Antlr2 可以做的事情?

更具体地说,我的第二个问题,我希望能够做一些事情。首先,我想更改生成的词法分析器和解析器类的可见性(即 Antlr2 选项“classHeaderPrefix”)。

其次,我希望能够忽略在某些关键字中发现的任何空白标记,例如“&keyword&”和“& key word &”都匹配(即我认为Antlr2 选项“ignore”?)。

最后,我想让某些关键字不区分大小写(即 Antlr2 选项“caseSensitive”)。

0 投票
1 回答
1091 浏览

c - 什么是 Antlr3 C 运行时相当于抛出异常以报告错误

我对 Antlr 2.X 和 Antlr 3.1.X CSharp 和 python 目标非常熟悉。

但是,我现在被迫将 Antlr 3 C 目标用于项目。

我的问题是如何报告语法或树语法中的错误。

考虑一个匹配令牌的规则,我们将其放入映射中。我们要确保令牌是唯一的。通常,如果令牌已经在地图中,我会抛出异常并在 hte 解析器之外捕获异常以报告错误。

什么是 Antlr C 运行时等效于以下规则?

0 投票
2 回答
234 浏览

java - 为什么在 Antlr 中导入词法分析器时会出现 NullPointerException?

我正在使用 antlr 3 和 Antlrworks。这是我的设置:

lexer Base //包含基本标记 - 如 WS、数字等。

lexer Specific //包含我的语言特定标记 - 并且派生自 Base lexer

特定于解析器的//我的语言的解析器

组合语法 -> 导入特定的词法分析器和特定的解析器

当我生成时,我总是得到一个 NPE(在 Java 中)。原因是生成的特定词法分析器中对 Base 词法分析器的引用没有初始化。

我错过了什么吗?

0 投票
3 回答
259 浏览

antlr - [Foo]-[Bar]-[Baz][X]-[Y][Z] 的 antlr 语法

我正在尝试定义一个允许

我想将其解析为一组。

我目前有

语法样本;

但这给出了一个错误

作为一个图表,我得到 在此处输入图像描述

我得到了这张铁路图

在此处输入图像描述

我怎样才能解决这个问题?

0 投票
1 回答
8593 浏览

antlr - Antlr rule priorities

Firstly I know this grammar doesn't make sense but it was created to test out the ANTLR rule priority behaviour

When I give this grammar the input 'First token here\nSecond token here', it matches the second_rule.

I would have expected it to match the first rule then any_left_over_tokens because the first_rule appears before the second_rule in the rule_order_list which is the start point. Can anyone explain why this happens?

Cheers

0 投票
1 回答
1610 浏览

antlr - ANTLR3:参数和语义谓词(“找不到符号”、“类型的非法开始”)

我想在 ANTLR3 中实现一个“分支”。

我想用

会做的伎俩,但我得到编译错误“找不到符号”和“类型的非法开始”,因为在生成的源中,即DFA45.specialStateTransition(...)没有参数is_a

我尝试省略=>¹,和/或省略$of $is_a

第一组ab不是不相交的。

实际上b是类型((C) => c) | a

¹)因为我不明白和之间的{...}? => ...区别{...}? ...

0 投票
1 回答
1308 浏览

antlr - 如何在 antlr3 的树语法中捕获标记列表?

我以一种虚拟语言为例:它只接受一个或多个“!”。它的词法分析器和语法规则是:

好的,如您所见,这代表一种接受“!”的语言 或者 '!!!' 或者 '!!!!!'...

我定义了一些有意义的类来构建 AST:

这是树语法:

以及带有一些示例数据的主类代码来测试生成的类:

但打印的最终输出是 '!',而不是预期的 '!!!'。这主要是因为这行代码:

上面的$n只捕获了一个'!',我不知道如何捕获'!'的所有三个标记,换句话说,一个'!'的列表 与 $n。有没有人可以帮忙?谢谢!

0 投票
1 回答
127 浏览

java - 这个 ANTLR3 日志消息的含义是什么?

Antlr3 生成以下输出到System.out,同时正确执行其他所有操作:

它是关于什么的?

附言。问题是在解析过程中我不时通过RecognitionException(). 看起来null是这样的结果。而不是null应该有一些有意义的消息,但是RecognitionException没有这样的构造函数。该怎么办?


Foo类在同一个包中的某处:

现在进行单元测试:

输出是:

0 投票
2 回答
122 浏览

java - 如何使antlr3解析“向前”?

我正在尝试用 Antlr3 解析以下语法:

这是我的.g文件(部分):

它不起作用。Antlr3 将'.'afterATOM视为 的一部分name,而不是 的开头DOTS。我该如何解决?