我正在尝试编写一个 C 模块来对 Python 代码进行词法分析。我该怎么做?
问问题
2529 次
1 回答
10
对 Python 代码进行词法分析的完整、详细的规范在这里。
如您所见,您需要涵盖很多情况。一个帮助是,如果您的 C 实现的词法分析器对于给定的 Python 片段是否正确,您将始终能够最容易地检查:它必须准确返回Python 标准库中 Python 实现的模块标记化所做的事情。
正如您在 tokenize 的源代码中所见,它是数百行 Python,因此您可以轻松推断需要数千行 C 语言——绝对不是周末项目;-)
当然,作为一个起点,你可以 fork Python 自己的Parser/tokenizer.c —— 不到 2000 行(它的功能太短了!),但很大程度上是因为它依赖于很多其他的点点滴滴来自 Python 的运行时(如果您的实现需要独立,则需要重现这些)。
如果你是一个非常有经验的程序员,对 Python 的代码库有深入的了解,并且可以在你醒着的所有时间都在这上面冲刺,那么你可能会在一周左右的时间内完成它。在正常情况下,我会说期待一个月的工作会有点乐观。你的最后期限是什么时候?
于 2010-05-15T15:11:02.850 回答