5
macros
パッケージには、parseExpr
とparseStmt
のようなパーサーがありますが、それらは{.compileTime.}
です。Nim code parser
実行時にNimコードの文字列を解析して解析できるASTを生成する方法はありますか?
macros
パッケージには、parseExpr
とparseStmt
のようなパーサーがありますが、それらは{.compileTime.}
です。Nim code parser
実行時にNimコードの文字列を解析して解析できるASTを生成する方法はありますか?
はい。あなたは、新鮮なコンパイラモジュールがインストールされていることを確認してください:
nimble install [email protected]
次に、あなたのコード:
# 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
Works!ありがとうございました! –