2015-09-09 4 views
5

पैकेज में parseExpr और parseStmt जैसे पार्सर्स उपलब्ध हैं लेकिन वे {.compileTime.} procs हैं।निम कोड पार्सर

क्या रनटाइम पर निम कोड की स्ट्रिंग को पार्स करने का कोई तरीका है, एक एएसटी उत्पन्न करना जिसका विश्लेषण किया जा सकता है?

उत्तर

6

हां। फिर अपने कोड

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

संकलन थोड़ा मुश्किल है। आपको यह इंगित करना होगा कि आपके निम lib dir के अंदर डॉक्यूटल्स कहाँ रहते हैं।

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

काम करता है! धन्यवाद! –

संबंधित मुद्दे