[type] Parser [grammar] grammar T; start : statement+ ; statement : 'x' | ifStatement; ifStatement : 'if' 'y' statement ('else' statement|) { }; ID : 'a'..'z'+ ; WS : (' '|'\n') -> channel(HIDDEN); [start] start [input] if y if y x else x [output] if y x else x if y if y x else x