问题标签 [antlr]

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

java - 问题陈述所需的语法定义

嗨,我现在有这个语法,但是当我有服务后,一个便条。Antlr 不想承认它不是服务,但请注意。并且服务和笔记有不同的结构。这个怎么写?

我正在尝试解析这个。但请注意bla bla;正在服役

0 投票
3 回答
1647 浏览

java - ANTLR 模棱两可的语法?

我有几个 ANTLR 规则,我不知道如何使它们起作用

第一条规则是:

第二条规则是:

该表达式是一个类似于 C 的正则表达式

语法示例

count 应该是一个字符串,而 array[3] 应该是一个表达式

我的问题是词法分析器总是将“count”和“array[3]”作为字符串返回,而 Parser 无法识别表达式。

我正在使用java目标。

编辑:将“variable_name”更改为“count”。

EDIT2:在下面解释了我的第二次尝试:

我可以用 '= "' 检测到表达式的开头,但是我无法在 Lexer 中检测到表达式的结尾,当我有 2 个由 ',' 分隔的元素时会导致错误检测字符串

如果我使用 '= "' 作为 START_EXPRESSION,词法分析器检测到结束第一个表达式的引号,并且将第二个字符串开头的引号检测为字符串 ",\n",这显然是不正确的。

编辑 3:尝试句法谓词

我将 STRING_LITERAL 的规则更改为

仍然不起作用,我也不知道如何通过为其分配元素标签或其他东西来在规则本身中生成 ~('=')

0 投票
2 回答
1887 浏览

antlr - Antlr 字符串模板中的条件

我们使用 Antlr StringTemplates 来控制实体名称的输出方式。

基本的字符串模板是

$FirstName$ $Initial$ $LastName$, $Suffix$, $Degree$

我想为该模板添加一些智能,以便仅在必要时输出逗号,即第一个逗号仅在有后缀或度数时输出,第二个逗号仅在有后缀时输出。

我尝试了以下模板字符串位它不起作用。我想我误解了

$FirstName$ $Initial$ $LastName$ <if(Suffix|Degree)>,<endif>, $Suffix$ <if(Suffix)>,<endif> $Degree$

如果它有助于我们使用这个 C# 处理模板

0 投票
3 回答
4727 浏览

antlr - 有谁知道在 ANTLRWorks 中调试树语法的方法

ANTLR 使用的推荐模式是让 Parser 构造一个抽象语法树,然后构建 Tree walkers(AKA 树语法)来处理它们。

我试图弄清楚为什么我的树语法不起作用,并且很想使用 ANTLRWorks 的调试器,就像我将它用于解析器本身一样。解析器的输入是“源代码”,但树解析器的输入是解析器的 AST 结果。我看不到如何将其作为输入来测试树语法。

目前尚不清楚是否有一种方法可以在 ANTLRWorks 中测试树语法。如果可以做到,将不胜感激指向正确方向的指针。

0 投票
4 回答
2696 浏览

c# - 在哪里可以找到 C# 3.0 语法?

我打算用 C# 编写一个 C# 3.0 编译器。我在哪里可以获得解析器生成的语法?

最好是无需修改即可与 ANTLR v3 一起使用的版本。

0 投票
1 回答
442 浏览

antlr - 用于 C++ 生成的 Antlr @header 声明

在 ANTLR 版本 2.X 中,您可以通过以下代码指定要在 ANTLR 包含之前或之后执行的操作。

在 ANTLR v3.X 中,它看起来已经被一个 @header 块所取代。

有没有办法做我们之前对 ANTLR v2 所做的事情?

0 投票
2 回答
946 浏览

antlr - 使用 antlr3 获取用户定义的错误消息

请遵守上面的 ANTLR 代码。在此我想抛出一个用户友好的错误消息,例如"from value should be less than to value in BETWEEN clause". 我期待这样RecognitionException("from value should be less than to value in BETWEEN clause");但 antlr 并没有像上面那样接受。

在 java 类中,我正在调用 Antlr 生成的 java 类。我的处理方式如下。

任何帮助都会得到帮助。

0 投票
2 回答
808 浏览

antlr - Antlr 中是否有机制允许词法分析器仅在某些规则期间匹配令牌?

我想在我的语言中添加一个关键字。

这个关键字只需要在一个特定的解析器语法规则中匹配。

由于向后兼容性,我希望允许此关键字继续用作变量名,即它可以由确定标记是否适合变量名的词法分析器规则匹配。

只要在文件中找到新规则,Lexer 就会匹配它。

解决此问题的适当方法是否可以修改 var_declaration 规则,使其匹配 IDENT 或新的 KEYWORD 令牌?

相关规则如下:

创建变量的解析器规则是:

0 投票
1 回答
612 浏览

antlr - 使用 ANTLR 1.3 / ANTLRWorks 生成代码时出现问题

我已经下载了 ANTLR 1.3 和 ANTLRWorks 并且可以生成规则和语法图 OK。当我尝试生成代码时(例如通过 ANTLRWorks 中的 GenerateCode 或java org.antlr.Tool Temp.g我得到

我使用的是 Windows 7 beta,Java 1.6。我没有专门设置类路径,因为发行版隐含的 ANTLRWorks 开箱即用。

编辑 这是一个简单的语法(由 ANTLRWorks 示例生成),是的,文件存在,内容:

0 投票
3 回答
14848 浏览

java - 如何管理 ANTLR 中的可选空格?

我正在尝试解析 ANTLR 中的数据文件 - 它具有可选的空格,例如

下面显示了行的开始和结束位置。最后有一个换行符,没有制表符。

我的语法是:

这使

(即没有识别出领先的 WS 并且错过了最后一行)。

我想解析没有空格开头的行,例如:

但我随后收到错误,例如:

我很欣赏在 ANTLR 中解析 WS 的一般解释。

编辑@jitter 有一个有用的答案 -{ignore=WS}没有出现在我正在使用的“权威 ANTLR 参考”书中,因此这显然是一个棘手的领域。

仍然需要帮助 我已将其修改为:

但得到错误:

编辑显然这已从 V3 中删除: http ://www.antlr.org/pipermail/antlr-interest/2007-February/019423.html