Improve nimeval, changes some defaults (#14351)
* Improve nimeval, changes some defaults This improves nimeval to make it easier to use NimScript as an embedded scripting languages. It does change some of the defaults, so in case anything used the old version and depended on the old behaviour these would have to be changed. * Remove dependency on nimhcr for nimscript
This commit is contained in:
parent
105079e88a
commit
13cfaf5fd5
2 changed files with 8 additions and 4 deletions
|
|
@ -99,14 +99,16 @@ proc findNimStdLibCompileTime*(): string =
|
||||||
|
|
||||||
proc createInterpreter*(scriptName: string;
|
proc createInterpreter*(scriptName: string;
|
||||||
searchPaths: openArray[string];
|
searchPaths: openArray[string];
|
||||||
flags: TSandboxFlags = {}): Interpreter =
|
flags: TSandboxFlags = {},
|
||||||
|
defines = @[("nimscript", "true")],
|
||||||
|
registerOps = true): Interpreter =
|
||||||
var conf = newConfigRef()
|
var conf = newConfigRef()
|
||||||
var cache = newIdentCache()
|
var cache = newIdentCache()
|
||||||
var graph = newModuleGraph(cache, conf)
|
var graph = newModuleGraph(cache, conf)
|
||||||
connectCallbacks(graph)
|
connectCallbacks(graph)
|
||||||
initDefines(conf.symbols)
|
initDefines(conf.symbols)
|
||||||
defineSymbol(conf.symbols, "nimscript")
|
for define in defines:
|
||||||
defineSymbol(conf.symbols, "nimconfig")
|
defineSymbol(conf.symbols, define[0], define[1])
|
||||||
registerPass(graph, semPass)
|
registerPass(graph, semPass)
|
||||||
registerPass(graph, evalPass)
|
registerPass(graph, evalPass)
|
||||||
|
|
||||||
|
|
@ -119,6 +121,8 @@ proc createInterpreter*(scriptName: string;
|
||||||
var vm = newCtx(m, cache, graph)
|
var vm = newCtx(m, cache, graph)
|
||||||
vm.mode = emRepl
|
vm.mode = emRepl
|
||||||
vm.features = flags
|
vm.features = flags
|
||||||
|
if registerOps:
|
||||||
|
vm.registerAdditionalOps() # Required to register parts of stdlib modules
|
||||||
graph.vm = vm
|
graph.vm = vm
|
||||||
graph.compileSystemModule()
|
graph.compileSystemModule()
|
||||||
result = Interpreter(mainModule: m, graph: graph, scriptName: scriptName)
|
result = Interpreter(mainModule: m, graph: graph, scriptName: scriptName)
|
||||||
|
|
|
||||||
|
|
@ -3026,5 +3026,5 @@ export widestrs
|
||||||
import system/io
|
import system/io
|
||||||
export io
|
export io
|
||||||
|
|
||||||
when not defined(createNimHcr):
|
when not defined(createNimHcr) and not defined(nimscript):
|
||||||
include nimhcr
|
include nimhcr
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue