Nim代码解析器

  • 本文关键字:代码 Nim nim-lang
  • 更新时间 :
  • 英文 :


macros包中有可用的解析器,如parseExprparseStmt,但它们是{.compileTime.}进程。

是否有任何方法在运行时解析Nim代码字符串,生成可以分析的AST ?

是。确保你安装了一个新的编译器模块:

nimble install compiler@0.11.3

然后你的代码:

# File: myfile.nim
import compiler.modules, compiler.ast, compiler.astalgo,
    compiler.passes, compiler.llstream
proc dummyOpen(s: PSym): PPassContext = discard
proc logASTNode(context: PPassContext, n: PNode): PNode =
  result = n
  debug(n)
proc displayAST*(program: string) =
  var m = makeStdinModule()
  incl(m.flags, sfMainModule)
  registerPass(makePass(open = dummyOpen, process = logASTNode))
  processModule(m, llStreamOpen(program), nil)
displayAST("""
proc hi() =
  echo "hi"
""")

编译有点棘手。您必须指出文档在您的nim lib目录中的位置。

nim c -r --NimblePath:PATH_TO_NIM_LIB/packages/docutils ~/myfile.nim

最新更新