如何构建Hy lang片段的AST

问题描述

我在Python项目中使用了几个Hy Lang代码段。 我想知道是否有一种相对简单的方法获取带有某些python库甚至Hy编译器本身的Hy代码的抽象语法树(我研究了编译器代码,但是我很难了解它。)

我知道Hy会先将所有Hy lang代码转换为python AST,然后再生成该字节码,looking at the compiler没有看到一个函数可以帮助我将Hy代码转换为可以馈入的Hy对象例如,HyASTCompiler。

我希望我可以利用已经构建的东西,而不必使用像ANTLER这样的东西并编写自己的语法。

谢谢!

使用Hy版本0.12和python3

解决方法

我不清楚您是要使用Python ast对象还是仅使用Hy代码作为数据。后者由readread-str提供。对于前者,目前未提供任何公共接口,但请查看内部函数hy.compiler.hy_compile的文档字符串。

不过,Hy 0.12很古老,因此您可能需要升级。