summaryrefslogtreecommitdiff
path: root/src/Transfer/Syntax/Syntax.cf
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-12-01 15:37:47 +0000
committerbringert <bringert@cs.chalmers.se>2005-12-01 15:37:47 +0000
commit635845eed8acf476621bd0d01a85146fb19693a6 (patch)
tree2c40fe3e2b32ec0fdc07b445a3c184f03d5ecc77 /src/Transfer/Syntax/Syntax.cf
parent30bb51372fa8fdb6d68d1fd1b15793940c8d4e3b (diff)
Transfer: added support for disjunctive patterns.
Diffstat (limited to 'src/Transfer/Syntax/Syntax.cf')
-rw-r--r--src/Transfer/Syntax/Syntax.cf28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf
index b64edb438..3550786d5 100644
--- a/src/Transfer/Syntax/Syntax.cf
+++ b/src/Transfer/Syntax/Syntax.cf
@@ -21,27 +21,33 @@ separator Decl ";" ;
ConsDecl. ConsDecl ::= Ident ":" Exp ;
separator ConsDecl ";" ;
+-- Disjunctive patterns.
+POr. Pattern ::= Pattern1 "||" Pattern ;
+
-- Hack: constructor applied to at least one pattern
-- this is to separate it from variable patterns
-PConsTop. Pattern ::= Ident Pattern1 [Pattern] ;
-_. Pattern ::= Pattern1 ;
--- Constructor pattern with parantheses
-PCons. Pattern1 ::= "(" Ident [Pattern] ")" ;
+PConsTop. Pattern1 ::= Ident Pattern2 [Pattern] ;
+
+-- Real constructor pattern
+internal PCons. Pattern2 ::= "(" Ident [Pattern] ")" ;
+
-- Record patterns
-PRec. Pattern1 ::= "rec" "{" [FieldPattern] "}";
+PRec. Pattern2 ::= "rec" "{" [FieldPattern] "}";
-- The pattern matching the Type constant
-PType. Pattern1 ::= "Type" ;
+PType. Pattern2 ::= "Type" ;
-- String literal patterns
-PStr. Pattern1 ::= String ;
+PStr. Pattern2 ::= String ;
-- Integer literal patterns
-PInt. Pattern1 ::= Integer ;
+PInt. Pattern2 ::= Integer ;
-- Variable patterns
-PVar. Pattern1 ::= Ident ;
+PVar. Pattern2 ::= Ident ;
-- Wild card patterns
-PWild. Pattern1 ::= "_" ;
+PWild. Pattern2 ::= "_" ;
+
+coercions Pattern 2 ;
[]. [Pattern] ::= ;
-(:). [Pattern] ::= Pattern1 [Pattern] ;
+(:). [Pattern] ::= Pattern2 [Pattern] ;
FieldPattern. FieldPattern ::= Ident "=" Pattern ;
separator FieldPattern ";" ;