file: report(s?) /\Z/ { return $item[1] } report: complete_report | incomplete_report complete_report: star_line server_started data_line(s?) server_closed star_line { return ["complete:", @item[2,3,4]] } incomplete_report: star_line server_started data_line(s?) server_closed(?) { return ["incomplete:", @item[2,3]] } star_line: "*****\n" server_started: "Server Started" /.*\n/ { "@item[1, 2]" } server_closed: "Server Closed" /.*\n/ { "@[item[1, 2]" } data_line: ...!(star_line | server_started | server_closed) /.*\n/