From 53c02501935b3cb2db78e79deb4d38c997505a95 Mon Sep 17 00:00:00 2001 From: Chimrod <> Date: Mon, 2 Dec 2024 09:05:18 +0100 Subject: Moved the checks in a dedicated library --- lib/checks/default.ml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/checks/default.ml (limited to 'lib/checks/default.ml') diff --git a/lib/checks/default.ml b/lib/checks/default.ml new file mode 100644 index 0000000..a2b53f6 --- /dev/null +++ b/lib/checks/default.ml @@ -0,0 +1,45 @@ +(** Default implementation which does nothing. + +This module is expected to be used when you only need to implement an analyze +over a limited part of the whole syntax. *) + +module S = Qsp_syntax.S +module T = Qsp_syntax.T +module Report = Qsp_syntax.Report + +module type T = sig + type t + + val default : t +end + +module Expression (T' : T) = struct + (** + Describe a variable, using the name in capitalized text, and an optionnal + index. + + If missing, the index should be considered as [0]. + *) + + type t' = T'.t + + let ident : (S.pos, T'.t) S.variable -> T'.t = fun _ -> T'.default + + (* + Basic values, text, number… + *) + + let integer : S.pos -> string -> T'.t = fun _ _ -> T'.default + let literal : S.pos -> T'.t T.literal list -> T'.t = fun _ _ -> T'.default + + (** Call a function. The functions list is hardcoded in lib/lexer.mll *) + let function_ : S.pos -> T.function_ -> T'.t list -> T'.t = + fun _ _ _ -> T'.default + + (** Unary operator like [-123] or [+'Text']*) + let uoperator : S.pos -> T.uoperator -> T'.t -> T'.t = fun _ _ _ -> T'.default + + (** Binary operator, for a comparaison, or an operation *) + let boperator : S.pos -> T.boperator -> T'.t -> T'.t -> T'.t = + fun _ _ _ _ -> T'.default +end -- cgit v1.2.3