在ANTLR除去(绝对)的路径生成的Java类:(Remove (absolute) paths i

2019-09-22 08:42发布

我使用ANTLRWorks 1.4.3连同ANTLR 3.4生成语法文件的基于Java的解析器和词法分析器。 所生成.java -files包含像串

C:\\Users\\[path to the eclipse project]\\src\\some\\package\\name\\MyGrammar.g

这绝对路径作为

  • 返回字符串例如在方法getGrammarFileName()词法分析器和分析器,并
  • 在整个这两个文件不同时间的注释。

我看到以下缺点:

  • 如果别人在他的开发环境不同的路径将重新生成这些文件,一个很大的变化会即使在语法文件中没有变化做了介绍。
  • 没有人,尤其是一个开源项目,需要知道我究竟存放我的语法文件。 比如,怎么样C:\\Users\\simon\\customerA\\crap_software\\[rest of the path to grammar file]

有没有办法在ANTLRWorks或ANTLR某事物来控制这 至少仅相对路径使用?

Answer 1:

最后,我找到了一种方法来解决我自己的问题。

路径似乎从你调用ANTLR在哪里以及如何依赖。 我无法用ANTLRWorks实现这一点,但使用命令行ANTLR您能够执行此操作。 你可以做以下(例如适用于Windows,但应该对其他操作系统可重复的,太):

  1. 下载 ANTLR的命令行并将其复制到如

    C:\Program Files (x86)\ANTLRworks\antlr-3.4-complete.jar

  2. 打开Windows命令行( cmd.exe ),并切换到你的语法文件所在的目录:

    cd C:\Users[path to the eclipse project]\src\some\package\name

  3. 调用

     java -jar "C:\Program Files (x86)\ANTLRworks\antlr-3.4-complete.jar" MyGrammar.g 

    从命令行。

生成的Java文件将只包含你的语法文件,没有路径的名字了。



Answer 2:

有没有办法在ANTLRWorks或ANTLR某事物来控制这 至少仅相对路径使用?

简答

没有。

龙(ER)的答案(含非常主观的看法!继续在自己的风险)

这就是目标具体,但是,据我所知,没有目标,您可以指定类型的路径(绝对或相对)。

“否”可能是因为getGrammarFileName()只在调试时产生的词法分析器/解析器使用。 和一个可能应该在生成的源文件到源代码控制检查,所以没有人会看到你在生成的源文件中看到的路径。 一个人应该在语法检查,并让开发者从它生成自己的词法分析器/解析器。

再次,这是对我而言都是猜测。



文章来源: Remove (absolute) paths in ANTLR generated java classes: