equal
deleted
inserted
replaced
187 ([], _) => (finite' stopper scan (state, xs), src) |
187 ([], _) => (finite' stopper scan (state, xs), src) |
188 | (xs', src') => drain def_prmpt get stopper scan ((state, xs @ xs'), src')); |
188 | (xs', src') => drain def_prmpt get stopper scan ((state, xs @ xs'), src')); |
189 |
189 |
190 fun source' def_prmpt get unget stopper scanner opt_recover (state, src) = |
190 fun source' def_prmpt get unget stopper scanner opt_recover (state, src) = |
191 let |
191 let |
192 val drain_with = drain def_prmpt get stopper; |
192 fun drain_with scan = drain def_prmpt get stopper scan; |
193 |
193 |
194 fun drain_loop recover inp = |
194 fun drain_loop recover inp = |
195 drain_with (catch scanner) inp handle FAIL msg => |
195 drain_with (catch scanner) inp handle FAIL msg => |
196 (warning (if_none msg "Syntax error."); warning "Trying to recover ..."; |
196 (warning (if_none msg "Syntax error."); warning "Trying to recover ..."; |
197 drain_loop recover (apfst snd (drain_with recover inp))); |
197 drain_loop recover (apfst snd (drain_with recover inp))); |