summaryrefslogtreecommitdiff
path: root/src/Transfer/Syntax/Syntax.cf
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-30 20:27:01 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-30 20:27:01 +0000
commit7dfa1842859b408d0eadd4d79a5b1ce0267a13b2 (patch)
tree983536942b3836c01033612fb358a619a3505bf0 /src/Transfer/Syntax/Syntax.cf
parentd92a26fc9be92fb269888947a8b26aa12883065e (diff)
Added bind operators, do-notation, a cons operator and list sytnax.
Diffstat (limited to 'src/Transfer/Syntax/Syntax.cf')
-rw-r--r--src/Transfer/Syntax/Syntax.cf67
1 files changed, 38 insertions, 29 deletions
diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf
index 1d7083eb3..b64edb438 100644
--- a/src/Transfer/Syntax/Syntax.cf
+++ b/src/Transfer/Syntax/Syntax.cf
@@ -1,6 +1,6 @@
entrypoints Module, Exp ;
-layout "let", "where", "of","rec", "sig" ;
+layout "let", "where", "of","rec", "sig", "do" ;
layout stop "in" ;
layout toplevel ;
@@ -56,53 +56,62 @@ separator Case ";" ;
EIf. Exp ::= "if" Exp "then" Exp "else" Exp ;
+EDo. Exp ::= "do" "{" [Bind] Exp "}" ;
+BindVar. Bind ::= VarOrWild "<-" Exp ;
+BindNoVar. Bind ::= Exp ;
+terminator Bind ";" ;
+
EAbs. Exp2 ::= "\\" VarOrWild "->" Exp ;
EPi. Exp2 ::= "(" VarOrWild ":" Exp ")" "->" Exp ;
EPiNoVar. Exp2 ::= Exp3 "->" Exp ;
VVar. VarOrWild ::= Ident ;
VWild. VarOrWild ::= "_" ;
-EOr. Exp3 ::= Exp4 "||" Exp3 ;
-EAnd. Exp4 ::= Exp5 "&&" Exp4 ;
+EBind. Exp3 ::= Exp3 ">>=" Exp4 ;
+EBindC. Exp3 ::= Exp3 ">>" Exp4 ;
+
+EOr. Exp4 ::= Exp5 "||" Exp4 ;
+
+EAnd. Exp5 ::= Exp6 "&&" Exp5 ;
+
+EEq. Exp6 ::= Exp7 "==" Exp7 ;
+ENe. Exp6 ::= Exp7 "/=" Exp7 ;
+ELt. Exp6 ::= Exp7 "<" Exp7 ;
+ELe. Exp6 ::= Exp7 "<=" Exp7 ;
+EGt. Exp6 ::= Exp7 ">" Exp7 ;
+EGe. Exp6 ::= Exp7 ">=" Exp7 ;
-EEq. Exp5 ::= Exp6 "==" Exp6 ;
-ENe. Exp5 ::= Exp6 "/=" Exp6 ;
-ELt. Exp5 ::= Exp6 "<" Exp6 ;
-ELe. Exp5 ::= Exp6 "<=" Exp6 ;
-EGt. Exp5 ::= Exp6 ">" Exp6 ;
-EGe. Exp5 ::= Exp6 ">=" Exp6 ;
+EListCons. Exp7 ::= Exp8 "::" Exp7 ;
-EAdd. Exp6 ::= Exp6 "+" Exp7 ;
-ESub. Exp6 ::= Exp6 "-" Exp7 ;
+EAdd. Exp8 ::= Exp8 "+" Exp9 ;
+ESub. Exp8 ::= Exp8 "-" Exp9 ;
-EMul. Exp7 ::= Exp7 "*" Exp8 ;
-EDiv. Exp7 ::= Exp7 "/" Exp8 ;
-EMod. Exp7 ::= Exp7 "%" Exp8 ;
+EMul. Exp9 ::= Exp9 "*" Exp10 ;
+EDiv. Exp9 ::= Exp9 "/" Exp10 ;
+EMod. Exp9 ::= Exp9 "%" Exp10 ;
-ENeg. Exp8 ::= "-" Exp8 ;
+ENeg. Exp10 ::= "-" Exp10 ;
-EApp. Exp9 ::= Exp9 Exp10 ;
+EApp. Exp11 ::= Exp11 Exp12 ;
-EProj. Exp10 ::= Exp10 "." Ident ;
+EProj. Exp12 ::= Exp12 "." Ident ;
-ERecType. Exp11 ::= "sig" "{" [FieldType] "}" ;
+ERecType. Exp13 ::= "sig" "{" [FieldType] "}" ;
FieldType. FieldType ::= Ident ":" Exp ;
separator FieldType ";" ;
-ERec. Exp11 ::= "rec" "{" [FieldValue] "}" ;
+ERec. Exp13 ::= "rec" "{" [FieldValue] "}" ;
FieldValue.FieldValue ::= Ident "=" Exp ;
separator FieldValue ";" ;
-EVar. Exp11 ::= Ident ;
-EType. Exp11 ::= "Type" ;
-EStr. Exp11 ::= String ;
-EInt. Exp11 ::= Integer ;
-EMeta. Exp11 ::= "?" ;
-
-coercions Exp 11 ;
-
-
-
+EList. Exp13 ::= "[" [Exp] "]" ;
+EVar. Exp13 ::= Ident ;
+EType. Exp13 ::= "Type" ;
+EStr. Exp13 ::= String ;
+EInt. Exp13 ::= Integer ;
+EMeta. Exp13 ::= "?" ;
+coercions Exp 13 ;
+separator Exp "," ;