churf/Grammar.cf
2023-02-13 19:03:06 +01:00

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 "{-" "-}";