comparison src/lacweb.grm @ 196:890a61991263

Lists all the way through
author Adam Chlipala <adamc@hcoop.net>
date Sat, 09 Aug 2008 16:48:32 -0400
parents 85b5f663bb86
children 5dbba661deab
comparison
equal deleted inserted replaced
195:85b5f663bb86 196:890a61991263
306 | path (CVar path, s (pathleft, pathright)) 306 | path (CVar path, s (pathleft, pathright))
307 | UNDER (CWild (KWild, s (UNDERleft, UNDERright)), s (UNDERleft, UNDERright)) 307 | UNDER (CWild (KWild, s (UNDERleft, UNDERright)), s (UNDERleft, UNDERright))
308 | FOLD (CFold, s (FOLDleft, FOLDright)) 308 | FOLD (CFold, s (FOLDleft, FOLDright))
309 | UNIT (CUnit, s (UNITleft, UNITright)) 309 | UNIT (CUnit, s (UNITleft, UNITright))
310 310
311 ctuple : cterm STAR cterm ([cterm1, cterm2]) 311 ctuple : capps STAR capps ([capps1, capps2])
312 | cterm STAR ctuple (cterm :: ctuple) 312 | capps STAR ctuple (capps :: ctuple)
313 313
314 rcon : ([]) 314 rcon : ([])
315 | ident EQ cexp ([(ident, cexp)]) 315 | ident EQ cexp ([(ident, cexp)])
316 | ident EQ cexp COMMA rcon ((ident, cexp) :: rcon) 316 | ident EQ cexp COMMA rcon ((ident, cexp) :: rcon)
317 317
339 val loc = s (FNleft, eexpright) 339 val loc = s (FNleft, eexpright)
340 in 340 in
341 (EAbs ("_", SOME (TRecord (CRecord [], loc), loc), eexp), loc) 341 (EAbs ("_", SOME (TRecord (CRecord [], loc), loc), eexp), loc)
342 end) 342 end)
343 343
344 | LPAREN etuple RPAREN COLON cexp(case etuple of 344 | eexp COLON cexp (EAnnot (eexp, cexp), s (eexpleft, cexpright))
345 [eexp] => (EAnnot (eexp, cexp), s (LPARENleft, cexpright))
346 | _ => raise Fail "Multiple arguments to expression type annotation")
347 | eexp MINUSMINUS cexp (ECut (eexp, cexp), s (eexpleft, cexpright)) 345 | eexp MINUSMINUS cexp (ECut (eexp, cexp), s (eexpleft, cexpright))
348 | CASE eexp OF barOpt branch branchs (ECase (eexp, branch :: branchs), s (CASEleft, branchsright)) 346 | CASE eexp OF barOpt branch branchs (ECase (eexp, branch :: branchs), s (CASEleft, branchsright))
349 | IF eexp THEN eexp ELSE eexp (let 347 | IF eexp THEN eexp ELSE eexp (let
350 val loc = s (IFleft, eexp3right) 348 val loc = s (IFleft, eexp3right)
351 in 349 in