Python包解析程序中的标识符(C,Scala,Lisp)?

时间:2012-04-30 04:34:30

标签: python c parsing scala lisp

在标题中我提到了3种不同的语言,我想知道是否存在一个python包,它可以为我提供任何一个程序的标识符列表;所以不必全部三个,因为我怀疑它会是那样的。所以我的问题是python中是否存在一个函数或类,它允许我获取一个语言中特定程序的标识符列表,最好是标题中列出的3个标识符。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

pycparser,您可以使用它从代码生成C AST,然后遍历它以获得您想要的任何内容。

Python中有this simple lisp interpreter,您应该可以从中删除解析器。

我怀疑Scala有什么类似的东西可供使用,但你可以使用类似ply的东西来制作解析器。它不会那么容易,但会做到。

答案 1 :(得分:1)

一般来说,如果没有几乎完整的语言实现,这是不可能的。

C中有一个基本的预处理器,可以允许屏蔽特殊扫描的函数声明。在Lisp中有一个强大的元编程,这意味着你只能使用功能齐全的Lisp编译器提取定义,简单的解析根本无济于事。

Scala是这三者中最简单的,但它的语法仍然过于膨胀,你至少需要一个完整的解析器。 Python几乎不是以任何方式执行此类操作的正确工具。