module nit
import modelbuilder
-import exprbuilder
+import frontend
import naive_interpreter
+import debugger
+#import interpretor_type_test
# Create a tool context to handle options and paths
var toolcontext = new ToolContext
var modelbuilder = new ModelBuilder(model, toolcontext)
var arguments = toolcontext.option_context.rest
-if arguments.is_empty then
+if arguments.is_empty or toolcontext.opt_help.value then
toolcontext.option_context.usage
return
end
var progname = arguments.first
# Here we load an process all modules passed on the command line
-var mmodules = modelbuilder.parse_and_build([progname])
-modelbuilder.full_propdef_semantic_analysis
+var mmodules = modelbuilder.parse([progname])
+modelbuilder.run_phases
if toolcontext.opt_only_metamodel.value then exit(0)
# Here we launch the interpreter on the main module
assert mmodules.length == 1
var mainmodule = mmodules.first
-modelbuilder.run_naive_interpreter(mainmodule, arguments)
+
+if toolcontext.opt_debugger_autorun.value then
+ modelbuilder.run_debugger_autorun(mainmodule, arguments)
+else if toolcontext.opt_debugger_mode.value then
+ modelbuilder.run_debugger(mainmodule, arguments)
+else
+ modelbuilder.run_naive_interpreter(mainmodule, arguments)
+end