grammar t014parser; options { language = JavaScript; } @parser::members { this.reportedErrors = []; this.events = []; this.emitErrorMessage = function(msg) { this.reportedErrors.push(msg); }; this.eventMessage = function(msg) { this.events.push(msg); }; } document: ( declaration | call )* EOF ; declaration: 'var' t=IDENTIFIER ';' {this.eventMessage(['decl', $t.getText()]);} ; call: t=IDENTIFIER '(' ')' ';' {this.eventMessage(['call', $t.getText()]);} ; IDENTIFIER: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*; WS: (' '|'\r'|'\t'|'\n') {$channel=HIDDEN;};