summaryrefslogtreecommitdiff
path: root/src/Transfer/Syntax/Syntax.cf
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-12-01 17:27:06 +0000
committerbringert <bringert@cs.chalmers.se>2005-12-01 17:27:06 +0000
commit396cc63cfc3658a11bbc76c9b5c4bf32e21cef6a (patch)
tree7c82ad66ee5183acf0966a2627991b95c3739ca6 /src/Transfer/Syntax/Syntax.cf
parent8de44f741e2452cbad73dd1fb467fca888235748 (diff)
Added list patterns. Added som simple prelude functions.
Diffstat (limited to 'src/Transfer/Syntax/Syntax.cf')
-rw-r--r--src/Transfer/Syntax/Syntax.cf29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf
index 71fdfc84a..64b588376 100644
--- a/src/Transfer/Syntax/Syntax.cf
+++ b/src/Transfer/Syntax/Syntax.cf
@@ -24,30 +24,39 @@ separator ConsDecl ";" ;
-- Disjunctive patterns.
POr. Pattern ::= Pattern1 "||" Pattern ;
+-- List constructor patterns
+PListCons. Pattern1 ::= Pattern2 "::" Pattern1 ;
+
-- Hack: constructor applied to at least one pattern
-- this is to separate it from variable patterns
-PConsTop. Pattern1 ::= Ident Pattern2 [Pattern] ;
+PConsTop. Pattern2 ::= Ident Pattern3 [Pattern] ;
-- Real constructor pattern
-internal PCons. Pattern2 ::= "(" Ident [Pattern] ")" ;
+internal PCons. Pattern3 ::= "(" Ident [Pattern] ")" ;
-- Record patterns
-PRec. Pattern2 ::= "rec" "{" [FieldPattern] "}";
+PRec. Pattern3 ::= "rec" "{" [FieldPattern] "}";
+
+-- List patterns
+PList. Pattern3 ::= "[" [PListElem] "]" ;
+PListElem. PListElem ::= Pattern ;
+separator PListElem "," ;
+
-- The pattern matching the Type constant
-PType. Pattern2 ::= "Type" ;
+PType. Pattern3 ::= "Type" ;
-- String literal patterns
-PStr. Pattern2 ::= String ;
+PStr. Pattern3 ::= String ;
-- Integer literal patterns
-PInt. Pattern2 ::= Integer ;
+PInt. Pattern3 ::= Integer ;
-- Variable patterns
-PVar. Pattern2 ::= Ident ;
+PVar. Pattern3 ::= Ident ;
-- Wild card patterns
-PWild. Pattern2 ::= "_" ;
+PWild. Pattern3 ::= "_" ;
-coercions Pattern 2 ;
+coercions Pattern 3 ;
[]. [Pattern] ::= ;
-(:). [Pattern] ::= Pattern2 [Pattern] ;
+(:). [Pattern] ::= Pattern3 [Pattern] ;
FieldPattern. FieldPattern ::= Ident "=" Pattern ;
separator FieldPattern ";" ;