diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:54:35 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:54:35 +0000 |
| commit | e9e80fc389365e24d4300d7d5390c7d833a96c50 (patch) | |
| tree | f0b58473adaa670bd8fc52ada419d8cad470ee03 /src/Transfer/Core/Core.cf | |
| parent | b96b36f43de3e2f8b58d5f539daa6f6d47f25870 (diff) | |
changed names of resource-1.3; added a note on homepage on release
Diffstat (limited to 'src/Transfer/Core/Core.cf')
| -rw-r--r-- | src/Transfer/Core/Core.cf | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/Transfer/Core/Core.cf b/src/Transfer/Core/Core.cf new file mode 100644 index 000000000..cd4c20569 --- /dev/null +++ b/src/Transfer/Core/Core.cf @@ -0,0 +1,93 @@ +-- This is a subset of the front-end language + +entrypoints Module, Exp ; + +comment "--" ; +comment "{-" "-}" ; + +Module. Module ::= [Decl] ; +separator Decl ";" ; + +DataDecl. Decl ::= "data" CIdent ":" Exp "where" "{" [ConsDecl] "}" ; +TypeDecl. Decl ::= CIdent ":" Exp ; +ValueDecl. Decl ::= CIdent "=" Exp ; + +ConsDecl. ConsDecl ::= CIdent ":" Exp ; +separator ConsDecl ";" ; + +separator Pattern ""; + +-- Constructor patterns. +PCons. Pattern ::= "(" CIdent [Pattern] ")" ; + +-- Variable patterns. Note that in the core language, +-- constructor patterns must have parantheses. +PVar. Pattern ::= PatternVariable ; +-- Record patterns. +PRec. Pattern ::= "rec" "{" [FieldPattern] "}"; +-- String literal patterns. +PStr. Pattern ::= String ; +-- Integer literal patterns. +PInt. Pattern ::= Integer ; + +FieldPattern. FieldPattern ::= CIdent "=" Pattern ; +separator FieldPattern ";" ; + +-- Variable patterns +PVVar. PatternVariable ::= CIdent ; +-- Wild card patterns +PVWild. PatternVariable ::= "_" ; + +-- Let expressions. +ELet. Exp ::= "let" "{" [LetDef] "}" "in" Exp ; +LetDef. LetDef ::= CIdent "=" Exp ; +separator LetDef ";" ; + +-- Case expressions. +ECase. Exp ::= "case" Exp "of" "{" [Case] "}" ; +Case. Case ::= Pattern "|" Exp "->" Exp ; +separator Case ";" ; + +-- Lambda abstractions. +EAbs. Exp1 ::= "\\" PatternVariable "->" Exp ; +-- Function types. +EPi. Exp1 ::= "(" PatternVariable ":" Exp ")" "->" Exp ; + +-- Function application. +EApp. Exp3 ::= Exp3 Exp4 ; + +-- Record field projection. +EProj. Exp4 ::= Exp4 "." CIdent ; + +-- Record types. +ERecType. Exp5 ::= "sig" "{" [FieldType] "}" ; +FieldType. FieldType ::= CIdent ":" Exp ; +separator FieldType ";" ; + +-- Record expressions. +ERec. Exp5 ::= "rec" "{" [FieldValue] "}" ; +FieldValue.FieldValue ::= CIdent "=" Exp ; +separator FieldValue ";" ; + + +-- Functions, constructors and local variables. +EVar. Exp5 ::= CIdent ; +-- The constant Type. +EType. Exp5 ::= "Type" ; +-- String literal expressions. +EStr. Exp5 ::= String ; +-- Integer literal expressions. +EInteger. Exp5 ::= Integer ; +-- Double literal expressions. +EDouble. Exp5 ::= Double ; +-- Meta variables +EMeta. Exp5 ::= TMeta ; + +token TMeta ('?' digit+) ; + +coercions Exp 5 ; + + +-- Identifiers in core can start with underscore to allow +-- generating unique identifiers easily. +token CIdent ((letter | '_') (letter | digit | '_' | '\'')*) ; |
