如何编写Python词法分析器?
我正在尝试写一个C语言模块,用来对Python代码进行词法分析。我该怎么做呢?
1 个回答
10
关于如何对Python代码进行词法分析的详细说明可以在这里找到。
如你所见,有很多情况需要考虑。一个帮助是,你可以很容易地检查你用C语言实现的词法分析器是否正确,只需确保它返回的结果与Python标准库中的tokenize模块的结果完全一致。
在tokenize的源代码中,你会发现它有几百行的Python代码,所以你可以推测,想要用C语言实现类似的功能,可能需要几千行代码——这绝对不是一个周末能完成的项目;-)
当然,作为起点,你可以从Python自己的Parser/tokenizer.c入手——这部分代码不到2000行(对于它所做的事情来说,真的很短!),但这也部分是因为它依赖了Python运行时的其他很多组件(如果你的实现需要独立运行,那么你需要自己实现这些部分)。
如果你是一个非常有经验的程序员,对Python的代码库有很强的理解,并且可以全心投入到这个项目中,你可能在一周左右完成。但在正常情况下,我认为预计一个月的工作时间可能有点乐观。你的截止日期是什么时候?