X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2Feval.ml;h=43296cd0732d27fa226cc68143f2d09b40921b31;hb=8f89cdd08d9ee0a243cf84201bf42e5503759ee3;hp=c36b92fd2bedc004bd3b3cfba9d9ac38f4ed2c06;hpb=8abd42ec1af0d5daef1d026ec550b49b07de8340;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/eval.ml b/helm/ocaml/mathql_interpreter/eval.ml index c36b92fd2..43296cd07 100644 --- a/helm/ocaml/mathql_interpreter/eval.ml +++ b/helm/ocaml/mathql_interpreter/eval.ml @@ -27,7 +27,7 @@ * *) -open Mathql;; +open MathQL;; (* * conversione di un pattern @@ -37,28 +37,31 @@ let rec patterneval p = [] -> "" | head::tail -> let h = match head with - MQString (s) -> Str.global_replace (Str.regexp "\.") "\\\\\." s - | MQSlash -> "/" - | MQAnyChr -> "[^/]?" - | MQAst -> "[^/]*" - | MQAstAst -> ".*" + MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s + | MQBD -> "/" + | MQBQ -> "[^/#]?" + | MQBS -> "[^/#]*" + | MQBSS -> "[^#]*" in h ^ (patterneval tail) ;; +let rec fieval fi = + match fi with + [] -> "" + | MQFC i :: tail -> "/" ^ (string_of_int i) ^ (fieval tail) + | MQFS :: tail -> "[^/]*" ^ (fieval tail) + | MQFSS :: tail -> ".*" ^ (fieval tail) +;; + (* * conversione di un fragment identifier *) let fieval fi = - match fst fi with - None -> "" - | Some i -> - let s = "#xpointer\\\\(1/" ^ string_of_int (i) in - match snd fi with - None -> - s ^ "\\\\)" - | Some j -> - s ^ "/" ^ string_of_int j ^ "\\\\)" + if fi = [] then + "" + else + "#xpointer\\\\(1" ^ fieval fi ^ "\\\\)" ;; (* @@ -77,7 +80,9 @@ let exteval ext = * valuta il preambolo *) let preeval p = - p + match p with + Some s -> s + | None -> "[^/]*" ;; (* @@ -87,7 +92,7 @@ let preeval p = * SQL standard LIKE perche' MathQL prevede esperssioni con "*" * e con "**". *) -let pattern_match preamble pattern fragid = - " ~ '" ^ (preeval preamble) ^ ":/" ^ (patterneval pattern) ^ (fieval fragid) ^ "'" +let pattern_match (preamble, pattern, fragid) = + " ~ '^" ^ (preeval preamble) ^ ":/" ^ (patterneval pattern) ^ (fieval fragid) ^ "$'" ;;