背景
我正在处理的项目的一部分要求我分析 Q# 源代码并在遇到某些语法元素时执行特定操作。例如,假设我想计算整个程序中使用了多少种不同的门类型。现在,这可以通过遍历程序的抽象语法树并根据当前语法节点执行操作来实现。
我试过的
我首先分析了qsharp-compiler存储库,但是,编译器的内部工作方式缺乏在线文档,浏览所有 C# 和 F# 源代码非常乏味。
当然,我可以为该语言编写自己的解析器,但这对于手头的任务来说可能是一种矫枉过正。有有一个方法可以从编译器的内部提取AST。
问题
有没有办法以编程方式使用 Q# 编译器(从 C# 或 F#)编译 Q# 源代码,并提取内部 AST?