diff options
| author | bringert <bringert@cs.chalmers.se> | 2005-11-29 18:16:33 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2005-11-29 18:16:33 +0000 |
| commit | 9a2dea46d103d180c3b0e0780df4f10a8a16f386 (patch) | |
| tree | f3ddcb3dcff372f877241330301d0fd21a614e72 /src/Transfer/Core/Par.y | |
| parent | 5b9249a422cb1ac172d6b5f1f03d5cde629d6216 (diff) | |
Use rec and sig for records.
Diffstat (limited to 'src/Transfer/Core/Par.y')
| -rw-r--r-- | src/Transfer/Core/Par.y | 43 |
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 } + + { |
