如何编写Python词法分析器?

dis*_*ish -2 c python lexical-analysis

我正在尝试编写一个C模块来词法分析Python代码.我该怎么做?

Ale*_*lli 9

这样做的Python代码词法分析的完整,详细的规格是这里.

如您所见,您需要涵盖很多案例.一个帮助是,如果您的C实现的词法分析器对于给定的Python片段是正确的,您将始终能够最容易地检查:它必须返回Python标准库中Python 实现的模块令牌化的确切内容.

正如你可以在标记化的看到的来源,这是Python中的几百行,所以你可以很容易地推断需要的C数千行-绝对不是一个周末的项目;-)

当然,作为一个起点,你可以分叉Python自己的Parser/tokenizer.c - 它不到2000行(它的功能非常简短!),但很大程度上是因为它依赖于其他一些零碎的东西来自Python的运行时(如果您的实现需要独立,那么您需要重现这些).

如果你是一个非常有经验的程序员用Python的代码库的深刻理解,并且可以只在冲刺这对您的所有醒着的时候,你可能会使其在一个星期左右.在正常情况下,我会说预计一个月的工作会有点乐观.你的截止日期是什么时候?