ometa A <: Parser { paras = para*, para = `aa -> alert("a2"), A = 'a' -> {alert("An a"); "a"}, /*comment*/ B = 'b' -> {alert("A b"); "b"}, // comment C = /*comment*/ 'c', space = ' ' -> '', letter = ( A | B | C | space ), letters = letter+:xs -> { var cs = xs.join(''); alert("Read letters: " + cs); cs} | 'z' -> alert("A z"), toplevel = letters* end } A.matchAll("a b cza", "toplevel") var fred = function(){ alert(typeof this ) } fred(1,2) fred.call(function(){} ,2,3,4,5) fred.apply( this, [1,2,3])