在Eclipse Luna (4.4)上安装ANTLR 4 IDE时遇到问题

16

我正在尝试在Eclipse Luna(4.4)上安装ANTLR 4 IDE。我已经从Marketplace中安装了它,但是我不知道如何创建一个包含ANTLR 4 Lexer/Parser的项目。

当我尝试创建一个新项目时,我没有看到任何关于ANTLR 4的选项。我尝试创建一个.g4文件并在编辑器中打开它,但保存后什么也没发生。

1个回答

30
我在互联网上四处寻找资源,通过试错法拼凑出了一个解决方案。下面是我在几台机器上使用的指南,用于在Eclipse中设置ANTLR 4 IDE。我认为我应该在这里分享它,并节省其他人在谷歌上搜索数小时的麻烦(希望如此)。 先决条件
  • Eclipse 4.4 Luna Xtext Complete SDK(需要版本2.7.3)
  • Eclipse Faceted Project Framework(已测试3.4.0)Eclipse Faceted
  • Project Framework JDT Enablement(已测试3.4.0)ANTLR 4 SDK A
  • antlr-4.x-complete.jar的副本(写作时为4.5)
设置
  1. 安装Eclipse
    1. https://www.eclipse.org/downloads/下载
  2. 安装XText 2.7.3
    1. 转到帮助 > 安装新软件...
    2. 工作区文本框中输入http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/
    3. 按Enter键并等待列表加载(这将需要一些时间)
    4. 展开Xtext节点并检查Xtext Complete SDK(确保版本为2.7.3x)
    5. 单击下一步,同意最终用户许可协议,并单击完成
    6. 让安装程序完成并重新启动Eclipse
  3. 安装Faceted Project Framework
    1. 转到帮助 > 安装新软件...
    2. 工作区文本框中输入http://download.eclipse.org/releases/luna
    3. 按Enter键并等待列表加载(这将需要一些时间)
    4. 在过滤文本框中输入Facet
    5. 选择Eclipse Faceted Project FrameworkEclipse Faceted Project Framework JDT Enablement
    6. 单击下一步,同意最终用户许可协议,并单击完成
    7. 让安装程序完成并重新启动Eclipse
  4. 安装ANTLR 4 IDE
    1. 转到帮助 > Eclipse Marketplace...
    2. 搜索antlr
    3. 选择ANTLR 4 IDE(确保是ANTLR 4 IDE而不是ANTLR IDE)
    4. 单击安装
    5. 让安装程序完成,如果提示请单击确定并重新启动Eclipse
  5. 获取antlr-4.x-complete.jar的副本
    1. 这里下载该文件
    2. 将其保存在您记得住的地方
创建 ANTRL 4 项目
我在这里找到了大部分信息,其余的是通过阅读错误和猜测得出的。
  1. 打开 文件 > 新建项目 > 项目
  2. 展开 常规选项卡 并选择 ANTLR 4 项目 (如果您没有看到这个选项,请参考设置步骤4)
  3. 点击 下一步,给项目命名并点击 完成
  4. 项目创建完成后,右键单击项目并点击 属性
  5. 进入 项目面板,点击 转换为面向对象的形式... (如果您没有看到这个选项,请参考设置步骤3)
  6. 勾选 Java 项目面板并点击 应用 (如果您没有看到这个选项,请参考设置步骤3)
  7. 点击 确定,让解决方案重新构建,再次打开属性
  8. 进入 Java 构建路径,点击 源码 选项卡
  9. 点击 添加文件夹... 并勾选 项目 > target > generated-sources > antlr4,点击 确定
  10. 点击 选项卡
  11. 添加外部 JAR 文件...,找到您的 antlr-4.x-complete.jar 文件,点击 打开
  12. 进入 ANTLR 4 > 工具,如果弹出窗口请点击 应用
  13. 勾选 启用项目特定设置
  14. 点击 添加,找到您的 antlr-4.x-complete.jar 文件,点击 打开
  15. 勾选 4.x
  16. 点击 应用,点击 以重新构建,点击 确定 退出属性

测试

创建一个新类,使用以下代码并尝试运行。在控制台中输入Hello there,然后按下Ctrl + z将EOF发送到输入流中。

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
    }
}

注意事项

  1. 如果您尝试进入 ANTLR 4 > 工具 时看到错误,请检查您的 Xtext 版本,2.8.0 会导致工具窗口出错。
  2. 在第8步中,如果您已更改 ANTLR 生成源代码的目录,请使用该目录。
  3. 如果您注意到您添加到 ANTLR 4 > 工具 > 分发 的 ANTLR 版本消失了,这似乎是正常的

    • 检查您的构建输出以查看它正在使用哪个工具,即使它消失了,它仍应该使用您添加的 JAR。这是我的输出:

    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


使用最新的XText(2.8.2)不会导致错误。 - CoronA
这是我读到的,但我很确定我有2.8.2版本,在设置菜单中会出现问题,但在其他地方都能正常工作。 - amura.cxg
我怎样在MyEclipse上进行第四步呢?搜索“antlr”没有显示任何结果。是否有任何仓库URL可以添加呢? - AlexS
@Woland 我不熟悉MyEclipse。你可以直接从ANTLR4 IDE的存储库下载它。 - amura.cxg
3
我按照这些指示,在 OSX 上得到了 Mars/XText 2.7.3/Antler 4.5.2。我学到了以下内容:a)XText 2.9.0和2.9.2不起作用,b)设置 Facets 的设置说明步骤3似乎在 Mars 中已经安装,因此不需要进行,c)在 Mac 和 Linux 上,使用 Control-D 而不是 Control-Z。 - Be Kind To New Users
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接