For personal reference. Not fully tested. Change: stmt_list : SEP(s?) stmt SET_IN_CODE stmt_list_(s?) SEP(s?) { [ $item[2], @{$item[4]} ] } Change: stmt_list_ : seps stmt { $item[2] } Add: seps : SEP(s) | { my $idx = 1; my $line = $itempos[$idx]{line}{from}; my $col = $itempos[$idx]{column}{from}; warn("$line,$col: Expecting ';'.\n"); REJECT } Remove: sep