'!未知版本!'错误

时间:2012-10-26 13:04:31

标签: antlr

我正在使用Python的ANTLR语法。它曾经工作正常,但现在我导入lexer时出现以下错误:

  

ValueError:错误版本字符串'!未知版本!'

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

  

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

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

1 个答案:

答案 0 :(得分:3)

我一直在努力做同样的事情,并得出结论,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
    

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

  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
    
  10. 就是这样!重新阅读.bashrc后,看看是否所有内容都适用于antlr3 -version。您应该收到如下消息:

    ANTLR Parser Generator  Version 3.5