antlr3相关内容

寻找 Antlr 3/C 示例 main()

我看到一些 C 的示例 main() 浮动,例如http://www.antlr.org/wiki/display/ANTLR3/Five+minute+introduction+to+ANTLR+3 和 http://www.antlr.org/api/C/index.html 取消引用似乎是 AST.我不知道那是什么,而且——请原谅——如果我能避免的话,我不想这样做. 我只想定义词 ..
发布时间:2021-11-11 03:46:31 其他开发

Antlr 解析器和/或逻辑 - 如何获取逻辑运算符之间的表达式?

我正在使用 ANTLR 创建和/或解析器+评估器.表达式的格式如下: x eq 1 &&y eq 10 (x lt 10 && x gt 1) OR x eq -1 我正在阅读这篇关于 ANTLR 中的逻辑表达式的帖子 寻求建议项目上.解析逻辑表达式,我发现这里发布的语法是一个好的开始: 语法逻辑;解析: 表达式EOF;表达: 含义;含义: 或 ('->' 或)*;或者: and ..
发布时间:2021-11-11 03:46:22 其他开发

解析模板语言

我正在尝试解析模板语言,但无法正确解析可能出现在标签之间的任意 html.到目前为止,我所拥有的是以下内容,有什么建议吗?一个有效输入的例子是 {foo}{#bar}blah blah blah{zed}{/bar}{>foo2}{#bar2}这应该被解析为缓冲区.{/bar2} 语法是: 语法g;选项 {语言=Java;输出=AST;ASTLabelType=普通树;}/* 词法分析器规则 ..
发布时间:2021-11-11 03:46:13 其他开发

带有 antlr3 的简单条件表达式解析器

我想用 antlr3 创建一个简单的标准表达式解析器 更新:单独的 AND OR 表达式规则以支持 AND/OR 不同的层次结构,但遇到了另一个问题:如果表达式类似于:a = 1 and b = 2 and c = 3根据当前的实现,树应该如下: ==(a = 1)(b = 2)(c = 3)但我想按如下方式生成它:= =(a = 1)(b = 2)(c = 3)第一个“和"应该比另一个 ..
发布时间:2021-11-11 03:45:31 Java开发

方案 R5RS 的 ANTLR 语法

我是 ANTLR 的初学者,我正在通过一个例子来学习它.我使用 C 作为我的目标语言.该示例是取自 这个问题的 Scheme R5RS 语法文件,稍加修改(重命名语法名称并添加一些选项,语法规范不变). antlr 生成词法分析器和解析器,我用一个测试 main() 编译它,其中我只做一些初始化并简单地调用解析器.当用一段方案代码运行测试程序时,解析器检测到一些语法错误(这不应该发生!) ..
发布时间:2021-11-11 03:44:58 其他开发

解决ANTLR互左递归规则

下面ANTLR语法中的'expr'规则显然是相互左递归的.作为一个 ANTLR 新手,我很难解决这个问题.我已经阅读了 ANTLR 参考书中的“解决非 LL(*) 冲突",但我仍然没有看到解决方案.有什么指点吗? LPAREN : ( '(' ) ;RPAREN : ( ')' );AND :( 'AND' | '&' | 'EN' ) ;或 :( '或' | '|' | 'OF' );不是 : ..
发布时间:2021-11-11 03:44:31 其他开发

如何在 ANTLR3 树解析器 @init 操作中获取行号

在ANTLR,版本3中,如何在高级树解析器规则的@init动作中获取行号? 例如,在下面的@init 操作中,我想将行号与句子文本一起推送. 句@init { myNodeVisitor.pushScriptContext( new MyScriptContext( $sentence.text ));}:赋值命令|动作命令;最后 {m_nodeVisitor.popScriptConte ..
发布时间:2021-11-11 03:44:28 Java开发

ANTLR 解析器挂在 proxy.handshake 调用中

我正在尝试让基本的 ECMAScript 解析器正常工作,并为 ECMAScript 3,它似乎可以正常编译并生成适当的 Lexer/Parser/Walker Java 文件. (在 Eclipse 3.5 的 ANTLR IDE 插件 内运行) 但是,当实际尝试将它与一些简单的测试代码一起使用时(遵循 ANTLR wiki 上的指南),它在尝试创建解析器时挂起: CharStream ..
发布时间:2021-11-11 03:44:04 其他开发

ANTLR 隐式乘法

我是 ANTLR 的新手,我正在尝试扩展此处提供的简单计算器示例.具体来说,我尝试添加一些简单的函数、负数等,以熟悉 ANTLR.但是,我在尝试实现“隐式"乘法时遇到了一些问题(例如,3cos(2)sin(2) 将被解释为 3*cos(2)*sin(2)). 我在 Stack Overflow 上发现了一个有同样问题的问题(此处).该问题的解决方案的一般形式看起来像我自己发现的,所以我不确定我的 ..
发布时间:2021-11-11 03:44:01 其他开发

antlr 3.4 或 3.5 中 Javascript 的状态

ANTLR 3.4 或 3.5 中 JavaScript 目标的状态是什么?我一直在网上寻找这个问题的答案,但到目前为止我一无所获.我知道它在 v3.2 中被破坏,然后在 v3.3 中修复,但它没有列在 ANTLR 3.4 发行说明 作为与 ANTLR 3.4 一致的目标. 我有一个项目,我需要将之前编写的 Java 目标 ANTLR 语法转换为 JavaScript,我想在继续之前确保 A ..
发布时间:2021-11-11 03:43:55 前端开发

即使不匹配,ANTLR 词法分析器规则也会消耗字符?

我有一个 antlr 词法分析器规则的奇怪副作用,我创建了一个(几乎)最小的工作示例来演示它.在这个例子中,我想匹配字符串 [0..1] 例如.但是当我调试语法时,到达解析器的令牌流只包含 [..1].第一个整数,无论​​它包含多少位数字,总是被消耗掉,我不知道它是如何发生的.如果我删除 FLOAT 规则,一切都很好,所以我猜错误就在该规则的某个地方.但是因为它根本不应该匹配 [0..1] 中的任 ..
发布时间:2021-11-11 03:43:46 其他开发

^ 和 !在 ANTLR 语法中代表

我很难弄清楚 ^ 和 !代表 ANTLR 语法术语. 解决方案 查看 ANTLR 备忘单: ! 不包含在 AST 中 ^ 制作AST根节点 而且^也可以用于重写规则:... ->^( ... ).例如,以下两个解析器规则是等价的: 表达式: '+'^ ';'!; 和: 表达式: A '+' A ';'->^('+' A A); 两者都创建了以下 AST: +/\一 ..
发布时间:2021-11-11 03:43:28 其他开发

“FOLLOW_set_in_"...在生成的解析器中未定义

我已经为模糊的类似 Java 的 DSL 编写了语法.虽然它仍然存在一些问题(它不能像我希望的那样识别所有输入),但我最担心的是生成的 C 代码不可编译. 我使用 AntlrWorks 1.5 和 Antlr 3.5(Antlr 4 显然不支持 C 目标). 问题在于表达式规则.我有规则 prio14Expression 到 prio0Expression 处理运算符优先级.问题的优先 ..
发布时间:2021-11-11 03:43:16 其他开发

使用 ANTLR 解析时忽略输入的某些部分

我正在尝试通过 ANTLR (ANTLRWorks-3.5.2) 解析语言.目标是输入完整的输入,但 Antlr 给出了语法中定义部分的解析树并忽略其余输入,例如这是我的语法: 语法尽快;项目:“/开始项目"名称模块+“/结束项目";模块 : '/begin MODULE'name '/end MODULE';姓名:身份;IDENT : ('a'..'z'|'A'..'Z')('a'..'z'| ..
发布时间:2021-11-11 03:42:44 其他开发

替换 ANTLR 中的令牌

我想使用 ANTLR 替换令牌. 我尝试使用 TokenRewriteStream 并替换,但没有奏效. 有什么建议吗? ANTLRStringStream in = new ANTLRStringStream(source);MyLexer 词法分析器 = new MyLexer(in);TokenRewriteStream 令牌 = new TokenRewriteStream ..
发布时间:2021-11-11 03:42:35 其他开发

antlr 全局规则范围声明 vs @members 声明

在这种情况下,您更愿意声明变量是全局作用域还是@members 声明?在我看来,它们可以用于相同的目的? 更新这里有一个语法来解释我的意思. 语法 GlobalVsScope;全球范围{国际我;}@lexer::header{package org.inanme.antlr;}@parser::header{package org.inanme.antlr;}@parser::member ..
发布时间:2021-11-11 03:41:53 其他开发

Lexer 前瞻如何与 ANTLR3 和 ANTLR4 中的贪婪和非贪婪匹配一起使用?

如果有人能让我从前瞻关系与涉及贪婪/非贪婪匹配的标记化背后的困惑中清醒过来,我会非常高兴.请注意,这是一篇略长的帖子,因为它遵循了我的思考过程. 我正在尝试编写允许我匹配输入的 antlr3 语法,例如: “标识符关键字" 我想出了一个类似 Antlr 3.4 的语法: KEYWORD: '关键字' ;标识符:(选项 {greedy=false;}: (LOWCHAR|HIGH ..
发布时间:2021-11-11 03:41:27 其他开发

如何使用 ANTLR 修改 CommonTokenStream 中的令牌文本?

我正在尝试学习 ANTLR,同时将其用于当前项目. 我已经到了可以在一段代码上运行词法分析器并将其输出到 CommonTokenStream 的地步.这工作正常,我已经确认源文本被分解为适当的标记. 现在,我希望能够修改此流中某些标记的文本,并显示现在修改后的源代码. 例如我试过: import org.antlr.runtime.*;导入 java.util.*;公共类 Le ..
发布时间:2021-11-11 03:40:48 其他开发

如何使用 ANTLR 区分保留字和变量?

我正在使用 ANTLR 来标记一个简单的语法,并且需要区分一个 ID: ID : LETTER (LETTER | DIGIT)* ;片段数字:'0'..'9';片段字母:'a'..'z' |'A'..'Z' ; 和一个 RESERVED_WORD: RESERVED_WORD : 'class' |'公共' |'静态' |'扩展' |'空' |'int' |'布尔' |'如果' |'其他' ..
发布时间:2021-11-11 03:40:21 其他开发