Using AST rewrite rules, the following throws an error: (op+='!'|'not')* negationExpr -> {$op != null && ($op.size() % 2)==1}? ^(NOT negationExpr) Something about invalid string template shorthand '%'. ANTLR 3.0b7. Looks like a bug. -Scott -- Scott Fortmann-Roe 500 College Ave Swarthmore, Pa 19081 (510) 866-5296