Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何构造Hy-lang代码段的AST_Python_Parsing_Compiler Construction_Abstract Syntax Tree_Hy - Fatal编程技术网

Python 如何构造Hy-lang代码段的AST

Python 如何构造Hy-lang代码段的AST,python,parsing,compiler-construction,abstract-syntax-tree,hy,Python,Parsing,Compiler Construction,Abstract Syntax Tree,Hy,我在python项目中使用了几个Hy-Lang代码片段。 我想知道是否有一种相对简单的方法可以让我通过一些python库甚至Hy编译器本身获得Hy代码的抽象语法树(我已经研究了编译器代码,但我很难理解它) 我知道Hy在生成字节码之前会将所有Hy-lang代码转换为python-AST,我没有看到一个函数可以帮助我将Hy代码转换为Hy对象,例如,我可以将Hy对象提供给HyASTCompiler 我希望我能利用已经构建的东西,而不必使用鹿角之类的东西来编写自己的语法 谢谢 使用Hy版本0.12和py

我在python项目中使用了几个Hy-Lang代码片段。 我想知道是否有一种相对简单的方法可以让我通过一些python库甚至Hy编译器本身获得Hy代码的抽象语法树(我已经研究了编译器代码,但我很难理解它)

我知道Hy在生成字节码之前会将所有Hy-lang代码转换为python-AST,我没有看到一个函数可以帮助我将Hy代码转换为Hy对象,例如,我可以将Hy对象提供给HyASTCompiler

我希望我能利用已经构建的东西,而不必使用鹿角之类的东西来编写自己的语法

谢谢


使用Hy版本0.12和python3,我不清楚您是希望使用Python
ast
对象还是仅使用Hy代码作为数据。后者由
read
read str
提供。对于前者,目前没有提供公共接口,但请查看内部函数
hy.compiler.hy\u compile
的docstring


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

我更喜欢python AST对象(因为我需要对它“提问”)。我现在正在看“hy_compile”,但它需要一个hy AST对象来编译。我甚至还没有一个Hy-AST,我只是有一个Hy代码,我想转换成Hy-AST。我想也许“hy_parse”可以做到这一点,但我不认为有(或在版本0.12中工作相同)我目前正在查看hy源代码的最新版本。@Kenny“hy-AST”对象正是手册中所称的hy模型。使用
read
read str
从字符串中提取一个。我明白了,谢谢你提供的信息。如果我需要更多信息,我会尝试。现在,我还找到了hy2py函数(哈哈,我实际上也看到了你的一些帖子@kodiologist),我认为如果与“-with ast”标志一起使用,它可以提供我所需要的一切。