31 lines
643 B
CFEngine3
31 lines
643 B
CFEngine3
|
|
Program. Program ::= [Bind];
|
|
|
|
Bind. Bind ::= Ident [Ident] "=" Exp;
|
|
|
|
EAnn. Exp5 ::= Exp5 ":" Type ;
|
|
EId. Exp4 ::= Ident;
|
|
EConst. Exp4 ::= Const;
|
|
EApp. Exp3 ::= Exp3 Exp4;
|
|
EAdd. Exp1 ::= Exp1 "+" Exp2;
|
|
ELet. Exp ::= "let" Ident "=" Exp "in" Exp;
|
|
EAbs. Exp ::= "\\" Ident "." Exp;
|
|
|
|
CInt. Const ::= Integer ;
|
|
CStr. Const ::= String ;
|
|
|
|
TMono. Type1 ::= UIdent ;
|
|
TPoly. Type1 ::= LIdent ;
|
|
TArrow. Type ::= Type "->" Type1 ;
|
|
|
|
token UIdent (upper (letter | digit | '_')*) ;
|
|
token LIdent (lower (letter | digit | '_')*) ;
|
|
|
|
separator Bind ";";
|
|
separator Ident " ";
|
|
|
|
coercions Type 1 ;
|
|
coercions Exp 5;
|
|
|
|
comment "--";
|
|
comment "{-" "-}";
|