在 Eclipse Luna 上设置 ANTLR 4 IDE 时出现问题 (4.4)
我正在尝试在Eclipse Luna(4.4)上安装ANTLR 4 IDE。我已经从市场安装了它,但我不知道如何创建一个包含ANTLR 4 Lexer/Parser的项目。
当我去创建一个新项目时,我没有看到ANTLR 4的任何选项。我尝试创建一个.g4文件,它在编辑器中打开,但当我保存它时,它没有任何作用。
我正在尝试在Eclipse Luna(4.4)上安装ANTLR 4 IDE。我已经从市场安装了它,但我不知道如何创建一个包含ANTLR 4 Lexer/Parser的项目。
当我去创建一个新项目时,我没有看到ANTLR 4的任何选项。我尝试创建一个.g4文件,它在编辑器中打开,但当我保存它时,它没有任何作用。
我环顾四周,发现了一些资源,我拼凑在一起,并通过反复试验找到了解决方案。以下是我在几台机器上使用的指南,用于在Eclipse中设置ANTLR 4 IDE。我想我应该在这里分享它,并节省其他人谷歌搜索几个小时的麻烦(希望如此)
先决条件
设置
Help > Install New Software...
http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/
Work With
Xtext
Xtext Complete SDK
Next
Help > Install New Software...
http://download.eclipse.org/releases/luna
Work With
Facet
Eclipse Faceted Project Framework
Eclipse Faceted Project Framework JDT Enablement
Next
Help > Eclipse Marketplace...
antlr
ANTLR 4 IDE
创建 ANTRL 4 项目
我在这里找到了大部分这些信息,其余的都是阅读错误和猜测
File > New Project > Project
General Tab
ANTLR 4 Project
Next
Finish
Properties
Project Facets
Convert to faceted form...
Java
Apply
OK
Java Build Path
Source
Add Folder...
Project > target > generated-sources > antlr4
OK
Libraries
Add External JARs...
,找到您的 副本,单击antlr-4.x-complete.jar
Open
ANTLR 4 > Tool
Apply
Enable project specific settings
Add
antlr-4.x-complete.jar
Open
4.x
Apply
Yes
OK
测试
使用以下代码创建一个新类,然后尝试运行。在控制台中写入和 + 以将 EOF 发送到输入流Hello there
Ctrlz
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;
public class HelloRunner
{
public static void main( String[] args) throws Exception
{
ANTLRInputStream input = new ANTLRInputStream( System.in);
HelloLexer lexer = new HelloLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
HelloParser parser = new HelloParser(tokens);
ParseTree tree = parser.r(); // begin parsing at rule 'r'
System.out.println(tree.toStringTree(parser)); // print LISP-style tree
}
}
笔记
ANTLR 4 > Tool
如果您注意到您添加的ANTLR版本消失了,这似乎没问题ANTLR 4 > Tool > Distributions
ANTLR Tool v4.5 (C:\JavaLib\antlr-4.5-complete.jar)
Hello.g4 -o C:\Users\username\workspace\project\target\generated-sources\antlr4 -listener -no-visitor -encoding UTF-8