|
@@ -5,11 +5,13 @@ sys.path.append(COMPILER_PATH)
|
|
|
sys.path.append("wrappers")
|
|
|
from hutn_compiler.compiler import main as do_compile
|
|
|
from modelverse import *
|
|
|
+import os
|
|
|
|
|
|
init()
|
|
|
login("HUTN", "HUTN")
|
|
|
|
|
|
def compile_service(port):
|
|
|
+ temp_file = ".tmp_%s" % port
|
|
|
def compile_AL(code):
|
|
|
code_fragments = code.split("\n")
|
|
|
code_fragments = [i for i in code_fragments if i.strip() != ""]
|
|
@@ -19,11 +21,13 @@ def compile_service(port):
|
|
|
code_fragments.append("")
|
|
|
code = "\n".join(code_fragments)
|
|
|
|
|
|
- with open(".code.alc", "w") as f:
|
|
|
+ with open(temp_file, "w") as f:
|
|
|
f.write(code)
|
|
|
f.flush()
|
|
|
|
|
|
- compiled = do_compile(".code_%s.alc" % port, COMPILER_PATH + "/grammars/actionlanguage.g", "CS")
|
|
|
+ compiled = do_compile(temp_file, COMPILER_PATH + "/grammars/actionlanguage.g", "CS")
|
|
|
+ os.remove(temp_file)
|
|
|
+ print("Compiled AL to " + str(compiled))
|
|
|
return compiled
|
|
|
|
|
|
def compile_model(code):
|
|
@@ -35,27 +39,38 @@ def compile_service(port):
|
|
|
code_fragments.append("")
|
|
|
code = "\n".join(code_fragments)
|
|
|
|
|
|
- with open(".model.mvc", "w") as f:
|
|
|
+ with open(temp_file, "w") as f:
|
|
|
f.write(code)
|
|
|
f.flush()
|
|
|
|
|
|
- return do_compile(".model.mvc", COMPILER_PATH + "/grammars/modelling.g", "M")
|
|
|
+ compiled = do_compile(temp_file, COMPILER_PATH + "/grammars/modelling.g", "M")
|
|
|
+ os.remove(temp_file)
|
|
|
+ return compiled
|
|
|
|
|
|
mode = service_get(port)
|
|
|
code = service_get(port)
|
|
|
+
|
|
|
+ print("Compiling code: ")
|
|
|
+ print(code)
|
|
|
try:
|
|
|
if mode == "code":
|
|
|
- service_set(port, "OK")
|
|
|
+ print("Compiling...")
|
|
|
compiled = compile_AL(code)
|
|
|
+ service_set(port, "OK")
|
|
|
[service_set(port, i) for i in compiled]
|
|
|
+ print("DONE!")
|
|
|
elif mode == "model":
|
|
|
- service_set(port, "OK")
|
|
|
+ print("Compiling...")
|
|
|
compiled = compile_model(code)
|
|
|
+ service_set(port, "OK")
|
|
|
[service_set(port, i) for i in compiled]
|
|
|
+ print("DONE!")
|
|
|
else:
|
|
|
raise Exception("No such mode: " + mode)
|
|
|
except Exception as e:
|
|
|
+ print("EXCEPTION!")
|
|
|
service_set(port, str(e))
|
|
|
+ raise
|
|
|
|
|
|
service_register("compiler", compile_service)
|
|
|
try:
|