1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- COMPILER_PATH = "interface/HUTN"
- import sys
- 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):
- start = time.time()
- 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() != ""]
- code_fragments = [i.replace(" ", "\t") for i in code_fragments]
- initial_tabs = min([len(i) - len(i.lstrip("\t")) for i in code_fragments])
- code_fragments = [i[initial_tabs:] for i in code_fragments]
- code_fragments.append("")
- code = "\n".join(code_fragments)
- with open(temp_file, "w") as f:
- f.write(code)
- f.flush()
- ss = time.time()
- compiled = do_compile(temp_file, COMPILER_PATH + "/grammars/actionlanguage.g", "CS")
- print(" Compile: %ss" % (time.time() - ss))
- os.remove(temp_file)
- return compiled
- def compile_model(code):
- code_fragments = code.split("\n")
- code_fragments = [i for i in code_fragments if i.strip() != ""]
- code_fragments = [i.replace(" ", "\t") for i in code_fragments]
- initial_tabs = min([len(i) - len(i.lstrip("\t")) for i in code_fragments])
- code_fragments = [i[initial_tabs:] for i in code_fragments]
- code_fragments.append("")
- code = "\n".join(code_fragments)
- with open(temp_file, "w") as f:
- f.write(code)
- f.flush()
- 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)
- try:
- if mode == "code":
- compiled = compile_AL(code)
- service_set(port, "OK")
- [service_set(port, i) for i in compiled]
- elif mode == "model":
- compiled = compile_model(code)
- service_set(port, "OK")
- [service_set(port, i) for i in compiled]
- else:
- raise Exception("No such mode: " + mode)
- except Exception as e:
- service_set(port, str(e))
- raise
- print("Compile took %ss" % (time.time() - start))
- service_register("compiler", compile_service)
- try:
- while raw_input() != "STOP":
- pass
- finally:
- service_stop()
|