= faexp+ # Apply, shift ID, shift LAMBDA, shift LAMBDA_MATCH,
shift LET, shift INTEGER, shift BEGIN_STRING,
shift IF, shift MATCH, shift DO,
= faexp+ # Apply, shift ID, shift LAMBDA, shift LAMBDA_MATCH,
shift LET, shift INTEGER, shift BEGIN_STRING,
shift IF, shift MATCH, shift DO,
- shift MDO, shift ENFORCE, shift BLANK,
+ shift MDO, shift EDO, shift ENFORCE, shift BLANK,
shift FLOAT, shift LPAREN, shift LBRACKET,
shift ESCAPED_SYMBOL, shift CHAR, shift LBRACE,
shift WHEN, shift ATTACHED_HASH,
shift FLOAT, shift LPAREN, shift LBRACKET,
shift ESCAPED_SYMBOL, shift CHAR, shift LBRACE,
shift WHEN, shift ATTACHED_HASH,
| IF exp THEN exp (ELSE exp)? # If, shift HASTYPE, shift ELSE
| MATCH exp WITH
LBRACE case (SEMICOLON case)* RBRACE # Match
| IF exp THEN exp (ELSE exp)? # If, shift HASTYPE, shift ELSE
| MATCH exp WITH
LBRACE case (SEMICOLON case)* RBRACE # Match
| LPAREN (type (COMMA type)*)? RPAREN # TupleType
| LBRACKET type RBRACKET # ListType
| LBRACKET RBRACKET # ListTypeConstructor
| LPAREN (type (COMMA type)*)? RPAREN # TupleType
| LBRACKET type RBRACKET # ListType
| LBRACKET RBRACKET # ListTypeConstructor