问题标签 [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.
java - 如何在 ANTLR3 TreeParser 中获取行号
我正在尝试获取 ANTLR3 树语法中的行号(ANTLR3 生成的代码属于 TreeParser 类)。
谷歌只找到了 ANTLR2 的解决方案,遗憾的是在 ANTLR3 中不起作用。
为了澄清我正在尝试访问 .g 文件本身中的行号。
我想我必须覆盖一个方法或扩展一个我只是不知道是哪一个的类。
tnx 提前
编辑:我应该指出我正在使用 java api
antlr - Antlr3 中的所有语法选项在哪里?
在 Antlr2 中有许多可以设置的语法选项(参考)。现在在 Antlr3 中,我们拥有大约 1/3 的选项(参考)。
所以我对此有两个问题:
- 有谁知道为什么这么多选择被取消并且他们中的任何一个会回来吗?
- 即使没有所有这些选项,Antlr3 是否有能力做 Antlr2 可以做的事情?
更具体地说,我的第二个问题,我希望能够做一些事情。首先,我想更改生成的词法分析器和解析器类的可见性(即 Antlr2 选项“classHeaderPrefix”)。
其次,我希望能够忽略在某些关键字中发现的任何空白标记,例如“&keyword&”和“& key word &”都匹配(即我认为Antlr2 选项“ignore”?)。
最后,我想让某些关键字不区分大小写(即 Antlr2 选项“caseSensitive”)。
c - 什么是 Antlr3 C 运行时相当于抛出异常以报告错误
我对 Antlr 2.X 和 Antlr 3.1.X CSharp 和 python 目标非常熟悉。
但是,我现在被迫将 Antlr 3 C 目标用于项目。
我的问题是如何报告语法或树语法中的错误。
考虑一个匹配令牌的规则,我们将其放入映射中。我们要确保令牌是唯一的。通常,如果令牌已经在地图中,我会抛出异常并在 hte 解析器之外捕获异常以报告错误。
什么是 Antlr C 运行时等效于以下规则?
java - 为什么在 Antlr 中导入词法分析器时会出现 NullPointerException?
我正在使用 antlr 3 和 Antlrworks。这是我的设置:
lexer Base //包含基本标记 - 如 WS、数字等。
lexer Specific //包含我的语言特定标记 - 并且派生自 Base lexer
特定于解析器的//我的语言的解析器
组合语法 -> 导入特定的词法分析器和特定的解析器
当我生成时,我总是得到一个 NPE(在 Java 中)。原因是生成的特定词法分析器中对 Base 词法分析器的引用没有初始化。
我错过了什么吗?
antlr - [Foo]-[Bar]-[Baz][X]-[Y][Z] 的 antlr 语法
我正在尝试定义一个允许
我想将其解析为一组。
我目前有
语法样本;
但这给出了一个错误
作为一个图表,我得到
我得到了这张铁路图
我怎样才能解决这个问题?
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
antlr - ANTLR3:参数和语义谓词(“找不到符号”、“类型的非法开始”)
我想在 ANTLR3 中实现一个“分支”。
我想用
会做的伎俩,但我得到编译错误“找不到符号”和“类型的非法开始”,因为在生成的源中,即DFA45.specialStateTransition(...)
没有参数is_a
。
我尝试省略=>
¹,和/或省略$
of $is_a
。
第一组a
和b
不是不相交的。
实际上b
是类型((C) => c) | a
。
¹)因为我不明白和之间的{...}? => ...
区别{...}? ...
antlr - 如何在 antlr3 的树语法中捕获标记列表?
我以一种虚拟语言为例:它只接受一个或多个“!”。它的词法分析器和语法规则是:
好的,如您所见,这代表一种接受“!”的语言 或者 '!!!' 或者 '!!!!!'...
我定义了一些有意义的类来构建 AST:
这是树语法:
以及带有一些示例数据的主类代码来测试生成的类:
但打印的最终输出是 '!',而不是预期的 '!!!'。这主要是因为这行代码:
上面的$n只捕获了一个'!',我不知道如何捕获'!'的所有三个标记,换句话说,一个'!'的列表 与 $n。有没有人可以帮忙?谢谢!
java - 这个 ANTLR3 日志消息的含义是什么?
Antlr3 生成以下输出到System.out
,同时正确执行其他所有操作:
它是关于什么的?
附言。问题是在解析过程中我不时通过RecognitionException()
. 看起来null
是这样的结果。而不是null
应该有一些有意义的消息,但是RecognitionException没有这样的构造函数。该怎么办?
Foo
类在同一个包中的某处:
现在进行单元测试:
输出是:
java - 如何使antlr3解析“向前”?
我正在尝试用 Antlr3 解析以下语法:
这是我的.g
文件(部分):
它不起作用。Antlr3 将'.'
afterATOM
视为 的一部分name
,而不是 的开头DOTS
。我该如何解决?