From 1aaf8ae4d48bb9404b8faef2ba55024a6d6bac23 Mon Sep 17 00:00:00 2001 From: Chimrod <> Date: Fri, 22 Sep 2023 18:19:02 +0200 Subject: Made the syntax analyzer generic --- lib/analyzer.ml | 2 +- lib/analyzer.mli | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 lib/analyzer.mli diff --git a/lib/analyzer.ml b/lib/analyzer.ml index 1a9b17b..f0f8ca5 100644 --- a/lib/analyzer.ml +++ b/lib/analyzer.ml @@ -26,7 +26,7 @@ let parse : Lexing.lexbuf -> ('a, error) Result.t = fun (type a) (module S : Qsp_syntax.S.Analyzer with type Location.repr = a) -> - let module Parser = Parser.Make (Qsp_syntax.Tree) in + let module Parser = Parser.Make (S) in let module IncrementalParser = Interpreter.Interpreter (Parser.MenhirInterpreter) in fun lexbuf -> diff --git a/lib/analyzer.mli b/lib/analyzer.mli new file mode 100644 index 0000000..3032375 --- /dev/null +++ b/lib/analyzer.mli @@ -0,0 +1,12 @@ +type error = { + message : string; + start_pos : Lexing.position; + end_pos : Lexing.position; +} + +val format_error : Format.formatter -> error -> unit + +val parse : + (module Qsp_syntax.S.Analyzer with type Location.repr = 'a) -> + Lexing.lexbuf -> + ('a, error) Result.t -- cgit v1.2.3