antlr3相关内容

Antlr AST 生成(可能)疯狂

以下甚至可能吗?我想“反转"给 antlr 的输入并使每个标记成为前一个标记的子标记. 因此,对于输入(假设每个标记由 '.' 字符分隔): Stack.Overflow.Horse 我希望我的语法生成以下 AST: 马|---溢出|---堆栈 到目前为止,我已经设法反转节点,但我无法让它们成为彼此的子节点: 函数: ID PERIOD 功能->功能标识|ID;ID : 'a'.. ..
发布时间:2021-11-11 03:53:10 其他开发

ANTLR 从 Java 到 C#

我计划创建一些可以自动从 Java 转换为 C# 的东西(然后反过来).我需要的是您可以用来将 Java 源代码转换为 C# 源代码的东西. 我遇到了 ANTLR,但我不确定如何将它用于我的任务.我知道 ANTLR 对 Java 和 C# 都有强大的支持,并且已经有针对它们的现有语法,词法分析/解析过程,然后是 AST 创建,最后是树遍历器.从理论上讲,我明白了,但要真正让它发挥作用时,我却 ..
发布时间:2021-11-11 03:53:07 Java开发

ANTLR Lua 长串语法规则

我正在尝试为 Lua 创建 ANTLR 解析器.所以我采用了 Nicolai Mainero 制作的语法(可在 ANTLR 的网站上获得,Lua 5.1 语法)并开始工作. 语法很好.一件事不起作用:长字符串. Lua 规范规则:字面量 字符串也可以使用用长括号括起来的长格式.我们定义一个开口长括号n 级作为左方括号后跟 n 个等号,后跟另一个左方括号.所以,一个0级开长括号是写 ..
发布时间:2021-11-11 03:52:56 其他开发

ANTLR 词法分析器规则消耗过多

ANTLR 词法分析器规则设计 我需要以下令牌: 允许的字符包括大写、小写、数字、空格和连字符 不定长(长度必须至少为两个字符) 令牌必须至少包含一个空格或连字符 标记必须以大写、小写、数字、空格或连字符开头和结尾(不能以空格开头或结尾) 下面语法中的 ANTLR 词法分析器规则“AlphaNumericSpaceHyphen"几乎可以正常工作,除了一种情况.使用解析器规则 ..
发布时间:2021-11-11 03:52:34 其他开发

词法分析器中的ANTLR3动态引号

我需要匹配 Perl 正则表达式匹配器之类的东西 m/我的正则表达式!*/ 其中引号可以是范围内的任何字符.所以上面是一样的 m%我的正则表达式!*% 对词法分析器规则的天真猜测是 正则表达式:'m'quote=.(~(quote))* 报价; 但这不起作用,因为后面的 quote 不是指 quote= 而是指一些规则. 我可以用很多自己的代码来做,比如 正则表达式:'m'qu ..
发布时间:2021-11-11 03:52:08 其他开发

Antlr 贪婪选项

(我根据@Bart Kiers 的第一条评论编辑了我的问题 - 谢谢!) 我有以下语法: SPACE : (' '|'\t'|'\n'|'\r')+ {$channel = HIDDEN;};开始:'开始:';STRING_LITERAL : ('"' .* '"')+;规则:开始STRING_LITERAL; 我想解析如下语言:'START: "abcd" START: "img sr ..
发布时间:2021-11-11 03:52:00 其他开发

Antlr 贪婪选项

(我根据@Bart Kiers 的第一条评论编辑了我的问题 - 谢谢!) 我有以下语法: SPACE : (' '|'\t'|'\n'|'\r')+ {$channel = HIDDEN;};开始:'开始:';STRING_LITERAL : ('"' .* '"')+;规则:开始STRING_LITERAL; 我想解析如下语言:'START: "abcd" START: "img sr ..
发布时间:2021-11-11 03:51:29 其他开发

ANTLR3 C 目标 - 解析器返回“错过"根元素

