草庐IT

swift - ANTLR 如何决定终端是否应该用空格分隔?

我正在Swift中为Swift编写词法分析器。我使用了ANTLR的语法,但是我遇到了一个问题,我不明白ANTLR如何决定终端是否应该用空格分隔。这是语法:https://github.com/antlr/grammars-v4/blob/master/swift/Swift.g4假设我们在Swift中进行了转换。它还可以使用可选类型(Int?、String?)和非可选类型(Int、String)进行操作。以下是有效示例:“as?Int”、“asInt”、“as?Int”。无效示例:“asInt”(它不是类型转换)。我已经实现了逻辑,当语法规则中的终端可以用0个或多个WS(空白)符号分隔

java - 为什么解析树可视化和我的访问者/听众遍历之间存在这样的差异?

我使用ANTLR4plugin创建了这个示例语法在IntelliJ中,当我使用它的工具链为一些无效内容(在本例中为空字符串)生成可视化表示时,这种表示似乎与我在使用示例访问者进行实际解析树遍历时能够得到的不同/相同输入的监听器实现。这是语法:grammarTestParser;THIS:'this';Identifier:[a-zA-Z0-9]+;WS:[\t\r\n\u000C]+->skip;parseExpression:expressionEOF;expression:expressionbop='.'(Identifier|THIS)#DottedExpression|pri

java - 如何使用antlr4访客

我是antlr的初学者。我试图在我的代码中使用访问者并按照网上的说明进行操作。但是,我发现访问者根本没有进入我创建的方法。谁能告诉我我做错了什么?这是我的访客:importjava.util.LinkedList;importorg.antlr.v4.runtime.misc.NotNull;/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*//****@authorSherwood*/publicclassExtractMicroBaseVisitorextendsMicroBas

java - ANTLR(或替代): decoupling parsing from evaluation

我有一个相对简单的DSL,我希望它比一堆手动编码的java.util.regex.Pattern语句+解析逻辑更可靠地处理。引用最多的工具似乎是ANTLR。我对它不熟悉,愿意尝试一下。但是,当我查看示例时(例如ANTLRexpressionevaluatorexample或MartinFowler的HelloAntlr或thisotherQonstackoverflow),我有点怀疑。这样做的原因是语法文件看起来像是语法定义的大杂烩,其中散布着本质上是命令式的实现语言(例如Java)的片段。我真正喜欢的是将解析器的命令式/求值部分分开。有没有一种方法可以使用ANTLR(或其他工具)来定

java - ANTLR 不会在无效输入上抛出错误

我正在使用ANTLR来解析我正在编写的Java工具中的逻辑表达式,但我遇到了问题,因为将无效的输入字符串传递给生成的ANTLR词法分析器和解析器不会导致任何异常。生成的文件没有像我期望的那样抛出RecognitionException,而是将错误消息打印到控制台并返回,就好像没有发生错误一样,导致我的程序在稍后遇到空数据时崩溃。我使用ANTLRWorks版本1.4.3生成文件,似乎应该有某种选项让它实际抛出错误而不是打印到控制台,但我还没有找到任何东西。有谁知道如何让ANTLR实际抛出错误消息?我看到C#中的这个相同问题已通过使用旧版本的ANTLR解决,这是我需要做的吗?编辑:在Bar

java - 使用 ANTLR4 处理字符串

我正在尝试将我的语法从v3转换为v4,但在找到所有正确的部分时遇到了一些问题。在v3中处理字符串时,我使用了:publicstaticDataExtractorcreate(Stringdataspec){CharStreamstream=newANTLRStringStream(dataspec);DataSpecificationLexerlexer=newDataSpecificationLexer(stream);CommonTokenStreamtokens=newCommonTokenStream(lexer);DataSpecificationParserparser=n

c# - 我们什么时候使用 ANTLR

谁能指导我在ASP.Net、C#项目中使用ANTLRdll的目的。我刚刚注意到一些项目中引用了antlr.runtime、Antlr3.Runtime、Antlr3.Utlility程序集。如果能引用一些现实世界的例子或任何指向网页的链接都会有用,那就太好了。 最佳答案 Antlr包被WebGrease包使用。WebGrease包由ASP.NETWeb优化包使用。如果要删除Antlr,请删除ASP.NETWeb优化包。它将依次删除其他2个包。如果您正确设计应用程序,它不会对性能产生太大影响。

c# - 我们什么时候使用 ANTLR

谁能指导我在ASP.Net、C#项目中使用ANTLRdll的目的。我刚刚注意到一些项目中引用了antlr.runtime、Antlr3.Runtime、Antlr3.Utlility程序集。如果能引用一些现实世界的例子或任何指向网页的链接都会有用,那就太好了。 最佳答案 Antlr包被WebGrease包使用。WebGrease包由ASP.NETWeb优化包使用。如果要删除Antlr,请删除ASP.NETWeb优化包。它将依次删除其他2个包。如果您正确设计应用程序,它不会对性能产生太大影响。

parsing - 以 Go 为目标匹配 ANTLR4 中任何可打印的类字母字符

这把我吓坏了,我就是找不到解决办法。我有一个搜索查询的语法,并且想匹配由可打印字母组成的查询中的任何搜索词,特殊字符“(”,“)”除外。引号中的字符串会单独处理并起作用。这是一个有点工作的语法:/*ANTLRGrammarforMinidbQueryLanguage*/grammarMdb;start:searchclauseEOF;searchclause:tableexpr;expr:fieldsearch|searchopfieldsearch|unopexpr|exprrelopexpr|lparenexprrelopexprrparen;lparen:'(';rparen:'

parsing - 以 Go 为目标匹配 ANTLR4 中任何可打印的类字母字符

这把我吓坏了,我就是找不到解决办法。我有一个搜索查询的语法,并且想匹配由可打印字母组成的查询中的任何搜索词,特殊字符“(”,“)”除外。引号中的字符串会单独处理并起作用。这是一个有点工作的语法:/*ANTLRGrammarforMinidbQueryLanguage*/grammarMdb;start:searchclauseEOF;searchclause:tableexpr;expr:fieldsearch|searchopfieldsearch|unopexpr|exprrelopexpr|lparenexprrelopexprrparen;lparen:'(';rparen:'