aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/urweb.grm
diff options
context:
space:
mode:
authorGravatar Karn Kallio <kkallio@eka>2011-10-14 01:33:03 -0530
committerGravatar Karn Kallio <kkallio@eka>2011-10-14 01:33:03 -0530
commit8a167261f4de68926907c3cc97f8252957274bff (patch)
tree50d09ebb9dd61e4c628d7bf29b2e9a2b0de01641 /src/urweb.grm
parent8b909d991fe993c711d432cfc9928dc7ffbdbbac (diff)
IF THEN ELSE conditional for SQL.
Diffstat (limited to 'src/urweb.grm')
-rw-r--r--src/urweb.grm8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/urweb.grm b/src/urweb.grm
index db99d3b5..d39fbe55 100644
--- a/src/urweb.grm
+++ b/src/urweb.grm
@@ -249,6 +249,7 @@ fun tnamesOf (e, _) =
| NE | LT | LE | GT | GE
| CCONSTRAINT | UNIQUE | CHECK | PRIMARY | FOREIGN | KEY | ON | NO | ACTION | RESTRICT | CASCADE | REFERENCES
| JOIN | INNER | CROSS | OUTER | LEFT | RIGHT | FULL
+ | CIF | CTHEN | CELSE
%nonterm
file of decl list
@@ -1828,6 +1829,13 @@ sqlexp : TRUE (sql_inject (EVar (["Basis"], "True", In
sqlexp), loc)
end)
+ | CIF sqlexp CTHEN sqlexp CELSE sqlexp (let
+ val loc = s (CIFleft, sqlexp3right)
+ val e = (EVar (["Basis"], "sql_if_then_else", Infer), loc)
+ in
+ (EApp ((EApp ((EApp (e, sqlexp1), loc), sqlexp2), loc), sqlexp3), loc)
+ end)
+
| LBRACE LBRACK eexp RBRACK RBRACE (sql_inject (#1 eexp,
s (LBRACEleft, RBRACEright)))
| LPAREN sqlexp RPAREN (sqlexp)