草庐IT

java - ANTLR4:忽略输入中的空格但不忽略字符串文字中的空格

我有一个简单的语法如下:grammarSampleConfig;line:ID(WS)*'='(WS)*string;ID:[a-zA-Z]+;string:'"'(ESC|.)*?'"';ESC:'\\"'|'\\\\';//2-charsequences\"and\\WS:[\t]+->skip;输入中的空格被完全忽略,包括字符串文字中的空格。finalStringinput="key=\"valuewithspacesinbetween\"";finalSampleConfigLexerl=newSampleConfigLexer(newANTLRInputStream(inpu

java - 将无效字符视为 ANTLR4 词法分析器中的单个标记

我正在使用JSONgrammarfromtheantlr4grammarrepository为编辑器插件解析JSON文件。它有效,但一个一个地报告无效字符。以下代码段导致18个词法分析器错误:{sometext-without-quotes:42}我想通过将相同类型的连续无效单字符标记视为一个更大的无效标记来将其归结为1-2。对于类似的问题,建议使用自定义词法分析器将“未知”元素粘合到较大的标记:Inantlr4lexer,Howtohavearulethatcatchesallremaining"words"asUnknowntoken?我假设这会绕过通常的词法分析器错误报告,如果可

java - 使用 ANTLR v3 编译 Java 源代码时出现问题

我正在尝试从命令行运行ANTLRC语法文件(DummyC.g)来解析C源文件和头文件(a.h)。当我使用antlr.jar文件运行它时,它会生成解析器和词法分析器文件。但是当我编译测试文件Main.java时。它给出了缺少ANTLR包的错误,如下所示。C:\antlr-2.7.6\test>javacMain.javaMain.java:1:packageorg.antlr.tooldoesnotexistimportorg.antlr.tool.;^Main.java:2:packageorg.antlr.runtimedoesnotexistimportorg.antlr.runt

java - 如何在ANTLR4中实现错误处理

我有以下语法来解析应用于图形的一阶逻辑公式:grammarGraph;/*------------------------------------------------------------------*PARSERRULES*------------------------------------------------------------------*/input:formulaEOF;formula:TRUE|FALSE|formulaANDformula|formulaORformula|quantifierformula|STcondition;condition:a

java - 理解 ANTLR 中的树

我正在尝试将Antlr用于一些类似文本IDE的功能——特别是解析文件以识别代码折叠点和应用语法高亮显示。第一个问题——Antlr是否适合这个需求,或者它是否矫枉过正?这可以使用正则表达式和/或手动解析器来实现...但似乎Antlr可以为我完成这项工作。我浏览了...和优秀的教程资源here.我已经设法构建了一个Java语法(使用standardgrammar),并将所有内容整齐地解析为一棵树。但是,我希望看到嵌套在树中的元素。事实上,一切都是最顶层元素的子元素。例如。鉴于:packagecom.examplepublicclassFoo{StringmyString="HelloWor

java - Antlr4 - 是否有使用 ParseTree Walker 的简单示例?

Antlr4有一个新类ParseTreeWalker。但是我该如何使用它呢?我正在寻找一个最小的工作示例。我的语法文件是'gram.g4',我想解析一个文件'program.txt'到目前为止,这是我的代码。(假设ANTLR已经运行了我的语法文件并创建了所有的gramBaseListener、gramLexer等等):importorg.antlr.v4.runtime.*;importorg.antlr.v4.runtime.tree.*;importstaticorg.antlr.v4.runtime.CharStreams.fromFileName;publicclasslaun

javascript - Antlr4 Javascript 访客

我目前正在尝试在Antlr4Visitor的帮助下开发一个JavaScript编译器。我已经用Java实现了这个,但无法弄清楚如何在JavaScript中执行此操作。也许有人可以回答我几个问题?1:在Java中有一个Visitor.visit函数。如果我是对的,这对于Javascript是不可能的。有解决办法吗?2:我的JavascriptVisitor获得了所有生成的访问函数,但是当我使用console.log(ctx)时,上下文未定义。知道为什么吗?从SimpleVisitor.js中提取://VisitaparsetreeproducedbySimpleParser#parse.

java - ANTLR @header、@parser、superClass 选项和基本文件 io (Java)

我想对基本文件io(Java)使用解析器操作,例如。G。ANTLR语法中的PrintWriter。我必须使用superClass选项还是可以使用@header?在这两种情况下,我如何声明PrintWriter对象以及我必须如何处理异常? 最佳答案 选项superClass=...用于让您的Parser扩展自定义类。所以,我认为这不是您想要的。@header部分中的所有内容都将放在Parser类的开头。这用于导入类:@header{importjava.io.PrintWriter;}请注意,@header{...}是@parser:

java - 反外来输入

我有一个语法文件BoardFile.g4,其中包含(仅相关部分):grammarBoard;//TokensGADGET:'squareBumper'|'circleBumper'|'triangleBumper'|'leftFlipper'|'rightFlipper'|'absorber'|'portal';NAME:[A-Za-z_][A-Za-z_0-9]*;INT:[0-9]+;FLOAT:'-'?[0-9]+('.'[0-9]+)?;COMMENT:'#'~('\r'|'\n')*;WHITESPACE:[\t\r\n]+->skip;KEY:[a-z]|[0-9]|'sh

java - JavaCC 与 ANTLR 的优势是什么

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。太多人告诉我缺点,但如果有的话,它的优点是什么?