2016-03-03 93 views
1

位于here的词法分析器/解析器文件非常大,我不确定它是否适用于检索Rust函数列表。也许写我自己/使用另一个图书馆将是一个更好的途径?我可以使用Rust词法分析器或分析器来检索Rust文件中的函数列表吗?

最终目标是创建一种执行管理器。为了语境化,它能够读取包含在函数中的函数调用列表。函数内的函数调用将能够从某个Web界面重新排序。认为以这种方式管理更大的应用程序可能会更好。

回答

4

不,我的意思是,不是真的是。无论你是自己编写解析器还是重新使用syntex,你都会遇到一个根本性的局限性:

所以我们说,你全力以赴,扩大macro_rules!基宏,包括外部包装箱中定义的(这意味着你还需要提取rustc的箱子装的元数据... ...这ISN“ t稳定)。程序宏和自定义派生属性如何?这些是在代码中定义的,并依靠编译器内部接口来运行。

这很可能永远工作正确是,如果你对编译器的顶部建立或复制大量的工作(其中还涉及不稳定的二进制接口)的唯一途径。

+0

嗯,我没有考虑宏。除了宏之外,'syntex'函式库能够让我知道文件中的函数,包括它们的开始和结束位置吗? – willsquire

+0

您可以将源文件解析为AST文件,然后走AST查找“fn”项,是的。请记住,你不会得到任何*类型的信息;在执行类型(或甚至名称)解析之前,“syntex”在一个级别上运行。如果你正在计划的任何事情都涉及到了解所涉及的类型,那么如果不在编译器之上进行构建,它可能是不可能的。 –

3

您可以使用syntex解析构建脚本中的Rust代码。

相关问题