草庐IT

java - 是否有任何使用 ANTLR 或类似语言实现的简单语言?

我正在尝试构建一种用于学习目的的简单解释型语言。我已经阅读了无数关于ANTLR和JavaCC的理论和教程,但我不知道如何真正让它做一些有用的事情。我通过“拆开一些东西然后重新组合起来”学习得最好,那么,是否有任何在ANTLR或类似工具的帮助下实现的简单语言的工作示例?像下面这样的东西可能不错:x=1ifx==1print"true" 最佳答案 [不要脸的外挂]为什么不买我的LanguageImplementationPatterns书?我有你需要的所有部件来组合一种语言,包括多个解释器等......

java - ANTLR:空格缩进?

我想创建一个带有空格缩进的非常简单的语法。每行由1个或多个单词组成,但像python一样缩进(4个空格或制表符是一个缩进)并且缩进没有关闭,例如:ifsomethingcooloccursdothiselseotherwisedothislooparoundsomethingeachtimedoingthisanddothatsaygoodbyte不是阅读每一行,而是计算缩进并手动构建树是否可以在ANTLR语法中完成所有这些工作?我的目标语言是Java。 最佳答案 这是可能的。您所做的就是定义一个规则并让它被跳过。给你:Ignore

java - ANTLR 4 - 如何从自定义监听器访问隐藏的评论 channel ?

用旧语言为遗留代码编写pretty-print。计划是让我先学习解析和反解析,然后再编写一个翻译器来输出C++。六月份时,我有点陷入了Java和ANTLR的深渊,所以我肯定存在一些知识空白。我已经到了可以轻松地为我的自定义监听器编写方法的地步,并且我也希望能够漂亮地打印注释。我的评论在一个单独的隐藏channel上。以下是隐藏标记的语法规则:/*Commentsandwhitespace--Nestedcommentsareallowed,eachisredirectedtoaspecificchannel*/COMMENT_1:'(*'(COMMENT_1|COMMENT_2|.)*

java - ANTLR v4、JavaLexer 和 JavaParser 返回 null 作为解析树

我正在使用antlrv4提取java程序的解析树用于其他目的。我从这个样本开始:ANTLRv4visitorsample我已经测试了给定链接上的步骤,以检查它是否有效以及是否一切正常:javaRuna=1+2b=a^2c=a+b*(a-1)a+b+c^ZResult:33.0然后我自己编写了解析java程序的结构如下:|_Java.g4|_Java.tokens|_JavaBaseVisitor.java|_JavaLexer.java|_JavaLexer.tokens|_JavaParser.java|_JavaTreeExtractorVisitor.java|_JavaVisi

java - Antlr 处理异常

我已经使用AST树使用Antlr3开发了一个复杂的语法。ANTLR生成Lexer和Parser。问题是,当用户输入无效的语法时,例如,语法需要“;”。用户没有输入此内容,然后在我的EclipseIDE中出现以下异常:line1:24mismatchedinput''expecting';'这个Exception怎么处理,因为我trycatch这个Exception,但是没有捕获到Exception。这是一个异常(exception)吗?我似乎不明白为什么没有捕获到这个异常。我试图找出答案,但是Antlr网站现在似乎已经关闭了一段时间。我查看了以下内容:ANTLRexceptionhan

java - 我可以使用 Antlr 创建的词法分析器/解析器来解析 PDDL 文件并将数据返回给 Java 程序吗?

我是Antlr的新手,但之前使用过Flex/Bison。我想知道我想用Antlr做的事情是否可行。我想使用Antlr解析PDDL文件,并在我编写的Java类中构建我自己的PDDL文件内容表示,该类是我在解析PDDL文件时编写的(在规则的操作中?)。文件解析完成后,我想将文件内容的对象表示返回给Java程序以运行其他操作。所以基本上,我想从Java程序内部对PDDL文件调用Antler生成的PDDL解析器,并让它向主Java程序返回一个描述PDDL文件的对象。这可能吗?我曾尝试查看文档,但没有找到好的答案。非常感谢。 最佳答案 Soe

java - 测试 ANTLR 语法

因此,我一直在使用ANTLRv3.4在Eclipse中制作语法,并且制作了一个可以使用的语法,并且我想确保在编辑它时一切仍然有效。我每次都可以进入口译员,但这似乎是在浪费时间。问题:我读过有关gunit的内容,但它提供了下载gUnit的链接:(http://antlr.org/hudson/job/gUnit/org.antlr$gunit/lastSuccessfulBuild/)不起作用。我怎样才能得到gUnit。测试语法的最佳方法是什么?它实际上是gUnit还是我应该像jUnit测试那样做java测试? 最佳答案 这个问题很老

java - ANTLR 正则表达式中的范围量词语法

这应该相当简单。我正在使用ANTLR研究词法分析器语法,并希望将变量标识符的最大长度限制为30个字符。我试图用这一行来完成这个(遵循正常的正则表达式-除了''东西-语法):ID:('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_'){0,29}{System.out.println("IDENTIFIERFOUND.");};代码生成没有错误,但由于生成的代码中有一行代码导致编译失败:0,29显然antlr正在获取括号之间的文本部分并将其与打印行一起放置在接受状态区域中。我搜索了ANTLR站点,但没有找到等效表达式的示例或引用。这个表达式

java - antlr4:ATN 版本 2 预计 3

当尝试使用生成的语法和词法分析器时,我得到:org.antlr.v4.runtime.atn.ATN;CouldnotdeserializeATNwithversion2(expected3).怎么了? 最佳答案 你的解析器是用ANTLR4.0生成的,但你正试图用ANTLR4.1来执行它。最可能的原因是使用ANTLRWorks2.0生成解析器,它在内部使用ANTLR4.0。我正在发布ANTLRWorks2.1,它将纠正这种不匹配。 关于java-antlr4:ATN版本2预计3,我们在S

java - 哪个面向 Java 的词法分析器用于简单项目(ANTLR、DIY 等)

我正在从事一个小型文本编辑器项目,并希望为几种语言(Java、XML..仅举几例)添加基本语法突出显示。作为一种学习体验,我想添加一个流行的或不流行的Java词法分析器。您推荐什么项目。Antlr可能是最著名的,但它看起来相当复杂和沉重。这是我所知道的选项。AntRagel(是的,它可以生成用于处理输入的Java源代码)自己动手(我想我可以编写一个简单的token解析器并突出显示源代码)。 最佳答案 ANTLR或JavaCC是我所知道的两个。我首先推荐ANTLR。 关于java-哪个面向