【问题标题】:'!Unknown version!' error“!未知版本!”错误
【发布时间】:2012-10-16 18:02:10
【问题描述】:

我在 Python 中使用 ANTLR 语法。它以前工作正常,但现在我在导入词法分析器时收到以下错误:

ValueError: Bad version string '!Unknown version!'

我可以追溯到 antlr3 可执行文件:

$ antlr3 -版本
ANTLR 解析器生成器版本!未知版本!

生成的解析器和词法分析器看起来很好,除了版本字符串。我正在使用 Ubuntu 存储库(12.04)提供的 antlr3。我想我可以手动安装 ANTLR,但我认为这应该开箱即用 - 也许我在某个地方配置错误?是否有我遗漏的已知技巧,或者这是一个错误?

【问题讨论】:

    标签: antlr


    【解决方案1】:

    我一直在尝试做同样的事情,并得出结论认为 Ubuntu 存储库中的当前 antlr3 包无法在 Python 运行时支持下正常工作。另一个 Ubuntu 软件包 python-antlr 更加过时,因为它应该与 ANTLR 2 一起使用。我建议您卸载 antlr3 并手动安装 ANTLR 以及正确的 Python 运行时支持。

    由于我自己刚刚经历过这个,发现说明书有点散,这里总结一下怎么做。

    1. 卸载antlr3包:

      sudo apt-get purge antlr3
      
    2. 获取最新 ANTLR 3.x 的完整 Java 二进制文件:

      wget http://www.antlr3.org/download/antlr-3.5.tar.gz
      
    3. 准备安装 Python 运行时:

      tar xzf antlr-3.5.tar.gz
      cd antlr3-antlr-3.5/runtime/Python
      
    4. 在调用安装脚本之前,您必须修补版本号以指向在线可用的内容。您可以通过编辑ez_setup.py 并将DEFAULT_VERSION = "0.6c5" 更改为DEFAULT_VERSION = "0.6c11" 来做到这一点。

    5. 现在您应该可以安装 Python 运行时了:

      sudo python setup.py install
      

      要查看它是否有效,请在 Python shell 中尝试import antlr3。你不应该得到任何错误。

    6. 现在,您必须正确安装相应版本的 ANTLR,它是 Java 版本。为此,请确保您已安装 JVM(例如,sudo apt-get install default-jdk)。

    7. 获取最新的 ANTLR 3 jar:

      wget http://www.antlr3.org/download/antlr-3.5-complete.jar
      
    8. 将 jar 永久添加到您的类路径(当然,您可以将其移动到您想要的位置并相应地调整路径):

      echo 'export CLASSPATH=~/antlr-3.5-complete.jar:$CLASSPATH' >> ~/.bashrc
      
    9. 可选,但推荐:添加一个 shell 别名来调用 ANTLR 3:

      echo "alias antlr3='java -jar ~/antlr-3.5-complete.jar'" >> ~/.bashrc
      

    就是这样!在你重新阅读你的 .bashrc 之后,看看是否一切都适用于antlr3 -version。您应该会收到如下消息:

    ANTLR Parser Generator  Version 3.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-05
      • 2023-02-08
      • 2019-06-27
      • 2021-04-10
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多