macros - 如何在运行时打印 Nim 的 AST?

标签 macros nim-lang

dumpTree类似的宏在编译时打印 Nim 的 AST。我想知道如何在运行时打印相同的内容。用例是能够捕获输出并将其记录在 nimib 中。文档。

举个具体的例子:

import macros

dumpTree:
  25 ⬇️
  10 ➖

编译时生成:

StmtList
  Command
    IntLit 25
    Ident "⬇️"
  Command
    IntLit 10
    Ident "➖"

我想要一个与上述情况等效的 dumpTreeRuntime:

echo """
StmtList
  Command
    IntLit 25
    Ident "⬇️"
  Command
    IntLit 10
    Ident "➖"
"""

最佳答案

import macros


macro treeToString(code: untyped): untyped =
   return newLit(treeRepr(code))


when isMainModule:
  let x = treeToString:
    25 ⬇️
    10 ➖

   echo(x)

关于macros - 如何在运行时打印 Nim 的 AST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76425870/

相关文章:

c - 宏扩展正确,但给我 "expected expression"错误

c++ - 如何用##_T理解C宏

c++ - token 粘贴似乎不适用于 C++ 宏

python - 在 nim 中比较两个字符串的函数比 python 慢

macros - Nim 宏参数

添加到类型名称的 C 宏

nim-lang - 如何使 Nim 编译和运行输出静音?

nim-lang - 如何在 Nim 中用糖解压参数中的元组?

c - 在 nim 中链接到 vulkan

c++ - 在宏中生成包含文件名