let filter x =
let f tok loc =
let tok = keyword_conversion tok x.is_kwd
in
(check_keyword_as_label tok loc x.is_kwd;
if !error_on_unknown_keywords
then check_unknown_keywords tok loc
else ();
(tok, loc)) in
let rec filter (__strm : _ Stream.t) =
match Stream.peek __strm with
| Some ((tok, loc)) ->
(Stream.junk __strm;
let s = __strm
in
Stream.lcons (fun _ -> f tok loc)
(Stream.slazy (fun _ -> filter s)))
| _ -> Stream.sempty in
let rec tracer (__strm : _ Stream.t) =
match Stream.peek __strm with
| Some (((_tok, _loc) as x)) ->
(Stream.junk __strm;
let xs = __strm
in
Stream.icons x (Stream.slazy (fun _ -> tracer xs)))
| _ -> Stream.sempty
in fun strm -> tracer (x.filter (filter strm))