diff options
Diffstat (limited to 'src/Transfer/Syntax/Syntax.cf')
| -rw-r--r-- | src/Transfer/Syntax/Syntax.cf | 29 |
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 ";" ; |
