Eclipse中的Antlr IDE无法正常工作

9
我正在使用 Antlr v3 和 Java 进行一个项目,AntlrWorks 中一切顺利,但当我转到 Antlr IDE(即 Eclipse 的插件)时,解释器无法匹配我写的句子,告诉我不匹配。对我来说似乎它不能识别在 lexer 上指定的要跳过的单词列表。然而这与在 AntlrWorks 中完美运作的是相同的。
有什么建议吗?
我已经在 Eclipse 中设置了 Antlr Builder:Antlr Parser Generator v3.4。
1个回答

20

这可能是一个配置问题。我在让一切正常工作时遇到了几个困难,因此没有找到任何一个地方告诉我如何做到这一点,所以我编写了自己的文档。希望这能有所帮助。

如何在 Eclipse Indigo 中安装 ANTLR IDE

已在 Indigo R2 和 IDE 2.1.2 上测试

  1. 安装 Eclipse。
  2. 下载ANTLR 完全二进制包,其中包括 ANTLR v2。 解压缩到临时目录。将 antlr-n.n 文件夹复制到适当的永久位置,例如与 Eclipse 相同的文件夹中。
  3. 向 Eclipse 添加 ANTLR IDE 更新站点。
    • 在 Eclipse 中,单击“帮助”,然后选择“安装新软件”。
    • 单击“添加...”按钮。
    • 在“添加存储库”窗口中,对于位置类型http://antlrv3ide.sourceforge.net/updates并输入类似于“ANTLR IDE”的名称,然后单击“确定”返回到“可用软件”窗口。
    • 选中 ANTLR IDE vn.n.n 的框并继续单击,直到安装完成。Eclipse 可能会重新启动。
  4. 配置 ANTLR IDE。
    • 在 Eclipse 主窗口中,单击“窗口”,然后选择“首选项”。
    • 在左侧面板中展开 ANTLR 并选择生成器。
    • 在右侧窗格中,单击“添加...”按钮。
    • 在“添加 ANTLR 包”窗口中,单击“目录...”并导航到 antlr-n.n 文件夹的位置,然后单击“确定”。
    • 单击“确定”关闭“添加 ANTLR 包”窗口。
    • 在左侧面板中选择代码生成器,并在右侧窗格中选择“项目相对文件夹”。输入文件夹名称。例如:antlr-java 或 antlr-generated。
    • 选择任何其他配置参数,但请勿在“构建”窗口下的“常规”中选中 -nfa 或 -dfa。如果选中,则会导致 ANTLR 错误,从而阻止在输出文件夹中生成 Java 文件。
    • 单击“确定”关闭“首选项”窗口。
  5. 创建一个新的 Java 项目并启用 ANTLR 支持。
    • 从 Eclipse 主窗口,转到"文件","新建","Java 项目"。单击“下一步”,键入项目名称,然后单击“完成”。
    • 要为项目启用 ANTLR 支持,请在包资源管理器窗口(左侧)中右键单击刚刚创建的项目,然后选择“配置”,转换为 ANTLR 项目。
    • 将 ANTLR 完整 jar 文件添加到项目中:右键单击项目并选择“属性”,Java 构建路径,单击“添加外部 JARs...”,浏览到 ANTLR jar 文件,选择它,然后单击“确定”。单击“确定”关闭项目属性窗口。
  6. 创建一个 ANTLR 语法。
    • 创建一个新的 ANTLR 语法:右键单击项目的 src 文件夹,然后选择"文件","新建","Other",展开 ANTLR 并选择“Combined Grammar”。单击“下一步”,键入语法名称,选择语言选项
      grammar test; //must match filename.g
      
      options {
          language = Java;
      }
      
      @header { //parser
          package pkgName; //optional
          import java.<whatever you need>.*;
      }
      
      @members { //parser
          // java code here
      }
      
      @lexer::header { //lexer
          package pkgName; //optional
          import java.<whatever you need>.*;
      }
      
      @lexer::members {
          // java code here
      }
      /*------------------------------------------------------------------
       * PARSER RULES (convention is all lowercase)
       *------------------------------------------------------------------*/
      parserule: LEXRULE;
      
      /*------------------------------------------------------------------
       * LEXER RULES (convention is all uppercase)
       *------------------------------------------------------------------*/
      LEXRULE: 'a'..'z';
      

3
谢谢您的帮助。我正在按照斯科特的文章[非常好]进行操作。http://javadude.com/articles/antlr3xtut/..我认为重要的是要提到必须选择带有Antlr V2的antlr 3.X版本。我一直在使用" antlr-3.4-complete-no-antlrv2.jar "分发版,但我的eclipse构建一直卡住。非常感谢您提供的详细信息。 - Ayusman
非常感谢。在第二步中,我确实已经指定了带有v2的antlr jar文件,但是从这里链接它才是最合理的做法。现在已经完成了。 - cb4
感谢,"为了启用项目的ANTLR支持,在Package Explorer窗口(左侧窗格)中右键单击刚创建的项目,然后选择Configure、Convert to ANTLR project" 对我很有帮助。 - Pratik Khadloya

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