aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChimrod <>2023-09-22 18:19:02 +0200
committerChimrod <>2023-09-22 18:19:02 +0200
commit1aaf8ae4d48bb9404b8faef2ba55024a6d6bac23 (patch)
tree129954eb88cec2ac8264d01f07a61c28b092f131 /lib
parent91d8d283760e5da4c777fad5ffbd29b9bf3ca71d (diff)
Made the syntax analyzer generic
Diffstat (limited to 'lib')
-rw-r--r--lib/analyzer.ml2
-rw-r--r--lib/analyzer.mli12
2 files changed, 13 insertions, 1 deletions
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