2012-09-15 48 views
0

例如,如果我給這個字符串我需要一種方法來詞法分裂我的琴絃

"asdf bob(1, 2, "a")" 

我想它被分割

["asdf", "bob", [1, 2, "a"]] 

我使用SHLEX嘗試,但它似乎太簡單了。它不會將括號拆分爲不同的數組,並且不會正確拆分逗號。

現在,我知道我可能會用一些for循環,還有一些掛羊頭賣狗肉做到這一點,但我想,以節省空間,時間和速度這一點。我會感謝一些幫助,謝謝!

P.S.它應該能夠分割多行,所以如果我有功能,例如。

" desu(1, 2){ \n 
     asdf  \n 
    }    " 

應該拆分爲

["desu", [1, 2], ["asdf"]] 

拆分柯利括號到不同的列表爲好。

這將節省大量的時間!謝謝!

+5

你描述的是一個分析樹,這是一步進一步,然後簡單的詞法分析或標記化。 –

+0

我想你想看看AST模塊這種事情也許pyBison http://freenet.mcnabhosting.com/python/pybison/walkthrough.html什麼呈三角 –

+2

下面是一個[Python的分析工具概述( http://nedbatchelder.com/text/python-parsers.html)。 –

回答

1

你有沒有看着pyparsing?這是一個通用的python解析模塊,可以幫助你。 Pyparsing可以用於遞歸下降分析,比如編程語言。對於不遵循已經實現的示例之一的語言,pyparsing模塊具有相當陡峭的學習曲線。但是,對於您的語言,我認爲您可以在其網站上重新使用其中一個示例。

相關問題