我正在尝试从此处编译ISO-SQL2003语法http://www.antlr3.org/grammar/1304304798093/SQL2003_Grammar.zip.它的所有三个版本都可以在这里找到http://www.antlr3.org/grammar/list.html.这些是我遵循的步骤,java-jarantlr-3.3-complete.jar-Xmx8G-Xwatchconversionsql2003Lexer.gjava-jarantlr-3.3-complete.jar-Xmx8G-Xwatchconversionsql2003Parser.gjavacANT
ANTLR从语法文件生成java源代码。生成的源代码依赖于ANTLR类。我可以使用ANTLR生成没有任何antlr依赖项的“干净”java源代码吗?如果没有,有人可以推荐一些性能出色并且可以生成干净的java代码的java解析器吗? 最佳答案 删除对ANTLR的运行时依赖性确实不切实际。您需要随识别器一起分发ANTLR运行时库。如果我没记错的话,JavaCC创建必要的运行时类(JavaCC“样板”)的副本作为“生成”代码的一部分,这样您就不需要包含额外的JAR。您担心ANTLR依赖项的根源是什么?
我有这个简单的语法:expr:factor;factor:atom(('*'^|'/'^)atom)*;atom:INT|':'expr;INT:('0'..'9')+当我运行它时它说:Decision可以使用多个备选方案1,2来匹配诸如'*'之类的输入Decision可以使用多个备选方案1,2来匹配诸如'/'之类的输入我无法发现歧义。红色箭头是怎么指的?任何帮助将不胜感激。 最佳答案 假设您要解析输入::3*4*:5*6由您的语法生成的解析器可以将此输入匹配到以下解析树中:和:(我省略了冒号以使树更清晰)请注意,您看到的只是一个警
我似乎在AST->StringTemplate方面苦苦挣扎,可能是因为我来自手工编写解析器->LLVM。我正在寻找的是一种自动将解析规则与可以表示它的AST类匹配并包含生成目标语言输出的方法的方法。(在这种情况下可能使用StringTemplate。)在伪代码中,给出这个示例语法:numberExpression:DIGIT+;我想把它映射到这个AST类:classNumberExpressionASTextendsBaseAST{privatedoublevalue;publicNumberExpressionAST(node){this.value=node.value;}publ
如何使用ANTLR从javasrc代码生成AST?有帮助吗? 最佳答案 好的,下面是步骤:转到ANTLRsite并下载最新版本从here下载Java.g和JavaTreeParser.g文件.运行以下命令:java-jarantlrToolJava.gjava-jarantlrToolJavaTreeParser.g将生成5个文件:Java.tokensJavaLexer.javaJavaParser.javaJavaTreeParser.gJavaTreeParser.tokens使用此java代码生成抽象语法树并打印它:Stri
我正在尝试构建一个解析标记句子的ANTLR语法,例如:DTTheNPcatVBateDTaNPrat并有语法:fragmentTOKEN:(('A'..'Z')|('a'..'z'))+;fragmentWS:(''|'\t')+;WSX:WS;DTTOK:('DT'WSTOKEN);NPTOK:('NP'WSTOKEN);nounPhrase:(DTTOKWSXNPTOK);chunker:nounPhrase{System.out.println("chunkfound"+"("+$nounPhrase+")");};语法生成器在最后一行生成“规则范围内缺少属性访问:nounPhr
我在项目中使用Antlrv3和java,在AntlrWorks中一切顺利,但是当我切换到AntlrIDE(eclipse的插件)时,解释器无法匹配我写的句子,告诉我不匹配。在我看来,它无法识别我在词法分析器中指定的要跳过的单词列表。然而,它在AntlrWorks中完美运行是一样的。有什么建议吗?我已经在eclipse中设置了antlr构建器:AntlrParserGeneratorv3.4 最佳答案 这可能是配置问题。我在让一切正常工作时遇到了一些困难,所以找不到任何一个地方来说明如何做到这一点,我写了自己的文档。希望这可以帮助。如
如何匹配ANTLRv4中的任意文本?我的意思是文本,在编写语法时是未知的?我的语法如下:grammarAnytext;line:comment;comment:'#'anytext;anytext:ANY*;WS:[\t\r\n]+;ANY:.;我的代码如下:Stringline="#This_is_a_comment";ANTLRInputStreaminput=newANTLRInputStream(line);AnytextLexerlexer=newAnytextLexer(input);CommonTokenStreamtokens=newCommonTokenStream(
有没有人有使用ANTLR语法文件和Java源代码来分析Java源代码的完整实现(可能是github或googlecode)。例如,我希望能够简单地计算变量、方法等的数量。同时使用最新版本的ANTLR。 最佳答案 我想我会在午休时间尝试一下这个。这可能无法完全解决您的问题,但可以为您提供一个起点。该示例假定您在同一目录中执行所有操作。下载ANTLRsource来自GitHub。来自ANTLR站点的预编译“完整”JAR包含一个已知错误。GitHub存储库有修复。提取ANTLR压缩包。%tarxzfantlr-antlr3-release
我已经创建了新的Gradle项目,添加了applyplugin:'antlr'和dependencies{antlr"org.antlr:antlr4:4.5.3"到build.gradle。创建了包含以下内容的src/main/antlr/test.g4文件grammartest;r:'hello'ID;ID:[a-z]+;WS:[\t\r\n]+->skip;但它不起作用。没有生成java源文件(也没有发生错误)。我错过了什么?项目在这里:https://github.com/dims12/AntlrGradlePluginTest2更新我发现我的示例确实有效,但它把代码放入了\b