Eclipse中的Antlr IDE不起作用

dar*_*kjh 9 java eclipse antlr antlrv3ide

我正在使用Antlr v3和java进行项目,并且在AntlrWorks中一切顺利,但是当我切换到eclipse的插件Antlr IDE时,解释器无法匹配我写的句子,告诉我不匹配.在我看来,它无法识别我在lexer中指定的要跳过的单词列表.然而,它在AntlrWorks中完美运行是一样的.

有什么建议?

我在eclipse中设置了antlr buider:Antlr Parser Generator v3.4

cb4*_*cb4 20

这可能是配置问题.我有一些困难让一切工作,所以,没有找到任何一个地方如何做到这一点,我写了自己的文件.希望这可以帮助.

如何在Eclipse Indigo中安装ANTLR IDE

使用Indigo R2和IDE 2.1.2进行测试

  1. 安装Eclipse.
  2. 下载包含ANTLR v2的ANTLR完整二进制jar.提取到临时目录.将antlr-nn文件夹复制到适当的永久位置,例如安装Eclipse的相同文件夹.
  3. 将ANTLR IDE更新站点添加到Eclipse.
    • 在Eclipse中,单击"帮助"并选择"安装新软件".
    • 单击添加...按钮.
    • 在Add Repository窗口中,为Location类型http://antlrv3ide.sourceforge.net/updates输入类似于ANTLR IDE的名称,然后单击OK返回Available Software窗口.
    • 选中ANTLR IDE vn.nn的复选框,然后单击直到它安装完毕.Eclipse可能会重启.
  4. 配置ANTLR IDE.
    • 在Eclipse主窗口中,单击Window,然后单击Preferences.
    • 在左侧窗格中,展开ANTLR并选择Builder.
    • 在右窗格中,单击"添加..."按钮.
    • 在Add ANTLR Package窗口中,单击Directory ...并导航到antlr-nn文件夹的位置,然后单击OK.
    • 单击"确定"关闭"添加ANTLR包"窗口.
    • 在左窗格中选择Code Generator,然后单击右窗格中的Project relative folder.输入文件夹名称.示例:antlr-java或antlr生成的.
    • 选择任何其他配置参数,但不要在"构建"窗口的"常规"下检查-nfa或-dfa.如果选中,则会导致ANTLR错误,从而阻止在输出文件夹中生成java文件.
    • 单击"确定"关闭"首选项"窗口.
  5. 创建一个新的Java项目并启用ANTLR支持.
    • 在Eclipse主窗口中,转到File,New,Java Project.单击Next,键入项目名称,然后单击Finish.
    • 要为项目启用ANTLR支持,请在Package Explorer窗口(左窗格)中右键单击刚刚创建的项目,然后选择Configure,Convert to ANTLR project.
    • 将ANTLR完整jar文件添加到项目中:右键单击项目并选择Properties,Java Build Path,单击Add External JARs ...,浏览到ANTLR jar文件,选择它,然后单击OK.单击"确定"关闭项目"属性"窗口.
  6. 创建一个ANTLR语法.
    • 创建一个新的ANTLR语法:右键单击项目的src文件夹,然后单击File,New,Other,展开ANTLR并选择Combined Grammar.单击"下一步",键入语法名称,选择"语言"选项,然后单击"完成".
    • 将使用所选选项和空白规则创建".g"文件.在顶部添加选项language = Java,@ header,@ ierer :: header和@members语句(参见示例).自动完成是添加这些内容的最简单方法(按CTRL空格以显示自动完成列表).
  7. 保存语法.
    • 保存后,包含生成的语法Java代码的文件夹应出现在Project Explorer中.如果没有,请确保未在"建筑物"窗口中"常规"下的"ANTLR首选项"中选中-nfa或-dfa选项(步骤4g).[确认是否需要这些:检查CLASSPATH环境变量指向与Eclipse安装(32或64位)匹配的Java7,Windows Path环境变量是否具有Java7 SDK.
    • 要避免"无法解析为类型"Java错误,请右键单击包含生成的Java代码的文件夹,然后单击"构建路径","用作源文件夹".

样本组合语法

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';
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的帮助.我正在关注Scott的文章[这真的很好] .. http://javadude.com/articles/antlr3xtut/ ..我认为必须提到必须选择Antlr V2的antlr 3.X发行版.我使用的是"antlr-3.4-complete-no-antlrv2.jar"发行版,我的eclipse版本就会挂起.非常感谢你的细节. (3认同)