antlr3相关内容

ANTLR 词法分析器根本无法向前看

我有以下语法: 规则:'aaa' |'a' 'a'; 它可以成功解析字符串'aaa',但是解析'aa'失败,报错如下: line 1:2 不匹配的字符 ''期待 'a' 仅供参考,这是词法分析器的问题而不是解析器的问题,因为我什至不调用解析器.主要功能如下: @members {public static void main(String[] args) 抛出异常 {RecipeLexe ..
发布时间:2021-11-11 03:38:44 其他开发

ANTLR BNF 语法符号中 epsilon 的等价物是什么?

在利用 ANTLR 3.3 的过程中,我正在更改当前的语法以支持不带括号的输入.这是我的语法的第一个版本: 语法PropLogic;不是 : '!';或 : '+' ;和 : '.';暗示:'->';符号:('a'..'z') |'~';操作:'(';CP : ')' ;编:公式EOF;公式:非公式|OP 公式(AND 公式 CP | OR 公式 CP | IMPLIES 公式 CP)|符号;空 ..
发布时间:2021-11-11 03:38:29 Java开发

扫描仪(使用 ANTLR 对关键字进行词法分析)

我一直在为我的程序编写一个扫描器,大多数在线教程都包含一个解析器和扫描器.似乎不可能在不同时编写解析器的情况下编写词法分析器.我只是想生成令牌,而不是解释它们.我想识别 INT 标记、浮动标记和一些标记,例如“开始"和“结束" 我对如何匹配关键字感到困惑.我尝试了以下失败: KEYWORD : KEY1 |KEY2;KEY1:{input.LT(1).getText().equals("B ..
发布时间:2021-11-11 03:38:23 其他开发

ANTLR:带参数的规则?

我是 ANTLR 的新手.我开始探索 ANTLR 教程.我看过示例,其中为特定规则定义了返回类型(请参见下面的示例). 我也可以将参数传递给规则吗?我只是想通了,我想根据提供给它的参数来改变规则在 pertucular 状态下的行为. 请帮助我,如果它在 ANTLR 中可行,或者这样做是个好主意吗? atom 返回 [int value]:情报局{$value = Integer.p ..
发布时间:2021-11-11 03:37:57 Java开发

在 antlr 中插入符号前缀而不是后缀

我知道在 antlr 中插入符号后缀是什么意思(即生成 root)但是当插入符号是前缀时呢,就像我一直在阅读的以下语法(这个语法是全新的,由一个学习 antlr 的新团队完成)).... selectClause:选择结果列表->^(SELECT_CLAUSE 结果列表);from子句: FROM tableList ->^(FROM_CLAUSE 表列表); 另外,我知道 => 是什么意思, ..
发布时间:2021-11-11 03:37:39 其他开发

扩展 ANTLR3 AST

使用 ANTLR2,您可以在语法定义文件中定义如下内容: 选项{语言 = "CSharp";namespace = "Extended.Tokens";}令牌{TOKEN;} 然后,您可以创建一个类: 公共类TokenNode:antlr.BaseAST{...} 任何想法是否可以使用这样的东西(将类创建委托给 AST 工厂,而不是我手动进行树复制)?它不仅仅通过从旧格式到新格式的简单语法 ..
发布时间:2021-11-11 03:37:22 其他开发

C 目标运行时的简单 ANTLR 3.4 示例

有谁知道(或拥有)一个简单的 ANTLR 3.4 示例 main() 用于 C 目标的函数?我正在尝试在 C 或 C++ 中开始使用 ANTLR,以及我看到的所有示例(包括 this) 已过时,例如他们使用不再存在的函数.好像没有下载包本身的例子,而且维基上的例子已经过时了. 解决方案 未经测试. #include "YourLexer.h"#include "YourParser.h" ..
发布时间:2021-11-11 03:36:48 C/C++开发

if then else 条件评估

我有一种语言,它基本上是为了将列映射到数组中的新结构.该语言旨在让产品经理无需了解大量编程细节即可定义映射.我确信这里还有很多需要改进的地方,但这就是我所拥有的. 语言有效,主要是.我的问题是条件语句. 我的解析器有以下规则: conditionalexpr : IF^ LPAREN!(声明)RPAREN!然后!不错!声明RCURLY!(否则!LCURLY!声明RCURLY!)?; ..
发布时间:2021-11-11 03:36:42 Java开发

reStructuredText 的 ANTLR 语法(规则优先级)

第一个问题流 大家好, 这可能是这个问题的后续:Antlr 规则优先级 我正在尝试为 reStructuredText 标记语言编写 ANTLR 语法. 我面临的主要问题是:“如何在不屏蔽其他语法规则的情况下匹配任何字符序列(常规文本)?" 让我们以带有内联标记的段落为例: 在`图 17-6`_ 中,我们已经定位了 ``before_ptr`` 使其指向元素*之前* ..
发布时间:2021-11-11 03:36:21 其他开发

使用 ANTLR 的嵌套布尔表达式解析器

我正在尝试解析嵌套布尔表达式并分别获取表达式中的各个条件.例如,如果输入字符串是: (A = a OR B = b OR C = c AND ((D = d AND E = e) OR (F = f AND G = g))) 我想以正确的顺序获取条件.即, D =d AND E = e或者F = f AND G = g和A = a OR B = b OR C = c 我使用 ..
发布时间:2021-11-11 03:36:10 Java开发

如何在 ANTLR3 中制作 TreeParser?

为了好玩,我正在尝试学习语言解析... 我创建了一个 ANTLR 语法,我相信它与我希望实现的简单语言相匹配.它将具有以下语法: ( +) {+} 实际例子: ForEach(in:[1,2,3,4,5] as:"nextNumber") {打印(消息:{nextNumber})} 我相信我的语法可 ..
发布时间:2021-11-11 03:35:26 其他开发

为什么我的 antlr lexer java 类是“代码太大"?

这是 Antlr 中的词法分析器(抱歉文件太长): 词法分析器语法SqlServerDialectLexer;/* T-SQL 字 */与:'与';BIGINT: 'BIGINT';位:'位';案例:'案例';字符:'字符';计数:'计数';创建:'创建';CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';日期时间:'日期时间';声明:'声明';其他:'其他';结束: ..
发布时间:2021-11-11 03:35:11 Java开发

Antlr 规则优先级

首先我知道这个语法没有意义,但它是为了测试 ANTLR 规则优先级行为而创建的 语法测试;选项{输出=AST;回溯=真;记忆=真;}rule_list_in_order :(第一条规则|第二条规则|any_left_over_tokens)+;第一条规则:FIRST_TOKEN;第二条规则:FIRST_TOKEN NEW_LINE SECOND_TOKEN NEW_LINE;any_left_o ..
发布时间:2021-11-11 03:34:50 其他开发

为什么 antlr3 c# 解析器方法是私有的?

我正在 antlr 中构建一个解析器,它编译成一个工作的 java 目标.当我为 c#2 重新定位时,它会生成一个解析器,其中所有解析方法都是私有的,但标有 [GrammarRule("rulename")] 属性. 实际调用解析器的批准方式是什么? 我正在使用 ANTLR 3.3 Nov 30, 2010 12:45:30 谢谢,安迪 解决方案 让至少一个解析器规则“公 ..
发布时间:2021-11-11 03:34:06 C#/.NET

扩展简单的 ANTLR 语法以支持输入变量

我还在 我对一种非常简单的语言的追求,现在我知道没有.所以我正在使用 ANTLR3 自己写一个. 我在这个答案中找到了一个非常好的例子: Exp.g: grammar Exp;eval 返回 [双倍值]: exp=additionExp {$value = $exp.value;};addExp 返回 [double value]: m1=multiplyExp {$value = ..
发布时间:2021-11-11 03:33:54 Java开发

antlr3 - 生成解析树

我在弄清楚 antlr3 API 时遇到了麻烦,因此我可以在某些 javascript 代码中生成和使用解析树.当我使用 antlrWorks(他们的 IDE)打开语法文件时,解释器能够向我展示解析树,它甚至是正确的. 我在追踪有关如何使用 antlr3 运行时在我的代码中获取此解析树的资源时遇到了很多困难.我一直在处理运行时和解析器文件中的各种函数,但无济于事: var input = ..
发布时间:2021-11-11 03:33:33 其他开发

动态创建词法分析器规则

这是一个简单的规则: NAME : 'name1' |'name2' |'name3'; 是否可以使用包含字符串的数组动态地为此类规则提供替代方案? 解决方案 是的,动态令牌匹配 IDENTIFIER 规则 在这种情况下,只需在 Id 完全匹配后 进行检查,以查看 Id 匹配的文本是否在预定义中收藏.如果它在集合中(在我的示例中为 Set),请更改令牌的类型. 一个小演 ..
发布时间:2021-11-11 03:33:30 其他开发