X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Focaml%2Fmathql_interpreter%2Feval.ml;h=43296cd0732d27fa226cc68143f2d09b40921b31;hb=6cd9c31edf69f619789a9802e840fbb61f4b6b40;hp=81be805201317557c330dc08d116e79411a7f6d6;hpb=1cfcea66d7394a785ec439cd6b03497b276918c4;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/eval.ml b/helm/ocaml/mathql_interpreter/eval.ml index 81be80520..43296cd07 100644 --- a/helm/ocaml/mathql_interpreter/eval.ml +++ b/helm/ocaml/mathql_interpreter/eval.ml @@ -37,7 +37,7 @@ let rec patterneval p = [] -> "" | head::tail -> let h = match head with - MQBC (s) -> Str.global_replace (Str.regexp "\.") "\\\\\." s + MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s | MQBD -> "/" | MQBQ -> "[^/#]?" | MQBS -> "[^/#]*" @@ -46,18 +46,22 @@ let rec patterneval p = 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 fi with - [] -> "" - | MQFC i :: tail -> - let s = "#xpointer\\\\(1/" ^ string_of_int (i) in - match tail with - [] -> s ^ "\\\\)" - | MQFC j :: tail2 -> - s ^ "/" ^ string_of_int j ^ "\\\\)" + if fi = [] then + "" + else + "#xpointer\\\\(1" ^ fieval fi ^ "\\\\)" ;; (* @@ -77,7 +81,8 @@ let exteval ext = *) let preeval p = match p with - Some s -> s + Some s -> s + | None -> "[^/]*" ;; (* @@ -88,6 +93,6 @@ let preeval p = * e con "**". *) let pattern_match (preamble, pattern, fragid) = - " ~ '" ^ (preeval preamble) ^ ":/" ^ (patterneval pattern) ^ (fieval fragid) ^ "'" + " ~ '^" ^ (preeval preamble) ^ ":/" ^ (patterneval pattern) ^ (fieval fragid) ^ "$'" ;;