2009-10-31 32 views
38

如果我称之为:如何为ANTLR指定目标包?

java org.antlr.Tool -o outdir sources/com/example/Java5.g 

...与ANTLR-3.1.3解析器和词法分析器的代码将在目录outdir/sources/com/example产生。但是生成的类没有任何package陈述。我需要他们去生活在包com.example

有没有办法指定目标包?

+0

我确定有。我会在星期一上班的时候查看它;) – Jorn 2009-10-31 23:01:51

+0

在http://www.jguru.com/faq/view.jsp?EID=16185上,他们解释了如何在程序包内嵌入语法。但有没有办法将它指定为命令行参数? – tangens 2009-10-31 23:17:21

回答

56

ANTLR提供了一个标题工具,它允许您包含包和导入。您这包括在* .G语法文件:

@header { 
    package org.xmlcml.cml.converters.antlr; 
    import java.util.HashMap; 
} 

,您可能需要它在词法分析器,以及:

@lexer::header {package org.xmlcml.cml.converters.antlr;} 

,并在情况下,你需要添加一些成员和代码:

@members { 
    HashMap<String, Object> objectMap = new HashMap<String, Object>(); 
    //... 

    private void addArrayValue(String content) { 
    //... code required by snippets in the grammar 

    } 
} 
+2

感谢您投入了关于成员和代码的信息,即使他没有要求。 +1 – 2011-07-28 13:55:26

22

一个老问题,答案很完美,但是因为对这个问题的评论问了一个命令行选项(当我到这里的时候我就是这么想的),我以为我只是在提示在和说fol降脂...

你,如果你正在使用ANTLR 4.我checked,可以指定命令行上的包,好像在3版本,不应该存在这样的other答案是去ANTLR 3

方式

下面是一个例子:

java -cp antlr-4.4-complete.jar org.antlr.v4.Tool -package my.package MyGram.g4 

看到ANTLR Tool Command Line Options-package选项以获取更多信息。

+1

“ANTLR工具命令行选项”文档需要凭据才能访问。下面是一个antlr4的开放文档:https://github.com/antlr/antlr4/blob/master/doc/index.md – EFreak 2016-03-18 21:11:08

+0

ANTLR工具命令行选项:https://github.com/antlr/antlr4/blob/master /doc/tool-options.md – EFreak 2016-03-18 21:12:11

+0

谢谢@EFreak - 我将问题中的链接调整为您的建议 – kmp 2016-03-20 15:13:59