我正在尝试使用 ANTLR3 C 目标来理解 AST,但遇到了一些困难. 我有一个简单的类似 SQL 的语法文件: 语法sql;选项{语言 = C;输出=AST;ASTLabelType=pANTLR3_BASE_TREE;}sql : 动词字段;字段:字段(','字段)*;动词:'选择' |'更新' |'插入';字段:字符+;分段字符:'a'..'z'; 这在 ANTLRWorks 中 ..
发布时间:2021-11-11 03:50:23 其他开发

ANTLR 生成空条件

我正在尝试学习使用 ANTLR,但在这种情况下我无法弄清楚我的代码有什么问题.我希望这对于有一定经验的人来说真的很容易.这是语法(真的很短). grammar SmallTest;@header {包 parseTest;导入 java.util.ArrayList;}prog 返回 [ArrayList>全部]:(stat { if ($all == null)$all = new Array ..
发布时间:2021-11-11 03:50:11 Java开发

获取活跃的 Antlr 规则

是否可以获取调用操作方法的“活动"ANTLR 规则? 类似于 Antlr-Pseudo-Code 中的这个日志函数,它应该显示一些规则的开始和结束位置 与每个 log() 交出 $start- 和 $end-tokens- 电话: @members{私人无效日志(){System.out.println("开始:" + $activeRule.start.pos +"结束:" + $act ..
发布时间:2021-11-11 03:50:08 Java开发

评估同构 AST 中的 IF 子树

我正在为同构 AST 构建一个 tree walker(所有节点都具有相同的类),评估 if 语句的正确方法是什么? 我的 AST 是这样的: 我希望在解析 IF 块时,按顺序评估他的 CONDBLOCK 子项,如果其中一个为真,树遍历器不会评估其余的. 更清楚地说,我的树行者是这样的: ifStat : ^(IF { jump=false; } condition* defc ..
发布时间:2021-11-11 03:49:20 其他开发

ANTLR:词法分析器无法识别令牌

给定以下词法分析器语法: 词法分析器语法 CodeTableLexer;CodeTabHeader : '[代码表 1.0]';代码:'代码';表:'表';结束:'结束';行:'行';命名:'命名';dfltlang : 'dfltlang';语言 : '英语' |'德国' |'法语' |'意大利人' |'西班牙语';空:'空';数字: int ('.' 数字*)?;标识符: ('a'..'z' ..
发布时间:2021-11-11 03:49:05 其他开发

如何在没有回溯的情况下同时进行函数调用和括号分组

有什么方法可以指定允许以下语法的语法: f(x)(g, (1-(-2))*3, 1+2*3)[0] 转换成(以伪lisp显示顺序): (索引((f x)G(* (- 1 -2) 3)(+ (* 2 3) 1))0) 以及有限的运算符优先级等. 以下语法适用于 backtrack = true,但我想避免这种情况: 语法T;选项 {输出=AST;回溯=真;记忆=真;}令牌{称呼;指数 ..
发布时间:2021-11-11 03:49:00 其他开发

使用 ANTLR3 解析换行符、EOF 作为语句结束标记

我的问题是关于在 ANTLRWorks 中运行以下语法: INT :('0'..'9')+;分号:';';换行:('\r\n'|'\n'|'\r');STMTEND: (分号 (NEWLINE)*|NEWLINE+);陈述: STMTEND|国际标准时间;程序:语句+; 我使用以下输入得到以下结果(以 program 作为开始规则),无论是哪个换行符 NL (CR/LF/CRLF) 或整数 I ..
发布时间:2021-11-11 03:47:43 其他开发

ANTLR 中的布尔和算术表达式语法

我正在尝试为算术和布尔表达式编写语法.我不明白我做错了什么.对于我的语法,ANTLR 说: [fatal] 规则 logic_atom 具有非 LL(*) 决定,因为可以从 alts 1,2 访问递归规则调用.通过左因子分解或使用句法谓词或使用 backtrack=true 选项来解决. 但我不能做左因子分解.而且我不想碰arith_expr,因为为此我有一个代码. logic_ ..
发布时间:2021-11-11 03:47:31 其他开发