]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/mQueryTParser.mly
patched and improved
[helm.git] / helm / ocaml / mathql_interpreter / mQueryTParser.mly
index 1025cf3167b1e578e4eb7b897de6b0b293fe9d2f..da70610655a131396ce98a10405b8cb8308d8bfd 100644 (file)
    let t (x, y, z) = z
 %}
    %token    <string> ID STR
-   %token    LB RB SL IS LC RC CM SC LP RP AT PC FS DQ EOF 
+   %token    LB RB SL IS LC RC CM SC LP RP AT DL FS DQ EOF 
    %token    ADD ALIGN AND AS ATTR BE BUT COUNT DIFF DISTR ELSE EMPTY EQ EX  
    %token    FALSE FOR FROM IF IN INF INTER INV ISF IST KEEP LE LET LOG LT   
-   %token    MAIN MATCH MEET NOT OF OR PAT PROJ PROP SELECT SOURCE STAT SUB 
-   %token    SUP SUPER THEN TRUE UNION WHERE XOR
-   %nonassoc IN SUP INF ELSE LOG STAT KEEP 
+   %token    MAIN MATCH MEET NOT OF OR PAT PROJ PROP SELECT SEQ SOURCE STAT 
+   %token    SUB SUP SUPER THEN TRUE UNION WHERE XOR
+   %nonassoc SOURCE
+   %right    IN SEQ
+   %nonassoc SUP INF ELSE LOG STAT KEEP 
    %left     DIFF   
    %left     UNION
    %left     INTER
       | STR qstr { $1 ^ $2 }
    ;
    svar:
-      | PC ID { $2 }
+      | DL ID { $2 }
    ;
    avar:
       | AT ID { $2 }
       | ALIGN set_exp IN set_exp    
          { make_fun ["align"] [] [$2; $4] }
       | EMPTY
-         { make_fun ["false"] [] [] }
+         { make_fun ["empty"] [] [] }
       | svar
          { M.SVar $1 }
       | avar
          { make_fun $1 [] $3 }    
       | path LC RC
          { make_fun $1 [] [] }
+      | set_exp SEQ set_exp
+         { make_fun ["seq"] [] [$1; $3] }
       | set_exp DIFF set_exp
          { make_fun ["diff"] [] [$1; $3] }
       | set_exp UNION set_exp