java - 删除 ANTLR 生成的 java 类中的(绝对)路径 :

标签 java antlr antlrworks

我正在使用 ANTLRWorks 1.4.3 和 ANTLR 3.4 从语法文件生成基于 Java 的解析器和词法分析器。生成的 .java 文件包含类似

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

此绝对路径用作

  • 返回字符串例如在词法分析器和解析器的方法 getGrammarFileName() 中,以及
  • 在这两个文件中多次作为评论。

我看到以下缺点:

  • 如果其他人在他的开发环境中使用不同的路径重新生成这些文件,即使没有对语法文件进行任何更改,也会引入很多更改。
  • 没有人,尤其是在开源项目中,需要知道我将语法文件存储在何处。例如,C:\\Users\\simon\\customerA\\crap_software\\[语法文件路径的其余部分]

有没有办法在 ANTLRWorks 或 ANTLR s.th 中控制它?至少只使用相对路径?

最佳答案

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

路径似乎取决于调用 ANTLR 的位置和方式。我无法使用 ANTLRWorks 实现此目的,但使用命令行 ANTLR 可以执行此操作。您可以执行以下操作(示例适用于 Windows,但也应该可以在其他操作系统上重现):

  1. Download用于命令行的 Antlr 并将其复制到例如

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

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

    cd C:\Users[eclipse 项目路径]\src\some\package\name

  3. 调用

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

    从命令行。

生成的 java 文件将只包含语法文件的名称,不再包含路径。

关于java - 删除 ANTLR 生成的 java 类中的(绝对)路径 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12385765/

相关文章:

windows - 在 Windows 7 上独立运行 AntlrWorks2

java - (CommonTree)parser.javaSource() 行中的 antlr 错误

c - if 语句不适用于我的语法

java - 启动 IntentService 的空指针异常

java - 如何使用服务器上的 -Dlog4j.configuration=file :/path/to/log4j. 属性运行我的 flink 作业

java - 在 Android 中隐藏、显示和聚焦 editText

antlr - 从ANTLR生成EBNF

java - 需要计算文档中每个术语的频率

java - 使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

java - ANTLR序列化