eval(readFile('Compiled_NamespaceJS_Compiler')) ometa NLRJSParser <: JSParser { isKeyword :x = ?(x == 'returnfrom') | super(`isKeyword, x), stmt = "returnfrom" "name":n expr:c -> [`returnFrom, n, c] | ^stmt, srcElem = "function" "name":n funcRest:f -> [ `var, n, [ f[0], //`func f[1], //arguments [ `begin, [ `tryNs, n, f[2], //body `e, [`begin, [`return, [`get, `e]]], //the body of catch [`begin, [`get, `undefined]] ] ] ] ] | ^srcElem } ometa NLRJSTranslator <: JSTranslator { tryNs :name1 curlyTrans:x :name2 curlyTrans:c curlyTrans:f -> ('try ["' + name1 + '"]' + x + 'catch(' + name2 + ')' + c + 'finally' + f), returnFrom :name trans:c -> ('throw ["' + name + '"] ' + c + ';') // func :args curlyTrans:body -> ('(function (' + args.join(',') + ') {once ' + body + '})') }