summaryrefslogtreecommitdiff
path: root/src/Transfer/Core
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-25 16:43:48 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-25 16:43:48 +0000
commitb96b36f43de3e2f8b58d5f539daa6f6d47f25870 (patch)
tree0992334be13cec6538a1dea22fbbf26ad6bdf224 /src/Transfer/Core
parentfe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff)
removed src for 2.9
Diffstat (limited to 'src/Transfer/Core')
-rw-r--r--src/Transfer/Core/Abs.hs267
-rw-r--r--src/Transfer/Core/Core.cf93
-rw-r--r--src/Transfer/Core/Doc.tex215
-rw-r--r--src/Transfer/Core/Lex.hs343
-rw-r--r--src/Transfer/Core/Lex.x140
-rw-r--r--src/Transfer/Core/Par.hs1149
-rw-r--r--src/Transfer/Core/Par.y203
-rw-r--r--src/Transfer/Core/Print.hs155
-rw-r--r--src/Transfer/Core/Skel.hs119
-rw-r--r--src/Transfer/Core/Test.hs58
10 files changed, 0 insertions, 2742 deletions
diff --git a/src/Transfer/Core/Abs.hs b/src/Transfer/Core/Abs.hs
deleted file mode 100644
index 8306d5b46..000000000
--- a/src/Transfer/Core/Abs.hs
+++ /dev/null
@@ -1,267 +0,0 @@
-{-# OPTIONS_GHC -fglasgow-exts #-}
-module Transfer.Core.Abs (Tree(..), Module, Decl, ConsDecl, Pattern, FieldPattern, PatternVariable, Exp, LetDef, Case, FieldType, FieldValue, TMeta, CIdent, composOp, composOpM, composOpM_, composOpMPlus, composOpMonoid, composOpFold, compos, johnMajorEq) where
-
-import Control.Monad (ap,MonadPlus,msum,mplus,mzero)
-import Control.Monad.Identity
-import Data.Monoid
-
--- Haskell module generated by the BNF converter
-
-data Module_
-type Module = Tree Module_
-data Decl_
-type Decl = Tree Decl_
-data ConsDecl_
-type ConsDecl = Tree ConsDecl_
-data Pattern_
-type Pattern = Tree Pattern_
-data FieldPattern_
-type FieldPattern = Tree FieldPattern_
-data PatternVariable_
-type PatternVariable = Tree PatternVariable_
-data Exp_
-type Exp = Tree Exp_
-data LetDef_
-type LetDef = Tree LetDef_
-data Case_
-type Case = Tree Case_
-data FieldType_
-type FieldType = Tree FieldType_
-data FieldValue_
-type FieldValue = Tree FieldValue_
-data TMeta_
-type TMeta = Tree TMeta_
-data CIdent_
-type CIdent = Tree CIdent_
-
-data Tree :: * -> * where
- Module :: [Decl] -> Tree Module_
- DataDecl :: CIdent -> Exp -> [ConsDecl] -> Tree Decl_
- TypeDecl :: CIdent -> Exp -> Tree Decl_
- ValueDecl :: CIdent -> Exp -> Tree Decl_
- ConsDecl :: CIdent -> Exp -> Tree ConsDecl_
- PCons :: CIdent -> [Pattern] -> Tree Pattern_
- PVar :: PatternVariable -> Tree Pattern_
- PRec :: [FieldPattern] -> Tree Pattern_
- PStr :: String -> Tree Pattern_
- PInt :: Integer -> Tree Pattern_
- FieldPattern :: CIdent -> Pattern -> Tree FieldPattern_
- PVVar :: CIdent -> Tree PatternVariable_
- PVWild :: Tree PatternVariable_
- ELet :: [LetDef] -> Exp -> Tree Exp_
- ECase :: Exp -> [Case] -> Tree Exp_
- EAbs :: PatternVariable -> Exp -> Tree Exp_
- EPi :: PatternVariable -> Exp -> Exp -> Tree Exp_
- EApp :: Exp -> Exp -> Tree Exp_
- EProj :: Exp -> CIdent -> Tree Exp_
- ERecType :: [FieldType] -> Tree Exp_
- ERec :: [FieldValue] -> Tree Exp_
- EVar :: CIdent -> Tree Exp_
- EType :: Tree Exp_
- EStr :: String -> Tree Exp_
- EInteger :: Integer -> Tree Exp_
- EDouble :: Double -> Tree Exp_
- EMeta :: TMeta -> Tree Exp_
- LetDef :: CIdent -> Exp -> Tree LetDef_
- Case :: Pattern -> Exp -> Exp -> Tree Case_
- FieldType :: CIdent -> Exp -> Tree FieldType_
- FieldValue :: CIdent -> Exp -> Tree FieldValue_
- TMeta :: String -> Tree TMeta_
- CIdent :: String -> Tree CIdent_
-
-composOp :: (forall a. Tree a -> Tree a) -> Tree c -> Tree c
-composOp f = runIdentity . composOpM (Identity . f)
-
-composOpM :: Monad m => (forall a. Tree a -> m (Tree a)) -> Tree c -> m (Tree c)
-composOpM = compos return ap
-
-composOpM_ :: Monad m => (forall a. Tree a -> m ()) -> Tree c -> m ()
-composOpM_ = composOpFold (return ()) (>>)
-
-composOpMPlus :: MonadPlus m => (forall a. Tree a -> m b) -> Tree c -> m b
-composOpMPlus = composOpFold mzero mplus
-
-composOpMonoid :: Monoid m => (forall a. Tree a -> m) -> Tree c -> m
-composOpMonoid = composOpFold mempty mappend
-
-newtype C b a = C { unC :: b }
-composOpFold :: b -> (b -> b -> b) -> (forall a. Tree a -> b) -> Tree c -> b
-composOpFold z c f = unC . compos (\_ -> C z) (\(C x) (C y) -> C (c x y)) (C . f)
-
-compos :: (forall a. a -> m a)
- -> (forall a b. m (a -> b) -> m a -> m b)
- -> (forall a. Tree a -> m (Tree a)) -> Tree c -> m (Tree c)
-compos r a f t = case t of
- Module decls -> r Module `a` foldr (a . a (r (:)) . f) (r []) decls
- DataDecl cident exp consdecls -> r DataDecl `a` f cident `a` f exp `a` foldr (a . a (r (:)) . f) (r []) consdecls
- TypeDecl cident exp -> r TypeDecl `a` f cident `a` f exp
- ValueDecl cident exp -> r ValueDecl `a` f cident `a` f exp
- ConsDecl cident exp -> r ConsDecl `a` f cident `a` f exp
- PCons cident patterns -> r PCons `a` f cident `a` foldr (a . a (r (:)) . f) (r []) patterns
- PVar patternvariable -> r PVar `a` f patternvariable
- PRec fieldpatterns -> r PRec `a` foldr (a . a (r (:)) . f) (r []) fieldpatterns
- FieldPattern cident pattern -> r FieldPattern `a` f cident `a` f pattern
- PVVar cident -> r PVVar `a` f cident
- ELet letdefs exp -> r ELet `a` foldr (a . a (r (:)) . f) (r []) letdefs `a` f exp
- ECase exp cases -> r ECase `a` f exp `a` foldr (a . a (r (:)) . f) (r []) cases
- EAbs patternvariable exp -> r EAbs `a` f patternvariable `a` f exp
- EPi patternvariable exp0 exp1 -> r EPi `a` f patternvariable `a` f exp0 `a` f exp1
- EApp exp0 exp1 -> r EApp `a` f exp0 `a` f exp1
- EProj exp cident -> r EProj `a` f exp `a` f cident
- ERecType fieldtypes -> r ERecType `a` foldr (a . a (r (:)) . f) (r []) fieldtypes
- ERec fieldvalues -> r ERec `a` foldr (a . a (r (:)) . f) (r []) fieldvalues
- EVar cident -> r EVar `a` f cident
- EMeta tmeta -> r EMeta `a` f tmeta
- LetDef cident exp -> r LetDef `a` f cident `a` f exp
- Case pattern exp0 exp1 -> r Case `a` f pattern `a` f exp0 `a` f exp1
- FieldType cident exp -> r FieldType `a` f cident `a` f exp
- FieldValue cident exp -> r FieldValue `a` f cident `a` f exp
- _ -> r t
-
-instance Show (Tree c) where
- showsPrec n t = case t of
- Module decls -> opar n . showString "Module" . showChar ' ' . showsPrec 1 decls . cpar n
- DataDecl cident exp consdecls -> opar n . showString "DataDecl" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . showChar ' ' . showsPrec 1 consdecls . cpar n
- TypeDecl cident exp -> opar n . showString "TypeDecl" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . cpar n
- ValueDecl cident exp -> opar n . showString "ValueDecl" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . cpar n
- ConsDecl cident exp -> opar n . showString "ConsDecl" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . cpar n
- PCons cident patterns -> opar n . showString "PCons" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 patterns . cpar n
- PVar patternvariable -> opar n . showString "PVar" . showChar ' ' . showsPrec 1 patternvariable . cpar n
- PRec fieldpatterns -> opar n . showString "PRec" . showChar ' ' . showsPrec 1 fieldpatterns . cpar n
- PStr str -> opar n . showString "PStr" . showChar ' ' . showsPrec 1 str . cpar n
- PInt n -> opar n . showString "PInt" . showChar ' ' . showsPrec 1 n . cpar n
- FieldPattern cident pattern -> opar n . showString "FieldPattern" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 pattern . cpar n
- PVVar cident -> opar n . showString "PVVar" . showChar ' ' . showsPrec 1 cident . cpar n
- PVWild -> showString "PVWild"
- ELet letdefs exp -> opar n . showString "ELet" . showChar ' ' . showsPrec 1 letdefs . showChar ' ' . showsPrec 1 exp . cpar n
- ECase exp cases -> opar n . showString "ECase" . showChar ' ' . showsPrec 1 exp . showChar ' ' . showsPrec 1 cases . cpar n
- EAbs patternvariable exp -> opar n . showString "EAbs" . showChar ' ' . showsPrec 1 patternvariable . showChar ' ' . showsPrec 1 exp . cpar n
- EPi patternvariable exp0 exp1 -> opar n . showString "EPi" . showChar ' ' . showsPrec 1 patternvariable . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n
- EApp exp0 exp1 -> opar n . showString "EApp" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n
- EProj exp cident -> opar n . showString "EProj" . showChar ' ' . showsPrec 1 exp . showChar ' ' . showsPrec 1 cident . cpar n
- ERecType fieldtypes -> opar n . showString "ERecType" . showChar ' ' . showsPrec 1 fieldtypes . cpar n
- ERec fieldvalues -> opar n . showString "ERec" . showChar ' ' . showsPrec 1 fieldvalues . cpar n
- EVar cident -> opar n . showString "EVar" . showChar ' ' . showsPrec 1 cident . cpar n
- EType -> showString "EType"
- EStr str -> opar n . showString "EStr" . showChar ' ' . showsPrec 1 str . cpar n
- EInteger n -> opar n . showString "EInteger" . showChar ' ' . showsPrec 1 n . cpar n
- EDouble d -> opar n . showString "EDouble" . showChar ' ' . showsPrec 1 d . cpar n
- EMeta tmeta -> opar n . showString "EMeta" . showChar ' ' . showsPrec 1 tmeta . cpar n
- LetDef cident exp -> opar n . showString "LetDef" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . cpar n
- Case pattern exp0 exp1 -> opar n . showString "Case" . showChar ' ' . showsPrec 1 pattern . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n
- FieldType cident exp -> opar n . showString "FieldType" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . cpar n
- FieldValue cident exp -> opar n . showString "FieldValue" . showChar ' ' . showsPrec 1 cident . showChar ' ' . showsPrec 1 exp . cpar n
- TMeta str -> opar n . showString "TMeta" . showChar ' ' . showsPrec 1 str . cpar n
- CIdent str -> opar n . showString "CIdent" . showChar ' ' . showsPrec 1 str . cpar n
- where opar n = if n > 0 then showChar '(' else id
- cpar n = if n > 0 then showChar ')' else id
-
-instance Eq (Tree c) where (==) = johnMajorEq
-
-johnMajorEq :: Tree a -> Tree b -> Bool
-johnMajorEq (Module decls) (Module decls_) = decls == decls_
-johnMajorEq (DataDecl cident exp consdecls) (DataDecl cident_ exp_ consdecls_) = cident == cident_ && exp == exp_ && consdecls == consdecls_
-johnMajorEq (TypeDecl cident exp) (TypeDecl cident_ exp_) = cident == cident_ && exp == exp_
-johnMajorEq (ValueDecl cident exp) (ValueDecl cident_ exp_) = cident == cident_ && exp == exp_
-johnMajorEq (ConsDecl cident exp) (ConsDecl cident_ exp_) = cident == cident_ && exp == exp_
-johnMajorEq (PCons cident patterns) (PCons cident_ patterns_) = cident == cident_ && patterns == patterns_
-johnMajorEq (PVar patternvariable) (PVar patternvariable_) = patternvariable == patternvariable_
-johnMajorEq (PRec fieldpatterns) (PRec fieldpatterns_) = fieldpatterns == fieldpatterns_
-johnMajorEq (PStr str) (PStr str_) = str == str_
-johnMajorEq (PInt n) (PInt n_) = n == n_
-johnMajorEq (FieldPattern cident pattern) (FieldPattern cident_ pattern_) = cident == cident_ && pattern == pattern_
-johnMajorEq (PVVar cident) (PVVar cident_) = cident == cident_
-johnMajorEq PVWild PVWild = True
-johnMajorEq (ELet letdefs exp) (ELet letdefs_ exp_) = letdefs == letdefs_ && exp == exp_
-johnMajorEq (ECase exp cases) (ECase exp_ cases_) = exp == exp_ && cases == cases_
-johnMajorEq (EAbs patternvariable exp) (EAbs patternvariable_ exp_) = patternvariable == patternvariable_ && exp == exp_
-johnMajorEq (EPi patternvariable exp0 exp1) (EPi patternvariable_ exp0_ exp1_) = patternvariable == patternvariable_ && exp0 == exp0_ && exp1 == exp1_
-johnMajorEq (EApp exp0 exp1) (EApp exp0_ exp1_) = exp0 == exp0_ && exp1 == exp1_
-johnMajorEq (EProj exp cident) (EProj exp_ cident_) = exp == exp_ && cident == cident_
-johnMajorEq (ERecType fieldtypes) (ERecType fieldtypes_) = fieldtypes == fieldtypes_
-johnMajorEq (ERec fieldvalues) (ERec fieldvalues_) = fieldvalues == fieldvalues_
-johnMajorEq (EVar cident) (EVar cident_) = cident == cident_
-johnMajorEq EType EType = True
-johnMajorEq (EStr str) (EStr str_) = str == str_
-johnMajorEq (EInteger n) (EInteger n_) = n == n_
-johnMajorEq (EDouble d) (EDouble d_) = d == d_
-johnMajorEq (EMeta tmeta) (EMeta tmeta_) = tmeta == tmeta_
-johnMajorEq (LetDef cident exp) (LetDef cident_ exp_) = cident == cident_ && exp == exp_
-johnMajorEq (Case pattern exp0 exp1) (Case pattern_ exp0_ exp1_) = pattern == pattern_ && exp0 == exp0_ && exp1 == exp1_
-johnMajorEq (FieldType cident exp) (FieldType cident_ exp_) = cident == cident_ && exp == exp_
-johnMajorEq (FieldValue cident exp) (FieldValue cident_ exp_) = cident == cident_ && exp == exp_
-johnMajorEq (TMeta str) (TMeta str_) = str == str_
-johnMajorEq (CIdent str) (CIdent str_) = str == str_
-johnMajorEq _ _ = False
-
-instance Ord (Tree c) where
- compare x y = compare (index x) (index y) `mappend` compareSame x y
-index :: Tree c -> Int
-index (Module _) = 0
-index (DataDecl _ _ _) = 1
-index (TypeDecl _ _) = 2
-index (ValueDecl _ _) = 3
-index (ConsDecl _ _) = 4
-index (PCons _ _) = 5
-index (PVar _) = 6
-index (PRec _) = 7
-index (PStr _) = 8
-index (PInt _) = 9
-index (FieldPattern _ _) = 10
-index (PVVar _) = 11
-index (PVWild ) = 12
-index (ELet _ _) = 13
-index (ECase _ _) = 14
-index (EAbs _ _) = 15
-index (EPi _ _ _) = 16
-index (EApp _ _) = 17
-index (EProj _ _) = 18
-index (ERecType _) = 19
-index (ERec _) = 20
-index (EVar _) = 21
-index (EType ) = 22
-index (EStr _) = 23
-index (EInteger _) = 24
-index (EDouble _) = 25
-index (EMeta _) = 26
-index (LetDef _ _) = 27
-index (Case _ _ _) = 28
-index (FieldType _ _) = 29
-index (FieldValue _ _) = 30
-index (TMeta _) = 31
-index (CIdent _) = 32
-compareSame :: Tree c -> Tree c -> Ordering
-compareSame (Module decls) (Module decls_) = compare decls decls_
-compareSame (DataDecl cident exp consdecls) (DataDecl cident_ exp_ consdecls_) = mappend (compare cident cident_) (mappend (compare exp exp_) (compare consdecls consdecls_))
-compareSame (TypeDecl cident exp) (TypeDecl cident_ exp_) = mappend (compare cident cident_) (compare exp exp_)
-compareSame (ValueDecl cident exp) (ValueDecl cident_ exp_) = mappend (compare cident cident_) (compare exp exp_)
-compareSame (ConsDecl cident exp) (ConsDecl cident_ exp_) = mappend (compare cident cident_) (compare exp exp_)
-compareSame (PCons cident patterns) (PCons cident_ patterns_) = mappend (compare cident cident_) (compare patterns patterns_)
-compareSame (PVar patternvariable) (PVar patternvariable_) = compare patternvariable patternvariable_
-compareSame (PRec fieldpatterns) (PRec fieldpatterns_) = compare fieldpatterns fieldpatterns_
-compareSame (PStr str) (PStr str_) = compare str str_
-compareSame (PInt n) (PInt n_) = compare n n_
-compareSame (FieldPattern cident pattern) (FieldPattern cident_ pattern_) = mappend (compare cident cident_) (compare pattern pattern_)
-compareSame (PVVar cident) (PVVar cident_) = compare cident cident_
-compareSame PVWild PVWild = EQ
-compareSame (ELet letdefs exp) (ELet letdefs_ exp_) = mappend (compare letdefs letdefs_) (compare exp exp_)
-compareSame (ECase exp cases) (ECase exp_ cases_) = mappend (compare exp exp_) (compare cases cases_)
-compareSame (EAbs patternvariable exp) (EAbs patternvariable_ exp_) = mappend (compare patternvariable patternvariable_) (compare exp exp_)
-compareSame (EPi patternvariable exp0 exp1) (EPi patternvariable_ exp0_ exp1_) = mappend (compare patternvariable patternvariable_) (mappend (compare exp0 exp0_) (compare exp1 exp1_))
-compareSame (EApp exp0 exp1) (EApp exp0_ exp1_) = mappend (compare exp0 exp0_) (compare exp1 exp1_)
-compareSame (EProj exp cident) (EProj exp_ cident_) = mappend (compare exp exp_) (compare cident cident_)
-compareSame (ERecType fieldtypes) (ERecType fieldtypes_) = compare fieldtypes fieldtypes_
-compareSame (ERec fieldvalues) (ERec fieldvalues_) = compare fieldvalues fieldvalues_
-compareSame (EVar cident) (EVar cident_) = compare cident cident_
-compareSame EType EType = EQ
-compareSame (EStr str) (EStr str_) = compare str str_
-compareSame (EInteger n) (EInteger n_) = compare n n_
-compareSame (EDouble d) (EDouble d_) = compare d d_
-compareSame (EMeta tmeta) (EMeta tmeta_) = compare tmeta tmeta_
-compareSame (LetDef cident exp) (LetDef cident_ exp_) = mappend (compare cident cident_) (compare exp exp_)
-compareSame (Case pattern exp0 exp1) (Case pattern_ exp0_ exp1_) = mappend (compare pattern pattern_) (mappend (compare exp0 exp0_) (compare exp1 exp1_))
-compareSame (FieldType cident exp) (FieldType cident_ exp_) = mappend (compare cident cident_) (compare exp exp_)
-compareSame (FieldValue cident exp) (FieldValue cident_ exp_) = mappend (compare cident cident_) (compare exp exp_)
-compareSame (TMeta str) (TMeta str_) = compare str str_
-compareSame (CIdent str) (CIdent str_) = compare str str_
-compareSame x y = error "BNFC error:" compareSame
diff --git a/src/Transfer/Core/Core.cf b/src/Transfer/Core/Core.cf
deleted file mode 100644
index cd4c20569..000000000
--- a/src/Transfer/Core/Core.cf
+++ /dev/null
@@ -1,93 +0,0 @@
--- This is a subset of the front-end language
-
-entrypoints Module, Exp ;
-
-comment "--" ;
-comment "{-" "-}" ;
-
-Module. Module ::= [Decl] ;
-separator Decl ";" ;
-
-DataDecl. Decl ::= "data" CIdent ":" Exp "where" "{" [ConsDecl] "}" ;
-TypeDecl. Decl ::= CIdent ":" Exp ;
-ValueDecl. Decl ::= CIdent "=" Exp ;
-
-ConsDecl. ConsDecl ::= CIdent ":" Exp ;
-separator ConsDecl ";" ;
-
-separator Pattern "";
-
--- Constructor patterns.
-PCons. Pattern ::= "(" CIdent [Pattern] ")" ;
-
--- Variable patterns. Note that in the core language,
--- constructor patterns must have parantheses.
-PVar. Pattern ::= PatternVariable ;
--- Record patterns.
-PRec. Pattern ::= "rec" "{" [FieldPattern] "}";
--- String literal patterns.
-PStr. Pattern ::= String ;
--- Integer literal patterns.
-PInt. Pattern ::= Integer ;
-
-FieldPattern. FieldPattern ::= CIdent "=" Pattern ;
-separator FieldPattern ";" ;
-
--- Variable patterns
-PVVar. PatternVariable ::= CIdent ;
--- Wild card patterns
-PVWild. PatternVariable ::= "_" ;
-
--- Let expressions.
-ELet. Exp ::= "let" "{" [LetDef] "}" "in" Exp ;
-LetDef. LetDef ::= CIdent "=" Exp ;
-separator LetDef ";" ;
-
--- Case expressions.
-ECase. Exp ::= "case" Exp "of" "{" [Case] "}" ;
-Case. Case ::= Pattern "|" Exp "->" Exp ;
-separator Case ";" ;
-
--- Lambda abstractions.
-EAbs. Exp1 ::= "\\" PatternVariable "->" Exp ;
--- Function types.
-EPi. Exp1 ::= "(" PatternVariable ":" Exp ")" "->" Exp ;
-
--- Function application.
-EApp. Exp3 ::= Exp3 Exp4 ;
-
--- Record field projection.
-EProj. Exp4 ::= Exp4 "." CIdent ;
-
--- Record types.
-ERecType. Exp5 ::= "sig" "{" [FieldType] "}" ;
-FieldType. FieldType ::= CIdent ":" Exp ;
-separator FieldType ";" ;
-
--- Record expressions.
-ERec. Exp5 ::= "rec" "{" [FieldValue] "}" ;
-FieldValue.FieldValue ::= CIdent "=" Exp ;
-separator FieldValue ";" ;
-
-
--- Functions, constructors and local variables.
-EVar. Exp5 ::= CIdent ;
--- The constant Type.
-EType. Exp5 ::= "Type" ;
--- String literal expressions.
-EStr. Exp5 ::= String ;
--- Integer literal expressions.
-EInteger. Exp5 ::= Integer ;
--- Double literal expressions.
-EDouble. Exp5 ::= Double ;
--- Meta variables
-EMeta. Exp5 ::= TMeta ;
-
-token TMeta ('?' digit+) ;
-
-coercions Exp 5 ;
-
-
--- Identifiers in core can start with underscore to allow
--- generating unique identifiers easily.
-token CIdent ((letter | '_') (letter | digit | '_' | '\'')*) ;
diff --git a/src/Transfer/Core/Doc.tex b/src/Transfer/Core/Doc.tex
deleted file mode 100644
index 4ba6f93ed..000000000
--- a/src/Transfer/Core/Doc.tex
+++ /dev/null
@@ -1,215 +0,0 @@
-\batchmode
-%This Latex file is machine-generated by the BNF-converter
-
-\documentclass[a4paper,11pt]{article}
-\author{BNF-converter}
-\title{The Language Core}
-\setlength{\parindent}{0mm}
-\setlength{\parskip}{1mm}
-\begin{document}
-
-\maketitle
-
-\newcommand{\emptyP}{\mbox{$\epsilon$}}
-\newcommand{\terminal}[1]{\mbox{{\texttt {#1}}}}
-\newcommand{\nonterminal}[1]{\mbox{$\langle \mbox{{\sl #1 }} \! \rangle$}}
-\newcommand{\arrow}{\mbox{::=}}
-\newcommand{\delimit}{\mbox{$|$}}
-\newcommand{\reserved}[1]{\mbox{{\texttt {#1}}}}
-\newcommand{\literal}[1]{\mbox{{\texttt {#1}}}}
-\newcommand{\symb}[1]{\mbox{{\texttt {#1}}}}
-
-This document was automatically generated by the {\em BNF-Converter}. It was generated together with the lexer, the parser, and the abstract syntax module, which guarantees that the document matches with the implementation of the language (provided no hand-hacking has taken place).
-
-\section*{The lexical structure of Core}
-
-\subsection*{Literals}
-String literals \nonterminal{String}\ have the form
-\terminal{"}$x$\terminal{"}, where $x$ is any sequence of any characters
-except \terminal{"}\ unless preceded by \verb6\6.
-
-
-Integer literals \nonterminal{Int}\ are nonempty sequences of digits.
-
-
-Double-precision float literals \nonterminal{Double}\ have the structure
-indicated by the regular expression $\nonterminal{digit}+ \mbox{{\it `.'}} \nonterminal{digit}+ (\mbox{{\it `e'}} \mbox{{\it `-'}}? \nonterminal{digit}+)?$ i.e.\
-two sequences of digits separated by a decimal point, optionally
-followed by an unsigned or negative exponent.
-
-
-
-
-
-TMeta literals are recognized by the regular expression
-\(\mbox{`?'} {\nonterminal{digit}}+\)
-
-CIdent literals are recognized by the regular expression
-\(({\nonterminal{letter}} \mid \mbox{`\_'}) ({\nonterminal{letter}} \mid {\nonterminal{digit}} \mid \mbox{`\_'} \mid \mbox{`''})*\)
-
-
-\subsection*{Reserved words and symbols}
-The set of reserved words is the set of terminals appearing in the grammar. Those reserved words that consist of non-letter characters are called symbols, and they are treated in a different way from those that are similar to identifiers. The lexer follows rules familiar from languages like Haskell, C, and Java, including longest match and spacing conventions.
-
-The reserved words used in Core are the following: \\
-
-\begin{tabular}{lll}
-{\reserved{Type}} &{\reserved{case}} &{\reserved{data}} \\
-{\reserved{in}} &{\reserved{let}} &{\reserved{of}} \\
-{\reserved{rec}} &{\reserved{sig}} &{\reserved{where}} \\
-\end{tabular}\\
-
-The symbols used in Core are the following: \\
-
-\begin{tabular}{lll}
-{\symb{;}} &{\symb{:}} &{\symb{\{}} \\
-{\symb{\}}} &{\symb{{$=$}}} &{\symb{(}} \\
-{\symb{)}} &{\symb{\_}} &{\symb{{$|$}}} \\
-{\symb{{$-$}{$>$}}} &{\symb{$\backslash$}} &{\symb{.}} \\
-\end{tabular}\\
-
-\subsection*{Comments}
-Single-line comments begin with {\symb{{$-$}{$-$}}}. \\Multiple-line comments are enclosed with {\symb{\{{$-$}}} and {\symb{{$-$}\}}}.
-
-\section*{The syntactic structure of Core}
-Non-terminals are enclosed between $\langle$ and $\rangle$.
-The symbols {\arrow} (production), {\delimit} (union)
-and {\emptyP} (empty rule) belong to the BNF notation.
-All other symbols are terminals.\\
-
-\begin{tabular}{lll}
-{\nonterminal{Module}} & {\arrow} &{\nonterminal{ListDecl}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListDecl}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{Decl}} \\
- & {\delimit} &{\nonterminal{Decl}} {\terminal{;}} {\nonterminal{ListDecl}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Decl}} & {\arrow} &{\terminal{data}} {\nonterminal{CIdent}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{where}} {\terminal{\{}} {\nonterminal{ListConsDecl}} {\terminal{\}}} \\
- & {\delimit} &{\nonterminal{CIdent}} {\terminal{:}} {\nonterminal{Exp}} \\
- & {\delimit} &{\nonterminal{CIdent}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ConsDecl}} & {\arrow} &{\nonterminal{CIdent}} {\terminal{:}} {\nonterminal{Exp}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListConsDecl}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{ConsDecl}} \\
- & {\delimit} &{\nonterminal{ConsDecl}} {\terminal{;}} {\nonterminal{ListConsDecl}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListPattern}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{Pattern}} {\nonterminal{ListPattern}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Pattern}} & {\arrow} &{\terminal{(}} {\nonterminal{CIdent}} {\nonterminal{ListPattern}} {\terminal{)}} \\
- & {\delimit} &{\nonterminal{PatternVariable}} \\
- & {\delimit} &{\terminal{rec}} {\terminal{\{}} {\nonterminal{ListFieldPattern}} {\terminal{\}}} \\
- & {\delimit} &{\nonterminal{String}} \\
- & {\delimit} &{\nonterminal{Integer}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{FieldPattern}} & {\arrow} &{\nonterminal{CIdent}} {\terminal{{$=$}}} {\nonterminal{Pattern}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListFieldPattern}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{FieldPattern}} \\
- & {\delimit} &{\nonterminal{FieldPattern}} {\terminal{;}} {\nonterminal{ListFieldPattern}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{PatternVariable}} & {\arrow} &{\nonterminal{CIdent}} \\
- & {\delimit} &{\terminal{\_}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Exp}} & {\arrow} &{\terminal{let}} {\terminal{\{}} {\nonterminal{ListLetDef}} {\terminal{\}}} {\terminal{in}} {\nonterminal{Exp}} \\
- & {\delimit} &{\terminal{case}} {\nonterminal{Exp}} {\terminal{of}} {\terminal{\{}} {\nonterminal{ListCase}} {\terminal{\}}} \\
- & {\delimit} &{\nonterminal{Exp1}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{LetDef}} & {\arrow} &{\nonterminal{CIdent}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListLetDef}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{LetDef}} \\
- & {\delimit} &{\nonterminal{LetDef}} {\terminal{;}} {\nonterminal{ListLetDef}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Case}} & {\arrow} &{\nonterminal{Pattern}} {\terminal{{$|$}}} {\nonterminal{Exp}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListCase}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{Case}} \\
- & {\delimit} &{\nonterminal{Case}} {\terminal{;}} {\nonterminal{ListCase}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Exp1}} & {\arrow} &{\terminal{$\backslash$}} {\nonterminal{PatternVariable}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\
- & {\delimit} &{\terminal{(}} {\nonterminal{PatternVariable}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{)}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\
- & {\delimit} &{\nonterminal{Exp2}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Exp3}} & {\arrow} &{\nonterminal{Exp3}} {\nonterminal{Exp4}} \\
- & {\delimit} &{\nonterminal{Exp4}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Exp4}} & {\arrow} &{\nonterminal{Exp4}} {\terminal{.}} {\nonterminal{CIdent}} \\
- & {\delimit} &{\nonterminal{Exp5}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Exp5}} & {\arrow} &{\terminal{sig}} {\terminal{\{}} {\nonterminal{ListFieldType}} {\terminal{\}}} \\
- & {\delimit} &{\terminal{rec}} {\terminal{\{}} {\nonterminal{ListFieldValue}} {\terminal{\}}} \\
- & {\delimit} &{\nonterminal{CIdent}} \\
- & {\delimit} &{\terminal{Type}} \\
- & {\delimit} &{\nonterminal{String}} \\
- & {\delimit} &{\nonterminal{Integer}} \\
- & {\delimit} &{\nonterminal{Double}} \\
- & {\delimit} &{\nonterminal{TMeta}} \\
- & {\delimit} &{\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{FieldType}} & {\arrow} &{\nonterminal{CIdent}} {\terminal{:}} {\nonterminal{Exp}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListFieldType}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{FieldType}} \\
- & {\delimit} &{\nonterminal{FieldType}} {\terminal{;}} {\nonterminal{ListFieldType}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{FieldValue}} & {\arrow} &{\nonterminal{CIdent}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{ListFieldValue}} & {\arrow} &{\emptyP} \\
- & {\delimit} &{\nonterminal{FieldValue}} \\
- & {\delimit} &{\nonterminal{FieldValue}} {\terminal{;}} {\nonterminal{ListFieldValue}} \\
-\end{tabular}\\
-
-\begin{tabular}{lll}
-{\nonterminal{Exp2}} & {\arrow} &{\nonterminal{Exp3}} \\
-\end{tabular}\\
-
-
-
-\end{document}
-
diff --git a/src/Transfer/Core/Lex.hs b/src/Transfer/Core/Lex.hs
deleted file mode 100644
index be1198508..000000000
--- a/src/Transfer/Core/Lex.hs
+++ /dev/null
@@ -1,343 +0,0 @@
-{-# OPTIONS -fglasgow-exts -cpp #-}
-{-# LINE 3 "Transfer/Core/Lex.x" #-}
-{-# OPTIONS -fno-warn-incomplete-patterns #-}
-module Transfer.Core.Lex where
-
-
-
-#if __GLASGOW_HASKELL__ >= 603
-#include "ghcconfig.h"
-#else
-#include "config.h"
-#endif
-#if __GLASGOW_HASKELL__ >= 503
-import Data.Array
-import Data.Char (ord)
-import Data.Array.Base (unsafeAt)
-#else
-import Array
-import Char (ord)
-#endif
-#if __GLASGOW_HASKELL__ >= 503
-import GHC.Exts
-#else
-import GlaExts
-#endif
-alex_base :: AlexAddr
-alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x33\x00\x00\x00\xe7\x00\x00\x00\x6c\x01\x00\x00\x3c\x02\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xd5\x00\x00\x00\xf4\x00\x00\x00\xb7\x01\x00\x00\x1a\x01\x00\x00\xc1\x01\x00\x00\xcb\x01\x00\x00\xd8\x01\x00\x00"#
-
-alex_table :: AlexAddr
-alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x05\x00\x0e\x00\xff\xff\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x11\x00\xff\xff\x04\x00\xff\xff\xff\xff\x03\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0b\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x0e\x00\xff\xff\xff\xff\x0f\x00\xff\xff\x0d\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x15\x00\xff\xff\x00\x00\x00\x00\x12\x00\x15\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\xff\xff\x1a\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x16\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x1b\x00\x00\x00\x00\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x13\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00"#
-
-alex_check :: AlexAddr
-alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#
-
-alex_deflt :: AlexAddr
-alex_deflt = AlexA# "\x13\x00\xff\xff\x02\x00\x02\x00\xff\xff\xff\xff\x0a\x00\xff\xff\x0a\x00\x0a\x00\x0a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-alex_accept = listArray (0::Int,28) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_7))],[],[],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_9))],[],[],[]]
-{-# LINE 36 "Transfer/Core/Lex.x" #-}
-
-tok f p s = f p s
-
-share :: String -> String
-share = id
-
-data Tok =
- TS !String -- reserved words and symbols
- | TL !String -- string literals
- | TI !String -- integer literals
- | TV !String -- identifiers
- | TD !String -- double precision float literals
- | TC !String -- character literals
- | T_TMeta !String
- | T_CIdent !String
-
- deriving (Eq,Show,Ord)
-
-data Token =
- PT Posn Tok
- | Err Posn
- deriving (Eq,Show,Ord)
-
-tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l
-tokenPos (Err (Pn _ l _) :_) = "line " ++ show l
-tokenPos _ = "end of file"
-
-posLineCol (Pn _ l c) = (l,c)
-mkPosToken t@(PT p _) = (posLineCol p, prToken t)
-
-prToken t = case t of
- PT _ (TS s) -> s
- PT _ (TI s) -> s
- PT _ (TV s) -> s
- PT _ (TD s) -> s
- PT _ (TC s) -> s
- PT _ (T_TMeta s) -> s
- PT _ (T_CIdent s) -> s
-
- _ -> show t
-
-data BTree = N | B String Tok BTree BTree deriving (Show)
-
-eitherResIdent :: (String -> Tok) -> String -> Tok
-eitherResIdent tv s = treeFind resWords
- where
- treeFind N = tv s
- treeFind (B a t left right) | s < a = treeFind left
- | s > a = treeFind right
- | s == a = t
-
-resWords = b "let" (b "data" (b "case" (b "Type" N N) N) (b "in" N N)) (b "sig" (b "rec" (b "of" N N) N) (b "where" N N))
- where b s = B s (TS s)
-
-unescapeInitTail :: String -> String
-unescapeInitTail = unesc . tail where
- unesc s = case s of
- '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs
- '\\':'n':cs -> '\n' : unesc cs
- '\\':'t':cs -> '\t' : unesc cs
- '"':[] -> []
- c:cs -> c : unesc cs
- _ -> []
-
--------------------------------------------------------------------
--- Alex wrapper code.
--- A modified "posn" wrapper.
--------------------------------------------------------------------
-
-data Posn = Pn !Int !Int !Int
- deriving (Eq, Show,Ord)
-
-alexStartPos :: Posn
-alexStartPos = Pn 0 1 1
-
-alexMove :: Posn -> Char -> Posn
-alexMove (Pn a l c) '\t' = Pn (a+1) l (((c+7) `div` 8)*8+1)
-alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1
-alexMove (Pn a l c) _ = Pn (a+1) l (c+1)
-
-type AlexInput = (Posn, -- current position,
- Char, -- previous char
- String) -- current input string
-
-tokens :: String -> [Token]
-tokens str = go (alexStartPos, '\n', str)
- where
- go :: (Posn, Char, String) -> [Token]
- go inp@(pos, _, str) =
- case alexScan inp 0 of
- AlexEOF -> []
- AlexError (pos, _, _) -> fail $ show pos ++ ": lexical error"
- AlexSkip inp' len -> go inp'
- AlexToken inp' len act -> act pos (take len str) : (go inp')
-
-alexGetChar :: AlexInput -> Maybe (Char,AlexInput)
-alexGetChar (p, c, []) = Nothing
-alexGetChar (p, _, (c:s)) =
- let p' = alexMove p c
- in p' `seq` Just (c, (p', c, s))
-
-alexInputPrevChar :: AlexInput -> Char
-alexInputPrevChar (p, c, s) = c
-
-alex_action_3 = tok (\p s -> PT p (TS $ share s))
-alex_action_4 = tok (\p s -> PT p (eitherResIdent (T_TMeta . share) s))
-alex_action_5 = tok (\p s -> PT p (eitherResIdent (T_CIdent . share) s))
-alex_action_6 = tok (\p s -> PT p (eitherResIdent (TV . share) s))
-alex_action_7 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s))
-alex_action_8 = tok (\p s -> PT p (TI $ share s))
-alex_action_9 = tok (\p s -> PT p (TD $ share s))
-{-# LINE 1 "GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
-{-# LINE 1 "GenericTemplate.hs" #-}
--- -----------------------------------------------------------------------------
--- ALEX TEMPLATE
---
--- This code is in the PUBLIC DOMAIN; you may copy it freely and use
--- it for any purpose whatsoever.
-
--- -----------------------------------------------------------------------------
--- INTERNALS and main scanner engine
-
-{-# LINE 35 "GenericTemplate.hs" #-}
-
-{-# LINE 45 "GenericTemplate.hs" #-}
-
-
-data AlexAddr = AlexA# Addr#
-
-#if __GLASGOW_HASKELL__ < 503
-uncheckedShiftL# = shiftL#
-#endif
-
-{-# INLINE alexIndexInt16OffAddr #-}
-alexIndexInt16OffAddr (AlexA# arr) off =
-#ifdef WORDS_BIGENDIAN
- narrow16Int# i
- where
- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
- low = int2Word# (ord# (indexCharOffAddr# arr off'))
- off' = off *# 2#
-#else
- indexInt16OffAddr# arr off
-#endif
-
-
-
-
-
-{-# INLINE alexIndexInt32OffAddr #-}
-alexIndexInt32OffAddr (AlexA# arr) off =
-#ifdef WORDS_BIGENDIAN
- narrow32Int# i
- where
- i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
- (b2 `uncheckedShiftL#` 16#) `or#`
- (b1 `uncheckedShiftL#` 8#) `or#` b0)
- b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
- b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
- b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
- b0 = int2Word# (ord# (indexCharOffAddr# arr off'))
- off' = off *# 4#
-#else
- indexInt32OffAddr# arr off
-#endif
-
-
-
-
-
-#if __GLASGOW_HASKELL__ < 503
-quickIndex arr i = arr ! i
-#else
--- GHC >= 503, unsafeAt is available from Data.Array.Base.
-quickIndex = unsafeAt
-#endif
-
-
-
-
--- -----------------------------------------------------------------------------
--- Main lexing routines
-
-data AlexReturn a
- = AlexEOF
- | AlexError !AlexInput
- | AlexSkip !AlexInput !Int
- | AlexToken !AlexInput !Int a
-
--- alexScan :: AlexInput -> StartCode -> Maybe (AlexInput,Int,act)
-alexScan input (I# (sc))
- = alexScanUser undefined input (I# (sc))
-
-alexScanUser user input (I# (sc))
- = case alex_scan_tkn user input 0# input sc AlexNone of
- (AlexNone, input') ->
- case alexGetChar input of
- Nothing ->
-
-
-
- AlexEOF
- Just _ ->
-
-
-
- AlexError input'
-
- (AlexLastSkip input len, _) ->
-
-
-
- AlexSkip input len
-
- (AlexLastAcc k input len, _) ->
-
-
-
- AlexToken input len k
-
-
--- Push the input through the DFA, remembering the most recent accepting
--- state it encountered.
-
-alex_scan_tkn user orig_input len input s last_acc =
- input `seq` -- strict in the input
- case s of
- -1# -> (last_acc, input)
- _ -> alex_scan_tkn' user orig_input len input s last_acc
-
-alex_scan_tkn' user orig_input len input s last_acc =
- let
- new_acc = check_accs (alex_accept `quickIndex` (I# (s)))
- in
- new_acc `seq`
- case alexGetChar input of
- Nothing -> (new_acc, input)
- Just (c, new_input) ->
-
-
-
- let
- base = alexIndexInt32OffAddr alex_base s
- (I# (ord_c)) = ord c
- offset = (base +# ord_c)
- check = alexIndexInt16OffAddr alex_check offset
-
- new_s = if (offset >=# 0#) && (check ==# ord_c)
- then alexIndexInt16OffAddr alex_table offset
- else alexIndexInt16OffAddr alex_deflt s
- in
- alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc
-
- where
- check_accs [] = last_acc
- check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))
- check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len))
- check_accs (AlexAccPred a pred : rest)
- | pred user orig_input (I# (len)) input
- = AlexLastAcc a input (I# (len))
- check_accs (AlexAccSkipPred pred : rest)
- | pred user orig_input (I# (len)) input
- = AlexLastSkip input (I# (len))
- check_accs (_ : rest) = check_accs rest
-
-data AlexLastAcc a
- = AlexNone
- | AlexLastAcc a !AlexInput !Int
- | AlexLastSkip !AlexInput !Int
-
-data AlexAcc a user
- = AlexAcc a
- | AlexAccSkip
- | AlexAccPred a (AlexAccPred user)
- | AlexAccSkipPred (AlexAccPred user)
-
-type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
-
--- -----------------------------------------------------------------------------
--- Predicates on a rule
-
-alexAndPred p1 p2 user in1 len in2
- = p1 user in1 len in2 && p2 user in1 len in2
-
---alexPrevCharIsPred :: Char -> AlexAccPred _
-alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input
-
---alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _
-alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input
-
---alexRightContext :: Int -> AlexAccPred _
-alexRightContext (I# (sc)) user _ _ input =
- case alex_scan_tkn user input 0# input sc AlexNone of
- (AlexNone, _) -> False
- _ -> True
- -- TODO: there's no need to find the longest
- -- match when checking the right context, just
- -- the first match will do.
-
--- used by wrappers
-iUnbox (I# (i)) = i
diff --git a/src/Transfer/Core/Lex.x b/src/Transfer/Core/Lex.x
deleted file mode 100644
index 480f366ae..000000000
--- a/src/Transfer/Core/Lex.x
+++ /dev/null
@@ -1,140 +0,0 @@
--- -*- haskell -*-
--- This Alex file was machine-generated by the BNF converter
-{
-{-# OPTIONS -fno-warn-incomplete-patterns #-}
-module Transfer.Core.Lex where
-
-
-}
-
-
-$l = [a-zA-Z\192 - \255] # [\215 \247] -- isolatin1 letter FIXME
-$c = [A-Z\192-\221] # [\215] -- capital isolatin1 letter FIXME
-$s = [a-z\222-\255] # [\247] -- small isolatin1 letter FIXME
-$d = [0-9] -- digit
-$i = [$l $d _ '] -- identifier character
-$u = [\0-\255] -- universal: any character
-
-@rsyms = -- symbols and non-identifier-like reserved words
- \; | \: | \{ | \} | \= | \( | \) | \_ | \| | \- \> | \\ | \.
-
-:-
-"--" [.]* ; -- Toss single line comments
-"{-" ([$u # \-] | \- [$u # \}])* ("-")+ "}" ;
-
-$white+ ;
-@rsyms { tok (\p s -> PT p (TS $ share s)) }
-\? $d + { tok (\p s -> PT p (eitherResIdent (T_TMeta . share) s)) }
-($l | \_)($l | $d | \_ | \')* { tok (\p s -> PT p (eitherResIdent (T_CIdent . share) s)) }
-
-$l $i* { tok (\p s -> PT p (eitherResIdent (TV . share) s)) }
-\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \"{ tok (\p s -> PT p (TL $ share $ unescapeInitTail s)) }
-
-$d+ { tok (\p s -> PT p (TI $ share s)) }
-$d+ \. $d+ (e (\-)? $d+)? { tok (\p s -> PT p (TD $ share s)) }
-
-{
-
-tok f p s = f p s
-
-share :: String -> String
-share = id
-
-data Tok =
- TS !String -- reserved words and symbols
- | TL !String -- string literals
- | TI !String -- integer literals
- | TV !String -- identifiers
- | TD !String -- double precision float literals
- | TC !String -- character literals
- | T_TMeta !String
- | T_CIdent !String
-
- deriving (Eq,Show,Ord)
-
-data Token =
- PT Posn Tok
- | Err Posn
- deriving (Eq,Show,Ord)
-
-tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l
-tokenPos (Err (Pn _ l _) :_) = "line " ++ show l
-tokenPos _ = "end of file"
-
-posLineCol (Pn _ l c) = (l,c)
-mkPosToken t@(PT p _) = (posLineCol p, prToken t)
-
-prToken t = case t of
- PT _ (TS s) -> s
- PT _ (TI s) -> s
- PT _ (TV s) -> s
- PT _ (TD s) -> s
- PT _ (TC s) -> s
- PT _ (T_TMeta s) -> s
- PT _ (T_CIdent s) -> s
-
- _ -> show t
-
-data BTree = N | B String Tok BTree BTree deriving (Show)
-
-eitherResIdent :: (String -> Tok) -> String -> Tok
-eitherResIdent tv s = treeFind resWords
- where
- treeFind N = tv s
- treeFind (B a t left right) | s < a = treeFind left
- | s > a = treeFind right
- | s == a = t
-
-resWords = b "let" (b "data" (b "case" (b "Type" N N) N) (b "in" N N)) (b "sig" (b "rec" (b "of" N N) N) (b "where" N N))
- where b s = B s (TS s)
-
-unescapeInitTail :: String -> String
-unescapeInitTail = unesc . tail where
- unesc s = case s of
- '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs
- '\\':'n':cs -> '\n' : unesc cs
- '\\':'t':cs -> '\t' : unesc cs
- '"':[] -> []
- c:cs -> c : unesc cs
- _ -> []
-
--------------------------------------------------------------------
--- Alex wrapper code.
--- A modified "posn" wrapper.
--------------------------------------------------------------------
-
-data Posn = Pn !Int !Int !Int
- deriving (Eq, Show,Ord)
-
-alexStartPos :: Posn
-alexStartPos = Pn 0 1 1
-
-alexMove :: Posn -> Char -> Posn
-alexMove (Pn a l c) '\t' = Pn (a+1) l (((c+7) `div` 8)*8+1)
-alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1
-alexMove (Pn a l c) _ = Pn (a+1) l (c+1)
-
-type AlexInput = (Posn, -- current position,
- Char, -- previous char
- String) -- current input string
-
-tokens :: String -> [Token]
-tokens str = go (alexStartPos, '\n', str)
- where
- go :: (Posn, Char, String) -> [Token]
- go inp@(pos, _, str) =
- case alexScan inp 0 of
- AlexEOF -> []
- AlexError (pos, _, _) -> fail $ show pos ++ ": lexical error"
- AlexSkip inp' len -> go inp'
- AlexToken inp' len act -> act pos (take len str) : (go inp')
-
-alexGetChar :: AlexInput -> Maybe (Char,AlexInput)
-alexGetChar (p, c, []) = Nothing
-alexGetChar (p, _, (c:s)) =
- let p' = alexMove p c
- in p' `seq` Just (c, (p', c, s))
-
-alexInputPrevChar :: AlexInput -> Char
-alexInputPrevChar (p, c, s) = c
-}
diff --git a/src/Transfer/Core/Par.hs b/src/Transfer/Core/Par.hs
deleted file mode 100644
index fec63662a..000000000
--- a/src/Transfer/Core/Par.hs
+++ /dev/null
@@ -1,1149 +0,0 @@
-{-# OPTIONS -fglasgow-exts -cpp #-}
-{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-}
-module Transfer.Core.Par where
-import Transfer.Core.Abs
-import Transfer.Core.Lex
-import Transfer.ErrM
-import Array
-#if __GLASGOW_HASKELL__ >= 503
-import GHC.Exts
-#else
-import GlaExts
-#endif
-
--- parser produced by Happy Version 1.15
-
-newtype HappyAbsSyn = HappyAbsSyn (() -> ())
-happyIn5 :: (String) -> (HappyAbsSyn )
-happyIn5 x = unsafeCoerce# x
-{-# INLINE happyIn5 #-}
-happyOut5 :: (HappyAbsSyn ) -> (String)
-happyOut5 x = unsafeCoerce# x
-{-# INLINE happyOut5 #-}
-happyIn6 :: (Integer) -> (HappyAbsSyn )
-happyIn6 x = unsafeCoerce# x
-{-# INLINE happyIn6 #-}
-happyOut6 :: (HappyAbsSyn ) -> (Integer)
-happyOut6 x = unsafeCoerce# x
-{-# INLINE happyOut6 #-}
-happyIn7 :: (Double) -> (HappyAbsSyn )
-happyIn7 x = unsafeCoerce# x
-{-# INLINE happyIn7 #-}
-happyOut7 :: (HappyAbsSyn ) -> (Double)
-happyOut7 x = unsafeCoerce# x
-{-# INLINE happyOut7 #-}
-happyIn8 :: (TMeta) -> (HappyAbsSyn )
-happyIn8 x = unsafeCoerce# x
-{-# INLINE happyIn8 #-}
-happyOut8 :: (HappyAbsSyn ) -> (TMeta)
-happyOut8 x = unsafeCoerce# x
-{-# INLINE happyOut8 #-}
-happyIn9 :: (CIdent) -> (HappyAbsSyn )
-happyIn9 x = unsafeCoerce# x
-{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn ) -> (CIdent)
-happyOut9 x = unsafeCoerce# x
-{-# INLINE happyOut9 #-}
-happyIn10 :: (Module) -> (HappyAbsSyn )
-happyIn10 x = unsafeCoerce# x
-{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn ) -> (Module)
-happyOut10 x = unsafeCoerce# x
-{-# INLINE happyOut10 #-}
-happyIn11 :: ([Decl]) -> (HappyAbsSyn )
-happyIn11 x = unsafeCoerce# x
-{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn ) -> ([Decl])
-happyOut11 x = unsafeCoerce# x
-{-# INLINE happyOut11 #-}
-happyIn12 :: (Decl) -> (HappyAbsSyn )
-happyIn12 x = unsafeCoerce# x
-{-# INLINE happyIn12 #-}
-happyOut12 :: (HappyAbsSyn ) -> (Decl)
-happyOut12 x = unsafeCoerce# x
-{-# INLINE happyOut12 #-}
-happyIn13 :: (ConsDecl) -> (HappyAbsSyn )
-happyIn13 x = unsafeCoerce# x
-{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn ) -> (ConsDecl)
-happyOut13 x = unsafeCoerce# x
-{-# INLINE happyOut13 #-}
-happyIn14 :: ([ConsDecl]) -> (HappyAbsSyn )
-happyIn14 x = unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn ) -> ([ConsDecl])
-happyOut14 x = unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: ([Pattern]) -> (HappyAbsSyn )
-happyIn15 x = unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn ) -> ([Pattern])
-happyOut15 x = unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: (Pattern) -> (HappyAbsSyn )
-happyIn16 x = unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn ) -> (Pattern)
-happyOut16 x = unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (FieldPattern) -> (HappyAbsSyn )
-happyIn17 x = unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn ) -> (FieldPattern)
-happyOut17 x = unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: ([FieldPattern]) -> (HappyAbsSyn )
-happyIn18 x = unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn ) -> ([FieldPattern])
-happyOut18 x = unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: (PatternVariable) -> (HappyAbsSyn )
-happyIn19 x = unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn ) -> (PatternVariable)
-happyOut19 x = unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: (Exp) -> (HappyAbsSyn )
-happyIn20 x = unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn ) -> (Exp)
-happyOut20 x = unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: (LetDef) -> (HappyAbsSyn )
-happyIn21 x = unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn ) -> (LetDef)
-happyOut21 x = unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: ([LetDef]) -> (HappyAbsSyn )
-happyIn22 x = unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn ) -> ([LetDef])
-happyOut22 x = unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: (Case) -> (HappyAbsSyn )
-happyIn23 x = unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn ) -> (Case)
-happyOut23 x = unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyIn24 :: ([Case]) -> (HappyAbsSyn )
-happyIn24 x = unsafeCoerce# x
-{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn ) -> ([Case])
-happyOut24 x = unsafeCoerce# x
-{-# INLINE happyOut24 #-}
-happyIn25 :: (Exp) -> (HappyAbsSyn )
-happyIn25 x = unsafeCoerce# x
-{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn ) -> (Exp)
-happyOut25 x = unsafeCoerce# x
-{-# INLINE happyOut25 #-}
-happyIn26 :: (Exp) -> (HappyAbsSyn )
-happyIn26 x = unsafeCoerce# x
-{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn ) -> (Exp)
-happyOut26 x = unsafeCoerce# x
-{-# INLINE happyOut26 #-}
-happyIn27 :: (Exp) -> (HappyAbsSyn )
-happyIn27 x = unsafeCoerce# x
-{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn ) -> (Exp)
-happyOut27 x = unsafeCoerce# x
-{-# INLINE happyOut27 #-}
-happyIn28 :: (Exp) -> (HappyAbsSyn )
-happyIn28 x = unsafeCoerce# x
-{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn ) -> (Exp)
-happyOut28 x = unsafeCoerce# x
-{-# INLINE happyOut28 #-}
-happyIn29 :: (FieldType) -> (HappyAbsSyn )
-happyIn29 x = unsafeCoerce# x
-{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn ) -> (FieldType)
-happyOut29 x = unsafeCoerce# x
-{-# INLINE happyOut29 #-}
-happyIn30 :: ([FieldType]) -> (HappyAbsSyn )
-happyIn30 x = unsafeCoerce# x
-{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn ) -> ([FieldType])
-happyOut30 x = unsafeCoerce# x
-{-# INLINE happyOut30 #-}
-happyIn31 :: (FieldValue) -> (HappyAbsSyn )
-happyIn31 x = unsafeCoerce# x
-{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn ) -> (FieldValue)
-happyOut31 x = unsafeCoerce# x
-{-# INLINE happyOut31 #-}
-happyIn32 :: ([FieldValue]) -> (HappyAbsSyn )
-happyIn32 x = unsafeCoerce# x
-{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn ) -> ([FieldValue])
-happyOut32 x = unsafeCoerce# x
-{-# INLINE happyOut32 #-}
-happyIn33 :: (Exp) -> (HappyAbsSyn )
-happyIn33 x = unsafeCoerce# x
-{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn ) -> (Exp)
-happyOut33 x = unsafeCoerce# x
-{-# INLINE happyOut33 #-}
-happyInTok :: Token -> (HappyAbsSyn )
-happyInTok x = unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> Token
-happyOutTok x = unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x15\x00\x5f\x01\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x7c\x01\xde\x00\x00\x00\x00\x00\x4a\x01\x09\x00\x00\x00\x5f\x01\xdf\x00\xd7\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\xbc\x00\x00\x00\xd1\x00\xc7\x00\xcf\x00\x15\x00\x5f\x01\x5f\x01\xc6\x00\xc6\x00\xc6\x00\xbe\x00\x00\x00\xc5\x00\x00\x00\x74\x01\xcb\x00\xc0\x00\xac\x00\xb9\x00\x5f\x01\x00\x00\x00\x00\x5f\x01\x5f\x01\xc1\x00\xb8\x00\xbb\x00\xb7\x00\xb5\x00\xb3\x00\xaf\x00\xb0\x00\xa9\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x94\x00\x00\x00\x86\x00\x5f\x01\x00\x00\x86\x00\x5f\x01\x8f\x00\x84\x00\x5f\x01\x96\x01\x00\x00\x90\x00\x8b\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x8c\x00\x8a\x00\x7a\x00\x89\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x69\x00\x00\x00\x69\x00\x00\x00\x00\x00\x96\x01\x5f\x01\x5f\x01\x00\x00\x71\x00\x00\x00\x91\x01\x75\x00\x78\x00\x74\x00\x6d\x00\x65\x00\x5c\x00\x00\x00\x43\x00\x5f\x01\x00\x00\x43\x00\x96\x01\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x4e\x00\x31\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x01\x00\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x6a\x00\x0b\x01\xee\x00\x28\x00\x44\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\xe5\x00\x00\x00\x00\x00\xc8\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x02\x00\x99\x00\x00\x00\x1e\x00\x7c\x00\x00\x00\x03\x00\x73\x00\xb4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x3e\x00\xff\xff\x00\x00\xae\x01\x4d\x00\x30\x00\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x27\x00\x00\x00\x21\x00\x3e\x01\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xcc\xff\x00\x00\xde\xff\xbd\xff\xd1\xff\xcf\xff\xd3\xff\x00\x00\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\xf9\xff\x00\x00\x00\x00\xf8\xff\xf6\xff\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\xc4\xff\xc0\xff\xdc\xff\x00\x00\xe2\xff\x00\x00\xe1\xff\xe2\xff\x00\x00\x00\x00\x00\x00\xd2\xff\x00\x00\xd0\xff\xc6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\x00\x00\xbf\xff\x00\x00\x00\x00\xc3\xff\x00\x00\xf2\xff\xf3\xff\xf5\xff\x00\x00\x00\x00\xce\xff\xc4\xff\x00\x00\xcd\xff\xc0\xff\x00\x00\x00\x00\xdc\xff\x00\x00\xd8\xff\xd5\xff\x00\x00\x00\x00\xe8\xff\xe7\xff\x00\x00\xea\xff\xd7\xff\x00\x00\x00\x00\x00\x00\xdd\xff\xda\xff\x00\x00\xc1\xff\xbe\xff\xc5\xff\xc2\xff\x00\x00\xf0\xff\xe0\xff\xe5\xff\xed\xff\xdf\xff\xd8\xff\x00\x00\x00\x00\xd4\xff\x00\x00\xd6\xff\x00\x00\x00\x00\xe4\xff\x00\x00\x00\x00\xef\xff\x00\x00\xf4\xff\xf0\xff\x00\x00\xe9\xff\xe5\xff\x00\x00\xec\xff\xeb\xff\x00\x00\xd9\xff\xe6\xff\xe3\xff\xf1\xff\xee\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x04\x00\x04\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0e\x00\x0f\x00\x08\x00\x0e\x00\x10\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\x18\x00\x19\x00\x04\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x04\x00\x1a\x00\x0f\x00\x04\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x0c\x00\x0d\x00\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x0f\x00\x02\x00\x1a\x00\x1b\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\x18\x00\x19\x00\x04\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x04\x00\x04\x00\x0c\x00\x0d\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x0f\x00\x1a\x00\x1a\x00\x1b\x00\x04\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\x01\x00\x10\x00\x11\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x04\x00\x02\x00\x06\x00\x07\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x01\x00\x05\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x0f\x00\x1a\x00\x03\x00\x08\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\x03\x00\x01\x00\x04\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x1a\x00\x0a\x00\x09\x00\x07\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x10\x00\x1a\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x0f\x00\x15\x00\x01\x00\x08\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\x02\x00\x04\x00\x01\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x05\x00\x04\x00\x01\x00\x05\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x0c\x00\x1a\x00\x07\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x0f\x00\x0a\x00\x12\x00\x02\x00\x01\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\x1c\x00\x03\x00\x03\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x1a\x00\x1a\x00\x03\x00\x16\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\xff\xff\x1c\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x00\x00\x01\x00\x0f\x00\xff\xff\x04\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x0b\x00\xff\xff\xff\xff\x0e\x00\x1c\x00\x16\x00\x17\x00\x06\x00\xff\xff\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\xff\xff\xff\xff\x11\x00\xff\xff\x13\x00\x14\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\xff\xff\xff\xff\x11\x00\xff\xff\x13\x00\x14\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x0d\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x13\x00\x14\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x06\x00\x07\x00\x08\x00\xff\xff\xff\xff\x06\x00\xff\xff\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\x17\x00\x13\x00\xff\xff\x1a\x00\x16\x00\x17\x00\x00\x00\x01\x00\x1a\x00\xff\xff\x04\x00\xff\xff\x00\x00\x01\x00\xff\xff\xff\xff\x04\x00\x0b\x00\x00\x00\x01\x00\x0e\x00\xff\xff\x04\x00\x0b\x00\x12\x00\x13\x00\x0e\x00\xff\xff\xff\xff\x0b\x00\x12\x00\x13\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x2a\x00\x3b\x00\x35\x00\x27\x00\x6b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x2b\x00\x2c\x00\x2a\x00\x28\x00\x36\x00\x59\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7b\x00\x3c\x00\x5e\x00\x63\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x38\x00\x1a\x00\x1f\x00\x6c\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x3b\x00\x6d\x00\x7d\x00\x1a\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x30\x00\x7e\x00\x22\x00\x39\x00\x5c\x00\x23\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x68\x00\x3c\x00\x3d\x00\x6c\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x38\x00\x1f\x00\x6d\x00\x6e\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x35\x00\x69\x00\x1a\x00\x39\x00\x3a\x00\x73\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x61\x00\x74\x00\x36\x00\x37\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x1a\x00\x75\x00\x40\x00\x1d\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x76\x00\x77\x00\x78\x00\x7b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x6f\x00\x58\x00\x1a\x00\x61\x00\x70\x00\x7f\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5b\x00\x63\x00\x66\x00\x65\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x1a\x00\x68\x00\x67\x00\x50\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x1a\x00\x5b\x00\x1a\x00\x44\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x6f\x00\x5d\x00\x60\x00\x45\x00\x70\x00\x71\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x42\x00\x46\x00\x47\x00\x48\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x4d\x00\x2e\x00\x1a\x00\x32\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x33\x00\x4d\x00\x34\x00\x35\x00\x42\x00\x21\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4e\x00\xff\xff\x24\x00\x25\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x1a\x00\x1a\x00\x26\x00\x04\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x2e\x00\x00\x00\xff\xff\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x26\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x50\x00\x51\x00\x09\x00\x00\x00\x27\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7c\x00\x00\x00\x00\x00\x53\x00\x0e\x00\x2e\x00\x0d\x00\x10\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x00\x00\x14\x00\x00\x00\x15\x00\x16\x00\x00\x00\x04\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x00\x00\x14\x00\x00\x00\x15\x00\x16\x00\x00\x00\x04\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xcc\xff\xcc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\xcc\xff\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\xcc\xff\x12\x00\xcc\xff\xcc\xff\xcc\xff\xcc\xff\xcc\xff\x15\x00\x16\x00\x00\x00\x04\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x57\x00\x7a\x00\x2a\x00\x00\x00\x00\x00\x57\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x04\x00\x17\x00\x58\x00\x00\x00\x1a\x00\x04\x00\x17\x00\x50\x00\x51\x00\x1a\x00\x00\x00\x27\x00\x00\x00\x50\x00\x51\x00\x00\x00\x00\x00\x27\x00\x52\x00\x50\x00\x51\x00\x53\x00\x00\x00\x27\x00\x52\x00\x54\x00\x6a\x00\x53\x00\x00\x00\x00\x00\x78\x00\x54\x00\x55\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyReduceArr = array (2, 66) [
- (2 , happyReduce_2),
- (3 , happyReduce_3),
- (4 , happyReduce_4),
- (5 , happyReduce_5),
- (6 , happyReduce_6),
- (7 , happyReduce_7),
- (8 , happyReduce_8),
- (9 , happyReduce_9),
- (10 , happyReduce_10),
- (11 , happyReduce_11),
- (12 , happyReduce_12),
- (13 , happyReduce_13),
- (14 , happyReduce_14),
- (15 , happyReduce_15),
- (16 , happyReduce_16),
- (17 , happyReduce_17),
- (18 , happyReduce_18),
- (19 , happyReduce_19),
- (20 , happyReduce_20),
- (21 , happyReduce_21),
- (22 , happyReduce_22),
- (23 , happyReduce_23),
- (24 , happyReduce_24),
- (25 , happyReduce_25),
- (26 , happyReduce_26),
- (27 , happyReduce_27),
- (28 , happyReduce_28),
- (29 , happyReduce_29),
- (30 , happyReduce_30),
- (31 , happyReduce_31),
- (32 , happyReduce_32),
- (33 , happyReduce_33),
- (34 , happyReduce_34),
- (35 , happyReduce_35),
- (36 , happyReduce_36),
- (37 , happyReduce_37),
- (38 , happyReduce_38),
- (39 , happyReduce_39),
- (40 , happyReduce_40),
- (41 , happyReduce_41),
- (42 , happyReduce_42),
- (43 , happyReduce_43),
- (44 , happyReduce_44),
- (45 , happyReduce_45),
- (46 , happyReduce_46),
- (47 , happyReduce_47),
- (48 , happyReduce_48),
- (49 , happyReduce_49),
- (50 , happyReduce_50),
- (51 , happyReduce_51),
- (52 , happyReduce_52),
- (53 , happyReduce_53),
- (54 , happyReduce_54),
- (55 , happyReduce_55),
- (56 , happyReduce_56),
- (57 , happyReduce_57),
- (58 , happyReduce_58),
- (59 , happyReduce_59),
- (60 , happyReduce_60),
- (61 , happyReduce_61),
- (62 , happyReduce_62),
- (63 , happyReduce_63),
- (64 , happyReduce_64),
- (65 , happyReduce_65),
- (66 , happyReduce_66)
- ]
-
-happy_n_terms = 29 :: Int
-happy_n_nonterms = 29 :: Int
-
-happyReduce_2 = happySpecReduce_1 0# happyReduction_2
-happyReduction_2 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) ->
- happyIn5
- (happy_var_1
- )}
-
-happyReduce_3 = happySpecReduce_1 1# happyReduction_3
-happyReduction_3 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) ->
- happyIn6
- ((read happy_var_1) :: Integer
- )}
-
-happyReduce_4 = happySpecReduce_1 2# happyReduction_4
-happyReduction_4 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) ->
- happyIn7
- ((read happy_var_1) :: Double
- )}
-
-happyReduce_5 = happySpecReduce_1 3# happyReduction_5
-happyReduction_5 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (T_TMeta happy_var_1)) ->
- happyIn8
- (TMeta (happy_var_1)
- )}
-
-happyReduce_6 = happySpecReduce_1 4# happyReduction_6
-happyReduction_6 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (T_CIdent happy_var_1)) ->
- happyIn9
- (CIdent (happy_var_1)
- )}
-
-happyReduce_7 = happySpecReduce_1 5# happyReduction_7
-happyReduction_7 happy_x_1
- = case happyOut11 happy_x_1 of { happy_var_1 ->
- happyIn10
- (Module happy_var_1
- )}
-
-happyReduce_8 = happySpecReduce_0 6# happyReduction_8
-happyReduction_8 = happyIn11
- ([]
- )
-
-happyReduce_9 = happySpecReduce_1 6# happyReduction_9
-happyReduction_9 happy_x_1
- = case happyOut12 happy_x_1 of { happy_var_1 ->
- happyIn11
- ((:[]) happy_var_1
- )}
-
-happyReduce_10 = happySpecReduce_3 6# happyReduction_10
-happyReduction_10 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut12 happy_x_1 of { happy_var_1 ->
- case happyOut11 happy_x_3 of { happy_var_3 ->
- happyIn11
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_11 = happyReduce 8# 7# happyReduction_11
-happyReduction_11 (happy_x_8 `HappyStk`
- happy_x_7 `HappyStk`
- happy_x_6 `HappyStk`
- happy_x_5 `HappyStk`
- happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut9 happy_x_2 of { happy_var_2 ->
- case happyOut20 happy_x_4 of { happy_var_4 ->
- case happyOut14 happy_x_7 of { happy_var_7 ->
- happyIn12
- (DataDecl happy_var_2 happy_var_4 happy_var_7
- ) `HappyStk` happyRest}}}
-
-happyReduce_12 = happySpecReduce_3 7# happyReduction_12
-happyReduction_12 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- happyIn12
- (TypeDecl happy_var_1 happy_var_3
- )}}
-
-happyReduce_13 = happySpecReduce_3 7# happyReduction_13
-happyReduction_13 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- happyIn12
- (ValueDecl happy_var_1 happy_var_3
- )}}
-
-happyReduce_14 = happySpecReduce_3 8# happyReduction_14
-happyReduction_14 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- happyIn13
- (ConsDecl happy_var_1 happy_var_3
- )}}
-
-happyReduce_15 = happySpecReduce_0 9# happyReduction_15
-happyReduction_15 = happyIn14
- ([]
- )
-
-happyReduce_16 = happySpecReduce_1 9# happyReduction_16
-happyReduction_16 happy_x_1
- = case happyOut13 happy_x_1 of { happy_var_1 ->
- happyIn14
- ((:[]) happy_var_1
- )}
-
-happyReduce_17 = happySpecReduce_3 9# happyReduction_17
-happyReduction_17 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut13 happy_x_1 of { happy_var_1 ->
- case happyOut14 happy_x_3 of { happy_var_3 ->
- happyIn14
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_18 = happySpecReduce_0 10# happyReduction_18
-happyReduction_18 = happyIn15
- ([]
- )
-
-happyReduce_19 = happySpecReduce_2 10# happyReduction_19
-happyReduction_19 happy_x_2
- happy_x_1
- = case happyOut15 happy_x_1 of { happy_var_1 ->
- case happyOut16 happy_x_2 of { happy_var_2 ->
- happyIn15
- (flip (:) happy_var_1 happy_var_2
- )}}
-
-happyReduce_20 = happyReduce 4# 11# happyReduction_20
-happyReduction_20 (happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut9 happy_x_2 of { happy_var_2 ->
- case happyOut15 happy_x_3 of { happy_var_3 ->
- happyIn16
- (PCons happy_var_2 (reverse happy_var_3)
- ) `HappyStk` happyRest}}
-
-happyReduce_21 = happySpecReduce_1 11# happyReduction_21
-happyReduction_21 happy_x_1
- = case happyOut19 happy_x_1 of { happy_var_1 ->
- happyIn16
- (PVar happy_var_1
- )}
-
-happyReduce_22 = happyReduce 4# 11# happyReduction_22
-happyReduction_22 (happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut18 happy_x_3 of { happy_var_3 ->
- happyIn16
- (PRec happy_var_3
- ) `HappyStk` happyRest}
-
-happyReduce_23 = happySpecReduce_1 11# happyReduction_23
-happyReduction_23 happy_x_1
- = case happyOut5 happy_x_1 of { happy_var_1 ->
- happyIn16
- (PStr happy_var_1
- )}
-
-happyReduce_24 = happySpecReduce_1 11# happyReduction_24
-happyReduction_24 happy_x_1
- = case happyOut6 happy_x_1 of { happy_var_1 ->
- happyIn16
- (PInt happy_var_1
- )}
-
-happyReduce_25 = happySpecReduce_3 12# happyReduction_25
-happyReduction_25 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut16 happy_x_3 of { happy_var_3 ->
- happyIn17
- (FieldPattern happy_var_1 happy_var_3
- )}}
-
-happyReduce_26 = happySpecReduce_0 13# happyReduction_26
-happyReduction_26 = happyIn18
- ([]
- )
-
-happyReduce_27 = happySpecReduce_1 13# happyReduction_27
-happyReduction_27 happy_x_1
- = case happyOut17 happy_x_1 of { happy_var_1 ->
- happyIn18
- ((:[]) happy_var_1
- )}
-
-happyReduce_28 = happySpecReduce_3 13# happyReduction_28
-happyReduction_28 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut17 happy_x_1 of { happy_var_1 ->
- case happyOut18 happy_x_3 of { happy_var_3 ->
- happyIn18
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_29 = happySpecReduce_1 14# happyReduction_29
-happyReduction_29 happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- happyIn19
- (PVVar happy_var_1
- )}
-
-happyReduce_30 = happySpecReduce_1 14# happyReduction_30
-happyReduction_30 happy_x_1
- = happyIn19
- (PVWild
- )
-
-happyReduce_31 = happyReduce 6# 15# happyReduction_31
-happyReduction_31 (happy_x_6 `HappyStk`
- happy_x_5 `HappyStk`
- happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut22 happy_x_3 of { happy_var_3 ->
- case happyOut20 happy_x_6 of { happy_var_6 ->
- happyIn20
- (ELet happy_var_3 happy_var_6
- ) `HappyStk` happyRest}}
-
-happyReduce_32 = happyReduce 6# 15# happyReduction_32
-happyReduction_32 (happy_x_6 `HappyStk`
- happy_x_5 `HappyStk`
- happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut20 happy_x_2 of { happy_var_2 ->
- case happyOut24 happy_x_5 of { happy_var_5 ->
- happyIn20
- (ECase happy_var_2 happy_var_5
- ) `HappyStk` happyRest}}
-
-happyReduce_33 = happySpecReduce_1 15# happyReduction_33
-happyReduction_33 happy_x_1
- = case happyOut25 happy_x_1 of { happy_var_1 ->
- happyIn20
- (happy_var_1
- )}
-
-happyReduce_34 = happySpecReduce_3 16# happyReduction_34
-happyReduction_34 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- happyIn21
- (LetDef happy_var_1 happy_var_3
- )}}
-
-happyReduce_35 = happySpecReduce_0 17# happyReduction_35
-happyReduction_35 = happyIn22
- ([]
- )
-
-happyReduce_36 = happySpecReduce_1 17# happyReduction_36
-happyReduction_36 happy_x_1
- = case happyOut21 happy_x_1 of { happy_var_1 ->
- happyIn22
- ((:[]) happy_var_1
- )}
-
-happyReduce_37 = happySpecReduce_3 17# happyReduction_37
-happyReduction_37 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut21 happy_x_1 of { happy_var_1 ->
- case happyOut22 happy_x_3 of { happy_var_3 ->
- happyIn22
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_38 = happyReduce 5# 18# happyReduction_38
-happyReduction_38 (happy_x_5 `HappyStk`
- happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut16 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- case happyOut20 happy_x_5 of { happy_var_5 ->
- happyIn23
- (Case happy_var_1 happy_var_3 happy_var_5
- ) `HappyStk` happyRest}}}
-
-happyReduce_39 = happySpecReduce_0 19# happyReduction_39
-happyReduction_39 = happyIn24
- ([]
- )
-
-happyReduce_40 = happySpecReduce_1 19# happyReduction_40
-happyReduction_40 happy_x_1
- = case happyOut23 happy_x_1 of { happy_var_1 ->
- happyIn24
- ((:[]) happy_var_1
- )}
-
-happyReduce_41 = happySpecReduce_3 19# happyReduction_41
-happyReduction_41 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut23 happy_x_1 of { happy_var_1 ->
- case happyOut24 happy_x_3 of { happy_var_3 ->
- happyIn24
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_42 = happyReduce 4# 20# happyReduction_42
-happyReduction_42 (happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut19 happy_x_2 of { happy_var_2 ->
- case happyOut20 happy_x_4 of { happy_var_4 ->
- happyIn25
- (EAbs happy_var_2 happy_var_4
- ) `HappyStk` happyRest}}
-
-happyReduce_43 = happyReduce 7# 20# happyReduction_43
-happyReduction_43 (happy_x_7 `HappyStk`
- happy_x_6 `HappyStk`
- happy_x_5 `HappyStk`
- happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut19 happy_x_2 of { happy_var_2 ->
- case happyOut20 happy_x_4 of { happy_var_4 ->
- case happyOut20 happy_x_7 of { happy_var_7 ->
- happyIn25
- (EPi happy_var_2 happy_var_4 happy_var_7
- ) `HappyStk` happyRest}}}
-
-happyReduce_44 = happySpecReduce_1 20# happyReduction_44
-happyReduction_44 happy_x_1
- = case happyOut33 happy_x_1 of { happy_var_1 ->
- happyIn25
- (happy_var_1
- )}
-
-happyReduce_45 = happySpecReduce_2 21# happyReduction_45
-happyReduction_45 happy_x_2
- happy_x_1
- = case happyOut26 happy_x_1 of { happy_var_1 ->
- case happyOut27 happy_x_2 of { happy_var_2 ->
- happyIn26
- (EApp happy_var_1 happy_var_2
- )}}
-
-happyReduce_46 = happySpecReduce_1 21# happyReduction_46
-happyReduction_46 happy_x_1
- = case happyOut27 happy_x_1 of { happy_var_1 ->
- happyIn26
- (happy_var_1
- )}
-
-happyReduce_47 = happySpecReduce_3 22# happyReduction_47
-happyReduction_47 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut27 happy_x_1 of { happy_var_1 ->
- case happyOut9 happy_x_3 of { happy_var_3 ->
- happyIn27
- (EProj happy_var_1 happy_var_3
- )}}
-
-happyReduce_48 = happySpecReduce_1 22# happyReduction_48
-happyReduction_48 happy_x_1
- = case happyOut28 happy_x_1 of { happy_var_1 ->
- happyIn27
- (happy_var_1
- )}
-
-happyReduce_49 = happyReduce 4# 23# happyReduction_49
-happyReduction_49 (happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut30 happy_x_3 of { happy_var_3 ->
- happyIn28
- (ERecType happy_var_3
- ) `HappyStk` happyRest}
-
-happyReduce_50 = happyReduce 4# 23# happyReduction_50
-happyReduction_50 (happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut32 happy_x_3 of { happy_var_3 ->
- happyIn28
- (ERec happy_var_3
- ) `HappyStk` happyRest}
-
-happyReduce_51 = happySpecReduce_1 23# happyReduction_51
-happyReduction_51 happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- happyIn28
- (EVar happy_var_1
- )}
-
-happyReduce_52 = happySpecReduce_1 23# happyReduction_52
-happyReduction_52 happy_x_1
- = happyIn28
- (EType
- )
-
-happyReduce_53 = happySpecReduce_1 23# happyReduction_53
-happyReduction_53 happy_x_1
- = case happyOut5 happy_x_1 of { happy_var_1 ->
- happyIn28
- (EStr happy_var_1
- )}
-
-happyReduce_54 = happySpecReduce_1 23# happyReduction_54
-happyReduction_54 happy_x_1
- = case happyOut6 happy_x_1 of { happy_var_1 ->
- happyIn28
- (EInteger happy_var_1
- )}
-
-happyReduce_55 = happySpecReduce_1 23# happyReduction_55
-happyReduction_55 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
- happyIn28
- (EDouble happy_var_1
- )}
-
-happyReduce_56 = happySpecReduce_1 23# happyReduction_56
-happyReduction_56 happy_x_1
- = case happyOut8 happy_x_1 of { happy_var_1 ->
- happyIn28
- (EMeta happy_var_1
- )}
-
-happyReduce_57 = happySpecReduce_3 23# happyReduction_57
-happyReduction_57 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut20 happy_x_2 of { happy_var_2 ->
- happyIn28
- (happy_var_2
- )}
-
-happyReduce_58 = happySpecReduce_3 24# happyReduction_58
-happyReduction_58 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- happyIn29
- (FieldType happy_var_1 happy_var_3
- )}}
-
-happyReduce_59 = happySpecReduce_0 25# happyReduction_59
-happyReduction_59 = happyIn30
- ([]
- )
-
-happyReduce_60 = happySpecReduce_1 25# happyReduction_60
-happyReduction_60 happy_x_1
- = case happyOut29 happy_x_1 of { happy_var_1 ->
- happyIn30
- ((:[]) happy_var_1
- )}
-
-happyReduce_61 = happySpecReduce_3 25# happyReduction_61
-happyReduction_61 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut29 happy_x_1 of { happy_var_1 ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
- happyIn30
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_62 = happySpecReduce_3 26# happyReduction_62
-happyReduction_62 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
- case happyOut20 happy_x_3 of { happy_var_3 ->
- happyIn31
- (FieldValue happy_var_1 happy_var_3
- )}}
-
-happyReduce_63 = happySpecReduce_0 27# happyReduction_63
-happyReduction_63 = happyIn32
- ([]
- )
-
-happyReduce_64 = happySpecReduce_1 27# happyReduction_64
-happyReduction_64 happy_x_1
- = case happyOut31 happy_x_1 of { happy_var_1 ->
- happyIn32
- ((:[]) happy_var_1
- )}
-
-happyReduce_65 = happySpecReduce_3 27# happyReduction_65
-happyReduction_65 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut31 happy_x_1 of { happy_var_1 ->
- case happyOut32 happy_x_3 of { happy_var_3 ->
- happyIn32
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_66 = happySpecReduce_1 28# happyReduction_66
-happyReduction_66 happy_x_1
- = case happyOut26 happy_x_1 of { happy_var_1 ->
- happyIn33
- (happy_var_1
- )}
-
-happyNewToken action sts stk [] =
- happyDoAction 28# (error "reading EOF!") action sts stk []
-
-happyNewToken action sts stk (tk:tks) =
- let cont i = happyDoAction i tk action sts stk tks in
- case tk of {
- PT _ (TS ";") -> cont 1#;
- PT _ (TS ":") -> cont 2#;
- PT _ (TS "{") -> cont 3#;
- PT _ (TS "}") -> cont 4#;
- PT _ (TS "=") -> cont 5#;
- PT _ (TS "(") -> cont 6#;
- PT _ (TS ")") -> cont 7#;
- PT _ (TS "_") -> cont 8#;
- PT _ (TS "|") -> cont 9#;
- PT _ (TS "->") -> cont 10#;
- PT _ (TS "\\") -> cont 11#;
- PT _ (TS ".") -> cont 12#;
- PT _ (TS "Type") -> cont 13#;
- PT _ (TS "case") -> cont 14#;
- PT _ (TS "data") -> cont 15#;
- PT _ (TS "in") -> cont 16#;
- PT _ (TS "let") -> cont 17#;
- PT _ (TS "of") -> cont 18#;
- PT _ (TS "rec") -> cont 19#;
- PT _ (TS "sig") -> cont 20#;
- PT _ (TS "where") -> cont 21#;
- PT _ (TL happy_dollar_dollar) -> cont 22#;
- PT _ (TI happy_dollar_dollar) -> cont 23#;
- PT _ (TD happy_dollar_dollar) -> cont 24#;
- PT _ (T_TMeta happy_dollar_dollar) -> cont 25#;
- PT _ (T_CIdent happy_dollar_dollar) -> cont 26#;
- _ -> cont 27#;
- _ -> happyError' (tk:tks)
- }
-
-happyError_ tk tks = happyError' (tk:tks)
-
-happyThen :: () => Err a -> (a -> Err b) -> Err b
-happyThen = (thenM)
-happyReturn :: () => a -> Err a
-happyReturn = (returnM)
-happyThen1 m k tks = (thenM) m (\a -> k a tks)
-happyReturn1 :: () => a -> b -> Err a
-happyReturn1 = \a tks -> (returnM) a
-happyError' :: () => [Token] -> Err a
-happyError' = happyError
-
-pModule tks = happySomeParser where
- happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut10 x))
-
-pExp tks = happySomeParser where
- happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut20 x))
-
-happySeq = happyDontSeq
-
-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
-{-# LINE 1 "GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
-{-# LINE 1 "GenericTemplate.hs" #-}
--- $Id$
-
-{-# LINE 28 "GenericTemplate.hs" #-}
-
-
-data Happy_IntList = HappyCons Int# Happy_IntList
-
-
-
-
-
-{-# LINE 49 "GenericTemplate.hs" #-}
-
-{-# LINE 59 "GenericTemplate.hs" #-}
-
-{-# LINE 68 "GenericTemplate.hs" #-}
-
-infixr 9 `HappyStk`
-data HappyStk a = HappyStk a (HappyStk a)
-
------------------------------------------------------------------------------
--- starting the parse
-
-happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
-
------------------------------------------------------------------------------
--- Accepting the parse
-
--- If the current token is 0#, it means we've just accepted a partial
--- parse (a %partial parser). We must ignore the saved token on the top of
--- the stack in this case.
-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
- happyReturn1 ans
-happyAccept j tk st sts (HappyStk ans _) =
- (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
-
------------------------------------------------------------------------------
--- Arrays only: do the next action
-
-
-
-happyDoAction i tk st
- = {- nothing -}
-
-
- case action of
- 0# -> {- nothing -}
- happyFail i tk st
- -1# -> {- nothing -}
- happyAccept i tk st
- n | (n <# (0# :: Int#)) -> {- nothing -}
-
- (happyReduceArr ! rule) i tk st
- where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))
- n -> {- nothing -}
-
-
- happyShift new_state i tk st
- where new_state = (n -# (1# :: Int#))
- where off = indexShortOffAddr happyActOffsets st
- off_i = (off +# i)
- check = if (off_i >=# (0# :: Int#))
- then (indexShortOffAddr happyCheck off_i ==# i)
- else False
- action | check = indexShortOffAddr happyTable off_i
- | otherwise = indexShortOffAddr happyDefActions st
-
-{-# LINE 127 "GenericTemplate.hs" #-}
-
-
-indexShortOffAddr (HappyA# arr) off =
-#if __GLASGOW_HASKELL__ > 500
- narrow16Int# i
-#elif __GLASGOW_HASKELL__ == 500
- intToInt16# i
-#else
- (i `iShiftL#` 16#) `iShiftRA#` 16#
-#endif
- where
-#if __GLASGOW_HASKELL__ >= 503
- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
-#else
- i = word2Int# ((high `shiftL#` 8#) `or#` low)
-#endif
- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
- low = int2Word# (ord# (indexCharOffAddr# arr off'))
- off' = off *# 2#
-
-
-
-
-
-data HappyAddr = HappyA# Addr#
-
-
-
-
------------------------------------------------------------------------------
--- HappyState data type (not arrays)
-
-{-# LINE 170 "GenericTemplate.hs" #-}
-
------------------------------------------------------------------------------
--- Shifting a token
-
-happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
- let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in
--- trace "shifting the error token" $
- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
-
-happyShift new_state i tk st sts stk =
- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
-
--- happyReduce is specialised for the common cases.
-
-happySpecReduce_0 i fn 0# tk st sts stk
- = happyFail 0# tk st sts stk
-happySpecReduce_0 nt fn j tk st@((action)) sts stk
- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
-
-happySpecReduce_1 i fn 0# tk st sts stk
- = happyFail 0# tk st sts stk
-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
- = let r = fn v1 in
- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_2 i fn 0# tk st sts stk
- = happyFail 0# tk st sts stk
-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
- = let r = fn v1 v2 in
- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_3 i fn 0# tk st sts stk
- = happyFail 0# tk st sts stk
-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
- = let r = fn v1 v2 v3 in
- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happyReduce k i fn 0# tk st sts stk
- = happyFail 0# tk st sts stk
-happyReduce k nt fn j tk st sts stk
- = case happyDrop (k -# (1# :: Int#)) sts of
- sts1@((HappyCons (st1@(action)) (_))) ->
- let r = fn stk in -- it doesn't hurt to always seq here...
- happyDoSeq r (happyGoto nt j tk st1 sts1 r)
-
-happyMonadReduce k nt fn 0# tk st sts stk
- = happyFail 0# tk st sts stk
-happyMonadReduce k nt fn j tk st sts stk =
- happyThen1 (fn stk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))
- drop_stk = happyDropStk k stk
-
-happyDrop 0# l = l
-happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t
-
-happyDropStk 0# l = l
-happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs
-
------------------------------------------------------------------------------
--- Moving to a new state after a reduction
-
-
-happyGoto nt j tk st =
- {- nothing -}
- happyDoAction j tk new_state
- where off = indexShortOffAddr happyGotoOffsets st
- off_i = (off +# nt)
- new_state = indexShortOffAddr happyTable off_i
-
-
-
-
------------------------------------------------------------------------------
--- Error recovery (0# is the error token)
-
--- parse error if we are in recovery and we fail again
-happyFail 0# tk old_st _ stk =
--- trace "failing" $
- happyError_ tk
-
-{- We don't need state discarding for our restricted implementation of
- "error". In fact, it can cause some bogus parses, so I've disabled it
- for now --SDM
-
--- discard a state
-happyFail 0# tk old_st (HappyCons ((action)) (sts))
- (saved_tok `HappyStk` _ `HappyStk` stk) =
--- trace ("discarding state, depth " ++ show (length stk)) $
- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
--}
-
--- Enter error recovery: generate an error token,
--- save the old token and carry on.
-happyFail i tk (action) sts stk =
--- trace "entering error recovery" $
- happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk)
-
--- Internal happy errors:
-
-notHappyAtAll = error "Internal Happy error\n"
-
------------------------------------------------------------------------------
--- Hack to get the typechecker to accept our action functions
-
-
-happyTcHack :: Int# -> a -> a
-happyTcHack x y = y
-{-# INLINE happyTcHack #-}
-
-
------------------------------------------------------------------------------
--- Seq-ing. If the --strict flag is given, then Happy emits
--- happySeq = happyDoSeq
--- otherwise it emits
--- happySeq = happyDontSeq
-
-happyDoSeq, happyDontSeq :: a -> b -> b
-happyDoSeq a b = a `seq` b
-happyDontSeq a b = b
-
------------------------------------------------------------------------------
--- Don't inline any functions from the template. GHC has a nasty habit
--- of deciding to inline happyGoto everywhere, which increases the size of
--- the generated parser quite a bit.
-
-
-{-# NOINLINE happyDoAction #-}
-{-# NOINLINE happyTable #-}
-{-# NOINLINE happyCheck #-}
-{-# NOINLINE happyActOffsets #-}
-{-# NOINLINE happyGotoOffsets #-}
-{-# NOINLINE happyDefActions #-}
-
-{-# NOINLINE happyShift #-}
-{-# NOINLINE happySpecReduce_0 #-}
-{-# NOINLINE happySpecReduce_1 #-}
-{-# NOINLINE happySpecReduce_2 #-}
-{-# NOINLINE happySpecReduce_3 #-}
-{-# NOINLINE happyReduce #-}
-{-# NOINLINE happyMonadReduce #-}
-{-# NOINLINE happyGoto #-}
-{-# NOINLINE happyFail #-}
-
--- end of Happy Template.
diff --git a/src/Transfer/Core/Par.y b/src/Transfer/Core/Par.y
deleted file mode 100644
index ceeaa313f..000000000
--- a/src/Transfer/Core/Par.y
+++ /dev/null
@@ -1,203 +0,0 @@
--- This Happy file was machine-generated by the BNF converter
-{
-{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-}
-module Transfer.Core.Par where
-import Transfer.Core.Abs
-import Transfer.Core.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 ".") }
- 'Type' { PT _ (TS "Type") }
- 'case' { PT _ (TS "case") }
- 'data' { PT _ (TS "data") }
- '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 $$) }
-L_integ { PT _ (TI $$) }
-L_doubl { PT _ (TD $$) }
-L_TMeta { PT _ (T_TMeta $$) }
-L_CIdent { PT _ (T_CIdent $$) }
-L_err { _ }
-
-
-%%
-
-String :: { String } : L_quoted { $1 }
-Integer :: { Integer } : L_integ { (read $1) :: Integer }
-Double :: { Double } : L_doubl { (read $1) :: Double }
-TMeta :: { TMeta} : L_TMeta { TMeta ($1)}
-CIdent :: { CIdent} : L_CIdent { CIdent ($1)}
-
-Module :: { Module }
-Module : ListDecl { Module $1 }
-
-
-ListDecl :: { [Decl] }
-ListDecl : {- empty -} { [] }
- | Decl { (:[]) $1 }
- | Decl ';' ListDecl { (:) $1 $3 }
-
-
-Decl :: { Decl }
-Decl : 'data' CIdent ':' Exp 'where' '{' ListConsDecl '}' { DataDecl $2 $4 $7 }
- | CIdent ':' Exp { TypeDecl $1 $3 }
- | CIdent '=' Exp { ValueDecl $1 $3 }
-
-
-ConsDecl :: { ConsDecl }
-ConsDecl : CIdent ':' Exp { ConsDecl $1 $3 }
-
-
-ListConsDecl :: { [ConsDecl] }
-ListConsDecl : {- empty -} { [] }
- | ConsDecl { (:[]) $1 }
- | ConsDecl ';' ListConsDecl { (:) $1 $3 }
-
-
-ListPattern :: { [Pattern] }
-ListPattern : {- empty -} { [] }
- | ListPattern Pattern { flip (:) $1 $2 }
-
-
-Pattern :: { Pattern }
-Pattern : '(' CIdent ListPattern ')' { PCons $2 (reverse $3) }
- | PatternVariable { PVar $1 }
- | 'rec' '{' ListFieldPattern '}' { PRec $3 }
- | String { PStr $1 }
- | Integer { PInt $1 }
-
-
-FieldPattern :: { FieldPattern }
-FieldPattern : CIdent '=' Pattern { FieldPattern $1 $3 }
-
-
-ListFieldPattern :: { [FieldPattern] }
-ListFieldPattern : {- empty -} { [] }
- | FieldPattern { (:[]) $1 }
- | FieldPattern ';' ListFieldPattern { (:) $1 $3 }
-
-
-PatternVariable :: { PatternVariable }
-PatternVariable : CIdent { PVVar $1 }
- | '_' { PVWild }
-
-
-Exp :: { Exp }
-Exp : 'let' '{' ListLetDef '}' 'in' Exp { ELet $3 $6 }
- | 'case' Exp 'of' '{' ListCase '}' { ECase $2 $5 }
- | Exp1 { $1 }
-
-
-LetDef :: { LetDef }
-LetDef : CIdent '=' Exp { LetDef $1 $3 }
-
-
-ListLetDef :: { [LetDef] }
-ListLetDef : {- empty -} { [] }
- | LetDef { (:[]) $1 }
- | LetDef ';' ListLetDef { (:) $1 $3 }
-
-
-Case :: { Case }
-Case : Pattern '|' Exp '->' Exp { Case $1 $3 $5 }
-
-
-ListCase :: { [Case] }
-ListCase : {- empty -} { [] }
- | Case { (:[]) $1 }
- | Case ';' ListCase { (:) $1 $3 }
-
-
-Exp1 :: { Exp }
-Exp1 : '\\' PatternVariable '->' Exp { EAbs $2 $4 }
- | '(' PatternVariable ':' Exp ')' '->' Exp { EPi $2 $4 $7 }
- | Exp2 { $1 }
-
-
-Exp3 :: { Exp }
-Exp3 : Exp3 Exp4 { EApp $1 $2 }
- | Exp4 { $1 }
-
-
-Exp4 :: { Exp }
-Exp4 : Exp4 '.' CIdent { EProj $1 $3 }
- | Exp5 { $1 }
-
-
-Exp5 :: { Exp }
-Exp5 : 'sig' '{' ListFieldType '}' { ERecType $3 }
- | 'rec' '{' ListFieldValue '}' { ERec $3 }
- | CIdent { EVar $1 }
- | 'Type' { EType }
- | String { EStr $1 }
- | Integer { EInteger $1 }
- | Double { EDouble $1 }
- | TMeta { EMeta $1 }
- | '(' Exp ')' { $2 }
-
-
-FieldType :: { FieldType }
-FieldType : CIdent ':' Exp { FieldType $1 $3 }
-
-
-ListFieldType :: { [FieldType] }
-ListFieldType : {- empty -} { [] }
- | FieldType { (:[]) $1 }
- | FieldType ';' ListFieldType { (:) $1 $3 }
-
-
-FieldValue :: { FieldValue }
-FieldValue : CIdent '=' Exp { FieldValue $1 $3 }
-
-
-ListFieldValue :: { [FieldValue] }
-ListFieldValue : {- empty -} { [] }
- | FieldValue { (:[]) $1 }
- | FieldValue ';' ListFieldValue { (:) $1 $3 }
-
-
-Exp2 :: { Exp }
-Exp2 : Exp3 { $1 }
-
-
-
-{
-
-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
-}
-
diff --git a/src/Transfer/Core/Print.hs b/src/Transfer/Core/Print.hs
deleted file mode 100644
index 50929716a..000000000
--- a/src/Transfer/Core/Print.hs
+++ /dev/null
@@ -1,155 +0,0 @@
-{-# OPTIONS_GHC -fglasgow-exts #-}
-module Transfer.Core.Print where
-
--- pretty-printer generated by the BNF converter
-
-import Transfer.Core.Abs
-import Data.Char
-import Data.List (intersperse)
-
--- the top-level printing method
-printTree :: Print a => a -> String
-printTree = render . prt 0
-
-type Doc = [ShowS] -> [ShowS]
-
-doc :: ShowS -> Doc
-doc = (:)
-
-render :: Doc -> String
-render d = rend 0 (map ($ "") $ d []) "" where
- rend i ss = case ss of
- "[" :ts -> showChar '[' . rend i ts
- "(" :ts -> showChar '(' . rend i ts
- "{" :ts -> showChar '{' . new (i+1) . rend (i+1) ts
- "}" : ";":ts -> new (i-1) . space "}" . showChar ';' . new (i-1) . rend (i-1) ts
- "}" :ts -> new (i-1) . showChar '}' . new (i-1) . rend (i-1) ts
- ";" :ts -> showChar ';' . new i . rend i ts
- t : "," :ts -> showString t . space "," . rend i ts
- t : ")" :ts -> showString t . showChar ')' . rend i ts
- t : "]" :ts -> showString t . showChar ']' . rend i ts
- t :ts -> space t . rend i ts
- _ -> id
- new i = showChar '\n' . replicateS (2*i) (showChar ' ') . dropWhile isSpace
- space t = showString t . (\s -> if null s then "" else (' ':s))
-
-parenth :: Doc -> Doc
-parenth ss = doc (showChar '(') . ss . doc (showChar ')')
-
-concatS :: [ShowS] -> ShowS
-concatS = foldr (.) id
-
-concatD :: [Doc] -> Doc
-concatD = foldr (.) id
-
-unwordsD :: [Doc] -> Doc
-unwordsD = concatD . intersperse (doc (showChar ' '))
-
-replicateS :: Int -> ShowS -> ShowS
-replicateS n f = concatS (replicate n f)
-
--- the printer class does the job
-class Print a where
- prt :: Int -> a -> Doc
-
-instance Print Char where
- prt _ s = doc (showChar '\'' . mkEsc '\'' s . showChar '\'')
-
-instance Print String where
- prt _ s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"')
-
-mkEsc :: Char -> Char -> ShowS
-mkEsc q s = case s of
- _ | s == q -> showChar '\\' . showChar s
- '\\'-> showString "\\\\"
- '\n' -> showString "\\n"
- '\t' -> showString "\\t"
- _ -> showChar s
-
-prPrec :: Int -> Int -> Doc -> Doc
-prPrec i j = if j<i then parenth else id
-
-
-instance Print Integer where
- prt _ x = doc (shows x)
-
-
-instance Print Double where
- prt _ x = doc (shows x)
-
-
-instance Print (Tree c) where
- prt _i e = case e of
- Module decls -> prPrec _i 0 (concatD [prt 0 decls])
- DataDecl cident exp consdecls -> prPrec _i 0 (concatD [doc (showString "data") , prt 0 cident , doc (showString ":") , prt 0 exp , doc (showString "where") , doc (showString "{") , prt 0 consdecls , doc (showString "}")])
- TypeDecl cident exp -> prPrec _i 0 (concatD [prt 0 cident , doc (showString ":") , prt 0 exp])
- ValueDecl cident exp -> prPrec _i 0 (concatD [prt 0 cident , doc (showString "=") , prt 0 exp])
- ConsDecl cident exp -> prPrec _i 0 (concatD [prt 0 cident , doc (showString ":") , prt 0 exp])
- PCons cident patterns -> prPrec _i 0 (concatD [doc (showString "(") , prt 0 cident , prt 0 patterns , doc (showString ")")])
- PVar patternvariable -> prPrec _i 0 (concatD [prt 0 patternvariable])
- PRec fieldpatterns -> prPrec _i 0 (concatD [doc (showString "rec") , doc (showString "{") , prt 0 fieldpatterns , doc (showString "}")])
- PStr str -> prPrec _i 0 (concatD [prt 0 str])
- PInt n -> prPrec _i 0 (concatD [prt 0 n])
- FieldPattern cident pattern -> prPrec _i 0 (concatD [prt 0 cident , doc (showString "=") , prt 0 pattern])
- PVVar cident -> prPrec _i 0 (concatD [prt 0 cident])
- PVWild -> prPrec _i 0 (concatD [doc (showString "_")])
- ELet letdefs exp -> prPrec _i 0 (concatD [doc (showString "let") , doc (showString "{") , prt 0 letdefs , doc (showString "}") , doc (showString "in") , prt 0 exp])
- ECase exp cases -> prPrec _i 0 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")])
- EAbs patternvariable exp -> prPrec _i 1 (concatD [doc (showString "\\") , prt 0 patternvariable , doc (showString "->") , prt 0 exp])
- EPi patternvariable exp0 exp1 -> prPrec _i 1 (concatD [doc (showString "(") , prt 0 patternvariable , doc (showString ":") , prt 0 exp0 , doc (showString ")") , doc (showString "->") , prt 0 exp1])
- EApp exp0 exp1 -> prPrec _i 3 (concatD [prt 3 exp0 , prt 4 exp1])
- EProj exp cident -> prPrec _i 4 (concatD [prt 4 exp , doc (showString ".") , prt 0 cident])
- ERecType fieldtypes -> prPrec _i 5 (concatD [doc (showString "sig") , doc (showString "{") , prt 0 fieldtypes , doc (showString "}")])
- ERec fieldvalues -> prPrec _i 5 (concatD [doc (showString "rec") , doc (showString "{") , prt 0 fieldvalues , doc (showString "}")])
- EVar cident -> prPrec _i 5 (concatD [prt 0 cident])
- EType -> prPrec _i 5 (concatD [doc (showString "Type")])
- EStr str -> prPrec _i 5 (concatD [prt 0 str])
- EInteger n -> prPrec _i 5 (concatD [prt 0 n])
- EDouble d -> prPrec _i 5 (concatD [prt 0 d])
- EMeta tmeta -> prPrec _i 5 (concatD [prt 0 tmeta])
- LetDef cident exp -> prPrec _i 0 (concatD [prt 0 cident , doc (showString "=") , prt 0 exp])
- Case pattern exp0 exp1 -> prPrec _i 0 (concatD [prt 0 pattern , doc (showString "|") , prt 0 exp0 , doc (showString "->") , prt 0 exp1])
- FieldType cident exp -> prPrec _i 0 (concatD [prt 0 cident , doc (showString ":") , prt 0 exp])
- FieldValue cident exp -> prPrec _i 0 (concatD [prt 0 cident , doc (showString "=") , prt 0 exp])
- TMeta str -> prPrec _i 0 (doc (showString str))
- CIdent str -> prPrec _i 0 (doc (showString str))
-
-instance Print [Decl] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
-instance Print [ConsDecl] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
-instance Print [Pattern] where
- prt _ es = case es of
- [] -> (concatD [])
- x:xs -> (concatD [prt 0 x , prt 0 xs])
-instance Print [FieldPattern] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
-instance Print [LetDef] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
-instance Print [Case] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
-instance Print [FieldType] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
-instance Print [FieldValue] where
- prt _ es = case es of
- [] -> (concatD [])
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
diff --git a/src/Transfer/Core/Skel.hs b/src/Transfer/Core/Skel.hs
deleted file mode 100644
index 005ae92b1..000000000
--- a/src/Transfer/Core/Skel.hs
+++ /dev/null
@@ -1,119 +0,0 @@
-module Transfer.Core.Skel where
-
--- Haskell module generated by the BNF converter
-
-import Transfer.Core.Abs
-import Transfer.ErrM
-type Result = Err String
-
-failure :: Show a => a -> Result
-failure x = Bad $ "Undefined case: " ++ show x
-
-transTree :: Tree c -> Result
-transTree t = case t of
- Module decls -> failure t
- DataDecl cident exp consdecls -> failure t
- TypeDecl cident exp -> failure t
- ValueDecl cident exp -> failure t
- ConsDecl cident exp -> failure t
- PCons cident patterns -> failure t
- PVar patternvariable -> failure t
- PRec fieldpatterns -> failure t
- PStr str -> failure t
- PInt n -> failure t
- FieldPattern cident pattern -> failure t
- PVVar cident -> failure t
- PVWild -> failure t
- ELet letdefs exp -> failure t
- ECase exp cases -> failure t
- EAbs patternvariable exp -> failure t
- EPi patternvariable exp0 exp1 -> failure t
- EApp exp0 exp1 -> failure t
- EProj exp cident -> failure t
- ERecType fieldtypes -> failure t
- ERec fieldvalues -> failure t
- EVar cident -> failure t
- EType -> failure t
- EStr str -> failure t
- EInteger n -> failure t
- EDouble d -> failure t
- EMeta tmeta -> failure t
- LetDef cident exp -> failure t
- Case pattern exp0 exp1 -> failure t
- FieldType cident exp -> failure t
- FieldValue cident exp -> failure t
- TMeta str -> failure t
- CIdent str -> failure t
-
-transModule :: Module -> Result
-transModule t = case t of
- Module decls -> failure t
-
-transDecl :: Decl -> Result
-transDecl t = case t of
- DataDecl cident exp consdecls -> failure t
- TypeDecl cident exp -> failure t
- ValueDecl cident exp -> failure t
-
-transConsDecl :: ConsDecl -> Result
-transConsDecl t = case t of
- ConsDecl cident exp -> failure t
-
-transPattern :: Pattern -> Result
-transPattern t = case t of
- PCons cident patterns -> failure t
- PVar patternvariable -> failure t
- PRec fieldpatterns -> failure t
- PStr str -> failure t
- PInt n -> failure t
-
-transFieldPattern :: FieldPattern -> Result
-transFieldPattern t = case t of
- FieldPattern cident pattern -> failure t
-
-transPatternVariable :: PatternVariable -> Result
-transPatternVariable t = case t of
- PVVar cident -> failure t
- PVWild -> failure t
-
-transExp :: Exp -> Result
-transExp t = case t of
- ELet letdefs exp -> failure t
- ECase exp cases -> failure t
- EAbs patternvariable exp -> failure t
- EPi patternvariable exp0 exp1 -> failure t
- EApp exp0 exp1 -> failure t
- EProj exp cident -> failure t
- ERecType fieldtypes -> failure t
- ERec fieldvalues -> failure t
- EVar cident -> failure t
- EType -> failure t
- EStr str -> failure t
- EInteger n -> failure t
- EDouble d -> failure t
- EMeta tmeta -> failure t
-
-transLetDef :: LetDef -> Result
-transLetDef t = case t of
- LetDef cident exp -> failure t
-
-transCase :: Case -> Result
-transCase t = case t of
- Case pattern exp0 exp1 -> failure t
-
-transFieldType :: FieldType -> Result
-transFieldType t = case t of
- FieldType cident exp -> failure t
-
-transFieldValue :: FieldValue -> Result
-transFieldValue t = case t of
- FieldValue cident exp -> failure t
-
-transTMeta :: TMeta -> Result
-transTMeta t = case t of
- TMeta str -> failure t
-
-transCIdent :: CIdent -> Result
-transCIdent t = case t of
- CIdent str -> failure t
-
diff --git a/src/Transfer/Core/Test.hs b/src/Transfer/Core/Test.hs
deleted file mode 100644
index 570beed51..000000000
--- a/src/Transfer/Core/Test.hs
+++ /dev/null
@@ -1,58 +0,0 @@
--- automatically generated by BNF Converter
-module Main where
-
-
-import IO ( stdin, hGetContents )
-import System ( getArgs, getProgName )
-
-import Transfer.Core.Lex
-import Transfer.Core.Par
-import Transfer.Core.Skel
-import Transfer.Core.Print
-import Transfer.Core.Abs
-
-
-
-
-import Transfer.ErrM
-
-type ParseFun a = [Token] -> Err a
-
-myLLexer = myLexer
-
-type Verbosity = Int
-
-putStrV :: Verbosity -> String -> IO ()
-putStrV v s = if v > 1 then putStrLn s else return ()
-
-runFile :: (Print a, Show a) => Verbosity -> ParseFun a -> FilePath -> IO ()
-runFile v p f = putStrLn f >> readFile f >>= run v p
-
-run :: (Print a, Show a) => Verbosity -> ParseFun a -> String -> IO ()
-run v p s = let ts = myLLexer s in case p ts of
- Bad s -> do putStrLn "\nParse Failed...\n"
- putStrV v "Tokens:"
- putStrV v $ show ts
- putStrLn s
- Ok tree -> do putStrLn "\nParse Successful!"
- showTree v tree
-
-
-
-showTree :: (Show a, Print a) => Int -> a -> IO ()
-showTree v tree
- = do
- putStrV v $ "\n[Abstract Syntax]\n\n" ++ show tree
- putStrV v $ "\n[Linearized tree]\n\n" ++ printTree tree
-
-main :: IO ()
-main = do args <- getArgs
- case args of
- [] -> hGetContents stdin >>= run 2 pModule
- "-s":fs -> mapM_ (runFile 0 pModule) fs
- fs -> mapM_ (runFile 2 pModule) fs
-
-
-
-
-