gpt4 book ai didi

macros - nim - 自定义宏/pragma 以获取完整模块但获取 "cannot attach a custom pragma"

转载 作者:行者123 更新时间:2023-12-04 08:20:32 27 4
gpt4 key购买 nike

我想使用 nim 访问完整模块(文件)的 AST。我发现,任何宏都可以用作自定义编译指示,所以我在文件 foo.nim 中做了这样的事情:

import macros

macro getAst(ast: untyped): untyped =
echo "ast = ", treeRepr(ast)

{.getAst.} # <-- This should invoke the getAst() macro with the AST of the file

proc hello() =
echo "hello world"
但我得到编译器错误 cannot attach a custom pragma to 'foo'有没有办法做到这一点?我发现我可以像这样将宏用作 block 宏,但我真的更喜欢通过 pragma 使用它。
getAst:
proc hello() =
echo "hello world"

最佳答案

无法将自定义编译指示附加到文件,但您可以这样做

proc hello() {.getAst.} =
echo "hello world"
将编译指示附加到 proc。我不确定,但好像 {.push.}不适用于宏,仅适用于 template编译指示,像这样:
template dbIgnore {.pragma.}

{.push dbIgnore.}
所以你最好的选择是用 pragma 注释你想要的所有 procs。
relevant manual section

关于macros - nim - 自定义宏/pragma 以获取完整模块但获取 "cannot attach a custom pragma",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65519270/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com