packages feed

epic 0.1.4 → 0.1.5

raw patch · 15 files changed

+291/−155 lines, 15 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Epic.Compiler: Debug :: CompileOptions
- Epic.Compiler: link :: [FilePath] -> [FilePath] -> FilePath -> Bool -> IO ()
+ Epic.Compiler: link :: [FilePath] -> [FilePath] -> FilePath -> Bool -> [CompileOptions] -> IO ()

Files

Epic/Bytecode.lhs view
@@ -88,7 +88,7 @@ >        return $ (LOCALS (num_locals cs)): >                 (TRACE (show fname) [0..(length args)-1]): >                 (TMPS (max_tmp cs)):(CONSTS (string_pool cs)):code ++->                   [EVAL 0 True, RETURN 0]+>                   [RETURN 0]  >   where 
Epic/CodegenC.lhs view
@@ -56,7 +56,7 @@ >     "void* " ++ quickcall fname ++ "(" ++ showargs (zip (names 0) tys) 0 ++ ");\n" ++ >     headers xs >   where names i = (MN "arg" i):(names (i+1))-> headers ((Include h):xs) = "#include <"++h++">\n" ++ headers xs+> headers ((Include h):xs) = "#include \""++h++"\"\n" ++ headers xs > headers (_:xs) = headers xs  > wrappers [] = ""@@ -255,7 +255,7 @@ > foreignArgs (x:xs) = foreignArg x ++ ", " ++ foreignArgs xs  > cToEpic var TyString = "MKSTR((char*)(" ++ var ++ "))"-> cToEpic var TyInt = "MKINT((int)(" ++ var ++ "))"+> cToEpic var TyInt = "MKINT(INTTOEINT(" ++ var ++ "))" > cToEpic var TyPtr = "MKPTR(" ++ var ++ ")" > cToEpic var TyBigInt = "MKBIGINT((mpz_t*)(" ++ var ++ "))" > cToEpic var TyUnit = "NULL"@@ -272,7 +272,7 @@  castFrom t TyBigInt rest = tmp t ++ " = MKBIGINT((mpz_t*)(" ++ rest ++ "))"  castFrom t _ rest = tmp t ++ " = (void*)(" ++ rest ++ ")" -> epicToC t TyInt = "GETINT("++ t ++")"+> epicToC t TyInt = "EINTTOINT(GETINT("++ t ++"))" > epicToC t TyBigInt = "*(GETBIGINT("++ t ++"))" > epicToC t TyString = "GETSTR("++ t ++")" > epicToC t TyPtr = "GETPTR("++ t ++")"@@ -290,6 +290,8 @@ > doOp t Minus l r = tmp t ++ " = INTOP(-,"++tmp l ++ ", "++tmp r++");" > doOp t Times l r = tmp t ++ " = MULT("++tmp l ++ ", "++tmp r++");" > doOp t Divide l r = tmp t ++ " = INTOP(/,"++tmp l ++ ", "++tmp r++");"+> doOp t ShL l r = tmp t ++ " = INTOP(<<,"++tmp l ++ ", "++tmp r++");"+> doOp t ShR l r = tmp t ++ " = INTOP(>>,"++tmp l ++ ", "++tmp r++");" > doOp t OpEQ l r = tmp t ++ " = INTOP(==,"++tmp l ++ ", "++tmp r++");" > doOp t OpGT l r = tmp t ++ " = INTOP(>,"++tmp l ++ ", "++tmp r++");" > doOp t OpLT l r = tmp t ++ " = INTOP(<,"++tmp l ++ ", "++tmp r++");"
Epic/Compiler.lhs view
@@ -37,6 +37,7 @@ >                     | ShowParseTree -- ^ Show parse tree >                     | MakeHeader FilePath -- ^ Output a .h file too >                     | GCCOpt String -- ^ Extra GCC option+>                     | Debug -- ^ Generate debug info >   deriving Eq  > addGCC :: [CompileOptions] -> String@@ -84,7 +85,8 @@ >                 checked <- compileDecls simplified tmph hdr >                 fp <- getDataFileName "evm/closure.h" >                 let libdir = trimLast fp->                 let cmd = "gcc -c -O3 -foptimize-sibling-calls -x c " ++ tmpn ++ " -I" ++ libdir ++ " -o " ++ outf ++ " " ++ addGCC opts ++ doTrace opts+>                 let dbg = if (elem Debug opts) then "-g" else "-O3"+>                 let cmd = "gcc -c " ++ dbg ++ " -foptimize-sibling-calls -x c " ++ tmpn ++ " -I" ++ libdir ++ " -o " ++ outf ++ " " ++ addGCC opts ++ doTrace opts >                 -- putStrLn $ cmd >                 -- putStrLn $ fp >                 exit <- system cmd@@ -121,12 +123,14 @@ >         -> [FilePath] -- ^ Extra include files for main program >         -> FilePath -- ^ Executable filename >         -> Bool -- ^ Generate a 'main' (False if externally defined)+>         -> [CompileOptions] -- Keep the C file >         -> IO ()-> link infs extraIncs outf genmain = do+> link infs extraIncs outf genmain opts = do >     mainprog <- if genmain then mkMain extraIncs else return "" >     fp <- getDataFileName "evm/closure.h" >     let libdir = trimLast fp->     let cmd = "gcc -x c -O3 -foptimize-sibling-calls " ++ mainprog ++ " -x none -L" +++>     let dbg = if (elem Debug opts) then "-g" else "-O3"+>     let cmd = "gcc -x c " ++ dbg ++ " -foptimize-sibling-calls " ++ mainprog ++ " -x none -L" ++ >               libdir++" -I"++libdir ++ " " ++ >               (concat (map (++" ") infs)) ++  >               " -levm -lgc -lpthread -lgmp -o "++outf
Epic/Language.lhs view
@@ -111,6 +111,7 @@ >    compare _ _ = EQ  > data Op = Plus | Minus | Times | Divide | OpEQ | OpLT | OpLE | OpGT | OpGE+>         | ShL  | ShR >   deriving (Show, Eq)  > instance Show CaseAlt where
Epic/Lexer.lhs view
@@ -84,6 +84,8 @@ >       | TokenLE >       | TokenGT >       | TokenLT+>       | TokenShL+>       | TokenShR >       | TokenArrow >       | TokenColon >       | TokenUnit@@ -141,6 +143,8 @@ > lexer cont ('=':'=':cs) = cont TokenEQ cs > lexer cont ('>':'=':cs) = cont TokenGE cs > lexer cont ('<':'=':cs) = cont TokenLE cs+> lexer cont ('<':'<':cs) = cont TokenShL cs+> lexer cont ('>':'>':cs) = cont TokenShR cs > lexer cont ('>':cs) = cont TokenGT cs > lexer cont ('<':cs) = cont TokenLT cs > lexer cont ('=':cs) = cont TokenEquals cs
Epic/Parser.y view
@@ -71,6 +71,8 @@       eq              { TokenEQ }       le              { TokenLE }       ge              { TokenGE }+      shl             { TokenShL }+      shr             { TokenShR }       '<'             { TokenLT }       '>'             { TokenGT }       ':'             { TokenColon }@@ -93,6 +95,7 @@ %left eq %left ';' %left '<' '>' le ge+%left shl shr %left '+' '-' %left '*' '/' %left NEG@@ -196,6 +199,8 @@          | '-' Expr %prec NEG { Op Minus (Const (MkInt 0)) $2 }          | Expr '*' Expr { Op Times $1 $3 }          | Expr '/' Expr { Op Divide $1 $3 }+         | Expr shl Expr { Op ShL $1 $3 }+         | Expr shr Expr { Op ShR $1 $3 }          | Expr '<' Expr { Op OpLT $1 $3 }          | Expr '>' Expr { Op OpGT $1 $3 }          | Expr le Expr { Op OpLE $1 $3 }
Main.lhs view
@@ -4,10 +4,18 @@ > import System.Directory > import System.Environment > import System.IO+> import Distribution.Version > import Monad  > import Epic.Compiler+> import Paths_epic +> versionString = showV (versionBranch version)+>   where+>     showV [] = ""+>     showV [a] = show a+>     showV (x:xs) = show x ++ "." ++ showV xs+ > main = do args <- getArgs >           (fns, opts) <- getInput args >           outfile <- getOutput opts@@ -15,7 +23,7 @@ >           copts <- getCOpts opts >           extras <- getExtra opts >           if ((length ofiles) > 0 && (not (elem Obj opts)))->              then link (ofiles ++ copts) extras outfile (not (elem ExtMain opts))+>              then link (ofiles ++ copts) extras outfile (not (elem ExtMain opts)) (mkOpts opts) >              else return () >   where mkOpts (KeepInt:xs) = KeepC:(mkOpts xs) >         mkOpts (TraceOn:xs) = Trace:(mkOpts xs)@@ -60,13 +68,14 @@  > getInput :: [String] -> IO ([FilePath],[Option]) > getInput args = do let opts = parseArgs args+>                    processFlags opts False >                    fns <- getFile opts >                    if (length fns == 0)  >                       then do showUsage >                               return (fns,opts) >                       else return (fns,opts) -> showUsage = do putStrLn "Epigram Supercombinator Compiler version 0.1"+> showUsage = do putStrLn $ "Epigram Supercombinator Compiler version " ++ versionString >                putStrLn "Usage:\n\tepic <input file> [options]" >                exitWith (ExitFailure 1) @@ -79,6 +88,9 @@ >             | ExtraInc String -- extra files to inlude >             | COpt String -- option to send straight to gcc >             | ExtMain -- external main (i.e. in a .o)+>             | CFlags -- output include flags+>             | LibFlags -- output linker flags+>             | DbgInfo -- generate debug info >   deriving Eq  > parseArgs :: [String] -> [Option]@@ -90,6 +102,9 @@ > parseArgs ("-o":name:args) = (Output name):(parseArgs args) > parseArgs ("-h":name:args) = (Header name):(parseArgs args) > parseArgs ("-i":inc:args) = (ExtraInc inc):(parseArgs args)+> parseArgs ("-includedirs":args) = CFlags:(parseArgs args)+> parseArgs ("-libdirs":args) = LibFlags:(parseArgs args)+> parseArgs ("-g":args) = DbgInfo:(parseArgs args) > parseArgs (('$':x):args) = (COpt (x ++ concat (map (" "++) args))):[] > parseArgs (('-':x):args) = (COpt x):(parseArgs args) > parseArgs (x:args) = (File x):(parseArgs args)@@ -116,3 +131,14 @@ >                                 return (x:fns) > getExtra (_:xs) = getExtra xs > getExtra [] = return []++> processFlags :: [Option] -> Bool -> IO ()+> processFlags [] True = do putStrLn ""; exitWith ExitSuccess+> processFlags [] False = return ()+> processFlags (LibFlags:xs) _ = do datadir <- getDataDir+>                                   putStr $ "-L"++datadir++"/evm "+>                                   processFlags xs True+> processFlags (CFlags:xs) _ = do datadir <- getDataDir+>                                 putStr $ "-I"++datadir++"/evm "+>                                 processFlags xs True+> processFlags (_:xs) quit = processFlags xs quit
dist/build/Epic/Parser.hs view
@@ -140,21 +140,21 @@   happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\xce\x01\x05\x00\x00\x00\xdf\xff\x2d\x01\x2c\x01\x23\x01\xe1\x00\x01\x01\x1d\x01\xce\x01\x00\x00\x00\x00\xf7\x00\x00\x00\x1c\x01\xdf\xff\x00\x00\x00\x00\x00\x00\xe7\x00\x13\x01\x00\x00\x00\x00\xe5\x00\xd8\x00\xfb\x00\xd6\x00\x3d\x01\xc8\x00\x3d\x01\xc5\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\xc1\x00\x3d\x01\xf6\x00\x00\x00\x00\x00\xbb\x00\x01\x00\xe3\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\xee\x00\xe9\x00\x01\x00\x01\x00\xc4\x00\x00\x00\xe8\xff\xc2\x00\x3d\x01\xe2\x00\x00\x00\x01\x00\x01\x00\x01\x00\xe6\xff\x76\x00\xb2\x00\xd3\x00\x00\x00\xd7\x00\x01\x00\x3d\x01\x01\x00\x01\x00\x18\x00\x03\x00\xa1\x00\xaf\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xd4\x00\x01\x00\x03\x01\x00\x00\xe3\xff\xe3\xff\xe3\xff\xe3\xff\xf3\x00\xe6\xff\xe6\xff\x0d\x01\x0d\x01\x9e\x00\x01\x00\x3d\x01\xa2\x00\x01\x00\x66\x00\xc0\x00\xc3\x00\xad\x00\x9d\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x94\x00\x00\x00\x01\x00\x2c\x00\x2a\x00\x85\x00\x8c\x00\x00\x00\x00\x00\x01\x00\x8b\x00\x6c\x00\x77\x00\x9f\x00\x71\x00\x01\x00\x56\x00\x01\x00\x9a\x00\x79\x00\x00\x00\x3d\x01\x6f\x00\x00\x00\x01\x00\xe3\x00\x01\x00\x6b\x00\x01\x00\x2a\x00\x00\x00\x43\x00\x01\x00\x00\x00\xe3\x00\x86\x00\xe3\x00\x8a\x00\x00\x00\x40\x00\x01\x00\x00\x00\x69\x00\xe3\x00\x30\x00\x00\x00\x01\x00\xe3\x00\x00\x00"#+happyActOffsets = HappyA# "\x2d\x01\x1f\x00\x00\x00\xdf\xff\x52\x01\x4d\x01\x4b\x01\xfe\x00\xf5\x01\x40\x01\x2d\x01\x00\x00\x00\x00\x16\x01\x00\x00\x3b\x01\xdf\xff\x00\x00\x00\x00\x00\x00\x14\x01\x2a\x01\x00\x00\x00\x00\x08\x01\xf1\x00\x28\x01\xf0\x00\x69\x01\xdb\x00\x69\x01\xe2\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\xd9\x00\x69\x01\x15\x01\x00\x00\x00\x00\xe0\x00\x01\x00\xff\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\x06\x01\x03\x01\x01\x00\x01\x00\xdc\x00\x00\x00\xf1\xff\xda\x00\x69\x01\x00\x01\x00\x00\x01\x00\x01\x00\x01\x00\xe7\xff\x86\x00\xd0\x00\xed\x00\x00\x00\xf2\x00\x01\x00\x69\x01\x01\x00\x01\x00\x18\x00\x03\x00\xb6\x00\xc5\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xd7\x00\x01\x00\x23\x01\x00\x00\x35\x01\x35\x01\xe4\xff\xe4\xff\x35\x01\x35\x01\x11\x01\xe7\xff\xe7\xff\x37\x01\x37\x01\xc6\x00\x01\x00\x69\x01\xc4\x00\x01\x00\x74\x00\xd8\x00\xdd\x00\xc3\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\xb1\x00\x00\x00\x01\x00\x34\x00\x2a\x00\x96\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x9b\x00\x8b\x00\x8f\x00\xbc\x00\x79\x00\x01\x00\x62\x00\x01\x00\xae\x00\x8a\x00\x00\x00\x69\x01\x89\x00\x00\x00\x01\x00\xff\x00\x01\x00\x7e\x00\x01\x00\x2a\x00\x00\x00\x4d\x00\x01\x00\x00\x00\xff\x00\x9f\x00\xff\x00\x9c\x00\x00\x00\x63\x00\x01\x00\x00\x00\x6b\x00\xff\x00\x50\x00\x00\x00\x01\x00\xff\x00\x00\x00"#  happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x04\x02\x09\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x65\x00\x00\x00\x5c\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\x57\x00\x50\x00\x00\x00\x00\x00\x00\x00\xf7\x01\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\xf5\x01\xed\x01\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\xeb\x01\x73\x01\xe3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x4e\x00\xd9\x01\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x01\xcf\x01\xcd\x01\xc5\x01\xc3\x01\xbb\x01\xb9\x01\xb1\x01\xaf\x01\xa7\x01\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x01\x39\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x01\x00\x00\x53\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x4b\x01\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x89\x01\x00\x00\x87\x01\x00\x00\x7f\x01\x0b\x00\x00\x00\x00\x00\x7d\x01\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x01\x00\x00\x00\x00"#+happyGotoOffsets = HappyA# "\x37\x02\x0b\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x78\x00\x00\x00\x75\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\x6f\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x25\x02\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\x23\x02\x1b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x19\x02\x97\x01\x11\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x48\x00\x07\x02\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x01\xfd\x01\xfb\x01\xf3\x01\xf1\x01\xe9\x01\xe7\x01\xdf\x01\xdd\x01\xd5\x01\xd3\x01\xcb\x01\x00\x00\xc9\x01\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\x87\x01\x43\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\xad\x01\x00\x00\xab\x01\x00\x00\xa3\x01\x39\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00"#  happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xe8\xff\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x00\x00\xe8\xff\xfd\xff\xe7\xff\x00\x00\xed\xff\x00\x00\xec\xff\xe9\xff\xea\xff\xeb\xff\x00\x00\xe6\xff\xae\xff\xfc\xff\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xff\xfb\xff\xfa\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf0\xff\xf1\xff\xf2\xff\x00\x00\x00\x00\xe6\xff\xee\xff\xe4\xff\x00\x00\x00\x00\xef\xff\xd5\xff\xd4\xff\xdc\xff\xe3\xff\xb2\xff\xb8\xff\xb7\xff\xb5\xff\xb4\xff\xb3\xff\xb6\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\x00\x00\xbe\xff\x00\x00\xc6\xff\xbd\xff\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xdb\xff\xc2\xff\xc3\xff\xc0\xff\xc1\xff\xbf\xff\xc4\xff\xc5\xff\xc7\xff\xc8\xff\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\xe0\xff\xbe\xff\xbc\xff\xbb\xff\xde\xff\x00\x00\xdf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xe1\xff\xdd\xff\x00\x00\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\xff\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\xd7\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xce\xff\xcf\xff\x00\x00\x00\x00\xcc\xff\xca\xff\xe6\xff\xc9\xff\x00\x00\xd0\xff\xba\xff\xbb\xff\xd6\xff\x00\x00\xda\xff\x00\x00\xb9\xff\x00\x00\xcb\xff"#+happyDefActions = HappyA# "\xe8\xff\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x00\x00\xe8\xff\xfd\xff\xe7\xff\x00\x00\xed\xff\x00\x00\xec\xff\xe9\xff\xea\xff\xeb\xff\x00\x00\xe6\xff\xac\xff\xfc\xff\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xff\xfb\xff\xfa\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf0\xff\xf1\xff\xf2\xff\x00\x00\x00\x00\xe6\xff\xee\xff\xe4\xff\x00\x00\x00\x00\xef\xff\xd5\xff\xd4\xff\xdc\xff\xe3\xff\xb0\xff\xb6\xff\xb5\xff\xb3\xff\xb2\xff\xb1\xff\xb4\xff\xaf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\x00\x00\xbc\xff\x00\x00\xc6\xff\xbb\xff\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\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\xd9\xff\xdb\xff\xc0\xff\xc1\xff\xc2\xff\xc3\xff\xbe\xff\xbf\xff\xbd\xff\xc4\xff\xc5\xff\xc7\xff\xc8\xff\x00\x00\xbc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\xe0\xff\xbc\xff\xba\xff\xb9\xff\xde\xff\x00\x00\xdf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xe1\xff\xdd\xff\x00\x00\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\xd7\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xce\xff\xcf\xff\x00\x00\x00\x00\xcc\xff\xca\xff\xe6\xff\xc9\xff\x00\x00\xd0\xff\xb8\xff\xb9\xff\xd6\xff\x00\x00\xda\xff\x00\x00\xb7\xff\x00\x00\xcb\xff"#  happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x22\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x27\x00\x02\x00\x24\x00\x27\x00\x05\x00\x27\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x09\x00\x0a\x00\x15\x00\x16\x00\x06\x00\x18\x00\x19\x00\x38\x00\x1b\x00\x1a\x00\x38\x00\x1e\x00\x1f\x00\x42\x00\x21\x00\x01\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x27\x00\x02\x00\x2b\x00\x03\x00\x05\x00\x2e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x38\x00\x39\x00\x09\x00\x0a\x00\x27\x00\x16\x00\x17\x00\x3d\x00\x3e\x00\x3f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1d\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x38\x00\x39\x00\x00\x00\x27\x00\x02\x00\x01\x00\x06\x00\x05\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x20\x00\x38\x00\x39\x00\x01\x00\x07\x00\x08\x00\x06\x00\x27\x00\x0b\x00\x3c\x00\x0d\x00\x0e\x00\x10\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x06\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3a\x00\x38\x00\x39\x00\x27\x00\x28\x00\x03\x00\x04\x00\x03\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x3a\x00\x28\x00\x27\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x28\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x3a\x00\x28\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3b\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3c\x00\x38\x00\x39\x00\x3a\x00\x27\x00\x28\x00\x3c\x00\x28\x00\x2a\x00\x31\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x27\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x27\x00\x02\x00\x28\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x29\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x27\x00\x28\x00\x27\x00\x03\x00\x37\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x02\x00\x38\x00\x39\x00\x27\x00\x28\x00\x27\x00\x01\x00\x27\x00\x31\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x03\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x38\x00\x39\x00\x27\x00\x28\x00\x01\x00\x3c\x00\x28\x00\x3a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x28\x00\x27\x00\x37\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x01\x00\x27\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x43\x00\x02\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x01\x00\xff\xff\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x27\x00\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x2f\x00\x30\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\x38\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\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\x0c\x00\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\x00\x00\x0e\x00\x02\x00\xff\xff\xff\xff\x05\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\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"#+happyCheck = HappyA# "\xff\xff\x22\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x27\x00\x02\x00\x02\x00\x27\x00\x05\x00\x05\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x24\x00\x15\x00\x16\x00\x27\x00\x18\x00\x19\x00\x06\x00\x1b\x00\x1a\x00\x3a\x00\x1e\x00\x1f\x00\x3a\x00\x21\x00\x44\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x27\x00\x02\x00\x2b\x00\x03\x00\x05\x00\x2e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x01\x00\x3a\x00\x3b\x00\x27\x00\x16\x00\x17\x00\x09\x00\x0a\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1d\x00\x3a\x00\x3b\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x03\x00\x04\x00\x0b\x00\x27\x00\x0d\x00\x0e\x00\x3f\x00\x40\x00\x41\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x20\x00\x3a\x00\x3b\x00\x01\x00\x07\x00\x08\x00\x06\x00\x27\x00\x0b\x00\x01\x00\x0d\x00\x0e\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x10\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x06\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x03\x00\x04\x00\x06\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x28\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x3c\x00\x3c\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x27\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x3c\x00\x28\x00\x28\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3e\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x03\x00\x3a\x00\x3b\x00\x3c\x00\x27\x00\x28\x00\x2a\x00\x28\x00\x31\x00\x3d\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3e\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x27\x00\x27\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x27\x00\x29\x00\x28\x00\x39\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x2c\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x27\x00\x02\x00\x27\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x03\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x31\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x01\x00\x3e\x00\x28\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x01\x00\x39\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x28\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x27\x00\x01\x00\x27\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\x45\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x02\x00\x01\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x27\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2f\x00\x30\x00\xff\xff\xff\xff\x35\x00\x36\x00\x3f\x00\x40\x00\x41\x00\x3a\x00\x43\x00\x3a\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\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\x0c\x00\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x3f\x00\x40\x00\x41\x00\x00\x00\x43\x00\x02\x00\x45\x00\xff\xff\x05\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"#  happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x12\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x5d\x00\x02\x00\x56\x00\x5d\x00\x03\x00\x57\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa4\x00\x8e\x00\x40\x00\x41\x00\xad\x00\x42\x00\x43\x00\x67\x00\x44\x00\x77\x00\x67\x00\x45\x00\x46\x00\x13\x00\x47\x00\xaa\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x5d\x00\x08\x00\x4d\x00\x90\x00\x03\x00\x4e\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x78\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x88\x00\x67\x00\x68\x00\x8d\x00\x8e\x00\x5d\x00\x91\x00\x92\x00\x05\x00\x06\x00\x07\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x93\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x7a\x00\x67\x00\x68\x00\x0b\x00\x5d\x00\x08\x00\x53\x00\x30\x00\x03\x00\x31\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x2f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xa4\x00\x67\x00\x68\x00\x1f\x00\x95\x00\x34\x00\x1b\x00\x5d\x00\x35\x00\xb2\x00\xb0\x00\x36\x00\x17\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x18\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xac\x00\x67\x00\x68\x00\x5d\x00\x9b\x00\x13\x00\x10\x00\x0f\x00\x10\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1a\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x9c\x00\xb0\x00\xa7\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xaa\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x86\x00\x98\x00\x9f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa1\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x9e\x00\x67\x00\x68\x00\x80\x00\x5d\x00\xad\x00\xa0\x00\x8c\x00\xa2\x00\x8d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x95\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x82\x00\x84\x00\x8b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x88\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x99\x00\x67\x00\x68\x00\x5d\x00\x83\x00\x75\x00\x6a\x00\x76\x00\x7d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x7f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x53\x00\x67\x00\x68\x00\x5d\x00\x85\x00\x55\x00\x5b\x00\x58\x00\x33\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5c\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x1a\x00\x67\x00\x68\x00\x5d\x00\x7e\x00\x1a\x00\x2e\x00\x2d\x00\x2f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x1e\x00\x1b\x00\x1d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1a\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x15\x00\x16\x00\x0b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xff\xff\x0d\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x0e\x00\x00\x00\x0f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5d\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x00\x00\x67\x00\x60\x00\x61\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x00\x00\xfe\xff\x67\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\x95\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x99\x00\x36\x00\x95\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x96\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x80\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x89\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x73\x00\x00\x00\x36\x00\x4f\x00\x34\x00\xb2\x00\x34\x00\x35\x00\x50\x00\x35\x00\x36\x00\x00\x00\x36\x00\xae\x00\x34\x00\xa5\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\xa7\x00\x34\x00\xa8\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x9c\x00\x34\x00\xa2\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x93\x00\x34\x00\x86\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x68\x00\x34\x00\x6a\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6b\x00\x34\x00\x6c\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6d\x00\x34\x00\x6e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6f\x00\x34\x00\x70\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x71\x00\x34\x00\x72\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x78\x00\x34\x00\x79\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x7b\x00\x34\x00\x4e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x51\x00\x34\x00\x58\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x59\x00\x34\x00\x33\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x07\x00\x36\x00\x08\x00\x00\x00\x00\x00\x03\x00\x00\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\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"#+happyTable = HappyA# "\x00\x00\x12\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x16\x00\x5d\x00\x08\x00\x02\x00\x5d\x00\x03\x00\x03\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x56\x00\x40\x00\x41\x00\x57\x00\x42\x00\x43\x00\xb1\x00\x44\x00\x7b\x00\x69\x00\x45\x00\x46\x00\x69\x00\x47\x00\x13\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x0b\x00\x5d\x00\x08\x00\x4d\x00\x94\x00\x03\x00\x4e\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x7c\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xae\x00\x69\x00\x6a\x00\x5d\x00\x95\x00\x96\x00\xa8\x00\x92\x00\x8c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x7e\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x97\x00\x69\x00\x6a\x00\x91\x00\x92\x00\x99\x00\x34\x00\x13\x00\x10\x00\x35\x00\x5d\x00\xb4\x00\x36\x00\x05\x00\x06\x00\x07\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x53\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xa8\x00\x69\x00\x6a\x00\x31\x00\x99\x00\x34\x00\x30\x00\x5d\x00\x35\x00\x2f\x00\x9d\x00\x36\x00\x1f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x17\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x1b\x00\x69\x00\x6a\x00\x5d\x00\x9f\x00\x0f\x00\x10\x00\x18\x00\xb6\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xb4\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\xa0\x00\xb0\x00\x1a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xab\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x8a\x00\xae\x00\x9c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa2\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xa3\x00\x69\x00\x6a\x00\x84\x00\x5d\x00\xb1\x00\xa6\x00\x90\x00\x91\x00\xa5\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa4\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x99\x00\x86\x00\x6c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x88\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x9d\x00\x69\x00\x6a\x00\x5d\x00\x87\x00\x79\x00\x8c\x00\x8f\x00\x7a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x81\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x83\x00\x69\x00\x6a\x00\x5d\x00\x89\x00\x55\x00\x53\x00\x58\x00\x5b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5c\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x33\x00\x69\x00\x6a\x00\x5d\x00\x82\x00\x1a\x00\x2e\x00\x2d\x00\x1f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x2f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x1a\x00\x1d\x00\x1a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1e\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x1b\x00\x15\x00\x16\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x0b\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x0d\x00\x0e\x00\x00\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x0f\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x60\x00\x61\x00\x00\x00\x00\x00\x65\x00\x66\x00\x05\x00\x06\x00\x07\x00\x69\x00\x0a\x00\x69\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\x99\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x9a\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x84\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x8d\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x77\x00\x00\x00\x36\x00\x4f\x00\x34\x00\xb6\x00\x34\x00\x35\x00\x50\x00\x35\x00\x36\x00\x00\x00\x36\x00\xb2\x00\x34\x00\xa9\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\xab\x00\x34\x00\xac\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\xa0\x00\x34\x00\xa6\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x97\x00\x34\x00\x8a\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6a\x00\x34\x00\x6c\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6d\x00\x34\x00\x6e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6f\x00\x34\x00\x70\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x71\x00\x34\x00\x72\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x73\x00\x34\x00\x74\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x75\x00\x34\x00\x76\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x7c\x00\x34\x00\x7d\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x7f\x00\x34\x00\x4e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x51\x00\x34\x00\x58\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x59\x00\x34\x00\x33\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x05\x00\x06\x00\x07\x00\x07\x00\x0a\x00\x08\x00\xfe\xff\x00\x00\x03\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"# -happyReduceArr = Happy_Data_Array.array (1, 81) [+happyReduceArr = Happy_Data_Array.array (1, 83) [ 	(1 , happyReduce_1), 	(2 , happyReduce_2), 	(3 , happyReduce_3),@@ -235,10 +235,12 @@ 	(78 , happyReduce_78), 	(79 , happyReduce_79), 	(80 , happyReduce_80),-	(81 , happyReduce_81)+	(81 , happyReduce_81),+	(82 , happyReduce_82),+	(83 , happyReduce_83) 	] -happy_n_terms = 68 :: Int+happy_n_terms = 70 :: Int happy_n_nonterms = 17 :: Int  happyReduce_1 = happySpecReduce_1  0# happyReduction_1@@ -808,7 +810,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpLT happy_var_1 happy_var_3+		 (Op ShL happy_var_1 happy_var_3 	)}}  happyReduce_61 = happySpecReduce_3  11# happyReduction_61@@ -818,7 +820,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpGT happy_var_1 happy_var_3+		 (Op ShR happy_var_1 happy_var_3 	)}}  happyReduce_62 = happySpecReduce_3  11# happyReduction_62@@ -828,7 +830,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpLE happy_var_1 happy_var_3+		 (Op OpLT happy_var_1 happy_var_3 	)}}  happyReduce_63 = happySpecReduce_3  11# happyReduction_63@@ -838,7 +840,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpGE happy_var_1 happy_var_3+		 (Op OpGT happy_var_1 happy_var_3 	)}}  happyReduce_64 = happySpecReduce_3  11# happyReduction_64@@ -848,23 +850,43 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15+		 (Op OpLE happy_var_1 happy_var_3+	)}}++happyReduce_65 = happySpecReduce_3  11# happyReduction_65+happyReduction_65 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> +	case happyOut11 happy_x_3 of { happy_var_3 -> +	happyIn15+		 (Op OpGE happy_var_1 happy_var_3+	)}}++happyReduce_66 = happySpecReduce_3  11# happyReduction_66+happyReduction_66 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> +	case happyOut11 happy_x_3 of { happy_var_3 -> +	happyIn15 		 (Op OpEQ happy_var_1 happy_var_3 	)}} -happyReduce_65 = happySpecReduce_0  12# happyReduction_65-happyReduction_65  =  happyIn16+happyReduce_67 = happySpecReduce_0  12# happyReduction_67+happyReduction_67  =  happyIn16 		 ([] 	) -happyReduce_66 = happySpecReduce_1  12# happyReduction_66-happyReduction_66 happy_x_1+happyReduce_68 = happySpecReduce_1  12# happyReduction_68+happyReduction_68 happy_x_1 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	happyIn16 		 ([happy_var_1] 	)} -happyReduce_67 = happySpecReduce_3  12# happyReduction_67-happyReduction_67 happy_x_3+happyReduce_69 = happySpecReduce_3  12# happyReduction_69+happyReduction_69 happy_x_3 	happy_x_2 	happy_x_1 	 =  case happyOut11 happy_x_1 of { happy_var_1 -> @@ -873,13 +895,13 @@ 		 (happy_var_1:happy_var_3 	)}} -happyReduce_68 = happySpecReduce_0  13# happyReduction_68-happyReduction_68  =  happyIn17+happyReduce_70 = happySpecReduce_0  13# happyReduction_70+happyReduction_70  =  happyIn17 		 ([] 	) -happyReduce_69 = happySpecReduce_3  13# happyReduction_69-happyReduction_69 happy_x_3+happyReduce_71 = happySpecReduce_3  13# happyReduction_71+happyReduction_71 happy_x_3 	happy_x_2 	happy_x_1 	 =  case happyOut11 happy_x_1 of { happy_var_1 -> @@ -888,8 +910,8 @@ 		 ([(happy_var_1,happy_var_3)] 	)}} -happyReduce_70 = happyReduce 5# 13# happyReduction_70-happyReduction_70 (happy_x_5 `HappyStk`+happyReduce_72 = happyReduce 5# 13# happyReduction_72+happyReduction_72 (happy_x_5 `HappyStk` 	happy_x_4 `HappyStk` 	happy_x_3 `HappyStk` 	happy_x_2 `HappyStk`@@ -902,74 +924,74 @@ 		 ((happy_var_1,happy_var_3):happy_var_5 	) `HappyStk` happyRest}}} -happyReduce_71 = happySpecReduce_1  14# happyReduction_71-happyReduction_71 happy_x_1+happyReduce_73 = happySpecReduce_1  14# happyReduction_73+happyReduction_73 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenInt happy_var_1) ->  	happyIn18 		 (MkInt happy_var_1 	)} -happyReduce_72 = happySpecReduce_1  14# happyReduction_72-happyReduction_72 happy_x_1+happyReduce_74 = happySpecReduce_1  14# happyReduction_74+happyReduction_74 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenBigInt happy_var_1) ->  	happyIn18 		 (MkBigInt happy_var_1 	)} -happyReduce_73 = happySpecReduce_1  14# happyReduction_73-happyReduction_73 happy_x_1+happyReduce_75 = happySpecReduce_1  14# happyReduction_75+happyReduction_75 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenChar happy_var_1) ->  	happyIn18 		 (MkChar happy_var_1 	)} -happyReduce_74 = happySpecReduce_1  14# happyReduction_74-happyReduction_74 happy_x_1+happyReduce_76 = happySpecReduce_1  14# happyReduction_76+happyReduction_76 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenBool happy_var_1) ->  	happyIn18 		 (MkBool happy_var_1 	)} -happyReduce_75 = happySpecReduce_1  14# happyReduction_75-happyReduction_75 happy_x_1+happyReduce_77 = happySpecReduce_1  14# happyReduction_77+happyReduction_77 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenFloat happy_var_1) ->  	happyIn18 		 (MkFloat happy_var_1 	)} -happyReduce_76 = happySpecReduce_1  14# happyReduction_76-happyReduction_76 happy_x_1+happyReduce_78 = happySpecReduce_1  14# happyReduction_78+happyReduction_78 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenBigFloat happy_var_1) ->  	happyIn18 		 (MkBigFloat happy_var_1 	)} -happyReduce_77 = happySpecReduce_1  14# happyReduction_77-happyReduction_77 happy_x_1+happyReduce_79 = happySpecReduce_1  14# happyReduction_79+happyReduction_79 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenString happy_var_1) ->  	happyIn18 		 (MkString happy_var_1 	)} -happyReduce_78 = happySpecReduce_1  14# happyReduction_78-happyReduction_78 happy_x_1+happyReduce_80 = happySpecReduce_1  14# happyReduction_80+happyReduction_80 happy_x_1 	 =  happyIn18 		 (MkUnit 	) -happyReduce_79 = happySpecReduce_1  14# happyReduction_79-happyReduction_79 happy_x_1+happyReduce_81 = happySpecReduce_1  14# happyReduction_81+happyReduction_81 happy_x_1 	 =  happyIn18 		 (MkUnused 	) -happyReduce_80 = happyMonadReduce 0# 15# happyReduction_80-happyReduction_80 (happyRest) tk+happyReduce_82 = happyMonadReduce 0# 15# happyReduction_82+happyReduction_82 (happyRest) tk 	 = happyThen (( getLineNo) 	) (\r -> happyReturn (happyIn19 r)) -happyReduce_81 = happyMonadReduce 0# 16# happyReduction_81-happyReduction_81 (happyRest) tk+happyReduce_83 = happyMonadReduce 0# 16# happyReduction_83+happyReduction_83 (happyRest) tk 	 = happyThen (( getFileName) 	) (\r -> happyReturn (happyIn20 r)) @@ -977,7 +999,7 @@ 	= lexer(\tk ->  	let cont i = happyDoAction i tk action sts stk in 	case tk of {-	TokenEOF -> happyDoAction 67# tk action sts stk;+	TokenEOF -> happyDoAction 69# tk action sts stk; 	TokenName happy_dollar_dollar -> cont 1#; 	TokenString happy_dollar_dollar -> cont 2#; 	TokenInt happy_dollar_dollar -> cont 3#;@@ -1030,20 +1052,22 @@ 	TokenEQ -> cont 50#; 	TokenLE -> cont 51#; 	TokenGE -> cont 52#;-	TokenLT -> cont 53#;-	TokenGT -> cont 54#;-	TokenColon -> cont 55#;-	TokenProj -> cont 56#;-	TokenSemi -> cont 57#;-	TokenComma -> cont 58#;-	TokenBar -> cont 59#;-	TokenArrow -> cont 60#;-	TokenCInclude -> cont 61#;-	TokenExtern -> cont 62#;-	TokenExport -> cont 63#;-	TokenCType -> cont 64#;-	TokenInclude -> cont 65#;-	TokenInline -> cont 66#;+	TokenShL -> cont 53#;+	TokenShR -> cont 54#;+	TokenLT -> cont 55#;+	TokenGT -> cont 56#;+	TokenColon -> cont 57#;+	TokenProj -> cont 58#;+	TokenSemi -> cont 59#;+	TokenComma -> cont 60#;+	TokenBar -> cont 61#;+	TokenArrow -> cont 62#;+	TokenCInclude -> cont 63#;+	TokenExtern -> cont 64#;+	TokenExport -> cont 65#;+	TokenCType -> cont 66#;+	TokenInclude -> cont 67#;+	TokenInline -> cont 68#; 	_ -> happyError' tk 	}) 
dist/build/Epic/epic-tmp/Epic/Parser.hs view
@@ -140,21 +140,21 @@   happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\xce\x01\x05\x00\x00\x00\xdf\xff\x2d\x01\x2c\x01\x23\x01\xe1\x00\x01\x01\x1d\x01\xce\x01\x00\x00\x00\x00\xf7\x00\x00\x00\x1c\x01\xdf\xff\x00\x00\x00\x00\x00\x00\xe7\x00\x13\x01\x00\x00\x00\x00\xe5\x00\xd8\x00\xfb\x00\xd6\x00\x3d\x01\xc8\x00\x3d\x01\xc5\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\xc1\x00\x3d\x01\xf6\x00\x00\x00\x00\x00\xbb\x00\x01\x00\xe3\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\xee\x00\xe9\x00\x01\x00\x01\x00\xc4\x00\x00\x00\xe8\xff\xc2\x00\x3d\x01\xe2\x00\x00\x00\x01\x00\x01\x00\x01\x00\xe6\xff\x76\x00\xb2\x00\xd3\x00\x00\x00\xd7\x00\x01\x00\x3d\x01\x01\x00\x01\x00\x18\x00\x03\x00\xa1\x00\xaf\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xd4\x00\x01\x00\x03\x01\x00\x00\xe3\xff\xe3\xff\xe3\xff\xe3\xff\xf3\x00\xe6\xff\xe6\xff\x0d\x01\x0d\x01\x9e\x00\x01\x00\x3d\x01\xa2\x00\x01\x00\x66\x00\xc0\x00\xc3\x00\xad\x00\x9d\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x94\x00\x00\x00\x01\x00\x2c\x00\x2a\x00\x85\x00\x8c\x00\x00\x00\x00\x00\x01\x00\x8b\x00\x6c\x00\x77\x00\x9f\x00\x71\x00\x01\x00\x56\x00\x01\x00\x9a\x00\x79\x00\x00\x00\x3d\x01\x6f\x00\x00\x00\x01\x00\xe3\x00\x01\x00\x6b\x00\x01\x00\x2a\x00\x00\x00\x43\x00\x01\x00\x00\x00\xe3\x00\x86\x00\xe3\x00\x8a\x00\x00\x00\x40\x00\x01\x00\x00\x00\x69\x00\xe3\x00\x30\x00\x00\x00\x01\x00\xe3\x00\x00\x00"#+happyActOffsets = HappyA# "\x2d\x01\x1f\x00\x00\x00\xdf\xff\x52\x01\x4d\x01\x4b\x01\xfe\x00\xf5\x01\x40\x01\x2d\x01\x00\x00\x00\x00\x16\x01\x00\x00\x3b\x01\xdf\xff\x00\x00\x00\x00\x00\x00\x14\x01\x2a\x01\x00\x00\x00\x00\x08\x01\xf1\x00\x28\x01\xf0\x00\x69\x01\xdb\x00\x69\x01\xe2\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\xd9\x00\x69\x01\x15\x01\x00\x00\x00\x00\xe0\x00\x01\x00\xff\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\x06\x01\x03\x01\x01\x00\x01\x00\xdc\x00\x00\x00\xf1\xff\xda\x00\x69\x01\x00\x01\x00\x00\x01\x00\x01\x00\x01\x00\xe7\xff\x86\x00\xd0\x00\xed\x00\x00\x00\xf2\x00\x01\x00\x69\x01\x01\x00\x01\x00\x18\x00\x03\x00\xb6\x00\xc5\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xd7\x00\x01\x00\x23\x01\x00\x00\x35\x01\x35\x01\xe4\xff\xe4\xff\x35\x01\x35\x01\x11\x01\xe7\xff\xe7\xff\x37\x01\x37\x01\xc6\x00\x01\x00\x69\x01\xc4\x00\x01\x00\x74\x00\xd8\x00\xdd\x00\xc3\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\xb1\x00\x00\x00\x01\x00\x34\x00\x2a\x00\x96\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x9b\x00\x8b\x00\x8f\x00\xbc\x00\x79\x00\x01\x00\x62\x00\x01\x00\xae\x00\x8a\x00\x00\x00\x69\x01\x89\x00\x00\x00\x01\x00\xff\x00\x01\x00\x7e\x00\x01\x00\x2a\x00\x00\x00\x4d\x00\x01\x00\x00\x00\xff\x00\x9f\x00\xff\x00\x9c\x00\x00\x00\x63\x00\x01\x00\x00\x00\x6b\x00\xff\x00\x50\x00\x00\x00\x01\x00\xff\x00\x00\x00"#  happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x04\x02\x09\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x65\x00\x00\x00\x5c\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\x57\x00\x50\x00\x00\x00\x00\x00\x00\x00\xf7\x01\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\xf5\x01\xed\x01\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\xeb\x01\x73\x01\xe3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x4e\x00\xd9\x01\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x01\xcf\x01\xcd\x01\xc5\x01\xc3\x01\xbb\x01\xb9\x01\xb1\x01\xaf\x01\xa7\x01\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x01\x39\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x01\x00\x00\x53\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x4b\x01\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x89\x01\x00\x00\x87\x01\x00\x00\x7f\x01\x0b\x00\x00\x00\x00\x00\x7d\x01\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x01\x00\x00\x00\x00"#+happyGotoOffsets = HappyA# "\x37\x02\x0b\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x78\x00\x00\x00\x75\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\x6f\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x25\x02\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\x23\x02\x1b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x19\x02\x97\x01\x11\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x48\x00\x07\x02\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x01\xfd\x01\xfb\x01\xf3\x01\xf1\x01\xe9\x01\xe7\x01\xdf\x01\xdd\x01\xd5\x01\xd3\x01\xcb\x01\x00\x00\xc9\x01\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\x87\x01\x43\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\xad\x01\x00\x00\xab\x01\x00\x00\xa3\x01\x39\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00"#  happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xe8\xff\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x00\x00\xe8\xff\xfd\xff\xe7\xff\x00\x00\xed\xff\x00\x00\xec\xff\xe9\xff\xea\xff\xeb\xff\x00\x00\xe6\xff\xae\xff\xfc\xff\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xff\xfb\xff\xfa\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf0\xff\xf1\xff\xf2\xff\x00\x00\x00\x00\xe6\xff\xee\xff\xe4\xff\x00\x00\x00\x00\xef\xff\xd5\xff\xd4\xff\xdc\xff\xe3\xff\xb2\xff\xb8\xff\xb7\xff\xb5\xff\xb4\xff\xb3\xff\xb6\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\x00\x00\xbe\xff\x00\x00\xc6\xff\xbd\xff\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xdb\xff\xc2\xff\xc3\xff\xc0\xff\xc1\xff\xbf\xff\xc4\xff\xc5\xff\xc7\xff\xc8\xff\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\xe0\xff\xbe\xff\xbc\xff\xbb\xff\xde\xff\x00\x00\xdf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xe1\xff\xdd\xff\x00\x00\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\xff\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\xd7\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xce\xff\xcf\xff\x00\x00\x00\x00\xcc\xff\xca\xff\xe6\xff\xc9\xff\x00\x00\xd0\xff\xba\xff\xbb\xff\xd6\xff\x00\x00\xda\xff\x00\x00\xb9\xff\x00\x00\xcb\xff"#+happyDefActions = HappyA# "\xe8\xff\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x00\x00\xe8\xff\xfd\xff\xe7\xff\x00\x00\xed\xff\x00\x00\xec\xff\xe9\xff\xea\xff\xeb\xff\x00\x00\xe6\xff\xac\xff\xfc\xff\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xff\xfb\xff\xfa\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf0\xff\xf1\xff\xf2\xff\x00\x00\x00\x00\xe6\xff\xee\xff\xe4\xff\x00\x00\x00\x00\xef\xff\xd5\xff\xd4\xff\xdc\xff\xe3\xff\xb0\xff\xb6\xff\xb5\xff\xb3\xff\xb2\xff\xb1\xff\xb4\xff\xaf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\x00\x00\xbc\xff\x00\x00\xc6\xff\xbb\xff\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\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\xd9\xff\xdb\xff\xc0\xff\xc1\xff\xc2\xff\xc3\xff\xbe\xff\xbf\xff\xbd\xff\xc4\xff\xc5\xff\xc7\xff\xc8\xff\x00\x00\xbc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\xe0\xff\xbc\xff\xba\xff\xb9\xff\xde\xff\x00\x00\xdf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xe1\xff\xdd\xff\x00\x00\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\xd7\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xce\xff\xcf\xff\x00\x00\x00\x00\xcc\xff\xca\xff\xe6\xff\xc9\xff\x00\x00\xd0\xff\xb8\xff\xb9\xff\xd6\xff\x00\x00\xda\xff\x00\x00\xb7\xff\x00\x00\xcb\xff"#  happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x22\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x27\x00\x02\x00\x24\x00\x27\x00\x05\x00\x27\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x09\x00\x0a\x00\x15\x00\x16\x00\x06\x00\x18\x00\x19\x00\x38\x00\x1b\x00\x1a\x00\x38\x00\x1e\x00\x1f\x00\x42\x00\x21\x00\x01\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x27\x00\x02\x00\x2b\x00\x03\x00\x05\x00\x2e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x38\x00\x39\x00\x09\x00\x0a\x00\x27\x00\x16\x00\x17\x00\x3d\x00\x3e\x00\x3f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1d\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x38\x00\x39\x00\x00\x00\x27\x00\x02\x00\x01\x00\x06\x00\x05\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x20\x00\x38\x00\x39\x00\x01\x00\x07\x00\x08\x00\x06\x00\x27\x00\x0b\x00\x3c\x00\x0d\x00\x0e\x00\x10\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x06\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3a\x00\x38\x00\x39\x00\x27\x00\x28\x00\x03\x00\x04\x00\x03\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x3a\x00\x28\x00\x27\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x28\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x3a\x00\x28\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3b\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3c\x00\x38\x00\x39\x00\x3a\x00\x27\x00\x28\x00\x3c\x00\x28\x00\x2a\x00\x31\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x27\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x27\x00\x02\x00\x28\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x29\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x27\x00\x28\x00\x27\x00\x03\x00\x37\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x02\x00\x38\x00\x39\x00\x27\x00\x28\x00\x27\x00\x01\x00\x27\x00\x31\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x03\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x38\x00\x39\x00\x27\x00\x28\x00\x01\x00\x3c\x00\x28\x00\x3a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x28\x00\x27\x00\x37\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x01\x00\x27\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x43\x00\x02\x00\x33\x00\x34\x00\x35\x00\x36\x00\x27\x00\x38\x00\x39\x00\x01\x00\xff\xff\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x27\x00\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x2f\x00\x30\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\x38\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\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\x0c\x00\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\x00\x00\x0e\x00\x02\x00\xff\xff\xff\xff\x05\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\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"#+happyCheck = HappyA# "\xff\xff\x22\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x27\x00\x02\x00\x02\x00\x27\x00\x05\x00\x05\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x24\x00\x15\x00\x16\x00\x27\x00\x18\x00\x19\x00\x06\x00\x1b\x00\x1a\x00\x3a\x00\x1e\x00\x1f\x00\x3a\x00\x21\x00\x44\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x27\x00\x02\x00\x2b\x00\x03\x00\x05\x00\x2e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x01\x00\x3a\x00\x3b\x00\x27\x00\x16\x00\x17\x00\x09\x00\x0a\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1d\x00\x3a\x00\x3b\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x03\x00\x04\x00\x0b\x00\x27\x00\x0d\x00\x0e\x00\x3f\x00\x40\x00\x41\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x01\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x20\x00\x3a\x00\x3b\x00\x01\x00\x07\x00\x08\x00\x06\x00\x27\x00\x0b\x00\x01\x00\x0d\x00\x0e\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x10\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x06\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x03\x00\x04\x00\x06\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x28\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x3c\x00\x3c\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x27\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x3c\x00\x28\x00\x28\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3e\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x03\x00\x3a\x00\x3b\x00\x3c\x00\x27\x00\x28\x00\x2a\x00\x28\x00\x31\x00\x3d\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3e\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x27\x00\x27\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x27\x00\x29\x00\x28\x00\x39\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x2c\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x27\x00\x02\x00\x27\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x03\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x31\x00\x3a\x00\x3b\x00\x27\x00\x28\x00\x01\x00\x3e\x00\x28\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3c\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x01\x00\x39\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x28\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x27\x00\x01\x00\x27\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\x45\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x3b\x00\x02\x00\x01\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x02\x00\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x27\x00\x3a\x00\x27\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2f\x00\x30\x00\xff\xff\xff\xff\x35\x00\x36\x00\x3f\x00\x40\x00\x41\x00\x3a\x00\x43\x00\x3a\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\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0d\x00\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\x0c\x00\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x07\x00\x08\x00\x07\x00\x08\x00\x0b\x00\xff\xff\x0b\x00\x0e\x00\xff\xff\x0e\x00\x3f\x00\x40\x00\x41\x00\x00\x00\x43\x00\x02\x00\x45\x00\xff\xff\x05\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"#  happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x12\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x5d\x00\x02\x00\x56\x00\x5d\x00\x03\x00\x57\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa4\x00\x8e\x00\x40\x00\x41\x00\xad\x00\x42\x00\x43\x00\x67\x00\x44\x00\x77\x00\x67\x00\x45\x00\x46\x00\x13\x00\x47\x00\xaa\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x5d\x00\x08\x00\x4d\x00\x90\x00\x03\x00\x4e\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x78\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x88\x00\x67\x00\x68\x00\x8d\x00\x8e\x00\x5d\x00\x91\x00\x92\x00\x05\x00\x06\x00\x07\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x93\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x7a\x00\x67\x00\x68\x00\x0b\x00\x5d\x00\x08\x00\x53\x00\x30\x00\x03\x00\x31\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x2f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xa4\x00\x67\x00\x68\x00\x1f\x00\x95\x00\x34\x00\x1b\x00\x5d\x00\x35\x00\xb2\x00\xb0\x00\x36\x00\x17\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x18\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xac\x00\x67\x00\x68\x00\x5d\x00\x9b\x00\x13\x00\x10\x00\x0f\x00\x10\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1a\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x9c\x00\xb0\x00\xa7\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xaa\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x86\x00\x98\x00\x9f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa1\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x9e\x00\x67\x00\x68\x00\x80\x00\x5d\x00\xad\x00\xa0\x00\x8c\x00\xa2\x00\x8d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x95\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x82\x00\x84\x00\x8b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x88\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x99\x00\x67\x00\x68\x00\x5d\x00\x83\x00\x75\x00\x6a\x00\x76\x00\x7d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x7f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x53\x00\x67\x00\x68\x00\x5d\x00\x85\x00\x55\x00\x5b\x00\x58\x00\x33\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5c\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x1a\x00\x67\x00\x68\x00\x5d\x00\x7e\x00\x1a\x00\x2e\x00\x2d\x00\x2f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x1e\x00\x1b\x00\x1d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1a\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x15\x00\x16\x00\x0b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xff\xff\x0d\x00\x63\x00\x64\x00\x65\x00\x66\x00\x5d\x00\x67\x00\x68\x00\x0e\x00\x00\x00\x0f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5d\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x00\x00\x67\x00\x60\x00\x61\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x00\x00\xfe\xff\x67\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\x95\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x99\x00\x36\x00\x95\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x96\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x80\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x89\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x73\x00\x00\x00\x36\x00\x4f\x00\x34\x00\xb2\x00\x34\x00\x35\x00\x50\x00\x35\x00\x36\x00\x00\x00\x36\x00\xae\x00\x34\x00\xa5\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\xa7\x00\x34\x00\xa8\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x9c\x00\x34\x00\xa2\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x93\x00\x34\x00\x86\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x68\x00\x34\x00\x6a\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6b\x00\x34\x00\x6c\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6d\x00\x34\x00\x6e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6f\x00\x34\x00\x70\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x71\x00\x34\x00\x72\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x78\x00\x34\x00\x79\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x7b\x00\x34\x00\x4e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x51\x00\x34\x00\x58\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x59\x00\x34\x00\x33\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x07\x00\x36\x00\x08\x00\x00\x00\x00\x00\x03\x00\x00\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\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"#+happyTable = HappyA# "\x00\x00\x12\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x16\x00\x5d\x00\x08\x00\x02\x00\x5d\x00\x03\x00\x03\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x56\x00\x40\x00\x41\x00\x57\x00\x42\x00\x43\x00\xb1\x00\x44\x00\x7b\x00\x69\x00\x45\x00\x46\x00\x69\x00\x47\x00\x13\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x0b\x00\x5d\x00\x08\x00\x4d\x00\x94\x00\x03\x00\x4e\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x7c\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xae\x00\x69\x00\x6a\x00\x5d\x00\x95\x00\x96\x00\xa8\x00\x92\x00\x8c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x7e\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x97\x00\x69\x00\x6a\x00\x91\x00\x92\x00\x99\x00\x34\x00\x13\x00\x10\x00\x35\x00\x5d\x00\xb4\x00\x36\x00\x05\x00\x06\x00\x07\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x53\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xa8\x00\x69\x00\x6a\x00\x31\x00\x99\x00\x34\x00\x30\x00\x5d\x00\x35\x00\x2f\x00\x9d\x00\x36\x00\x1f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x17\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x1b\x00\x69\x00\x6a\x00\x5d\x00\x9f\x00\x0f\x00\x10\x00\x18\x00\xb6\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xb4\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\xa0\x00\xb0\x00\x1a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xab\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x8a\x00\xae\x00\x9c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa2\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xa3\x00\x69\x00\x6a\x00\x84\x00\x5d\x00\xb1\x00\xa6\x00\x90\x00\x91\x00\xa5\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xa4\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x99\x00\x86\x00\x6c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x88\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x9d\x00\x69\x00\x6a\x00\x5d\x00\x87\x00\x79\x00\x8c\x00\x8f\x00\x7a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x81\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x83\x00\x69\x00\x6a\x00\x5d\x00\x89\x00\x55\x00\x53\x00\x58\x00\x5b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5c\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x33\x00\x69\x00\x6a\x00\x5d\x00\x82\x00\x1a\x00\x2e\x00\x2d\x00\x1f\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x2f\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x1a\x00\x1d\x00\x1a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1e\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x1b\x00\x15\x00\x16\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x0b\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x6a\x00\x0d\x00\x0e\x00\x00\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x0f\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x69\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x60\x00\x61\x00\x00\x00\x00\x00\x65\x00\x66\x00\x05\x00\x06\x00\x07\x00\x69\x00\x0a\x00\x69\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\x99\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x9a\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x84\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x8d\x00\x00\x00\x36\x00\x4f\x00\x34\x00\x00\x00\x00\x00\x35\x00\x77\x00\x00\x00\x36\x00\x4f\x00\x34\x00\xb6\x00\x34\x00\x35\x00\x50\x00\x35\x00\x36\x00\x00\x00\x36\x00\xb2\x00\x34\x00\xa9\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\xab\x00\x34\x00\xac\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\xa0\x00\x34\x00\xa6\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x97\x00\x34\x00\x8a\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6a\x00\x34\x00\x6c\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6d\x00\x34\x00\x6e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x6f\x00\x34\x00\x70\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x71\x00\x34\x00\x72\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x73\x00\x34\x00\x74\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x75\x00\x34\x00\x76\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x7c\x00\x34\x00\x7d\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x7f\x00\x34\x00\x4e\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x51\x00\x34\x00\x58\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x59\x00\x34\x00\x33\x00\x34\x00\x35\x00\x00\x00\x35\x00\x36\x00\x00\x00\x36\x00\x05\x00\x06\x00\x07\x00\x07\x00\x0a\x00\x08\x00\xfe\xff\x00\x00\x03\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"# -happyReduceArr = Happy_Data_Array.array (1, 81) [+happyReduceArr = Happy_Data_Array.array (1, 83) [ 	(1 , happyReduce_1), 	(2 , happyReduce_2), 	(3 , happyReduce_3),@@ -235,10 +235,12 @@ 	(78 , happyReduce_78), 	(79 , happyReduce_79), 	(80 , happyReduce_80),-	(81 , happyReduce_81)+	(81 , happyReduce_81),+	(82 , happyReduce_82),+	(83 , happyReduce_83) 	] -happy_n_terms = 68 :: Int+happy_n_terms = 70 :: Int happy_n_nonterms = 17 :: Int  happyReduce_1 = happySpecReduce_1  0# happyReduction_1@@ -808,7 +810,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpLT happy_var_1 happy_var_3+		 (Op ShL happy_var_1 happy_var_3 	)}}  happyReduce_61 = happySpecReduce_3  11# happyReduction_61@@ -818,7 +820,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpGT happy_var_1 happy_var_3+		 (Op ShR happy_var_1 happy_var_3 	)}}  happyReduce_62 = happySpecReduce_3  11# happyReduction_62@@ -828,7 +830,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpLE happy_var_1 happy_var_3+		 (Op OpLT happy_var_1 happy_var_3 	)}}  happyReduce_63 = happySpecReduce_3  11# happyReduction_63@@ -838,7 +840,7 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15-		 (Op OpGE happy_var_1 happy_var_3+		 (Op OpGT happy_var_1 happy_var_3 	)}}  happyReduce_64 = happySpecReduce_3  11# happyReduction_64@@ -848,23 +850,43 @@ 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	case happyOut11 happy_x_3 of { happy_var_3 ->  	happyIn15+		 (Op OpLE happy_var_1 happy_var_3+	)}}++happyReduce_65 = happySpecReduce_3  11# happyReduction_65+happyReduction_65 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> +	case happyOut11 happy_x_3 of { happy_var_3 -> +	happyIn15+		 (Op OpGE happy_var_1 happy_var_3+	)}}++happyReduce_66 = happySpecReduce_3  11# happyReduction_66+happyReduction_66 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> +	case happyOut11 happy_x_3 of { happy_var_3 -> +	happyIn15 		 (Op OpEQ happy_var_1 happy_var_3 	)}} -happyReduce_65 = happySpecReduce_0  12# happyReduction_65-happyReduction_65  =  happyIn16+happyReduce_67 = happySpecReduce_0  12# happyReduction_67+happyReduction_67  =  happyIn16 		 ([] 	) -happyReduce_66 = happySpecReduce_1  12# happyReduction_66-happyReduction_66 happy_x_1+happyReduce_68 = happySpecReduce_1  12# happyReduction_68+happyReduction_68 happy_x_1 	 =  case happyOut11 happy_x_1 of { happy_var_1 ->  	happyIn16 		 ([happy_var_1] 	)} -happyReduce_67 = happySpecReduce_3  12# happyReduction_67-happyReduction_67 happy_x_3+happyReduce_69 = happySpecReduce_3  12# happyReduction_69+happyReduction_69 happy_x_3 	happy_x_2 	happy_x_1 	 =  case happyOut11 happy_x_1 of { happy_var_1 -> @@ -873,13 +895,13 @@ 		 (happy_var_1:happy_var_3 	)}} -happyReduce_68 = happySpecReduce_0  13# happyReduction_68-happyReduction_68  =  happyIn17+happyReduce_70 = happySpecReduce_0  13# happyReduction_70+happyReduction_70  =  happyIn17 		 ([] 	) -happyReduce_69 = happySpecReduce_3  13# happyReduction_69-happyReduction_69 happy_x_3+happyReduce_71 = happySpecReduce_3  13# happyReduction_71+happyReduction_71 happy_x_3 	happy_x_2 	happy_x_1 	 =  case happyOut11 happy_x_1 of { happy_var_1 -> @@ -888,8 +910,8 @@ 		 ([(happy_var_1,happy_var_3)] 	)}} -happyReduce_70 = happyReduce 5# 13# happyReduction_70-happyReduction_70 (happy_x_5 `HappyStk`+happyReduce_72 = happyReduce 5# 13# happyReduction_72+happyReduction_72 (happy_x_5 `HappyStk` 	happy_x_4 `HappyStk` 	happy_x_3 `HappyStk` 	happy_x_2 `HappyStk`@@ -902,74 +924,74 @@ 		 ((happy_var_1,happy_var_3):happy_var_5 	) `HappyStk` happyRest}}} -happyReduce_71 = happySpecReduce_1  14# happyReduction_71-happyReduction_71 happy_x_1+happyReduce_73 = happySpecReduce_1  14# happyReduction_73+happyReduction_73 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenInt happy_var_1) ->  	happyIn18 		 (MkInt happy_var_1 	)} -happyReduce_72 = happySpecReduce_1  14# happyReduction_72-happyReduction_72 happy_x_1+happyReduce_74 = happySpecReduce_1  14# happyReduction_74+happyReduction_74 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenBigInt happy_var_1) ->  	happyIn18 		 (MkBigInt happy_var_1 	)} -happyReduce_73 = happySpecReduce_1  14# happyReduction_73-happyReduction_73 happy_x_1+happyReduce_75 = happySpecReduce_1  14# happyReduction_75+happyReduction_75 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenChar happy_var_1) ->  	happyIn18 		 (MkChar happy_var_1 	)} -happyReduce_74 = happySpecReduce_1  14# happyReduction_74-happyReduction_74 happy_x_1+happyReduce_76 = happySpecReduce_1  14# happyReduction_76+happyReduction_76 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenBool happy_var_1) ->  	happyIn18 		 (MkBool happy_var_1 	)} -happyReduce_75 = happySpecReduce_1  14# happyReduction_75-happyReduction_75 happy_x_1+happyReduce_77 = happySpecReduce_1  14# happyReduction_77+happyReduction_77 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenFloat happy_var_1) ->  	happyIn18 		 (MkFloat happy_var_1 	)} -happyReduce_76 = happySpecReduce_1  14# happyReduction_76-happyReduction_76 happy_x_1+happyReduce_78 = happySpecReduce_1  14# happyReduction_78+happyReduction_78 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenBigFloat happy_var_1) ->  	happyIn18 		 (MkBigFloat happy_var_1 	)} -happyReduce_77 = happySpecReduce_1  14# happyReduction_77-happyReduction_77 happy_x_1+happyReduce_79 = happySpecReduce_1  14# happyReduction_79+happyReduction_79 happy_x_1 	 =  case happyOutTok happy_x_1 of { (TokenString happy_var_1) ->  	happyIn18 		 (MkString happy_var_1 	)} -happyReduce_78 = happySpecReduce_1  14# happyReduction_78-happyReduction_78 happy_x_1+happyReduce_80 = happySpecReduce_1  14# happyReduction_80+happyReduction_80 happy_x_1 	 =  happyIn18 		 (MkUnit 	) -happyReduce_79 = happySpecReduce_1  14# happyReduction_79-happyReduction_79 happy_x_1+happyReduce_81 = happySpecReduce_1  14# happyReduction_81+happyReduction_81 happy_x_1 	 =  happyIn18 		 (MkUnused 	) -happyReduce_80 = happyMonadReduce 0# 15# happyReduction_80-happyReduction_80 (happyRest) tk+happyReduce_82 = happyMonadReduce 0# 15# happyReduction_82+happyReduction_82 (happyRest) tk 	 = happyThen (( getLineNo) 	) (\r -> happyReturn (happyIn19 r)) -happyReduce_81 = happyMonadReduce 0# 16# happyReduction_81-happyReduction_81 (happyRest) tk+happyReduce_83 = happyMonadReduce 0# 16# happyReduction_83+happyReduction_83 (happyRest) tk 	 = happyThen (( getFileName) 	) (\r -> happyReturn (happyIn20 r)) @@ -977,7 +999,7 @@ 	= lexer(\tk ->  	let cont i = happyDoAction i tk action sts stk in 	case tk of {-	TokenEOF -> happyDoAction 67# tk action sts stk;+	TokenEOF -> happyDoAction 69# tk action sts stk; 	TokenName happy_dollar_dollar -> cont 1#; 	TokenString happy_dollar_dollar -> cont 2#; 	TokenInt happy_dollar_dollar -> cont 3#;@@ -1030,20 +1052,22 @@ 	TokenEQ -> cont 50#; 	TokenLE -> cont 51#; 	TokenGE -> cont 52#;-	TokenLT -> cont 53#;-	TokenGT -> cont 54#;-	TokenColon -> cont 55#;-	TokenProj -> cont 56#;-	TokenSemi -> cont 57#;-	TokenComma -> cont 58#;-	TokenBar -> cont 59#;-	TokenArrow -> cont 60#;-	TokenCInclude -> cont 61#;-	TokenExtern -> cont 62#;-	TokenExport -> cont 63#;-	TokenCType -> cont 64#;-	TokenInclude -> cont 65#;-	TokenInline -> cont 66#;+	TokenShL -> cont 53#;+	TokenShR -> cont 54#;+	TokenLT -> cont 55#;+	TokenGT -> cont 56#;+	TokenColon -> cont 57#;+	TokenProj -> cont 58#;+	TokenSemi -> cont 59#;+	TokenComma -> cont 60#;+	TokenBar -> cont 61#;+	TokenArrow -> cont 62#;+	TokenCInclude -> cont 63#;+	TokenExtern -> cont 64#;+	TokenExport -> cont 65#;+	TokenCType -> cont 66#;+	TokenInclude -> cont 67#;+	TokenInline -> cont 68#; 	_ -> happyError' tk 	}) 
epic.cabal view
@@ -1,5 +1,5 @@ Name:		epic-Version:	0.1.4+Version:	0.1.5 Author:		Edwin Brady License:	BSD3 License-file:	LICENSE
evm/closure.c view
@@ -7,16 +7,16 @@  VAL one; VAL* zcon;-void* blob = NULL;-int blobnext = 0;+//void* blob = NULL;+//int blobnext = 0; -void* FASTMALLOC(int size) {+/*void* FASTMALLOC(int size) {     if (blob == NULL) { blob = malloc(10001000); }     void* newblock = blob+blobnext;     blobnext+=((size+4) & 0xfffffffc);     if (blobnext>10000000) blobnext=0;     return newblock;-}+    }*/  void dumpClosureA(Closure* c, int rec); @@ -38,6 +38,7 @@ }  void dumpClosureA(Closure* c, int rec) {+    c = DO_EVAL(c,0);     switch(GETTY(c)) {     case FUN: 	printf("FUN[");@@ -50,7 +51,7 @@ 	dumpCon((con*)c->info, rec); 	break;     case INT:-	if (!rec) { printf("INT[%d", ((int)c)>>1); } else { printf("[%d", ((int)c)>>1); }+	if (!rec) { printf("INT[%ld", ((eint)c)>>1); } else { printf("[%ld", ((eint)c)>>1); } 	break;     case BIGINT: 	printf("BIGINT[");@@ -74,7 +75,7 @@ 	printf("FREEVAR["); 	break;     default:-	printf("[%d,%d", GETTY(c), (int)c->info);+	printf("[%d,%ld", GETTY(c), (eint)c->info);     }     printf("]"); }@@ -112,6 +113,7 @@      SETTY(c, FUN);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -128,6 +130,7 @@     }     SETTY(c, CON);     c->info = (void*)cn;+    EREADY(c);     return c; } @@ -140,6 +143,7 @@     cn->args[0] = a1;     SETTY(c,CON);     c->info = (void*)cn;+    EREADY(c);     return c; } @@ -153,6 +157,7 @@     cn->args[1] = a2;     SETTY(c,CON);     c->info = (void*)cn;+    EREADY(c);     return c; } @@ -167,6 +172,7 @@     cn->args[2] = a3;     SETTY(c,CON);     c->info = (void*)cn;+    EREADY(c);     return c; } @@ -182,6 +188,7 @@     cn->args[3] = a4;     SETTY(c,CON);     c->info = (void*)cn;+    EREADY(c);     return c; } @@ -198,6 +205,7 @@     cn->args[4] = a5;     SETTY(c,CON);     c->info = (void*)cn;+    EREADY(c);     return c; } @@ -366,6 +374,7 @@      SETTY(c,THUNK);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -385,6 +394,7 @@      SETTY(c,THUNK);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -405,6 +415,7 @@      SETTY(c,THUNK);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -426,6 +437,7 @@      SETTY(c,THUNK);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -448,6 +460,7 @@      SETTY(c,THUNK);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -471,6 +484,7 @@      SETTY(c,THUNK);     c->info = (void*)fn;+    EREADY(c);     return c; } @@ -638,6 +652,7 @@     default: 	assert(0); // Can't happen     }+    EREADY(x);     return x; } @@ -669,6 +684,7 @@      SETTY(c, BIGINT);     c->info = (void*)bigint;+    EREADY(c);     return c; } @@ -682,13 +698,14 @@      SETTY(c, BIGINT);     c->info = (void*)bigint;+    EREADY(c);     return c; }  /* int GETINT(void* x) {-    return ((int)x)>>1;+    return ((eint)x)>>1; } */ @@ -709,6 +726,7 @@ // Since MKSTR is used to build strings from foreign calls, the string // itself will already have been allocated so we just want the closure.     c->info=x;+    EREADY(c);     return c; } @@ -717,6 +735,7 @@     VAL c = MKCLOSURE;     SETTY(c, PTR);     c->info = x;+    EREADY(c);     return c; } @@ -737,6 +756,7 @@     VAL c = MKCLOSURE;     SETTY(c, FREEVAR);     c->info = (void*)x;+    EREADY(c);     return c; } @@ -748,4 +768,5 @@     for(i=0;i<255;++i) { 	zcon[i] = CONSTRUCTORn(i,0,0);     }+    EREADY(zcon); }
evm/closure.h view
@@ -9,14 +9,20 @@ # endif  #include <gc/gc.h>++//#include <emalloc.h> #include <gmp.h> #include <stdio.h> #include <stdlib.h>+#include <stdint.h> -#define EMALLOC GC_MALLOC-#define EREALLOC GC_REALLOC-#define EFREE GC_FREE+#define EMALLOC GC_malloc+#define EREADY(x) +#define EREALLOC GC_realloc+#define EFREE GC_free +typedef intptr_t eint;+ //#define EMALLOC malloc //#define EREALLOC realloc //#define EFREE free@@ -27,9 +33,9 @@ #define MKCLOSURE (Closure*)EMALLOC(sizeof(Closure)) #define MKUNIT (void*)0 -#define INTOP(op,x,y) MKINT((((int)x)>>1) op (((int)y)>>1))-#define ADD(x,y) (void*)(((int)x)+(((int)y)-1))-#define MULT(x,y) (MKINT((((int)x)>>1) * (((int)y)>>1)))+#define INTOP(op,x,y) MKINT((((eint)x)>>1) op (((eint)y)>>1))+#define ADD(x,y) (void*)(((eint)x)+(((eint)y)-1))+#define MULT(x,y) (MKINT((((eint)x)>>1) * (((eint)y)>>1))) #define CHECKEVALUATED(x) if(ISFUN(x) || ISTHUNK(x) \     || ISFV(x)) return 0; @@ -47,7 +53,8 @@     STRING,      UNIT,      PTR,-    FREEVAR +    FREEVAR,+    IND } ClosureType;  typedef struct {@@ -68,7 +75,7 @@  #define GETTY(x) (ISINT(x) ? INT : ((ClosureType)(((x)->ty) >> 24))) #define QGETTY(x) ((ClosureType)(((x)->ty) >> 24))-#define SETTY(x,t) (x)->ty = (((int)t) << 24)+#define SETTY(x,t) (x)->ty = (((eint)t) << 24)  #define REF(x) x #define DEREF(x) @@ -99,7 +106,7 @@ #define ARITY(x) (((con*)((Closure*)x)->info)->tag >> 16)  #define ISCON(x) (GETTY(((Closure*)(x)))==CON)-#define ISINT(x) ((((int)x)&1) == 1)+#define ISINT(x) ((((eint)x)&1) == 1) #define ISTHUNK(x) (GETTY(((Closure*)(x)))==THUNK) #define ISFUN(x) (GETTY(((Closure*)(x)))==FUN) #define ISFV(x) (GETTY(((Closure*)(x)))==FREEVAR)@@ -167,10 +174,13 @@ extern VAL* zcon;  #define MKINT(x) ((void*)((x)<<1)+1)-#define GETINT(x) ((int)(x)>>1)+#define GETINT(x) ((eint)(x)>>1) #define GETPTR(x) ((void*)(((VAL)(x))->info)) #define GETSTR(x) ((char*)(((VAL)(x))->info)) +#define INTTOEINT(x) ((eint)(x))+#define EINTTOINT(x) ((int)(x))+ //void* MKINT(int x); void* NEWBIGINT(char* bigint); void* MKBIGINT(mpz_t* bigint);@@ -200,7 +210,8 @@     ((con*)((VAL)c+1))->args = (void*)c+sizeof(Closure)+sizeof(con); \     ((con*)((VAL)c+1))->args[0] = x; \     SETTY(((VAL)c),CON);	 \-    ((VAL)c)->info = (void*)((con*)((VAL)c+1));+    ((VAL)c)->info = (void*)((con*)((VAL)c+1)); \+    EREADY(c);  #define CONSTRUCTOR2m(c,t,x,y)		\     c=EMALLOC(sizeof(Closure)+sizeof(con)+2*sizeof(VAL)); \@@ -209,7 +220,8 @@     ((con*)((VAL)c+1))->args[0] = x; \     ((con*)((VAL)c+1))->args[1] = y; \     SETTY(((VAL)c),CON);	 \-    ((VAL)c)->info = (void*)((con*)((VAL)c+1));+    ((VAL)c)->info = (void*)((con*)((VAL)c+1)); \+    EREADY(c);  #define CONSTRUCTOR3m(c,t,x,y,z)		\     c=EMALLOC(sizeof(Closure)+sizeof(con)+3*sizeof(VAL)); \@@ -219,7 +231,8 @@     ((con*)((VAL)c+1))->args[1] = y; \     ((con*)((VAL)c+1))->args[2] = z; \     SETTY(((VAL)c),CON);	 \-    ((VAL)c)->info = (void*)((con*)((VAL)c+1));+    ((VAL)c)->info = (void*)((con*)((VAL)c+1)); \+    EREADY(c);  #define CONSTRUCTOR4m(c,t,x,y,z,w)			  \     c=EMALLOC(sizeof(Closure)+sizeof(con)+4*sizeof(VAL)); \@@ -230,7 +243,8 @@     ((con*)((VAL)c+1))->args[2] = z; \     ((con*)((VAL)c+1))->args[3] = w; \     SETTY(((VAL)c),CON);	 \-    ((VAL)c)->info = (void*)((con*)((VAL)c+1));+    ((VAL)c)->info = (void*)((con*)((VAL)c+1)); \+    EREADY(c);  #define CONSTRUCTOR5m(c,t,x,y,z,w,v)			  \     c=EMALLOC(sizeof(Closure)+sizeof(con)+5*sizeof(VAL)); \@@ -242,7 +256,8 @@     ((con*)((VAL)c+1))->args[3] = w; \     ((con*)((VAL)c+1))->args[4] = v; \     SETTY(((VAL)c),CON);	 \-    ((VAL)c)->info = (void*)((con*)((VAL)c+1));+    ((VAL)c)->info = (void*)((con*)((VAL)c+1)); \+    EREADY(c);  //    s = EMALLOC(sizeof(Closure)+strlen(x)+sizeof(char)+1);	 
evm/libevm.a view

binary file changed (22976 → 22608 bytes)

evm/mainprog.c view
@@ -9,11 +9,20 @@  void* _do__U_main(); +void** _epic_top_of_stack;+ int main(int argc, char* argv[]) {+    void* stacktop = NULL;+    _epic_top_of_stack = (void**)&stacktop;+     GC_init();     init_evm(); //    GC_use_entire_heap = 1;-//    GC_free_space_divisor = 1;+//    GC_free_space_divisor = 2;+//    GC_enable_incremental();+//    GC_time_limit = GC_TIME_UNLIMITED;++//    GC_full_freq=15; //    fprintf(stderr, "Heap: %d\n", GC_get_heap_size());     GC_expand_hp(1000000); //    fprintf(stderr, "Heap: %d\n", GC_get_heap_size());
evm/stdfuns.c view
@@ -1,6 +1,7 @@ #include "stdfuns.h" #include "closure.h" #include <stdlib.h>+#include <unistd.h> #include <gmp.h> #include <string.h> #include <sys/time.h>