-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Hiroshi Sakurai edited this page Jun 24, 2016
·
2 revisions
typ ::= VAR
| typ ARROW typ
| typ LPAREN typ2 RPAREN
| typ LBRACK typs RBRACK
| LPAREN typs RPAREN
| LPAREN RPAREN
typ2 ::= typ
| typ typ2
typs ::= typ
| typ COMMA typs
exp1 ::= exp
| exp1 SEMI
exps ::= exp1
| exp1 exps %prec LIST
defrec ::= VAR COLON typ
| VAR COLON typ SEMI
defrec1 ::= SEMI defrec1
| defrec1 SEMI
| defrec
defrecs ::= /* empty */
| defrec1 defrecs %prec LIST
record ::= VAR ASSIGN exp1
| VAR
records ::= record
| record records %prec LIST
variant ::= VAR typ
| VAR
variant1 ::= variant
| variant SEMI
variants ::= variant1
| variant1 OR variants
exp ::= INT
| FLOAT
| VAR
| STR
| CHR
| LPAREN RPAREN
| LPAREN exp1 RPAREN
| LBRACE fns RBRACE
| LBRACE exps RBRACE
| LBRACE COLON records RBRACE
| LBRACK RBRACK
| LBRACK exps RBRACK
| LBRACK OR RBRACK
| LBRACK OR exps RBRACK
| SEMI exp
| SUB exp
| FSUB exp
| DEC exp
| INC exp
| AMP exp
| MUL exp %prec NEW
| NOT exp
| NEW exp
| JSNEW exp %prec NEW
| exp XOR exp
| exp LOR exp
| exp LAMP exp
| exp OR exp
| exp HAT exp
| exp AMP exp
| exp EEQ exp
| exp ENE exp
| exp EQ exp
| exp NE exp
| exp LT exp
| exp GT exp
| exp LE exp
| exp GE exp
| exp ADD exp
| exp SUB exp
| exp MUL exp
| exp DIV exp
| exp MOD exp
| exp FADD exp
| exp FSUB exp
| exp FMUL exp
| exp FDIV exp
| exp FPOW exp
| exp SHL exp
| exp SHR exp
| exp AS exp
| exp DOT exp
| exp COMMA exp
| exp ADDLIST exp
| exp CATLIST exp
| exp MEMBER exp
| exp REFREF exp
| exp ARROWASSIGN exp
| exp FARROW exp
| exp RIMPLEMENT exp
| exp COLONASSIGN exp
| exp MATCH LBRACE fns RBRACE
| IF LPAREN exp RPAREN exp ELSE exp
| IF LPAREN exp RPAREN exp %prec LIST
| FOR LPAREN VAR ARROWASSIGN exp TO exp RPAREN exp
| FOR LPAREN VAR ARROWASSIGN exp DOWNTO exp RPAREN exp
| FOR LPAREN VAR ARROWASSIGN exp UNTIL exp RPAREN exp
| WHILE LPAREN exp RPAREN exp
| exp LBRACE fns RBRACE %prec CALL
| exp LBRACE exps RBRACE %prec CALL
| exp LBRACK RBRACK %prec CALL
| exp LBRACK exps RBRACK %prec CALL
| exp LPAREN exps RPAREN %prec CALL
| exp LPAREN RPAREN %prec CALL
| DEF VAR ASSIGN exp
| exp ASSIGN exp
| DEF exp ASSIGN exp
| exp REFASSIGN exp
| exp COLON typ ASSIGN exp
| DEF exp COLON typ ASSIGN exp
| exp COLON typ
| ADD exp %prec REF
| XOR exp %prec REF
| REF exp
ptn ::= OR exps
| SEMI ptn
ptns ::= ptn
| ptn ptns
fn ::= ptns ARROW exps
| ptns WHEN exp ARROW exps
fn1 ::= fn
| SEMI fn1
| fn1 SEMI
fns ::= fn1
| fn1 fns
stmt ::= VAR MODULE LBRACE stmts RBRACE
| VAR MODULE ASSIGN exp
| VAR CLASS LBRACE stmts RBRACE
| VAR CLASS LPAREN defrecs RPAREN LBRACE stmts RBRACE
| exp
| OPEN
| VAR TYPE LBRACE defrecs RBRACE
| VAR TYPE OR variants
| VAR TYPE SEMI OR variants
| stmt1 AND stmt
stmt1 ::= stmt
| SEMI stmt1
| stmt1 SEMI
stmts ::= /* empty */
| stmt1 stmts
prog ::= stmts