antlr3相关内容
我正在处理的当前项目仅限于使用antlr 3.5.2,但我想使用StringTemplate 4的功能集进行代码生成. Antlr 3.5.2可以生成使用StringTemplate 4的Java Treewalker吗? (例如,具有output = template的树语法,其结果是使用ST *引用而不是StringTemplate *的Java文件) 解决方案 output=temp
..
ANTLR Lexer规则设计 我需要以下令牌: 允许的字符包括大写,小写,数字,空格和连字符 不固定长度(必须至少两个字符) 令牌必须至少包含一个空格或连字符 令牌必须以大写,小写,数字,空格或连字符开头和结尾(不能以空格开头或结尾) 以下语法中的ANTLR词法分析器规则"AlphaNumericSpaceHyphen"几乎有效,除了一种情况.使用解析器规则"sic"进行
..
(我根据@Bart Kiers的第一条评论对问题进行了编辑-谢谢!) 我有以下语法: SPACE : (' '|'\t'|'\n'|'\r')+ {$channel = HIDDEN;}; START : 'START:'; STRING_LITERAL : ('"' .* '"')+; rule : START STRING_LITERAL; 并且我想解析如下语言:'S
..
我们希望CommonTree拥有一个visit(OurVisitor visitor)方法,但是CommonTree不是一个生成的类. 现在,我们有此代码 ANTLRStringStream stream = new ANTLRStringStream(sql); NoSqlLexer lexer = new NoSqlLexer(stream); Common
..
我需要匹配Perl正则表达式匹配器 m/my regex!*/ ,引号可以是范围内的任何字符.因此,以上与 相同 m%my regex!*% 对词法分析器规则的天真的猜测是 REGEX: 'm' quote=. (~(quote))* quote; 但这不起作用,因为后者quote不是指quote=而是某些规则. 我可以用很多自己的代码来做到这一点,例如 R
..
我正在学习ANTLR.假设我有一个VHDL代码,并且想对PROCESS块进行一些处理.其余的应该完全忽略.我不想描述整个VHDL语言,因为我只对流程块感兴趣.因此,我可以编写一个与流程块匹配的规则.但是我如何告诉ANTLR仅匹配流程块规则而忽略其他任何内容? 解决方案 我几乎不知道VHDL,所以假设您要用多行注释替换(Java)源文件中的所有单行注释: //foo 应成为: /
..
我尝试使用antlr3.4进行一些树到树的转换 (对于这个问题)关于布尔表达式的是"AND"和"OR"被允许绑定到n个表达式. 解析器阶段会创建类似这样的内容 (OR (AND (expr1) (expr2) (expr3) (OR (AND (expr4)) (AND (expr5)) (AND (expr6)) )
..
是否可以从中调用操作方法的“活动" ANTLR规则? 类似于Antlr-Pseudo-Code中的log函数的东西,该函数应该显示某些规则的开始和结束位置而无需随每个log()移交$ start-和$ end-token呼叫: @members{ private void log() { System.out.println("Start: " + $activeRule.
..
我正在尝试学习使用ANTLR,但是在这种情况下,我无法弄清楚我的代码出了什么问题.我希望这对任何有经验的人来说真的很容易.这是语法(真的很短). grammar SmallTest; @header { package parseTest; import java.util.ArrayList; } prog returns [ArrayList> a
..
有什么方法可以指定允许以下语法的语法: f(x)(g, (1-(-2))*3, 1+2*3)[0] 转换为(以伪lisp显示顺序): (index ((f x) g (* (- 1 -2) 3) (+ (* 2 3) 1) ) 0 ) 以及有限的运算符优先级之类的东西. 以下语法适用于backtrack = true,但我想避免这
..
给出以下Lexer语法: lexer grammar CodeTableLexer; CodeTabHeader : '[code table 1.0]'; Code : 'code'; Table : 'table'; End : 'end'; Row : 'row'; Naming
..
鉴于输入"term >1",数字(1)和比较运算符(>)应在AST中生成单独的节点.如何做到这一点? 在我的测试中,仅当"c"和"1"之间用空格分隔时,才会匹配,例如"term
..
我正在尝试为算术和布尔表达式编写语法.我不明白我在做什么错.对于我的语法,ANTLR说: [致命]规则logic_atom具有非LL(*)决策,这是由于从alt 1,2可以到达的递归规则调用.通过左分解或使用语法谓词或使用backtrack = true选项来解决. 但是我不能做一个左因子分解.而且我不想触摸arith_expr,因为为此,我有一个代码. logic_atom :
..
我看到C的一些示例main()浮动了,例如 http://www.antlr.org/Wiki/display/ANTLR3/五分钟+简介+到+ ANTLR + 3 和取消引用似乎是AST.我不知道那是什么,请-对不起-如果我可以避免的话,不要. 我想只定义词法分析器&语法(用于调制解调器AT命令),并自动生成main()或从某处剪切/粘贴. 稍稍曲折的是,大多数示例似乎都是从文件中读
..
我正在尝试解析一种模板语言,而我在正确解析可能出现在标签之间的任意html时遇到了麻烦.到目前为止,我在下面有什么建议? 是有效输入的一个示例 {foo}{#bar}blah blah blah{zed}{/bar}{>foo2}{#bar2}This Should Be Parsed as a Buffer.{/bar2} 语法是: grammar g; options {
..
ANTLR 3.4或3.5中JavaScript目标的状态是什么?我一直在网上寻找这个问题的答案,但到目前为止我什么都没找到.我知道它在v3.2中被破坏,然后在v3.3中被修复,但是未在我有一个项目,在该项目中,我需要将之前编写的Java目标ANTLR语法转换为JavaScript,在继续之前,我想确保ANTLR 3.4或3.5支持JavaScript目标. 解决方案 ANTLR 3.1和
..
我是ANTLR的新手.我开始探索ANTLR教程.我看到了为垂直规则定义返回类型的示例(请参见下面的示例). 我也可以将参数传递给规则吗?我脑子里只有一点,我想根据提供给它的论据来改变规则状态下的规则行为. 如果它在ANTLR中可以通过,或者这样做是个好主意,请帮助我? atom returns [int value] : INT { $value =
..
在ANTLR版本3中,如何在高级树解析器规则的@init操作中获取行号? 例如,在下面的@init操作中,我想将行号和句子文本一起推送. sentence @init { myNodeVisitor.pushScriptContext( new MyScriptContext( $sentence.text )); } : assignCommand | ac
..
下面的ANTLR语法中的"expr"规则显然是相互左递归的.作为ANTLR的新手,很难解决这个问题.我已经阅读了ANTLR参考书中的“解决非LL(*)冲突",但是仍然看不到解决方案.有指针吗? LPAREN : ( '(' ) ; RPAREN : ( ')' ); AND : ( 'AND' | '&' | 'EN' ) ; OR : ( 'OR' | '|' | 'OF' ); NOT
..
我是ANTLR的新手,我正尝试在此处中介绍一个简单计算器的示例.具体来说,我尝试添加一些简单的函数,负数等,以使自己熟悉ANTLR.但是,在尝试实现“隐式"乘法时遇到了一个问题(例如,3cos(2)sin(2)将被解释为3 * cos(2)* sin(2)). 我在Stack Overflow上发现了一个与此类问题相同的问题(此处).解决该问题的一般形式看起来像是我自己发现的,所以我不确定问题出
..