如何编写Python词法分析器?

-2 投票
1 回答
2753 浏览
提问于 2025-04-15 22:44

我正在尝试写一个C语言模块,用来对Python代码进行词法分析。我该怎么做呢?

1 个回答

10

关于如何对Python代码进行词法分析的详细说明可以在这里找到。

如你所见,有很多情况需要考虑。一个帮助是,你可以很容易地检查你用C语言实现的词法分析器是否正确,只需确保它返回的结果与Python标准库中的tokenize模块的结果完全一致。

在tokenize的源代码中,你会发现它有几百行的Python代码,所以你可以推测,想要用C语言实现类似的功能,可能需要几千行代码——这绝对不是一个周末能完成的项目;-)

当然,作为起点,你可以从Python自己的Parser/tokenizer.c入手——这部分代码不到2000行(对于它所做的事情来说,真的很短!),但这也部分是因为它依赖了Python运行时的其他很多组件(如果你的实现需要独立运行,那么你需要自己实现这些部分)。

如果你是一个非常有经验的程序员,对Python的代码库有很强的理解,并且可以全心投入到这个项目中,你可能在一周左右完成。但在正常情况下,我认为预计一个月的工作时间可能有点乐观。你的截止日期是什么时候?

撰写回答