如何将自定义java类导入我的Antlr语法?

时间:2014-06-28 22:12:28

标签: java antlr

在名为Test的目录中,我在文件Word.java中有一个java类,如下所示:

public class Word {
  public String value;

  public Word(String v) {
    value = v;
  }
}

在同一目录中,我的antlr4语法Test.g4是这样的:

grammar Test;    
@header {
  import Test.Word;
}
@members {
  ArrayList<Word> words = new ArrayList<Word>();
}

program
@after { System.out.println(words.toString()); }
  : (ID { words.add(new Word($ID.text)); } )+
  ;

(在这个例子中,我只是使用Word而不是String来测试导入的东西。语法和动作不是我的问题)

现在,当我尝试运行java org.antlr.v4.runtime.misc.TestRig Test时,这就是结果:

  

blablabla

     

引起:java.lang.ClassNotFoundException:Test.Word

     

blablabla

这让我发疯了,如何在.g4文件中导入我的课程?我知道可以加载默认的java包,但是如何导入我的自定义java类?

tl; dr:我创建了一个java类,想在我的antlr语法中使用它。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您的CLASSPATH必须包含包含测试的目录。