Mercurial > urweb
comparison src/monoize.sml @ 1196:134da5110bf7
Relational operators portability
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 01 Apr 2010 17:21:16 -0400 |
parents | aff5e661b5f8 |
children | c316ca3c9ec6 |
comparison
equal
deleted
inserted
replaced
1195:aff5e661b5f8 | 1196:134da5110bf7 |
---|---|
2401 _) => | 2401 _) => |
2402 let | 2402 let |
2403 val s = (L'.TFfi ("Basis", "string"), loc) | 2403 val s = (L'.TFfi ("Basis", "string"), loc) |
2404 fun sc s = (L'.EPrim (Prim.String s), loc) | 2404 fun sc s = (L'.EPrim (Prim.String s), loc) |
2405 in | 2405 in |
2406 ((L'.EAbs ("c", s, (L'.TFun (s, (L'.TFun (s, s), loc)), loc), | 2406 (if #nestedRelops (Settings.currentDbms ()) then |
2407 (L'.EAbs ("e1", s, (L'.TFun (s, s), loc), | 2407 (L'.EAbs ("c", s, (L'.TFun (s, (L'.TFun (s, s), loc)), loc), |
2408 (L'.EAbs ("e2", s, s, | 2408 (L'.EAbs ("e1", s, (L'.TFun (s, s), loc), |
2409 strcat [sc "((", | 2409 (L'.EAbs ("e2", s, s, |
2410 (L'.ERel 1, loc), | 2410 strcat [sc "((", |
2411 sc ") ", | 2411 (L'.ERel 1, loc), |
2412 (L'.ERel 2, loc), | 2412 sc ") ", |
2413 sc " (", | 2413 (L'.ERel 2, loc), |
2414 (L'.ERel 0, loc), | 2414 sc " (", |
2415 sc "))"]), loc)), loc)), loc), | 2415 (L'.ERel 0, loc), |
2416 sc "))"]), loc)), loc)), loc) | |
2417 else | |
2418 (L'.EAbs ("c", s, (L'.TFun (s, (L'.TFun (s, s), loc)), loc), | |
2419 (L'.EAbs ("e1", s, (L'.TFun (s, s), loc), | |
2420 (L'.EAbs ("e2", s, s, | |
2421 strcat [(L'.ERel 1, loc), | |
2422 sc " ", | |
2423 (L'.ERel 2, loc), | |
2424 sc " ", | |
2425 (L'.ERel 0, loc)]), loc)), loc)), loc), | |
2416 fm) | 2426 fm) |
2417 end | 2427 end |
2418 | L.ECApp ( | 2428 | L.ECApp ( |
2419 (L.ECApp ( | 2429 (L.ECApp ( |
2420 (L.ECApp ( | 2430 (L.ECApp ( |
2431 ((L'.EAbs ("x", s, s, (L'.ERel 0, loc)), loc), | 2441 ((L'.EAbs ("x", s, s, (L'.ERel 0, loc)), loc), |
2432 fm) | 2442 fm) |
2433 end | 2443 end |
2434 | 2444 |
2435 | L.EFfi ("Basis", "sql_union") => ((L'.EPrim (Prim.String "UNION"), loc), fm) | 2445 | L.EFfi ("Basis", "sql_union") => ((L'.EPrim (Prim.String "UNION"), loc), fm) |
2436 | L.EFfi ("Basis", "sql_intersect") => ((L'.EPrim (Prim.String "INTERSECT"), loc), fm) | 2446 | L.EFfi ("Basis", "sql_intersect") => |
2437 | L.EFfi ("Basis", "sql_except") => ((L'.EPrim (Prim.String "EXCEPT"), loc), fm) | 2447 (if #onlyUnion (Settings.currentDbms ()) then |
2448 ErrorMsg.errorAt loc "The DBMS you've selected doesn't support INTERSECT." | |
2449 else | |
2450 (); | |
2451 ((L'.EPrim (Prim.String "INTERSECT"), loc), fm)) | |
2452 | L.EFfi ("Basis", "sql_except") => | |
2453 (if #onlyUnion (Settings.currentDbms ()) then | |
2454 ErrorMsg.errorAt loc "The DBMS you've selected doesn't support EXCEPT." | |
2455 else | |
2456 (); | |
2457 ((L'.EPrim (Prim.String "EXCEPT"), loc), fm)) | |
2438 | 2458 |
2439 | L.ECApp ( | 2459 | L.ECApp ( |
2440 (L.ECApp ( | 2460 (L.ECApp ( |
2441 (L.ECApp ( | 2461 (L.ECApp ( |
2442 (L.EFfi ("Basis", "sql_count"), _), | 2462 (L.EFfi ("Basis", "sql_count"), _), |