diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
| commit | b96b36f43de3e2f8b58d5f539daa6f6d47f25870 (patch) | |
| tree | 0992334be13cec6538a1dea22fbbf26ad6bdf224 /src/Transfer/Syntax/Par.y | |
| parent | fe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff) | |
removed src for 2.9
Diffstat (limited to 'src/Transfer/Syntax/Par.y')
| -rw-r--r-- | src/Transfer/Syntax/Par.y | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/src/Transfer/Syntax/Par.y b/src/Transfer/Syntax/Par.y deleted file mode 100644 index 13c7800a8..000000000 --- a/src/Transfer/Syntax/Par.y +++ /dev/null @@ -1,340 +0,0 @@ --- This Happy file was machine-generated by the BNF converter -{ -{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-} -module Transfer.Syntax.Par where -import Transfer.Syntax.Abs -import Transfer.Syntax.Lex -import Transfer.ErrM -} - -%name pModule Module -%name pExp Exp - --- no lexer declaration -%monad { Err } { thenM } { returnM } -%tokentype { Token } - -%token - ';' { PT _ (TS ";") } - ':' { PT _ (TS ":") } - '{' { PT _ (TS "{") } - '}' { PT _ (TS "}") } - '=' { PT _ (TS "=") } - '|' { PT _ (TS "|") } - '||' { PT _ (TS "||") } - '::' { PT _ (TS "::") } - '(' { PT _ (TS "(") } - ')' { PT _ (TS ")") } - '[' { PT _ (TS "[") } - ']' { PT _ (TS "]") } - ',' { PT _ (TS ",") } - '_' { PT _ (TS "_") } - '->' { PT _ (TS "->") } - '\\' { PT _ (TS "\\") } - '<-' { PT _ (TS "<-") } - '>>=' { PT _ (TS ">>=") } - '>>' { PT _ (TS ">>") } - '&&' { PT _ (TS "&&") } - '==' { PT _ (TS "==") } - '/=' { PT _ (TS "/=") } - '<' { PT _ (TS "<") } - '<=' { PT _ (TS "<=") } - '>' { PT _ (TS ">") } - '>=' { PT _ (TS ">=") } - '+' { PT _ (TS "+") } - '-' { PT _ (TS "-") } - '*' { PT _ (TS "*") } - '/' { PT _ (TS "/") } - '%' { PT _ (TS "%") } - '.' { PT _ (TS ".") } - '?' { PT _ (TS "?") } - 'Type' { PT _ (TS "Type") } - 'case' { PT _ (TS "case") } - 'data' { PT _ (TS "data") } - 'derive' { PT _ (TS "derive") } - 'do' { PT _ (TS "do") } - 'else' { PT _ (TS "else") } - 'if' { PT _ (TS "if") } - 'import' { PT _ (TS "import") } - 'in' { PT _ (TS "in") } - 'let' { PT _ (TS "let") } - 'of' { PT _ (TS "of") } - 'rec' { PT _ (TS "rec") } - 'sig' { PT _ (TS "sig") } - 'then' { PT _ (TS "then") } - 'where' { PT _ (TS "where") } - -L_ident { PT _ (TV $$) } -L_quoted { PT _ (TL $$) } -L_integ { PT _ (TI $$) } -L_doubl { PT _ (TD $$) } -L_err { _ } - - -%% - -Ident :: { Ident } : L_ident { Ident $1 } -String :: { String } : L_quoted { $1 } -Integer :: { Integer } : L_integ { (read $1) :: Integer } -Double :: { Double } : L_doubl { (read $1) :: Double } - -Module :: { Module } -Module : ListImport ListDecl { Module (reverse $1) (reverse $2) } - - -Import :: { Import } -Import : 'import' Ident { Import $2 } - - -ListImport :: { [Import] } -ListImport : {- empty -} { [] } - | ListImport Import ';' { flip (:) $1 $2 } - - -Decl :: { Decl } -Decl : 'data' Ident ':' Exp 'where' '{' ListConsDecl '}' { DataDecl $2 $4 $7 } - | Ident ':' Exp { TypeDecl $1 $3 } - | Ident ListPattern Guard '=' Exp { ValueDecl $1 (reverse $2) $3 $5 } - | 'derive' Ident Ident { DeriveDecl $2 $3 } - - -ListDecl :: { [Decl] } -ListDecl : {- empty -} { [] } - | ListDecl Decl ';' { flip (:) $1 $2 } - - -ConsDecl :: { ConsDecl } -ConsDecl : Ident ':' Exp { ConsDecl $1 $3 } - - -ListConsDecl :: { [ConsDecl] } -ListConsDecl : {- empty -} { [] } - | ConsDecl { (:[]) $1 } - | ConsDecl ';' ListConsDecl { (:) $1 $3 } - - -Guard :: { Guard } -Guard : '|' Exp1 { GuardExp $2 } - | {- empty -} { GuardNo } - - -Pattern :: { Pattern } -Pattern : Pattern1 '||' Pattern { POr $1 $3 } - | Pattern1 { $1 } - - -Pattern1 :: { Pattern } -Pattern1 : Pattern2 '::' Pattern1 { PListCons $1 $3 } - | Pattern2 { $1 } - - -Pattern2 :: { Pattern } -Pattern2 : Ident Pattern3 ListPattern { PConsTop $1 $2 (reverse $3) } - | Pattern3 { $1 } - - -Pattern3 :: { Pattern } -Pattern3 : 'rec' '{' ListFieldPattern '}' { PRec $3 } - | '[' ']' { PEmptyList } - | '[' ListCommaPattern ']' { PList $2 } - | '(' CommaPattern ',' ListCommaPattern ')' { PTuple $2 $4 } - | String { PStr $1 } - | Integer { PInt $1 } - | Ident { PVar $1 } - | '_' { PWild } - | '(' Pattern ')' { $2 } - - -CommaPattern :: { CommaPattern } -CommaPattern : Pattern { CommaPattern $1 } - - -ListCommaPattern :: { [CommaPattern] } -ListCommaPattern : CommaPattern { (:[]) $1 } - | CommaPattern ',' ListCommaPattern { (:) $1 $3 } - - -ListPattern :: { [Pattern] } -ListPattern : {- empty -} { [] } - | ListPattern Pattern3 { flip (:) $1 $2 } - - -FieldPattern :: { FieldPattern } -FieldPattern : Ident '=' Pattern { FieldPattern $1 $3 } - - -ListFieldPattern :: { [FieldPattern] } -ListFieldPattern : {- empty -} { [] } - | FieldPattern { (:[]) $1 } - | FieldPattern ';' ListFieldPattern { (:) $1 $3 } - - -Exp :: { Exp } -Exp : '(' VarOrWild ':' Exp ')' '->' Exp { EPi $2 $4 $7 } - | Exp1 '->' Exp { EPiNoVar $1 $3 } - | Exp1 { $1 } - - -VarOrWild :: { VarOrWild } -VarOrWild : Ident { VVar $1 } - | '_' { VWild } - - -Exp1 :: { Exp } -Exp1 : '\\' VarOrWild '->' Exp1 { EAbs $2 $4 } - | 'let' '{' ListLetDef '}' 'in' Exp1 { ELet $3 $6 } - | 'case' Exp 'of' '{' ListCase '}' { ECase $2 $5 } - | 'if' Exp 'then' Exp 'else' Exp1 { EIf $2 $4 $6 } - | 'do' '{' ListBind Exp '}' { EDo (reverse $3) $4 } - | Exp2 { $1 } - - -LetDef :: { LetDef } -LetDef : Ident '=' Exp { LetDef $1 $3 } - - -ListLetDef :: { [LetDef] } -ListLetDef : {- empty -} { [] } - | LetDef { (:[]) $1 } - | LetDef ';' ListLetDef { (:) $1 $3 } - - -Case :: { Case } -Case : Pattern Guard '->' Exp { Case $1 $2 $4 } - - -ListCase :: { [Case] } -ListCase : {- empty -} { [] } - | Case { (:[]) $1 } - | Case ';' ListCase { (:) $1 $3 } - - -Bind :: { Bind } -Bind : VarOrWild '<-' Exp { BindVar $1 $3 } - | Exp { BindNoVar $1 } - - -ListBind :: { [Bind] } -ListBind : {- empty -} { [] } - | ListBind Bind ';' { flip (:) $1 $2 } - - -Exp3 :: { Exp } -Exp3 : Exp3 '>>=' Exp4 { EBind $1 $3 } - | Exp3 '>>' Exp4 { EBindC $1 $3 } - | Exp4 { $1 } - - -Exp4 :: { Exp } -Exp4 : Exp5 '||' Exp4 { EOr $1 $3 } - | Exp5 { $1 } - - -Exp5 :: { Exp } -Exp5 : Exp6 '&&' Exp5 { EAnd $1 $3 } - | Exp6 { $1 } - - -Exp6 :: { Exp } -Exp6 : Exp7 '==' Exp7 { EEq $1 $3 } - | Exp7 '/=' Exp7 { ENe $1 $3 } - | Exp7 '<' Exp7 { ELt $1 $3 } - | Exp7 '<=' Exp7 { ELe $1 $3 } - | Exp7 '>' Exp7 { EGt $1 $3 } - | Exp7 '>=' Exp7 { EGe $1 $3 } - | Exp7 { $1 } - - -Exp7 :: { Exp } -Exp7 : Exp8 '::' Exp7 { EListCons $1 $3 } - | Exp8 { $1 } - - -Exp8 :: { Exp } -Exp8 : Exp8 '+' Exp9 { EAdd $1 $3 } - | Exp8 '-' Exp9 { ESub $1 $3 } - | Exp9 { $1 } - - -Exp9 :: { Exp } -Exp9 : Exp9 '*' Exp10 { EMul $1 $3 } - | Exp9 '/' Exp10 { EDiv $1 $3 } - | Exp9 '%' Exp10 { EMod $1 $3 } - | Exp10 { $1 } - - -Exp10 :: { Exp } -Exp10 : '-' Exp10 { ENeg $2 } - | Exp11 { $1 } - - -Exp11 :: { Exp } -Exp11 : Exp11 Exp12 { EApp $1 $2 } - | Exp12 { $1 } - - -Exp12 :: { Exp } -Exp12 : Exp12 '.' Ident { EProj $1 $3 } - | Exp13 { $1 } - - -Exp13 :: { Exp } -Exp13 : 'sig' '{' ListFieldType '}' { ERecType $3 } - | 'rec' '{' ListFieldValue '}' { ERec $3 } - | '[' ']' { EEmptyList } - | '[' ListExp ']' { EList $2 } - | '(' Exp ',' ListExp ')' { ETuple $2 $4 } - | Ident { EVar $1 } - | 'Type' { EType } - | String { EStr $1 } - | Integer { EInteger $1 } - | Double { EDouble $1 } - | '?' { EMeta } - | '(' Exp ')' { $2 } - - -FieldType :: { FieldType } -FieldType : Ident ':' Exp { FieldType $1 $3 } - - -ListFieldType :: { [FieldType] } -ListFieldType : {- empty -} { [] } - | FieldType { (:[]) $1 } - | FieldType ';' ListFieldType { (:) $1 $3 } - - -FieldValue :: { FieldValue } -FieldValue : Ident '=' Exp { FieldValue $1 $3 } - - -ListFieldValue :: { [FieldValue] } -ListFieldValue : {- empty -} { [] } - | FieldValue { (:[]) $1 } - | FieldValue ';' ListFieldValue { (:) $1 $3 } - - -Exp2 :: { Exp } -Exp2 : Exp3 { $1 } - - -ListExp :: { [Exp] } -ListExp : Exp { (:[]) $1 } - | Exp ',' ListExp { (:) $1 $3 } - - - -{ - -returnM :: a -> Err a -returnM = return - -thenM :: Err a -> (a -> Err b) -> Err b -thenM = (>>=) - -happyError :: [Token] -> Err a -happyError ts = - Bad $ "syntax error at " ++ tokenPos ts ++ if null ts then [] else (" before " ++ unwords (map prToken (take 4 ts))) - -myLexer = tokens -} - |
