2012-09-15 38 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模块具有相当陡峭的学习曲线。但是,对于您的语言,我认为您可以在其网站上重新使用其中一个示例。

相关问题