import pyjsparser
from .space import Space
from . import fill_space
from .byte_trans import ByteCodeGenerator
from .code import Code
from .simplex import *


pyjsparser.parser.ENABLE_JS2PY_ERRORS = lambda msg: MakeError(u'SyntaxError', unicode(msg))

def get_js_bytecode(js):
    a = ByteCodeGenerator(Code())
    d = pyjsparser.parse(js)
    a.emit(d)
    return  a.exe.tape
    
def eval_js_vm(js, debug=False):
    a = ByteCodeGenerator(Code(debug_mode=debug))
    s = Space()
    a.exe.space = s
    s.exe = a.exe

    d = pyjsparser.parse(js)

    a.emit(d)
    fill_space.fill_space(s, a)
    if debug:
        from pprint import pprint
        pprint(a.exe.tape)
        print()
    a.exe.compile()

    return a.exe.run(a.exe.space.GlobalObj)