fix detection of eof reaching when using camlp4
This commit is contained in:
parent
5123624b63
commit
7e7116ca9d
|
@ -50,17 +50,17 @@ let parse_toplevel_phrase_camlp4 str eos_is_error =
|
||||||
Register.iter_and_take_callbacks (fun (_, f) -> f ());
|
Register.iter_and_take_callbacks (fun (_, f) -> f ());
|
||||||
let eof = ref false in
|
let eof = ref false in
|
||||||
try
|
try
|
||||||
let token_stream = Gram.filter (Gram.lex_string (Loc.mk UTop.input_name) str) in
|
let len = String.length str in
|
||||||
let token_stream =
|
let char_stream =
|
||||||
Stream.from
|
Stream.from
|
||||||
(fun _ ->
|
(fun i ->
|
||||||
match Stream.next token_stream with
|
if i >= len then begin
|
||||||
| (EOI, _) as x ->
|
eof := true;
|
||||||
eof := true;
|
None
|
||||||
Some x
|
end else
|
||||||
| x ->
|
Some str.[i])
|
||||||
Some x)
|
|
||||||
in
|
in
|
||||||
|
let token_stream = Gram.filter (Gram.lex (Loc.mk UTop.input_name) char_stream) in
|
||||||
match Gram.parse_tokens_after_filter Syntax.top_phrase token_stream with
|
match Gram.parse_tokens_after_filter Syntax.top_phrase token_stream with
|
||||||
| Some ast ->
|
| Some ast ->
|
||||||
let ast = AstFilters.fold_topphrase_filters (fun t filter -> filter t) ast in
|
let ast = AstFilters.fold_topphrase_filters (fun t filter -> filter t) ast in
|
||||||
|
|
Loading…
Reference in New Issue