annotate src/sql.sig @ 2215:639e62ca2530

Mostly finish effectfulness analysis.
author Ziv Scully <ziv@mit.edu>
date Fri, 31 Oct 2014 09:25:03 -0400
parents 365727ff68f4
children 70ec9bb337be
rev   line source
ziv@2203 1 signature SQL = sig
ziv@2203 2
ziv@2203 3 val debug : bool ref
ziv@2203 4
ziv@2213 5 val sqlcacheMode : bool ref
ziv@2213 6
ziv@2215 7 datatype chunk =
ziv@2215 8 String of string
ziv@2215 9 | Exp of Mono.exp
ziv@2215 10
ziv@2215 11 val chunkify : Mono.exp -> chunk list
ziv@2215 12
ziv@2204 13 type lvar = int
ziv@2203 14
ziv@2203 15 datatype func =
ziv@2203 16 DtCon0 of string
ziv@2203 17 | DtCon1 of string
ziv@2203 18 | UnCon of string
ziv@2203 19 | Other of string
ziv@2203 20
ziv@2203 21 datatype exp =
ziv@2203 22 Const of Prim.t
ziv@2203 23 | Var of int
ziv@2203 24 | Lvar of lvar
ziv@2203 25 | Func of func * exp list
ziv@2203 26 | Recd of (string * exp) list
ziv@2203 27 | Proj of exp * string
ziv@2203 28
ziv@2203 29 datatype reln =
ziv@2203 30 Known
ziv@2203 31 | Sql of string
ziv@2203 32 | PCon0 of string
ziv@2203 33 | PCon1 of string
ziv@2203 34 | Eq
ziv@2203 35 | Ne
ziv@2203 36 | Lt
ziv@2203 37 | Le
ziv@2203 38 | Gt
ziv@2203 39 | Ge
ziv@2203 40
ziv@2203 41 datatype prop =
ziv@2203 42 True
ziv@2203 43 | False
ziv@2203 44 | Unknown
ziv@2203 45 | And of prop * prop
ziv@2203 46 | Or of prop * prop
ziv@2203 47 | Reln of reln * exp list
ziv@2203 48 | Cond of exp * prop
ziv@2203 49
ziv@2212 50 type 'a parser
ziv@2204 51
ziv@2204 52 val parse : 'a parser -> Mono.exp -> 'a option
ziv@2203 53
ziv@2203 54 datatype Rel =
ziv@2203 55 Exps of exp * exp -> prop
ziv@2203 56 | Props of prop * prop -> prop
ziv@2203 57
ziv@2203 58 datatype sqexp =
ziv@2203 59 SqConst of Prim.t
ziv@2203 60 | SqTrue
ziv@2203 61 | SqFalse
ziv@2203 62 | SqNot of sqexp
ziv@2203 63 | Field of string * string
ziv@2203 64 | Computed of string
ziv@2203 65 | Binop of Rel * sqexp * sqexp
ziv@2203 66 | SqKnown of sqexp
ziv@2203 67 | Inj of Mono.exp
ziv@2203 68 | SqFunc of string * sqexp
ziv@2203 69 | Unmodeled
ziv@2203 70 | Null
ziv@2203 71
ziv@2204 72 datatype ('a,'b) sum = inl of 'a | inr of 'b
ziv@2204 73
ziv@2203 74 datatype sitem =
ziv@2203 75 SqField of string * string
ziv@2203 76 | SqExp of sqexp * string
ziv@2203 77
ziv@2204 78 type query1 = {Select : sitem list,
ziv@2204 79 From : (string * string) list,
ziv@2204 80 Where : sqexp option}
ziv@2203 81
ziv@2203 82 datatype query =
ziv@2203 83 Query1 of query1
ziv@2203 84 | Union of query * query
ziv@2203 85
ziv@2204 86 val query : query parser
ziv@2204 87
ziv@2203 88 datatype dml =
ziv@2203 89 Insert of string * (string * sqexp) list
ziv@2203 90 | Delete of string * sqexp
ziv@2203 91 | Update of string * (string * sqexp) list * sqexp
ziv@2203 92
ziv@2204 93 val dml : dml parser
ziv@2204 94
ziv@2203 95 end