2012-10-26 75 views
1

我正在使用Python的ANTLR語法。它用於正常工作,但現在我得到以下錯誤,當我導入詞法分析器:'!未知版本!'錯誤

ValueError: Bad version string '!Unknown version!'

我能追查這回antlr3可執行:

$ antlr3 -version
ANTLR Parser Generator Version !Unknown version!

生成的解析器和詞法分析器似乎很好,除了版本字符串。我使用的是Ubuntu的倉庫(12.04)提供的antlr3。我想我可以手動安裝ANTLR,但我認爲這應該可以開箱即用 - 也許我在某個地方配置了錯誤的東西?有沒有一個我知道的技巧,或者這是一個錯誤?

回答

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外殼。你不應該得到任何錯誤。

  6. 現在,您必須安裝相應版本的ANTLR,它是用Java編寫的。爲此,請確保您已安裝JVM(例如,sudo apt-get install default-jdk)。

  7. 獲取最新ANTLR 3罐子:

    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