【问题标题】:Nim code parserNim 代码解析器
【发布时间】:2015-12-05 21:24:54
【问题描述】:

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

有什么方法可以在运行时解析一串 Nim 代码,生成可以分析的 AST?

【问题讨论】:

    标签: nim-lang


    【解决方案1】:

    是的。确保您安装了新的编译器模块:

    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"
    """)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多