summaryrefslogtreecommitdiff
path: root/src/Transfer/Core/Par.y
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-29 18:16:33 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-29 18:16:33 +0000
commit9a2dea46d103d180c3b0e0780df4f10a8a16f386 (patch)
treef3ddcb3dcff372f877241330301d0fd21a614e72 /src/Transfer/Core/Par.y
parent5b9249a422cb1ac172d6b5f1f03d5cde629d6216 (diff)
Use rec and sig for records.
Diffstat (limited to 'src/Transfer/Core/Par.y')
-rw-r--r--src/Transfer/Core/Par.y43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/Transfer/Core/Par.y b/src/Transfer/Core/Par.y
index 187aec348..73a0b2300 100644
--- a/src/Transfer/Core/Par.y
+++ b/src/Transfer/Core/Par.y
@@ -31,6 +31,8 @@ import Transfer.ErrM
'in' { PT _ (TS "in") }
'let' { PT _ (TS "let") }
'of' { PT _ (TS "of") }
+ 'rec' { PT _ (TS "rec") }
+ 'sig' { PT _ (TS "sig") }
'where' { PT _ (TS "where") }
L_quoted { PT _ (TL $$) }
@@ -81,7 +83,7 @@ ListPattern : {- empty -} { [] }
Pattern :: { Pattern }
Pattern : '(' CIdent ListPattern ')' { PCons $2 (reverse $3) }
| PatternVariable { PVar $1 }
- | '{' ListFieldPattern '}' { PRec $2 }
+ | 'rec' '{' ListFieldPattern '}' { PRec $3 }
| 'Type' { PType }
| String { PStr $1 }
| Integer { PInt $1 }
@@ -135,9 +137,8 @@ Exp4 : Exp4 '.' CIdent { EProj $1 $3 }
Exp5 :: { Exp }
-Exp5 : '{' '}' { EEmptyRec }
- | '{' ListFieldType '}' { ERecType $2 }
- | '{' ListFieldValue '}' { ERec $2 }
+Exp5 : 'sig' '{' ListFieldType '}' { ERecType $3 }
+ | 'rec' '{' ListFieldValue '}' { ERec $3 }
| CIdent { EVar $1 }
| 'Type' { EType }
| String { EStr $1 }
@@ -146,26 +147,13 @@ Exp5 : '{' '}' { EEmptyRec }
| '(' Exp ')' { $2 }
-Exp1 :: { Exp }
-Exp1 : Exp2 { $1 }
-
-
-Case :: { Case }
-Case : Pattern '->' Exp { Case $1 $3 }
-
-
-ListCase :: { [Case] }
-ListCase : {- empty -} { [] }
- | Case { (:[]) $1 }
- | Case ';' ListCase { (:) $1 $3 }
-
-
FieldType :: { FieldType }
FieldType : CIdent ':' Exp { FieldType $1 $3 }
ListFieldType :: { [FieldType] }
-ListFieldType : FieldType { (:[]) $1 }
+ListFieldType : {- empty -} { [] }
+ | FieldType { (:[]) $1 }
| FieldType ';' ListFieldType { (:) $1 $3 }
@@ -174,10 +162,25 @@ FieldValue : CIdent '=' Exp { FieldValue $1 $3 }
ListFieldValue :: { [FieldValue] }
-ListFieldValue : FieldValue { (:[]) $1 }
+ListFieldValue : {- empty -} { [] }
+ | FieldValue { (:[]) $1 }
| FieldValue ';' ListFieldValue { (:) $1 $3 }
+Exp1 :: { Exp }
+Exp1 : Exp2 { $1 }
+
+
+Case :: { Case }
+Case : Pattern '->' Exp { Case $1 $3 }
+
+
+ListCase :: { [Case] }
+ListCase : {- empty -} { [] }
+ | Case { (:[]) $1 }
+ | Case ';' ListCase { (:) $1 $3 }
+
+
{