Python 源代码解析:"runtime introspection parsing" vs "AST parsing"



我计划为python项目实现一个自动化的文档工具。

我已经用其他编程语言做过类似的项目,并且熟悉抽象语法树(AST(代码解析。Python似乎有一个专门的库,符合我的需求:https://docs.python.org/3/library/ast.html

然而,在我的研究中,我发现Python还提供了一些高级的内省功能,能够在运行时(https://docs.python.org/3/library/inspect.html(查找有关对象的信息。因此,通过检查模块的每个对象,我可能能够以"运行时方法"解析我的源代码。

这种方法似乎更容易访问,因为它不需要生成和浏览抽象语法树,根据经验,抽象语法树可能会变得非常乏味。可以通过程序方式检查对象,并且通过快速查看文档,看起来没有任何遗漏。除了那些显然不算作对象的注释,因此需要一些解决方法才能检索。

由于这个概念对我来说仍然是新的,我可能会错过一些其他限制:它似乎好得令人难以置信。我的问题如下:">运行时内省解析"方法的优点和缺点是什么,它是否具有经典 AST 解析方法所没有的限制?

请注意,我并不是要求对哪种方法更好进行抽象的辩论,而是关于"运行时内省解析方法"的精确事实、参考或专业知识,这些限制、优势和劣势优于 AST 解析方法。

我不认为内省可以取代解析。通过内省,您可以找出python解析器/编译器理解并将其AST转换为什么。

对于语法或语法错误,与正常解析方法的区别应该是显而易见的:如果您自己解析,则可以检测到这一点并提供适当的错误消息。在内省的情况下,您不会看到任何适合基于错误消息的内容 - 无论如何,python解析器都应该显示它。

最新更新