【问题标题】:JavaCC Lexer Generator Integration the NetBeans PlatformJavaCC Lexer Generator 与 NetBeans 平台的集成
【发布时间】:2015-06-25 12:27:12
【问题描述】:

我是使用 JavaCC 的新手。我试图为我们公司定义的语言集成编辑器。我需要更改关键字并修改语法。我关注this link 作为一个程序。为了测试,我从代码链接中更改了以下几行。 我用 require 更改关键字 finally。我在代码中更改了以下几行。

JavaParserConstants.java

    int FALSE = 25;
    /** RegularExpression Id. */
    int FINAL = 26;
    /** RegularExpression Id. */
    //int FINALLY = 27;
    int REQUIRE=27;
    /** RegularExpression Id. */
    int FLOAT = 28;
    /** RegularExpression Id. */

         *
         *
    String[] tokenImage = {
         *
    "\"false\"",
    "\"final\"",
    "\"require\"",//fınally
    "\"float\"",

SJLanguageHierarchy.java

 private static void init() {
  tokens = Arrays.<SJTokenId>asList(new SJTokenId[]{
         *
         *
   new SJTokenId("FALSE", "keyword", 25),
   new SJTokenId("FINAL", "keyword", 26),
   new SJTokenId("REQUIRE"/*"FINALLY"*/, "keyword", 27), 
   new SJTokenId("FLOAT", "keyword", 28)

Java1.5.jj

/* RESERVED WORDS AND LITERALS */
TOKEN :
{
*
*
| < FALSE: "false" >
| < FINAL: "final" >
| < REQUIRE: "require" >
| < FLOAT: "float" >

但是当我使用新的集成“编辑器”时它仍然没有影响它突出显示旧语法,包括关键字 finally。任何建议或建议将不胜感激。

【问题讨论】:

  • 为什么要修改生成的JavaParserConstants.java文件?
  • 我想根据我的公司语言更改语法。
  • 但这是一个生成的文件,只有在你下次运行 javacc 时才会被覆盖。请参阅engr.mun.ca/~theo/JavaCC-FAQ 中的常见问题解答 2.2。此外,由于您修改了 Java1.5.jj 文件,因此不需要您对 JavaParserConstants.java 所做的更改。那么下一个问题:修改了.jj文件后,有没有运行JavaCC重新生成.java文件?
  • 不错的收获可能就是我的错误!

标签: java netbeans editor lexer javacc


【解决方案1】:

感谢@Theodore Norvell,我发现如果在生成代码后更改关键字,我的代码将无法正常工作。 Java1.5.jj文件要先改一下再生成,就是我叠的关键点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多