grammar t026actions; options { language = JavaScript; } @lexer::init { this.xlog = []; this.foobar = "attribute;"; } prog @init { this.xlog = []; this.xlog.push("init;"); } @after { this.xlog.push("after;"); } : IDENTIFIER EOF ; catch [ exc ] { this.xlog.push("catch;"); throw new Error(); } finally { this.xlog.push("finally;"); } IDENTIFIER : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* { // a comment this.xlog.push("action;"); this.xlog.push([$text, $type, $line, $pos, $index, $channel, $start, $stop].join(" ")); if (true) this.xlog.push(this.foobar); } ; WS: (' ' | '\n')+;