You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I would like to enable error handling and incremental API of menhir in my project by sedlex+menhir; I'm trying to adopt attempt2 and fail of this sample to my code. Here is the attempt2 of the sample:
letattempt2filenametext=(* Allocate and initialize a lexing buffer. *)let lexbuf =L.init filename (Lexing.from_string text) in(* Wrap the lexer and lexbuf together into a supplier, that is, a function of type [unit -> token * position * position]. *)let supplier =I.lexer_lexbuf_to_supplier Lexer.token lexbuf in(* Equip the supplier with a two-place buffer that records the positions of the last two tokens. This is useful when a syntax error occurs, as these are the token just before and just after the error. *)let buffer, supplier =E.wrap_supplier supplier in(* Fetch the parser's initial checkpoint. *)let checkpoint =UnitActionsParser.Incremental.main lexbuf.lex_curr_p in(* Run the parser. *)(* We do not handle [Lexer.Error] because we know that we will not encounter a lexical error during this second parsing run. *)I.loop_handle succeed (fail text buffer) supplier checkpoint
260 | let supplier = UnitActionsParser_e.MenhirInterpreter.lexer_lexbuf_to_supplier Sedlexer_e.token_ao lexbuf in
^^^^^^^^^^^^^^^^^^^
Error: This expression has type Sedlexing.lexbuf -> Parser_e.token
but an expression was expected of type
Lexing.lexbuf -> UnitActionsParser_e.MenhirInterpreter.token
Type Sedlexing.lexbuf is not compatible with type Lexing.lexbuf
make: *** [expression/e.cmo] Error 2
let lexer_lexbuf_to_supplier
(lexer : Lexing.lexbuf -> token)
(lexbuf : Lexing.lexbuf)
: supplier =
fun () ->
let token = lexer lexbuf in
let startp = lexbuf.Lexing.lex_start_p
and endp = lexbuf.Lexing.lex_curr_p in
token, startp, endp
So I made a lexer_lexbuf_to_supplier_sedlex:
let lexer_lexbuf_to_supplier_sedlex
(lexer: Sedlexing.lexbuf -> token)
(lexbuf : Sedlexing.lexbuf)
: supplier =
fun () ->
let token = lexer lexbuf in
let startp, endp = Sedlexing.lexing_positions lexbuf in
token, startp, endp
I would like to enable error handling and incremental API of menhir in my project by sedlex+menhir; I'm trying to adopt
attempt2
andfail
of this sample to my code. Here is theattempt2
of the sample:In my code, I tried:
However, the compilation gave me an error:
Could anyone help?
(* link in StackOvereflow *)
The text was updated successfully, but these errors were encountered: