X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2FmQueryIO.ml;h=a7d30dd0910ade259a1a2f549c1a562384b63738;hb=9cbce40d56958c466459b028cf250441ec29c9fe;hp=d59b2f2b74b381eeb0485eb2f804c1736412e936;hpb=786284e9dfb25a31aad2161d59cdc5f36657e94a;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/mQueryIO.ml b/helm/ocaml/mathql_interpreter/mQueryIO.ml index d59b2f2b7..a7d30dd09 100644 --- a/helm/ocaml/mathql_interpreter/mQueryIO.ml +++ b/helm/ocaml/mathql_interpreter/mQueryIO.ml @@ -36,7 +36,7 @@ let txt_str out s = out ("\"" ^ s ^ "\"") let txt_path out p = out "/"; P.flat_list out (txt_str out) "/" p -let text_of_result out x sep = +let text_of_result out sep x = let txt_attr = function | (p, []) -> txt_path out p | (p, l) -> txt_path out p; out " = "; @@ -51,8 +51,8 @@ let text_of_result out x sep = let txt_set l = P.flat_list out txt_res ("; " ^ sep) l; out sep in txt_set x -let text_of_query out x sep = - let txt_svar sv = out ("%" ^ sv) in +let text_of_query out sep x = + let txt_svar sv = out ("$" ^ sv) in let txt_avar av = out ("@" ^ av) in let txt_inv i = if i then out "inverse " in let txt_ref = function @@ -96,30 +96,37 @@ let text_of_query out x sep = | M.From av -> txt_avar av and txt_set = function | M.Fun p pl xl -> - L.txt_out out (txt_path out) txt_set p pl xl - | M.Const [s, []] -> txt_str out s - | M.Const r -> text_of_result out r " " - | M.Dot av p -> txt_avar av; out "."; txt_path out p - | M.Ex b x -> out "ex "; txt_set x -(* | M.Ex b x -> out "ex ["; P.flat_list out txt_avar "," b; - out "] "; txt_set x -*) | M.SVar sv -> txt_svar sv - | M.AVar av -> txt_avar av + let o = {L.out = out; L.path = txt_path out; L.query = txt_set; + L.result = text_of_result out sep} + in + L.txt_out o p pl xl + | M.Const [s, []] -> txt_str out s + | M.Const r -> text_of_result out " " r + | M.Dot av p -> txt_avar av; out "."; txt_path out p + | M.Ex b x -> out "ex "; txt_set x +(* | M.Ex b x -> out "ex ["; P.flat_list out txt_avar "," b; + out "] "; txt_set x +*) | M.SVar sv -> txt_svar sv + | M.AVar av -> txt_avar av | M.Property q0 q1 q2 mc ct cfl xl b x -> out "property "; txt_qualif q0 q1 q2; main mc; txt_istrue ct; P.flat_list out txt_isfalse "" cfl; txt_exp_list xl; out " of "; pattern b; txt_set x - | M.Let sv x y -> out "let "; txt_svar sv; out " be "; - txt_set x; out " in "; txt_set y - | M.Select av x y -> out "select "; txt_avar av; out " from "; - txt_set x; out " where "; txt_set y - | M.For k av x y -> out "for "; txt_avar av; out " in "; - txt_set x; txt_gen k; txt_set y - | M.Add d g x -> out "add "; txt_distr d; txt_grp g; - out " in "; txt_set x + | M.Let sv x y -> out "let "; txt_svar sv; out " = "; + txt_set x; out " in "; txt_set y + | M.Select av x y -> out "select "; txt_avar av; out " from "; + txt_set x; out " where "; txt_set y + | M.For k av x y -> out "for "; txt_avar av; out " in "; + txt_set x; txt_gen k; txt_set y + | M.Add d g x -> out "add "; txt_distr d; txt_grp g; + out " in "; txt_set x in txt_set x; out sep +let text_out_spec out sep = + {L.out = out; L.path = txt_path out; L.query = text_of_query out sep; + L.result = text_of_result out sep} + let query_of_text lexbuf = MQueryTParser.query MQueryTLexer.query_token lexbuf