summaryrefslogtreecommitdiff
path: root/src/Transfer/Syntax/Syntax.cf
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-12-05 16:44:56 +0000
committerbringert <bringert@cs.chalmers.se>2005-12-05 16:44:56 +0000
commit747271941a9e4f698e985d6cb58efe2994e60d61 (patch)
tree206416ffc1ee62d54aa0bd2e2db5d99b66c24943 /src/Transfer/Syntax/Syntax.cf
parent066d5bb0a95b973db596f492f39184cd120c1786 (diff)
Added tuple expressions and patterns.
Diffstat (limited to 'src/Transfer/Syntax/Syntax.cf')
-rw-r--r--src/Transfer/Syntax/Syntax.cf19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf
index 50812d2f1..b38dd115f 100644
--- a/src/Transfer/Syntax/Syntax.cf
+++ b/src/Transfer/Syntax/Syntax.cf
@@ -41,9 +41,16 @@ internal PCons. Pattern3 ::= "(" Ident [Pattern] ")" ;
PRec. Pattern3 ::= "rec" "{" [FieldPattern] "}";
-- List patterns
-PList. Pattern3 ::= "[" [PListElem] "]" ;
-PListElem. PListElem ::= Pattern ;
-separator PListElem "," ;
+PEmptyList. Pattern3 ::= "[" "]" ;
+PList. Pattern3 ::= "[" [CommaPattern] "]" ;
+
+-- Tuple patterns
+PTuple. Pattern3 ::= "(" CommaPattern "," [CommaPattern] ")" ;
+
+-- hack to allow a different [Pattern] from the one defined
+-- for constructor patterns
+CommaPattern. CommaPattern ::= Pattern ;
+separator nonempty CommaPattern "," ;
-- The pattern matching the Type constant
PType. Pattern3 ::= "Type" ;
@@ -121,8 +128,12 @@ ERec. Exp13 ::= "rec" "{" [FieldValue] "}" ;
FieldValue.FieldValue ::= Ident "=" Exp ;
separator FieldValue ";" ;
+EEmptyList.Exp13 ::= "[" "]" ;
EList. Exp13 ::= "[" [Exp] "]" ;
+-- n-tuple, where n>=2
+ETuple. Exp13 ::= "(" Exp "," [Exp] ")" ;
+
EVar. Exp13 ::= Ident ;
EType. Exp13 ::= "Type" ;
EStr. Exp13 ::= String ;
@@ -132,4 +143,4 @@ EMeta. Exp13 ::= "?" ;
coercions Exp 13 ;
-separator Exp "," ;
+separator nonempty Exp "," ;