eval(readFile('Compiled_JavaScript_Compiler')) ometa EJSParser <: JSParser { isKeyword :x = ?(x == 'say') | super (`isKeyword, x), stmt = "say" expr:x sc -> [`call, [`get, 'alert'], x] | super("stmt") expr = "case" "(" expr:e ")" "{" ( expr:c ":" srcElems:cs -> [`case, c, cs] )*:cs "}" -> [`switch, e].concat(cs) | super("expr") } translateCode = function(s) { var tree = EJSParser.matchAll(s, "stmt") var code = JSTranslator.match(tree, "trans") return code } say "woot" JSParser.matchAll("alert(x = x + 1)", "expr")