X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2Feval.ml;h=43296cd0732d27fa226cc68143f2d09b40921b31;hb=c5e1e4d1726bd78464a7d458df3aca047749567b;hp=4bc9a88db942c10b00f28f2bdf7737fa5efa4565;hpb=9b23e4b3a2862c73d0b61c96cd68562dac3bf7f6;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/eval.ml b/helm/ocaml/mathql_interpreter/eval.ml index 4bc9a88db..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) ^ "$'" ;;