ometa Zmick <: Parser { all = (a | b | c)*, a = "a" -> 'and', b = "b" -> 'brb', c = "c" -> 'call' } tree = Zmick.matchAll("abc", "all") //[and, brb, call] ometa interp{ expr = ['and'] -> alert('and') |['brb'] -> alert('brb') | ['call'] -> alert(call) } interp.matchAll(tree, "expr")