mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-11 05:49:31 -06:00
69 lines
1.3 KiB
CFEngine3
69 lines
1.3 KiB
CFEngine3
Gr. Grammar ::= [Def] ;
|
|
|
|
DPar. Def ::= "param" Ident "=" [Constr] ;
|
|
DOper. Def ::= "oper" Ident ":" Type "=" Exp ;
|
|
DOpty. Def ::= "oper" Ident "=" Type ;
|
|
DLin. Def ::= "lin" Ident ":" Type "=" Exp ;
|
|
|
|
terminator Def ";" ;
|
|
|
|
Con. Constr ::= Ident [Type] ;
|
|
|
|
separator nonempty Constr "|" ;
|
|
|
|
TBas. Type1 ::= Ident ;
|
|
TVal. Type1 ::= "Ints" Integer ;
|
|
TRec. Type1 ::= "{" [Typing] "}" ;
|
|
TFun. Type ::= Type1 "->" Type ;
|
|
|
|
coercions Type 1 ;
|
|
|
|
terminator Type "" ;
|
|
|
|
FTyp. Typing ::= Label ":" Type ;
|
|
|
|
separator Typing ";" ;
|
|
|
|
Lab. Label ::= Ident "#" Integer ;
|
|
|
|
EVar. Exp2 ::= "$" Ident ;
|
|
EOpr. Exp2 ::= "&" Ident ;
|
|
ECon. Exp2 ::= Ident ;
|
|
EVal. Exp2 ::= Integer ;
|
|
EStr. Exp2 ::= String ;
|
|
ECst. Exp2 ::= "(" Ident "@" [Exp] ")" ;
|
|
ERec. Exp2 ::= "{" [Assign] "}" ;
|
|
EApp. Exp1 ::= Exp1 Exp2 ;
|
|
ESel. Exp1 ::= Exp1 "!" Exp2 ;
|
|
EPro. Exp1 ::= Exp1 "." Label ;
|
|
ETab. Exp1 ::= "table" Type "{" [Case] "}" ;
|
|
ECat. Exp ::= Exp "++" Exp1 ;
|
|
EAbs. Exp ::= "\\" Ident "->" Exp ;
|
|
|
|
coercions Exp 2 ;
|
|
|
|
separator Exp "," ;
|
|
|
|
FExp. Assign ::= Label "=" Exp ;
|
|
|
|
separator Assign ";" ;
|
|
|
|
Cas. Case ::= Patt "=>" Exp ;
|
|
|
|
separator Case ";" ;
|
|
|
|
PVal. Patt ::= Integer ;
|
|
PVar. Patt ::= "$" Ident ;
|
|
PRec. Patt ::= "{" [AssPatt] "}" ;
|
|
PCon. Patt ::= "(" Ident [Patt] ")" ;
|
|
|
|
terminator Patt "" ;
|
|
|
|
FPatt. AssPatt ::= Label "=" Patt ;
|
|
|
|
separator AssPatt ";" ;
|
|
|
|
comment "--" ;
|
|
comment "{-" "-}" ;
|
|
|