diff --git a/GF.cabal b/GF.cabal index 1020531eb..8d86528b5 100644 --- a/GF.cabal +++ b/GF.cabal @@ -617,9 +617,7 @@ executable gf extensions: main-is: GF.hs other-modules: - GF.Grammar.ReservedWords GF.Data.BacktrackM - GF.Source.LexGF GF.Source.AbsGF GF.Source.PrintGF GF.JavaScript.AbsJS @@ -632,7 +630,6 @@ executable gf GF.Data.Assoc GF.Compile.GenerateFCFG GF.Data.ErrM - GF.Source.ParGF GF.Data.Operations GF.Infra.Ident GF.Grammar.Predef @@ -647,6 +644,8 @@ executable gf GF.Command.Parse GF.Command.Importing GF.Infra.Modules + GF.Grammar.Lexer + GF.Grammar.Parser GF.Grammar.Grammar GF.Source.GrammarToSource GF.Grammar.Values diff --git a/lib/resource/russian/StructuralRus.gf b/lib/resource/russian/StructuralRus.gf index e8e217cc3..1ae206828 100644 --- a/lib/resource/russian/StructuralRus.gf +++ b/lib/resource/russian/StructuralRus.gf @@ -1,7 +1,7 @@ --# -path=.:../abstract:../common:../../prelude concrete StructuralRus of Structural = CatRus ** - open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus, in { + open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in { flags optimize=all ; coding=utf8 ; diff --git a/lib/resource/thai/GrammarTha.gf b/lib/resource/thai/GrammarTha.gf index efe05cc45..28105857a 100644 --- a/lib/resource/thai/GrammarTha.gf +++ b/lib/resource/thai/GrammarTha.gf @@ -12,7 +12,7 @@ concrete GrammarTha of Grammar = -- ConjunctionTha, PhraseTha, -- TextX, - StructuralTha, + StructuralTha -- IdiomTha ** { diff --git a/next-lib/src/russian/StructuralRus.gf b/next-lib/src/russian/StructuralRus.gf index 71b6ca55d..84546031a 100644 --- a/next-lib/src/russian/StructuralRus.gf +++ b/next-lib/src/russian/StructuralRus.gf @@ -1,7 +1,7 @@ --# -path=.:../abstract:../common:../../prelude concrete StructuralRus of Structural = CatRus ** - open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus, in { + open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in { flags optimize=all ; coding=utf8 ; diff --git a/next-lib/src/thai/GrammarTha.gf b/next-lib/src/thai/GrammarTha.gf index efe05cc45..28105857a 100644 --- a/next-lib/src/thai/GrammarTha.gf +++ b/next-lib/src/thai/GrammarTha.gf @@ -12,7 +12,7 @@ concrete GrammarTha of Grammar = -- ConjunctionTha, PhraseTha, -- TextX, - StructuralTha, + StructuralTha -- IdiomTha ** { diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index e128c3477..61c361199 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -30,12 +30,12 @@ import GF.Infra.Modules import GF.Compile.TypeCheck import GF.Compile.Refresh +import GF.Grammar.Lexer import GF.Grammar.Grammar import GF.Grammar.PrGrammar import GF.Grammar.Lookup import GF.Grammar.Predef import GF.Grammar.Macros -import GF.Grammar.ReservedWords import GF.Grammar.PatternMatch import GF.Grammar.AppPredefined import GF.Grammar.Lockfield (isLockLabel) @@ -403,10 +403,9 @@ checkPrintname _ _ = return () -- | for grammars obtained otherwise than by parsing ---- update!! checkReservedId :: Ident -> Check () -checkReservedId x = let c = prt x in - if isResWord c - then checkWarn ("Warning: reserved word used as identifier:" +++ c) - else return () +checkReservedId x + | isReservedWord (ident2bs x) = checkWarn ("Warning: reserved word used as identifier:" +++ prt x) + | otherwise = return () -- to normalize records and record types labelIndex :: Type -> Label -> Int diff --git a/src/GF/Compile/GetGrammar.hs b/src/GF/Compile/GetGrammar.hs index c2d7a3f8b..c85f9588f 100644 --- a/src/GF/Compile/GetGrammar.hs +++ b/src/GF/Compile/GetGrammar.hs @@ -18,15 +18,10 @@ import GF.Data.Operations import GF.Infra.UseIO import GF.Infra.Modules -import GF.Grammar.Grammar -import qualified GF.Source.AbsGF as A -import GF.Source.SourceToGrammar ----- import Macros ----- import Rename import GF.Infra.Option ---- import Custom -import GF.Source.ParGF -import qualified GF.Source.LexGF as L +import GF.Grammar.Lexer +import GF.Grammar.Parser +import GF.Grammar.Grammar import GF.Compile.ReadFiles @@ -37,22 +32,21 @@ import Control.Monad (foldM) import System.Cmd (system) getSourceModule :: Options -> FilePath -> IOE SourceModule -getSourceModule opts file0 = do - file <- foldM runPreprocessor file0 (flag optPreprocessors opts) - string <- readFileIOE file - let tokens = myLexer string - mo1 <- ioeErr $ errIn file0 $ pModDef tokens - mo2 <- ioeErr $ transModDef mo1 - return $ addOptionsToModule opts mo2 +getSourceModule opts file0 = ioe $ + catch (do file <- foldM runPreprocessor file0 (flag optPreprocessors opts) + content <- BS.readFile file + case runP pModDef content of + Left (Pn l c,msg) -> return (Bad (file++":"++show l++":"++show c++": "++msg)) + Right mo -> return (Ok (addOptionsToModule opts mo))) + (\e -> return (Bad (show e))) addOptionsToModule :: Options -> SourceModule -> SourceModule addOptionsToModule opts = mapSourceModule (\m -> m { flags = flags m `addOptions` opts }) -- FIXME: should use System.IO.openTempFile -runPreprocessor :: FilePath -> String -> IOE FilePath -runPreprocessor file0 p = - do let tmp = "_gf_preproc.tmp" - cmd = p +++ file0 ++ ">" ++ tmp - ioeIO $ system cmd - -- ioeIO $ putStrLn $ "preproc" +++ cmd - return tmp +runPreprocessor :: FilePath -> String -> IO FilePath +runPreprocessor file0 p = do + let tmp = "_gf_preproc.tmp" + cmd = p +++ file0 ++ ">" ++ tmp + system cmd + return tmp diff --git a/src/GF/Compile/ReadFiles.hs b/src/GF/Compile/ReadFiles.hs index 492dbdcf2..fbe1fda0b 100644 --- a/src/GF/Compile/ReadFiles.hs +++ b/src/GF/Compile/ReadFiles.hs @@ -29,9 +29,8 @@ import GF.Infra.Ident import GF.Infra.Modules import GF.Data.Operations import qualified GF.Source.AbsGF as S -import GF.Source.LexGF -import GF.Source.ParGF -import GF.Source.SourceToGrammar(transModDef) +import GF.Grammar.Lexer +import GF.Grammar.Parser import GF.Grammar.Grammar import GF.Grammar.Binary @@ -109,29 +108,13 @@ getAllFiles opts ps env file = do CSEnv -> return (name, maybe [] snd mb_envmod) CSRead -> ioeIO $ fmap importsOfModule (decodeModHeader (replaceExtension file "gfo")) CSComp -> do s <- ioeIO $ BS.readFile file - ioeErr ((liftM (importsOfModule . modHeaderToModDef) . pModHeader . myLexer) s) + case runP pModHeader s of + Left (Pn l c,msg) -> ioeBad (file ++ ":" ++ show l ++ ":" ++ show c ++ ": " ++ msg) + Right mo -> return (importsOfModule mo) ioeErr $ testErr (mname == name) ("module name" +++ mname +++ "differs from file name" +++ name) return (name,st,t,imps,dropFileName file) --- FIXME: this is pretty ugly, it's just to get around the difference --- between ModHeader as returned when parsing just the module header --- when looking for imports, and ModDef, which includes the whole module. -modHeaderToModDef :: S.ModHeader -> SourceModule -modHeaderToModDef (S.MModule2 x y z) = - errVal (error "error in modHeaderToModDef") $ transModDef $ S.MModule x y (modHeaderBodyToModBody z) - where - modHeaderBodyToModBody :: S.ModHeaderBody -> S.ModBody - modHeaderBodyToModBody b = case b of - S.MBody2 x y -> S.MBody x y [] - S.MNoBody2 x -> S.MNoBody x - S.MWith2 x y -> S.MWith x y - S.MWithBody2 x y z -> S.MWithBody x y z [] - S.MWithE2 x y z -> S.MWithE x y z - S.MWithEBody2 x y z w -> S.MWithEBody x y z w [] - S.MReuse2 x -> S.MReuse x - S.MUnion2 x -> S.MUnion x - isGFO :: FilePath -> Bool isGFO = (== ".gfo") . takeExtensions diff --git a/src/GF/Grammar/API.hs b/src/GF/Grammar/API.hs index 76508d963..f1d70e470 100644 --- a/src/GF/Grammar/API.hs +++ b/src/GF/Grammar/API.hs @@ -1,22 +1,19 @@ module GF.Grammar.API ( Grammar, emptyGrammar, - pTerm, - ppTerm, checkTerm, computeTerm, showTerm, TermPrintStyle(..), TermPrintQual(..), ) where -import GF.Source.ParGF -import GF.Source.SourceToGrammar (transExp) -import GF.Grammar.Grammar import GF.Infra.Ident import GF.Infra.Modules (greatestResource) import GF.Compile.GetGrammar import GF.Grammar.Macros +import GF.Grammar.Parser import GF.Grammar.Printer +import GF.Grammar.Grammar import GF.Compile.Rename (renameSourceTerm) import GF.Compile.CheckGrammar (justCheckLTerm) @@ -33,11 +30,6 @@ type Grammar = SourceGrammar emptyGrammar :: Grammar emptyGrammar = emptySourceGrammar -pTerm :: String -> Err Term -pTerm s = do - e <- pExp $ myLexer (BS.pack s) - transExp e - checkTerm :: Grammar -> Term -> Err Term checkTerm gr t = do mo <- maybe (Bad "no source grammar in scope") return $ greatestResource gr diff --git a/src/GF/Grammar/Lexer.x b/src/GF/Grammar/Lexer.x new file mode 100644 index 000000000..bc1a2277f --- /dev/null +++ b/src/GF/Grammar/Lexer.x @@ -0,0 +1,272 @@ +-- -*- haskell -*- +-- This Alex file was machine-generated by the BNF converter +{ +module GF.Grammar.Lexer + ( Token(..), Posn(..) + , P, runP, lexer, getPosn, failLoc + , isReservedWord + ) where + +import GF.Infra.Ident +import GF.Data.Operations +import qualified Data.ByteString.Char8 as BS +import qualified Data.Map as Map + +} + + +$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 (eitherResIdent (T_Ident . identC)) } +\' ($u # \')* \' { tok (eitherResIdent (T_LString . BS.unpack)) } +(\_ | $l)($l | $d | \_ | \')* { tok (eitherResIdent (T_Ident . identC)) } + +\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \" { tok (T_String . unescapeInitTail . BS.unpack) } + +$d+ { tok (T_Integer . read . BS.unpack) } +$d+ \. $d+ (e (\-)? $d+)? { tok (T_Double . read . BS.unpack) } + +{ + +tok f p s = f s + +data Token + = T_exclmark + | T_patt + | T_int_label + | T_oparen + | T_cparen + | T_star + | T_starstar + | T_plus + | T_plusplus + | T_comma + | T_minus + | T_rarrow + | T_dot + | T_alt + | T_colon + | T_semicolon + | T_less + | T_equal + | T_big_rarrow + | T_great + | T_questmark + | T_obrack + | T_lam + | T_lamlam + | T_cbrack + | T_ocurly + | T_bar + | T_ccurly + | T_underscore + | T_at + | T_PType + | T_Str + | T_Strs + | T_Tok + | T_Type + | T_abstract + | T_case + | T_cat + | T_concrete + | T_data + | T_def + | T_flags + | T_fn + | T_fun + | T_in + | T_incomplete + | T_instance + | T_interface + | T_let + | T_lin + | T_lincat + | T_lindef + | T_of + | T_open + | T_oper + | T_param + | T_pattern + | T_pre + | T_printname + | T_resource + | T_strs + | T_table + | T_transfer + | T_variants + | T_where + | T_with + | T_String String -- string literals + | T_Integer Integer -- integer literals + | T_Double Double -- double precision float literals + | T_LString String + | T_Ident Ident + | T_EOF + +eitherResIdent :: (BS.ByteString -> Token) -> BS.ByteString -> Token +eitherResIdent tv s = + case Map.lookup s resWords of + Just t -> t + Nothing -> tv s + +isReservedWord :: BS.ByteString -> Bool +isReservedWord s = Map.member s resWords + +resWords = Map.fromList + [ b "!" T_exclmark + , b "#" T_patt + , b "$" T_int_label + , b "(" T_oparen + , b ")" T_cparen + , b "*" T_star + , b "**" T_starstar + , b "+" T_plus + , b "++" T_plusplus + , b "," T_comma + , b "-" T_minus + , b "->" T_rarrow + , b "." T_dot + , b "/" T_alt + , b ":" T_colon + , b ";" T_semicolon + , b "<" T_less + , b "=" T_equal + , b "=>" T_big_rarrow + , b ">" T_great + , b "?" T_questmark + , b "[" T_obrack + , b "]" T_cbrack + , b "\\" T_lam + , b "\\\\" T_lamlam + , b "{" T_ocurly + , b "}" T_ccurly + , b "|" T_bar + , b "_" T_underscore + , b "@" T_at + , b "PType" T_PType + , b "Str" T_Str + , b "Strs" T_Strs + , b "Tok" T_Tok + , b "Type" T_Type + , b "abstract" T_abstract + , b "case" T_case + , b "cat" T_cat + , b "concrete" T_concrete + , b "data" T_data + , b "def" T_def + , b "flags" T_flags + , b "fn" T_fn + , b "fun" T_fun + , b "in" T_in + , b "incomplete" T_incomplete + , b "instance" T_instance + , b "interface" T_interface + , b "let" T_let + , b "lin" T_lin + , b "lincat" T_lincat + , b "lindef" T_lindef + , b "of" T_of + , b "open" T_open + , b "oper" T_oper + , b "param" T_param + , b "pattern" T_pattern + , b "pre" T_pre + , b "printname" T_printname + , b "resource" T_resource + , b "strs" T_strs + , b "table" T_table + , b "transfer" T_transfer + , b "variants" T_variants + , b "where" T_where + , b "with" T_with + ] + where b s t = (BS.pack s, t) + +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 {-# UNPACK #-} !Int + {-# UNPACK #-} !Int + +alexMove :: Posn -> Char -> Posn +alexMove (Pn l c) '\n' = Pn (l+1) 1 +alexMove (Pn l c) _ = Pn l (c+1) + +alexGetChar :: AlexInput -> Maybe (Char,AlexInput) +alexGetChar (AI p _ s) = + case BS.uncons s of + Nothing -> Nothing + Just (c,s) -> + let p' = alexMove p c + in p' `seq` Just (c, (AI p' c s)) + +alexInputPrevChar :: AlexInput -> Char +alexInputPrevChar (AI p c s) = c + +data AlexInput = AI {-# UNPACK #-} !Posn -- current position, + {-# UNPACK #-} !Char -- previous char + {-# UNPACK #-} !BS.ByteString -- current input string + +data ParseResult a + = POk AlexInput a + | PFailed Posn -- The position of the error + String -- The error message + +newtype P a = P { unP :: AlexInput -> ParseResult a } + +instance Monad P where + return a = a `seq` (P $ \s -> POk s a) + (P m) >>= k = P $ \ s -> case m s of + POk s1 a -> unP (k a) s1 + PFailed posn err -> PFailed posn err + fail msg = P $ \(AI posn _ _) -> PFailed posn msg + +runP :: P a -> BS.ByteString -> Either (Posn,String) a +runP (P f) txt = + case f (AI (Pn 1 0) ' ' txt) of + POk _ x -> Right x + PFailed pos msg -> Left (pos,msg) + +failLoc :: Posn -> String -> P a +failLoc pos msg = P $ \_ -> PFailed pos msg + +lexer :: (Token -> P a) -> P a +lexer cont = P go + where + go inp@(AI pos _ str) = + case alexScan inp 0 of + AlexEOF -> unP (cont T_EOF) inp + AlexError (AI pos _ _) -> PFailed pos "lexical error" + AlexSkip inp' len -> go inp' + AlexToken inp' len act -> unP (cont (act pos (BS.take len str))) inp' + +getPosn :: P Posn +getPosn = P $ \inp@(AI pos _ _) -> POk inp pos + +} diff --git a/src/GF/Grammar/Parser.y b/src/GF/Grammar/Parser.y new file mode 100644 index 000000000..6be4e0ced --- /dev/null +++ b/src/GF/Grammar/Parser.y @@ -0,0 +1,719 @@ +{ +{-# OPTIONS -fno-warn-overlapping-patterns #-} +module GF.Grammar.Parser + ( P, runP + , pModDef + , pModHeader + , pExp + ) where + +import GF.Infra.Ident +import GF.Infra.Modules +import GF.Infra.Option +import GF.Data.Operations +import GF.Grammar.Predef +import GF.Grammar.Grammar +import GF.Grammar.Macros +import GF.Grammar.Lexer +import qualified Data.ByteString.Char8 as BS +import GF.Compile.Update (buildAnyTree) +} + +%name pModDef ModDef +%partial pModHeader ModHeader +%name pExp Exp + +-- no lexer declaration +%monad { P } { >>= } { return } +%lexer { lexer } { T_EOF } +%tokentype { Token } + + +%token + '!' { T_exclmark } + '#' { T_patt } + '$' { T_int_label } + '(' { T_oparen } + ')' { T_cparen } + '*' { T_star } + '**' { T_starstar } + '+' { T_plus } + '++' { T_plusplus } + ',' { T_comma } + '-' { T_minus } + '->' { T_rarrow } + '.' { T_dot } + '/' { T_alt } + ':' { T_colon } + ';' { T_semicolon } + '<' { T_less } + '=' { T_equal } + '=>' { T_big_rarrow} + '>' { T_great } + '?' { T_questmark } + '@' { T_at } + '[' { T_obrack } + ']' { T_cbrack } + '{' { T_ocurly } + '}' { T_ccurly } + '\\' { T_lam } + '\\\\' { T_lamlam } + '_' { T_underscore} + '|' { T_bar } + 'PType' { T_PType } + 'Str' { T_Str } + 'Strs' { T_Strs } + 'Tok' { T_Tok } + 'Type' { T_Type } + 'abstract' { T_abstract } + 'case' { T_case } + 'cat' { T_cat } + 'concrete' { T_concrete } + 'data' { T_data } + 'def' { T_def } + 'flags' { T_flags } + 'fn' { T_fn } + 'fun' { T_fun } + 'in' { T_in } + 'incomplete' { T_incomplete} + 'instance' { T_instance } + 'interface' { T_interface } + 'let' { T_let } + 'lin' { T_lin } + 'lincat' { T_lincat } + 'lindef' { T_lindef } + 'of' { T_of } + 'open' { T_open } + 'oper' { T_oper } + 'param' { T_param } + 'pattern' { T_pattern } + 'pre' { T_pre } + 'printname' { T_printname } + 'resource' { T_resource } + 'strs' { T_strs } + 'table' { T_table } + 'transfer' { T_transfer } + 'variants' { T_variants } + 'where' { T_where } + 'with' { T_with } + +Integer { (T_Integer $$) } +Double { (T_Double $$) } +String { (T_String $$) } +LString { (T_LString $$) } +Ident { (T_Ident $$) } + + +%% + +ModDef :: { SourceModule } +ModDef + : ComplMod ModType '=' ModBody {% + do let mstat = $1 + (mtype,id) = $2 + (extends,with,content) = $4 + (opens,jments,opts) = case content of { Just c -> c; Nothing -> ([],[],noOptions) } + mapM_ (checkInfoType mtype) jments + defs <- case buildAnyTree id [(i,d) | (i,_,d) <- jments] of + Ok x -> return x + Bad msg -> fail msg + let poss = buildTree [(i,(fname,mkSrcSpan p)) | (i,p,_) <- jments] + fname = prIdent id ++ ".gf" + + mkSrcSpan :: (Posn, Posn) -> (Int,Int) + mkSrcSpan (Pn l1 _, Pn l2 _) = (l1,l2) + + return (id, ModInfo mtype mstat opts extends with opens [] defs poss) } + +ModHeader :: { SourceModule } +ModHeader + : ComplMod ModType '=' ModHeaderBody { let { mstat = $1 ; + (mtype,id) = $2 ; + (extends,with,opens) = $4 } + in (id, ModInfo mtype mstat noOptions extends with opens [] emptyBinTree emptyBinTree) } + +ComplMod :: { ModuleStatus } +ComplMod + : {- empty -} { MSComplete } + | 'incomplete' { MSIncomplete } + +ModType :: { (ModuleType Ident,Ident) } +ModType + : 'abstract' Ident { (MTAbstract, $2) } + | 'resource' Ident { (MTResource, $2) } + | 'interface' Ident { (MTInterface, $2) } + | 'concrete' Ident 'of' Ident { (MTConcrete $4, $2) } + | 'instance' Ident 'of' Ident { (MTInstance $4, $2) } + | 'transfer' Ident ':' Open '->' Open { (MTTransfer $4 $6,$2) } + +ModHeaderBody :: { ( [(Ident,MInclude Ident)] + , Maybe (Ident,MInclude Ident,[(Ident,Ident)]) + , [OpenSpec Ident] + ) } +ModHeaderBody + : ListIncluded '**' Included 'with' ListInst '**' ModOpen { ($1, Just (fst $3,snd $3,$5), $7) } + | ListIncluded '**' Included 'with' ListInst { ($1, Just (fst $3,snd $3,$5), []) } + | ListIncluded '**' ModOpen { ($1, Nothing, $3) } + | ListIncluded { ($1, Nothing, []) } + | Included 'with' ListInst '**' ModOpen { ([], Just (fst $1,snd $1,$3), $5) } + | Included 'with' ListInst { ([], Just (fst $1,snd $1,$3), []) } + | ModOpen { ([], Nothing, $1) } + +ModOpen :: { [OpenSpec Ident] } +ModOpen + : { [] } + | 'open' ListOpen { $2 } + +ModBody :: { ( [(Ident,MInclude Ident)] + , Maybe (Ident,MInclude Ident,[(Ident,Ident)]) + , Maybe ([OpenSpec Ident],[(Ident,SrcSpan,Info)],Options) + ) } +ModBody + : ListIncluded '**' Included 'with' ListInst '**' ModContent { ($1, Just (fst $3,snd $3,$5), Just $7) } + | ListIncluded '**' Included 'with' ListInst { ($1, Just (fst $3,snd $3,$5), Nothing) } + | ListIncluded '**' ModContent { ($1, Nothing, Just $3) } + | ListIncluded { ($1, Nothing, Nothing) } + | Included 'with' ListInst '**' ModContent { ([], Just (fst $1,snd $1,$3), Just $5) } + | Included 'with' ListInst { ([], Just (fst $1,snd $1,$3), Nothing) } + | ModContent { ([], Nothing, Just $1) } + | ModBody ';' { $1 } + +ModContent :: { ([OpenSpec Ident],[(Ident,SrcSpan,Info)],Options) } +ModContent + : '{' ListTopDef '}' { ([],[d | Left ds <- $2, d <- ds],concatOptions [o | Right o <- $2]) } + | 'open' ListOpen 'in' '{' ListTopDef '}' { ($2,[d | Left ds <- $5, d <- ds],concatOptions [o | Right o <- $5]) } + +ListTopDef :: { [Either [(Ident,SrcSpan,Info)] Options] } +ListTopDef + : {- empty -} { [] } + | TopDef ListTopDef { $1 : $2 } + +ListOpen :: { [OpenSpec Ident] } +ListOpen + : Open { [$1] } + | Open ',' ListOpen { $1 : $3 } + +Open :: { OpenSpec Ident } +Open + : Ident { OSimple $1 } + | '(' Ident '=' Ident ')' { OQualif $2 $4 } + +ListInst :: { [(Ident,Ident)] } +ListInst + : Inst { [$1] } + | Inst ',' ListInst { $1 : $3 } + +Inst :: { (Ident,Ident) } +Inst + : '(' Ident '=' Ident ')' { ($2,$4) } + +ListIncluded :: { [(Ident,MInclude Ident)] } +ListIncluded + : Included { [$1] } + | Included ',' ListIncluded { $1 : $3 } + +Included :: { (Ident,MInclude Ident) } +Included + : Ident { ($1,MIAll ) } + | Ident '[' ListIdent ']' { ($1,MIOnly $3) } + | Ident '-' '[' ListIdent ']' { ($1,MIExcept $4) } + +TopDef :: { Either [(Ident,SrcSpan,Info)] Options } +TopDef + : 'cat' ListCatDef { Left $2 } + | 'fun' ListFunDef { Left $2 } + | 'def' ListDefDef { Left $2 } + | 'data' ListDataDef { Left $2 } + | 'param' ListParamDef { Left $2 } + | 'oper' ListOperDef { Left $2 } + | 'lincat' ListTermDef { Left [(f, pos, CncCat (Just e) Nothing Nothing ) | (f,pos,e) <- $2] } + | 'lindef' ListTermDef { Left [(f, pos, CncCat Nothing (Just e) Nothing ) | (f,pos,e) <- $2] } + | 'lin' ListLinDef { Left $2 } + | 'printname' 'cat' ListTermDef { Left [(f, pos, CncCat Nothing Nothing (Just e)) | (f,pos,e) <- $3] } + | 'printname' 'fun' ListTermDef { Left [(f, pos, CncFun Nothing Nothing (Just e)) | (f,pos,e) <- $3] } + | 'flags' ListFlagDef { Right $2 } + +CatDef :: { [(Ident,SrcSpan,Info)] } +CatDef + : Posn Ident ListDDecl Posn { [($2, ($1,$4), AbsCat (Just $3) Nothing)] } + | Posn '[' Ident ListDDecl ']' Posn { listCatDef $3 ($1,$6) $4 0 } + | Posn '[' Ident ListDDecl ']' '{' Integer '}' Posn { listCatDef $3 ($1,$9) $4 (fromIntegral $7) } + +FunDef :: { [(Ident,SrcSpan,Info)] } +FunDef + : Posn ListIdent ':' Exp Posn { [(fun, ($1,$5), AbsFun (Just $4) Nothing) | fun <- $2] } + +DefDef :: { [(Ident,SrcSpan,Info)] } +DefDef + : Posn ListName '=' Exp Posn { [(f, ($1,$5),AbsFun Nothing (Just $4)) | f <- $2] } + | Posn Name ListPatt '=' Exp Posn { [($2,($1,$6),AbsFun Nothing (Just (Eqs [($3,$5)])))] } + +DataDef :: { [(Ident,SrcSpan,Info)] } +DataDef + : Posn Ident '=' ListDataConstr Posn { ($2, ($1,$5), AbsCat Nothing (Just (map Cn $4))) : + [(fun, ($1,$5), AbsFun Nothing (Just EData)) | fun <- $4] } + | Posn ListIdent ':' Exp Posn { [(cat, ($1,$5), AbsCat Nothing (Just (map Cn $2))) | Ok (_,cat) <- [valCat $4]] ++ + [(fun, ($1,$5), AbsFun (Just $4) (Just EData)) | fun <- $2] } + +ParamDef :: { [(Ident,SrcSpan,Info)] } +ParamDef + : Posn Ident '=' ListParConstr Posn { ($2, ($1,$5), ResParam (Just ($4,Nothing))) : + [(f, ($1,$5), ResValue (Just (mkProdSimple co (Cn $2),Nothing))) | (f,co) <- $4] } + | Posn Ident Posn { [($2, ($1,$3), ResParam Nothing)] } + +OperDef :: { [(Ident,SrcSpan,Info)] } +OperDef + : Posn ListName ':' Exp Posn { [(i, ($1,$5), info) | i <- $2, info <- mkOverload (Just $4) Nothing ] } + | Posn ListName '=' Exp Posn { [(i, ($1,$5), info) | i <- $2, info <- mkOverload Nothing (Just $4)] } + | Posn Name ListArg '=' Exp Posn { [(i, ($1,$6), info) | i <- [$2], info <- mkOverload Nothing (Just (mkAbs $3 $5))] } + | Posn ListName ':' Exp '=' Exp Posn { [(i, ($1,$7), info) | i <- $2, info <- mkOverload (Just $4) (Just $6)] } + +LinDef :: { [(Ident,SrcSpan,Info)] } +LinDef + : Posn ListName '=' Exp Posn { [(f, ($1,$5), CncFun Nothing (Just $4) Nothing) | f <- $2] } + | Posn Name ListArg '=' Exp Posn { [($2, ($1,$6), CncFun Nothing (Just (mkAbs $3 $5)) Nothing)] } + +TermDef :: { [(Ident,SrcSpan,Term)] } +TermDef + : Posn ListName '=' Exp Posn { [(i,($1,$5),$4) | i <- $2] } + +FlagDef :: { Options } +FlagDef + : Posn Ident '=' Ident Posn {% case parseModuleOptions ["--" ++ prIdent $2 ++ "=" ++ prIdent $4] of + Ok x -> return x + Bad msg -> failLoc $1 msg } + +ListDataConstr :: { [Ident] } +ListDataConstr + : Ident { [$1] } + | Ident '|' ListDataConstr { $1 : $3 } + +ParConstr :: { Param } +ParConstr + : Ident ListDDecl { ($1,$2) } + +ListLinDef :: { [(Ident,SrcSpan,Info)] } +ListLinDef + : LinDef ';' { $1 } + | LinDef ';' ListLinDef { $1 ++ $3 } + +ListDefDef :: { [(Ident,SrcSpan,Info)] } +ListDefDef + : DefDef ';' { $1 } + | DefDef ';' ListDefDef { $1 ++ $3 } + +ListOperDef :: { [(Ident,SrcSpan,Info)] } +ListOperDef + : OperDef ';' { $1 } + | OperDef ';' ListOperDef { $1 ++ $3 } + +ListCatDef :: { [(Ident,SrcSpan,Info)] } +ListCatDef + : CatDef ';' { $1 } + | CatDef ';' ListCatDef { $1 ++ $3 } + +ListFunDef :: { [(Ident,SrcSpan,Info)] } +ListFunDef + : FunDef ';' { $1 } + | FunDef ';' ListFunDef { $1 ++ $3 } + +ListDataDef :: { [(Ident,SrcSpan,Info)] } +ListDataDef + : DataDef ';' { $1 } + | DataDef ';' ListDataDef { $1 ++ $3 } + +ListParamDef :: { [(Ident,SrcSpan,Info)] } +ListParamDef + : ParamDef ';' { $1 } + | ParamDef ';' ListParamDef { $1 ++ $3 } + +ListTermDef :: { [(Ident,SrcSpan,Term)] } +ListTermDef + : TermDef ';' { $1 } + | TermDef ';' ListTermDef { $1 ++ $3 } + +ListFlagDef :: { Options } +ListFlagDef + : FlagDef ';' { $1 } + | FlagDef ';' ListFlagDef { addOptions $1 $3 } + +ListParConstr :: { [Param] } +ListParConstr + : ParConstr { [$1] } + | ParConstr '|' ListParConstr { $1 : $3 } + +ListIdent :: { [Ident] } +ListIdent + : Ident { [$1] } + | Ident ',' ListIdent { $1 : $3 } + +Name :: { Ident } +Name + : Ident { $1 } + | '[' Ident ']' { mkListId $2 } + +ListName :: { [Ident] } +ListName + : Name { [$1] } + | Name ',' ListName { $1 : $3 } + +LocDef :: { [(Ident, Maybe Type, Maybe Term)] } +LocDef + : ListIdent ':' Exp { [(lab,Just $3,Nothing) | lab <- $1] } + | ListIdent '=' Exp { [(lab,Nothing,Just $3) | lab <- $1] } + | ListIdent ':' Exp '=' Exp { [(lab,Just $3,Just $5) | lab <- $1] } + +ListLocDef :: { [(Ident, Maybe Type, Maybe Term)] } +ListLocDef + : {- empty -} { [] } + | LocDef { $1 } + | LocDef ';' ListLocDef { $1 ++ $3 } + +Exp :: { Term } +Exp + : Exp1 '|' Exp { FV [$1,$3] } + | '\\' ListBind '->' Exp { mkAbs $2 $4 } + | '\\\\' ListBind '=>' Exp { mkCTable $2 $4 } + | Decl '->' Exp { mkProdSimple $1 $3 } + | Exp3 '=>' Exp { Table $1 $3 } + | 'let' '{' ListLocDef '}' 'in' Exp {% + do defs <- mapM tryLoc $3 + return $ mkLet defs $6 } + | 'let' ListLocDef 'in' Exp {% + do defs <- mapM tryLoc $2 + return $ mkLet defs $4 } + | Exp3 'where' '{' ListLocDef '}' {% + do defs <- mapM tryLoc $4 + return $ mkLet defs $1 } + | 'fn' '{' ListEquation '}' { Eqs $3 } + | 'in' Exp5 String { Example $2 $3 } + | Exp1 { $1 } + +Exp1 :: { Term } +Exp1 + : Exp2 '++' Exp1 { C $1 $3 } + | Exp2 { $1 } + +Exp2 :: { Term } +Exp2 + : Exp3 '+' Exp2 { Glue $1 $3 } + | Exp3 { $1 } + +Exp3 :: { Term } +Exp3 + : Exp3 '!' Exp4 { S $1 $3 } + | 'table' '{' ListCase '}' { T TRaw $3 } + | 'table' Exp6 '{' ListCase '}' { T (TTyped $2) $4 } + | 'table' Exp6 '[' ListExp ']' { V $2 $4 } + | Exp3 '*' Exp4 { case $1 of + RecType xs -> RecType (xs ++ [(tupleLabel (length xs+1),$3)]) + t -> RecType [(tupleLabel 1,$1), (tupleLabel 2,$3)] } + | Exp3 '**' Exp4 { ExtR $1 $3 } + | Exp4 { $1 } + +Exp4 :: { Term } +Exp4 + : Exp4 Exp5 { App $1 $2 } + | 'case' Exp 'of' '{' ListCase '}' { let annot = case $2 of + Typed _ t -> TTyped t + _ -> TRaw + in S (T annot $5) $2 } + | 'variants' '{' ListExp '}' { FV $3 } + | 'pre' '{' Exp ';' ListAltern '}' { Alts ($3, $5) } + | 'strs' '{' ListExp '}' { Strs $3 } + | '#' Patt2 { EPatt $2 } + | 'pattern' Exp5 { EPattType $2 } + | Exp5 { $1 } + +Exp5 :: { Term } +Exp5 + : Exp5 '.' Label { P $1 $3 } + | Exp6 { $1 } + +Exp6 :: { Term } +Exp6 + : Ident { Vr $1 } + | Sort { Sort $1 } + | String { K $1 } + | Integer { EInt $1 } + | Double { EFloat $1 } + | '?' { Meta (int2meta 0) } + | '[' ']' { Empty } + | 'data' { EData } + | '[' Ident Exps ']' { foldl App (Vr (mkListId $2)) $3 } + | '[' String ']' { case $2 of + [] -> Empty + str -> foldr1 C (map K (words str)) } + | '{' ListLocDef '}' {% mkR $2 } + | '<' ListTupleComp '>' { R (tuple2record $2) } + | '<' Exp ':' Exp '>' { Typed $2 $4 } + | LString { K $1 } + | '(' Exp ')' { $2 } + +ListExp :: { [Term] } +ListExp + : {- empty -} { [] } + | Exp { [$1] } + | Exp ';' ListExp { $1 : $3 } + +Exps :: { [Term] } +Exps + : {- empty -} { [] } + | Exp6 Exps { $1 : $2 } + +Patt :: { Patt } +Patt + : Patt '|' Patt1 { PAlt $1 $3 } + | Patt '+' Patt1 { PSeq $1 $3 } + | Patt1 { $1 } + +Patt1 :: { Patt } +Patt1 + : Ident ListPatt { PC $1 $2 } + | Ident '.' Ident ListPatt { PP $1 $3 $4 } + | Patt2 '*' { PRep $1 } + | Ident '@' Patt2 { PAs $1 $3 } + | '-' Patt2 { PNeg $2 } + | Patt2 { $1 } + +Patt2 :: { Patt } +Patt2 + : '?' { PChar } + | '[' String ']' { PChars $2 } + | '#' Ident { PMacro $2 } + | '#' Ident '.' Ident { PM $2 $4 } + | '_' { wildPatt } + | Ident { PV $1 } + | '{' Ident '}' { PC $2 [] } + | Ident '.' Ident { PP $1 $3 [] } + | Integer { PInt $1 } + | Double { PFloat $1 } + | String { PString $1 } + | '{' ListPattAss '}' { PR $2 } + | '<' ListPattTupleComp '>' { (PR . tuple2recordPatt) $2 } + | '(' Patt ')' { $2 } + +Arg :: { Ident } +Arg + : '_' { identW } + | Ident { $1 } + +PattAss :: { [(Label,Patt)] } +PattAss + : ListIdent '=' Patt { [(LIdent (ident2bs i),$3) | i <- $1] } + +Label :: { Label } +Label + : Ident { LIdent (ident2bs $1) } + | '$' Integer { LVar (fromIntegral $2) } + +Sort :: { Ident } +Sort + : 'Type' { cType } + | 'PType' { cPType } + | 'Tok' { cTok } + | 'Str' { cStr } + | 'Strs' { cStrs } + +ListPattAss :: { [(Label,Patt)] } +ListPattAss + : {- empty -} { [] } + | PattAss { $1 } + | PattAss ';' ListPattAss { $1 ++ $3 } + +ListPatt :: { [Patt] } +ListPatt + : Patt2 { [$1] } + | Patt2 ListPatt { $1 : $2 } + +ListArg :: { [Ident] } +ListArg + : Arg { [$1] } + | Arg ListArg { $1 : $2 } + +Bind :: { Ident } +Bind + : Ident { $1 } + | '_' { identW } + +ListBind :: { [Ident] } +ListBind + : Bind { [$1] } + | Bind ',' ListBind { $1 : $3 } + +Decl :: { [Decl] } +Decl + : '(' ListBind ':' Exp ')' { [(x,$4) | x <- $2] } + | Exp4 { [mkDecl $1] } + +ListTupleComp :: { [Term] } +ListTupleComp + : {- empty -} { [] } + | Exp { [$1] } + | Exp ',' ListTupleComp { $1 : $3 } + +ListPattTupleComp :: { [Patt] } +ListPattTupleComp + : {- empty -} { [] } + | Patt { [$1] } + | Patt ',' ListPattTupleComp { $1 : $3 } + +Case :: { Case } +Case + : Patt '=>' Exp { ($1,$3) } + +ListCase :: { [Case] } +ListCase + : Case { [$1] } + | Case ';' ListCase { $1 : $3 } + +Equation :: { Equation } +Equation + : ListPatt '->' Exp { ($1,$3) } + +ListEquation :: { [Equation] } +ListEquation + : Equation { (:[]) $1 } + | Equation ';' ListEquation { (:) $1 $3 } + +Altern :: { (Term,Term) } +Altern + : Exp '/' Exp { ($1,$3) } + +ListAltern :: { [(Term,Term)] } +ListAltern + : Altern { [$1] } + | Altern ';' ListAltern { $1 : $3 } + +DDecl :: { [Decl] } +DDecl + : '(' ListBind ':' Exp ')' { [(x,$4) | x <- $2] } + | Exp6 { [mkDecl $1] } + +ListDDecl :: { [Decl] } +ListDDecl + : {- empty -} { [] } + | DDecl ListDDecl { $1 ++ $2 } + +Posn :: { Posn } +Posn + : {- empty -} {% getPosn } + + +{ + +happyError :: P a +happyError = fail "parse error" + +mkListId,mkConsId,mkBaseId :: Ident -> Ident +mkListId = prefixId (BS.pack "List") +mkConsId = prefixId (BS.pack "Cons") +mkBaseId = prefixId (BS.pack "Base") + +prefixId :: BS.ByteString -> Ident -> Ident +prefixId pref id = identC (BS.append pref (ident2bs id)) + +listCatDef id pos cont size = [catd,nilfund,consfund] + where + listId = mkListId id + baseId = mkBaseId id + consId = mkConsId id + + catd = (listId, pos, AbsCat (Just cont') (Just [Cn baseId,Cn consId])) + nilfund = (baseId, pos, AbsFun (Just niltyp) (Just EData)) + consfund = (consId, pos, AbsFun (Just constyp) (Just EData)) + + cont' = [(mkId x i,ty) | (i,(x,ty)) <- zip [0..] cont] + xs = map (Vr . fst) cont' + cd = mkDecl (mkApp (Vr id) xs) + lc = mkApp (Vr listId) xs + + niltyp = mkProdSimple (cont' ++ replicate size cd) lc + constyp = mkProdSimple (cont' ++ [cd, mkDecl lc]) lc + + mkId x i = if isWildIdent x then (varX i) else x + +tryLoc (c,mty,Just e) = return (c,(mty,e)) +tryLoc (c,_ ,_ ) = fail ("local definition of" +++ prIdent c +++ "without value") + +mkR [] = return $ RecType [] --- empty record always interpreted as record type +mkR fs@(f:_) = + case f of + (lab,Just ty,Nothing) -> mapM tryRT fs >>= return . RecType + _ -> mapM tryR fs >>= return . R + where + tryRT (lab,Just ty,Nothing) = return (ident2label lab,ty) + tryRT (lab,_ ,_ ) = fail $ "illegal record type field" +++ prIdent lab --- manifest fields ?! + + tryR (lab,mty,Just t) = return (ident2label lab,(mty,t)) + tryR (lab,_ ,_ ) = fail $ "illegal record field" +++ prIdent lab + +mkOverload pdt pdf@(Just df) = + case appForm df of + (keyw, ts@(_:_)) | isOverloading keyw -> + case last ts of + R fs -> [ResOverload [m | Vr m <- ts] [(ty,fu) | (_,(Just ty,fu)) <- fs]] + _ -> [ResOper pdt pdf] + _ -> [ResOper pdt pdf] + + -- to enable separare type signature --- not type-checked +mkOverload pdt@(Just df) pdf = + case appForm df of + (keyw, ts@(_:_)) | isOverloading keyw -> + case last ts of + RecType _ -> [] + _ -> [ResOper pdt pdf] + _ -> [ResOper pdt pdf] +mkOverload pdt pdf = [ResOper pdt pdf] + +isOverloading t = + case t of + Vr keyw | prIdent keyw == "overload" -> True -- overload is a "soft keyword" + _ -> False + + +type SrcSpan = (Posn,Posn) + + +checkInfoType MTAbstract (id,pos,info) = + case info of + AbsCat _ _ -> return () + AbsFun _ _ -> return () + _ -> failLoc (fst pos) "illegal definition in abstract module" +checkInfoType MTResource (id,pos,info) = + case info of + ResParam _ -> return () + ResValue _ -> return () + ResOper _ _ -> return () + ResOverload _ _ -> return () + _ -> failLoc (fst pos) "illegal definition in resource module" +checkInfoType MTInterface (id,pos,info) = + case info of + ResParam _ -> return () + ResValue _ -> return () + ResOper _ _ -> return () + ResOverload _ _ -> return () + _ -> failLoc (fst pos) "illegal definition in interface module" +checkInfoType (MTConcrete _) (id,pos,info) = + case info of + CncCat _ _ _ -> return () + CncFun _ _ _ -> return () + ResParam _ -> return () + ResValue _ -> return () + ResOper _ _ -> return () + ResOverload _ _ -> return () + _ -> failLoc (fst pos) "illegal definition in concrete module" +checkInfoType (MTInstance _) (id,pos,info) = + case info of + ResParam _ -> return () + ResValue _ -> return () + ResOper _ _ -> return () + _ -> failLoc (fst pos) "illegal definition in instance module" +checkInfoType (MTTransfer _ _) (id,pos,info) = + case info of + AbsCat _ _ -> return () + AbsFun _ _ -> return () + _ -> failLoc (fst pos) "illegal definition in transfer module" + +} + diff --git a/src/GF/Grammar/ReservedWords.hs b/src/GF/Grammar/ReservedWords.hs deleted file mode 100644 index b440141d6..000000000 --- a/src/GF/Grammar/ReservedWords.hs +++ /dev/null @@ -1,44 +0,0 @@ ----------------------------------------------------------------------- --- | --- Module : ReservedWords --- Maintainer : AR --- Stability : (stable) --- Portability : (portable) --- --- > CVS $Date: 2005/04/21 16:22:28 $ --- > CVS $Author: bringert $ --- > CVS $Revision: 1.5 $ --- --- reserved words of GF. (c) Aarne Ranta 19\/3\/2002 under Gnu GPL. --- modified by Markus Forsberg 9\/4. --- modified by AR 12\/6\/2003 for GF2 and GFC ------------------------------------------------------------------------------ - -module GF.Grammar.ReservedWords (isResWord, isResWordGFC) where - -import Data.List - - -isResWord :: String -> Bool -isResWord s = isInTree s resWordTree - -resWordTree :: BTree -resWordTree = --- mapTree fst $ sorted2tree $ flip zip (repeat ()) $ sort allReservedWords --- nowadays obtained from LexGF.hs - B "let" (B "data" (B "Type" (B "Str" (B "PType" (B "Lin" N N) N) (B "Tok" (B "Strs" N N) N)) (B "cat" (B "case" (B "abstract" N N) N) (B "concrete" N N))) (B "in" (B "fn" (B "flags" (B "def" N N) N) (B "grammar" (B "fun" N N) N)) (B "instance" (B "incomplete" (B "include" N N) N) (B "interface" N N)))) (B "pre" (B "open" (B "lindef" (B "lincat" (B "lin" N N) N) (B "of" (B "lintype" N N) N)) (B "param" (B "out" (B "oper" N N) N) (B "pattern" N N))) (B "transfer" (B "reuse" (B "resource" (B "printname" N N) N) (B "table" (B "strs" N N) N)) (B "where" (B "variants" (B "union" N N) N) (B "with" N N)))) - -isResWordGFC :: String -> Bool -isResWordGFC s = isInTree s $ - B "of" (B "fun" (B "concrete" (B "cat" (B "abstract" N N) N) (B "flags" N N)) (B "lin" (B "in" N N) (B "lincat" N N))) (B "resource" (B "param" (B "oper" (B "open" N N) N) (B "pre" N N)) (B "table" (B "strs" N N) (B "variants" N N))) - -data BTree = N | B String BTree BTree deriving (Show) - -isInTree :: String -> BTree -> Bool -isInTree x tree = case tree of - N -> False - B a left right - | x < a -> isInTree x left - | x > a -> isInTree x right - | x == a -> True - diff --git a/src/GF/Infra/UseIO.hs b/src/GF/Infra/UseIO.hs index c0cd95eeb..550554459 100644 --- a/src/GF/Infra/UseIO.hs +++ b/src/GF/Infra/UseIO.hs @@ -175,9 +175,3 @@ putPointE v opts msg act = do else when (verbAtLeast opts v) $ putStrLnE "" return a - - --- ((do {s <- readFile f; return (return s)}) ) -readFileIOE :: FilePath -> IOE BS.ByteString -readFileIOE f = ioe $ catch (BS.readFile f >>= return . return) - (\e -> return (Bad (show e))) diff --git a/src/GF/Source/LexGF.hs b/src/GF/Source/LexGF.hs deleted file mode 100644 index c45e03f78..000000000 --- a/src/GF/Source/LexGF.hs +++ /dev/null @@ -1,350 +0,0 @@ -{-# OPTIONS -fglasgow-exts -cpp #-} -{-# LINE 3 "LexGF.x" #-} - -{-# OPTIONS -fno-warn-incomplete-patterns #-} -module GF.Source.LexGF where - - -import qualified Data.ByteString.Char8 as BS - -#if __GLASGOW_HASKELL__ >= 603 -#include "ghcconfig.h" -#elif defined(__GLASGOW_HASKELL__) -#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\x26\x00\x00\x00\x27\x00\x00\x00\x13\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6c\x01\x00\x00\x3c\x02\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xe7\x01\x00\x00\xd5\x00\x00\x00\x35\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\xc2\x01\x00\x00\xcc\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\x0e\x00\x1a\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x14\x00\x0e\x00\x0e\x00\x0f\x00\x10\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x0e\x00\x0e\x00\x0e\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x02\x00\x02\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x13\x00\x13\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x12\x00\xff\xff\x0d\x00\x20\x00\x00\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\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\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1b\x00\xff\xff\x00\x00\x00\x00\x17\x00\x1b\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\xff\xff\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x21\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1c\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\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\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\xff\xff\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x00\x18\x00\x18\x00\x1c\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\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\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\x00\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\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\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x00\x18\x00\x18\x00\x00\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\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\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\x2a\x00\x3e\x00\x2b\x00\x27\x00\x27\x00\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\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\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\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\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\xff\xff\xff\xff\x65\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x0a\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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# "\x16\x00\xff\xff\x03\x00\x03\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0b\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# - -alex_accept = listArray (0::Int,34) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[],[(AlexAcc (alex_action_5))],[(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 37 "LexGF.x" #-} - - -tok f p s = f p s - -share :: BS.ByteString -> BS.ByteString -share = id - -data Tok = - TS !BS.ByteString !Int -- reserved words and symbols - | TL !BS.ByteString -- string literals - | TI !BS.ByteString -- integer literals - | TV !BS.ByteString -- identifiers - | TD !BS.ByteString -- double precision float literals - | TC !BS.ByteString -- character literals - | T_LString !BS.ByteString - | T_PIdent !BS.ByteString - - 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 _ (TL s) -> s - PT _ (TI s) -> s - PT _ (TV s) -> s - PT _ (TD s) -> s - PT _ (TC s) -> s - PT _ (T_LString s) -> s - PT _ (T_PIdent s) -> s - - -data BTree = N | B BS.ByteString Tok BTree BTree deriving (Show) - -eitherResIdent :: (BS.ByteString -> Tok) -> BS.ByteString -> 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 "def" 39 (b "=>" 20 (b "++" 10 (b "(" 5 (b "$" 3 (b "#" 2 (b "!" 1 N N) N) (b "%" 4 N N)) (b "**" 8 (b "*" 7 (b ")" 6 N N) N) (b "+" 9 N N))) (b "/" 15 (b "->" 13 (b "-" 12 (b "," 11 N N) N) (b "." 14 N N)) (b "<" 18 (b ";" 17 (b ":" 16 N N) N) (b "=" 19 N N)))) (b "[" 30 (b "PType" 25 (b "@" 23 (b "?" 22 (b ">" 21 N N) N) (b "Lin" 24 N N)) (b "Tok" 28 (b "Strs" 27 (b "Str" 26 N N) N) (b "Type" 29 N N))) (b "case" 35 (b "_" 33 (b "]" 32 (b "\\" 31 N N) N) (b "abstract" 34 N N)) (b "concrete" 37 (b "cat" 36 N N) (b "data" 38 N N))))) (b "package" 58 (b "let" 49 (b "in" 44 (b "fun" 42 (b "fn" 41 (b "flags" 40 N N) N) (b "grammar" 43 N N)) (b "instance" 47 (b "incomplete" 46 (b "include" 45 N N) N) (b "interface" 48 N N))) (b "of" 54 (b "lindef" 52 (b "lincat" 51 (b "lin" 50 N N) N) (b "lintype" 53 N N)) (b "oper" 56 (b "open" 55 N N) (b "out" 57 N N)))) (b "transfer" 68 (b "resource" 63 (b "pre" 61 (b "pattern" 60 (b "param" 59 N N) N) (b "printname" 62 N N)) (b "table" 66 (b "strs" 65 (b "reuse" 64 N N) N) (b "tokenizer" 67 N N))) (b "with" 73 (b "variants" 71 (b "var" 70 (b "union" 69 N N) N) (b "where" 72 N N)) (b "|" 75 (b "{" 74 N N) (b "}" 76 N N))))) - where b s n = let bs = BS.pack s - in B bs (TS bs n) - -unescapeInitTail :: BS.ByteString -> BS.ByteString -unescapeInitTail = BS.pack . unesc . tail . BS.unpack 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 - BS.ByteString) -- current input string - -tokens :: BS.ByteString -> [Token] -tokens str = go (alexStartPos, '\n', str) - where - go :: AlexInput -> [Token] - go inp@(pos, _, str) = - case alexScan inp 0 of - AlexEOF -> [] - AlexError (pos, _, _) -> [Err pos] - AlexSkip inp' len -> go inp' - AlexToken inp' len act -> act pos (BS.take len str) : (go inp') - -alexGetChar :: AlexInput -> Maybe (Char,AlexInput) -alexGetChar (p, _, s) = - case BS.uncons s of - Nothing -> Nothing - Just (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 (eitherResIdent (TV . share) s)) -alex_action_4 = tok (\p s -> PT p (eitherResIdent (T_LString . share) s)) -alex_action_5 = tok (\p s -> PT p (eitherResIdent (T_PIdent . 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 "templates/GenericTemplate.hs" #-} -{-# LINE 1 "templates/GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "templates/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 "templates/GenericTemplate.hs" #-} - -{-# LINE 45 "templates/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 -> AlexReturn a -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 - 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 - case new_s of - -1# -> (new_acc, input) - -- on an error, we want to keep the input *before* the - -- character that failed, not after. - _ -> 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/GF/Source/LexGF.x b/src/GF/Source/LexGF.x deleted file mode 100644 index 3579d0cd8..000000000 --- a/src/GF/Source/LexGF.x +++ /dev/null @@ -1,144 +0,0 @@ --- -*- haskell -*- --- This Alex file was machine-generated by the BNF converter -{ -{-# OPTIONS -fno-warn-incomplete-patterns #-} -module GF.Source.LexGF where - - -import qualified Data.ByteString.Char8 as BS -} - - -$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 (eitherResIdent (TV . share) s)) } -\' ($u # \')* \' { tok (\p s -> PT p (eitherResIdent (T_LString . share) s)) } -(\_ | $l)($l | $d | \_ | \')* { tok (\p s -> PT p (eitherResIdent (T_PIdent . 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 :: BS.ByteString -> BS.ByteString -share = id - -data Tok = - TS !BS.ByteString !Int -- reserved words and symbols - | TL !BS.ByteString -- string literals - | TI !BS.ByteString -- integer literals - | TV !BS.ByteString -- identifiers - | TD !BS.ByteString -- double precision float literals - | TC !BS.ByteString -- character literals - | T_LString !BS.ByteString - | T_PIdent !BS.ByteString - - 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 _ (TL s) -> s - PT _ (TI s) -> s - PT _ (TV s) -> s - PT _ (TD s) -> s - PT _ (TC s) -> s - PT _ (T_LString s) -> s - PT _ (T_PIdent s) -> s - - -data BTree = N | B BS.ByteString Tok BTree BTree deriving (Show) - -eitherResIdent :: (BS.ByteString -> Tok) -> BS.ByteString -> 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 "def" 39 (b "=>" 20 (b "++" 10 (b "(" 5 (b "$" 3 (b "#" 2 (b "!" 1 N N) N) (b "%" 4 N N)) (b "**" 8 (b "*" 7 (b ")" 6 N N) N) (b "+" 9 N N))) (b "/" 15 (b "->" 13 (b "-" 12 (b "," 11 N N) N) (b "." 14 N N)) (b "<" 18 (b ";" 17 (b ":" 16 N N) N) (b "=" 19 N N)))) (b "[" 30 (b "PType" 25 (b "@" 23 (b "?" 22 (b ">" 21 N N) N) (b "Lin" 24 N N)) (b "Tok" 28 (b "Strs" 27 (b "Str" 26 N N) N) (b "Type" 29 N N))) (b "case" 35 (b "_" 33 (b "]" 32 (b "\\" 31 N N) N) (b "abstract" 34 N N)) (b "concrete" 37 (b "cat" 36 N N) (b "data" 38 N N))))) (b "package" 58 (b "let" 49 (b "in" 44 (b "fun" 42 (b "fn" 41 (b "flags" 40 N N) N) (b "grammar" 43 N N)) (b "instance" 47 (b "incomplete" 46 (b "include" 45 N N) N) (b "interface" 48 N N))) (b "of" 54 (b "lindef" 52 (b "lincat" 51 (b "lin" 50 N N) N) (b "lintype" 53 N N)) (b "oper" 56 (b "open" 55 N N) (b "out" 57 N N)))) (b "transfer" 68 (b "resource" 63 (b "pre" 61 (b "pattern" 60 (b "param" 59 N N) N) (b "printname" 62 N N)) (b "table" 66 (b "strs" 65 (b "reuse" 64 N N) N) (b "tokenizer" 67 N N))) (b "with" 73 (b "variants" 71 (b "var" 70 (b "union" 69 N N) N) (b "where" 72 N N)) (b "|" 75 (b "{" 74 N N) (b "}" 76 N N))))) - where b s n = let bs = BS.pack s - in B bs (TS bs n) - -unescapeInitTail :: BS.ByteString -> BS.ByteString -unescapeInitTail = BS.pack . unesc . tail . BS.unpack 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 - BS.ByteString) -- current input string - -tokens :: BS.ByteString -> [Token] -tokens str = go (alexStartPos, '\n', str) - where - go :: AlexInput -> [Token] - go inp@(pos, _, str) = - case alexScan inp 0 of - AlexEOF -> [] - AlexError (pos, _, _) -> [Err pos] - AlexSkip inp' len -> go inp' - AlexToken inp' len act -> act pos (BS.take len str) : (go inp') - -alexGetChar :: AlexInput -> Maybe (Char,AlexInput) -alexGetChar (p, _, s) = - case BS.uncons s of - Nothing -> Nothing - Just (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/GF/Source/ParGF.hs b/src/GF/Source/ParGF.hs deleted file mode 100644 index 735b51040..000000000 --- a/src/GF/Source/ParGF.hs +++ /dev/null @@ -1,3660 +0,0 @@ -{-# OPTIONS -fglasgow-exts -cpp #-} -{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-} -module GF.Source.ParGF where -import GF.Source.AbsGF -import GF.Source.LexGF -import GF.Data.ErrM -import qualified Data.ByteString.Char8 as BS -#if __GLASGOW_HASKELL__ >= 503 -import Data.Array -#else -import Array -#endif -#if __GLASGOW_HASKELL__ >= 503 -import GHC.Exts -#else -import GlaExts -#endif - --- parser produced by Happy Version 1.17 - -newtype HappyAbsSyn = HappyAbsSyn HappyAny -#if __GLASGOW_HASKELL__ >= 607 -type HappyAny = GHC.Exts.Any -#else -type HappyAny = forall a . a -#endif -happyIn8 :: (Integer) -> (HappyAbsSyn ) -happyIn8 x = unsafeCoerce# x -{-# INLINE happyIn8 #-} -happyOut8 :: (HappyAbsSyn ) -> (Integer) -happyOut8 x = unsafeCoerce# x -{-# INLINE happyOut8 #-} -happyIn9 :: (String) -> (HappyAbsSyn ) -happyIn9 x = unsafeCoerce# x -{-# INLINE happyIn9 #-} -happyOut9 :: (HappyAbsSyn ) -> (String) -happyOut9 x = unsafeCoerce# x -{-# INLINE happyOut9 #-} -happyIn10 :: (Double) -> (HappyAbsSyn ) -happyIn10 x = unsafeCoerce# x -{-# INLINE happyIn10 #-} -happyOut10 :: (HappyAbsSyn ) -> (Double) -happyOut10 x = unsafeCoerce# x -{-# INLINE happyOut10 #-} -happyIn11 :: (LString) -> (HappyAbsSyn ) -happyIn11 x = unsafeCoerce# x -{-# INLINE happyIn11 #-} -happyOut11 :: (HappyAbsSyn ) -> (LString) -happyOut11 x = unsafeCoerce# x -{-# INLINE happyOut11 #-} -happyIn12 :: (PIdent) -> (HappyAbsSyn ) -happyIn12 x = unsafeCoerce# x -{-# INLINE happyIn12 #-} -happyOut12 :: (HappyAbsSyn ) -> (PIdent) -happyOut12 x = unsafeCoerce# x -{-# INLINE happyOut12 #-} -happyIn13 :: (Grammar) -> (HappyAbsSyn ) -happyIn13 x = unsafeCoerce# x -{-# INLINE happyIn13 #-} -happyOut13 :: (HappyAbsSyn ) -> (Grammar) -happyOut13 x = unsafeCoerce# x -{-# INLINE happyOut13 #-} -happyIn14 :: ([ModDef]) -> (HappyAbsSyn ) -happyIn14 x = unsafeCoerce# x -{-# INLINE happyIn14 #-} -happyOut14 :: (HappyAbsSyn ) -> ([ModDef]) -happyOut14 x = unsafeCoerce# x -{-# INLINE happyOut14 #-} -happyIn15 :: (ModDef) -> (HappyAbsSyn ) -happyIn15 x = unsafeCoerce# x -{-# INLINE happyIn15 #-} -happyOut15 :: (HappyAbsSyn ) -> (ModDef) -happyOut15 x = unsafeCoerce# x -{-# INLINE happyOut15 #-} -happyIn16 :: (ConcSpec) -> (HappyAbsSyn ) -happyIn16 x = unsafeCoerce# x -{-# INLINE happyIn16 #-} -happyOut16 :: (HappyAbsSyn ) -> (ConcSpec) -happyOut16 x = unsafeCoerce# x -{-# INLINE happyOut16 #-} -happyIn17 :: ([ConcSpec]) -> (HappyAbsSyn ) -happyIn17 x = unsafeCoerce# x -{-# INLINE happyIn17 #-} -happyOut17 :: (HappyAbsSyn ) -> ([ConcSpec]) -happyOut17 x = unsafeCoerce# x -{-# INLINE happyOut17 #-} -happyIn18 :: (ConcExp) -> (HappyAbsSyn ) -happyIn18 x = unsafeCoerce# x -{-# INLINE happyIn18 #-} -happyOut18 :: (HappyAbsSyn ) -> (ConcExp) -happyOut18 x = unsafeCoerce# x -{-# INLINE happyOut18 #-} -happyIn19 :: ([Transfer]) -> (HappyAbsSyn ) -happyIn19 x = unsafeCoerce# x -{-# INLINE happyIn19 #-} -happyOut19 :: (HappyAbsSyn ) -> ([Transfer]) -happyOut19 x = unsafeCoerce# x -{-# INLINE happyOut19 #-} -happyIn20 :: (Transfer) -> (HappyAbsSyn ) -happyIn20 x = unsafeCoerce# x -{-# INLINE happyIn20 #-} -happyOut20 :: (HappyAbsSyn ) -> (Transfer) -happyOut20 x = unsafeCoerce# x -{-# INLINE happyOut20 #-} -happyIn21 :: (ModHeader) -> (HappyAbsSyn ) -happyIn21 x = unsafeCoerce# x -{-# INLINE happyIn21 #-} -happyOut21 :: (HappyAbsSyn ) -> (ModHeader) -happyOut21 x = unsafeCoerce# x -{-# INLINE happyOut21 #-} -happyIn22 :: (ModHeaderBody) -> (HappyAbsSyn ) -happyIn22 x = unsafeCoerce# x -{-# INLINE happyIn22 #-} -happyOut22 :: (HappyAbsSyn ) -> (ModHeaderBody) -happyOut22 x = unsafeCoerce# x -{-# INLINE happyOut22 #-} -happyIn23 :: (ModType) -> (HappyAbsSyn ) -happyIn23 x = unsafeCoerce# x -{-# INLINE happyIn23 #-} -happyOut23 :: (HappyAbsSyn ) -> (ModType) -happyOut23 x = unsafeCoerce# x -{-# INLINE happyOut23 #-} -happyIn24 :: (ModBody) -> (HappyAbsSyn ) -happyIn24 x = unsafeCoerce# x -{-# INLINE happyIn24 #-} -happyOut24 :: (HappyAbsSyn ) -> (ModBody) -happyOut24 x = unsafeCoerce# x -{-# INLINE happyOut24 #-} -happyIn25 :: ([TopDef]) -> (HappyAbsSyn ) -happyIn25 x = unsafeCoerce# x -{-# INLINE happyIn25 #-} -happyOut25 :: (HappyAbsSyn ) -> ([TopDef]) -happyOut25 x = unsafeCoerce# x -{-# INLINE happyOut25 #-} -happyIn26 :: (Extend) -> (HappyAbsSyn ) -happyIn26 x = unsafeCoerce# x -{-# INLINE happyIn26 #-} -happyOut26 :: (HappyAbsSyn ) -> (Extend) -happyOut26 x = unsafeCoerce# x -{-# INLINE happyOut26 #-} -happyIn27 :: ([Open]) -> (HappyAbsSyn ) -happyIn27 x = unsafeCoerce# x -{-# INLINE happyIn27 #-} -happyOut27 :: (HappyAbsSyn ) -> ([Open]) -happyOut27 x = unsafeCoerce# x -{-# INLINE happyOut27 #-} -happyIn28 :: (Opens) -> (HappyAbsSyn ) -happyIn28 x = unsafeCoerce# x -{-# INLINE happyIn28 #-} -happyOut28 :: (HappyAbsSyn ) -> (Opens) -happyOut28 x = unsafeCoerce# x -{-# INLINE happyOut28 #-} -happyIn29 :: (Open) -> (HappyAbsSyn ) -happyIn29 x = unsafeCoerce# x -{-# INLINE happyIn29 #-} -happyOut29 :: (HappyAbsSyn ) -> (Open) -happyOut29 x = unsafeCoerce# x -{-# INLINE happyOut29 #-} -happyIn30 :: (ComplMod) -> (HappyAbsSyn ) -happyIn30 x = unsafeCoerce# x -{-# INLINE happyIn30 #-} -happyOut30 :: (HappyAbsSyn ) -> (ComplMod) -happyOut30 x = unsafeCoerce# x -{-# INLINE happyOut30 #-} -happyIn31 :: (QualOpen) -> (HappyAbsSyn ) -happyIn31 x = unsafeCoerce# x -{-# INLINE happyIn31 #-} -happyOut31 :: (HappyAbsSyn ) -> (QualOpen) -happyOut31 x = unsafeCoerce# x -{-# INLINE happyOut31 #-} -happyIn32 :: ([Included]) -> (HappyAbsSyn ) -happyIn32 x = unsafeCoerce# x -{-# INLINE happyIn32 #-} -happyOut32 :: (HappyAbsSyn ) -> ([Included]) -happyOut32 x = unsafeCoerce# x -{-# INLINE happyOut32 #-} -happyIn33 :: (Included) -> (HappyAbsSyn ) -happyIn33 x = unsafeCoerce# x -{-# INLINE happyIn33 #-} -happyOut33 :: (HappyAbsSyn ) -> (Included) -happyOut33 x = unsafeCoerce# x -{-# INLINE happyOut33 #-} -happyIn34 :: (Def) -> (HappyAbsSyn ) -happyIn34 x = unsafeCoerce# x -{-# INLINE happyIn34 #-} -happyOut34 :: (HappyAbsSyn ) -> (Def) -happyOut34 x = unsafeCoerce# x -{-# INLINE happyOut34 #-} -happyIn35 :: (TopDef) -> (HappyAbsSyn ) -happyIn35 x = unsafeCoerce# x -{-# INLINE happyIn35 #-} -happyOut35 :: (HappyAbsSyn ) -> (TopDef) -happyOut35 x = unsafeCoerce# x -{-# INLINE happyOut35 #-} -happyIn36 :: (CatDef) -> (HappyAbsSyn ) -happyIn36 x = unsafeCoerce# x -{-# INLINE happyIn36 #-} -happyOut36 :: (HappyAbsSyn ) -> (CatDef) -happyOut36 x = unsafeCoerce# x -{-# INLINE happyOut36 #-} -happyIn37 :: (FunDef) -> (HappyAbsSyn ) -happyIn37 x = unsafeCoerce# x -{-# INLINE happyIn37 #-} -happyOut37 :: (HappyAbsSyn ) -> (FunDef) -happyOut37 x = unsafeCoerce# x -{-# INLINE happyOut37 #-} -happyIn38 :: (DataDef) -> (HappyAbsSyn ) -happyIn38 x = unsafeCoerce# x -{-# INLINE happyIn38 #-} -happyOut38 :: (HappyAbsSyn ) -> (DataDef) -happyOut38 x = unsafeCoerce# x -{-# INLINE happyOut38 #-} -happyIn39 :: (DataConstr) -> (HappyAbsSyn ) -happyIn39 x = unsafeCoerce# x -{-# INLINE happyIn39 #-} -happyOut39 :: (HappyAbsSyn ) -> (DataConstr) -happyOut39 x = unsafeCoerce# x -{-# INLINE happyOut39 #-} -happyIn40 :: ([DataConstr]) -> (HappyAbsSyn ) -happyIn40 x = unsafeCoerce# x -{-# INLINE happyIn40 #-} -happyOut40 :: (HappyAbsSyn ) -> ([DataConstr]) -happyOut40 x = unsafeCoerce# x -{-# INLINE happyOut40 #-} -happyIn41 :: (ParDef) -> (HappyAbsSyn ) -happyIn41 x = unsafeCoerce# x -{-# INLINE happyIn41 #-} -happyOut41 :: (HappyAbsSyn ) -> (ParDef) -happyOut41 x = unsafeCoerce# x -{-# INLINE happyOut41 #-} -happyIn42 :: (ParConstr) -> (HappyAbsSyn ) -happyIn42 x = unsafeCoerce# x -{-# INLINE happyIn42 #-} -happyOut42 :: (HappyAbsSyn ) -> (ParConstr) -happyOut42 x = unsafeCoerce# x -{-# INLINE happyOut42 #-} -happyIn43 :: (PrintDef) -> (HappyAbsSyn ) -happyIn43 x = unsafeCoerce# x -{-# INLINE happyIn43 #-} -happyOut43 :: (HappyAbsSyn ) -> (PrintDef) -happyOut43 x = unsafeCoerce# x -{-# INLINE happyOut43 #-} -happyIn44 :: (FlagDef) -> (HappyAbsSyn ) -happyIn44 x = unsafeCoerce# x -{-# INLINE happyIn44 #-} -happyOut44 :: (HappyAbsSyn ) -> (FlagDef) -happyOut44 x = unsafeCoerce# x -{-# INLINE happyOut44 #-} -happyIn45 :: ([Def]) -> (HappyAbsSyn ) -happyIn45 x = unsafeCoerce# x -{-# INLINE happyIn45 #-} -happyOut45 :: (HappyAbsSyn ) -> ([Def]) -happyOut45 x = unsafeCoerce# x -{-# INLINE happyOut45 #-} -happyIn46 :: ([CatDef]) -> (HappyAbsSyn ) -happyIn46 x = unsafeCoerce# x -{-# INLINE happyIn46 #-} -happyOut46 :: (HappyAbsSyn ) -> ([CatDef]) -happyOut46 x = unsafeCoerce# x -{-# INLINE happyOut46 #-} -happyIn47 :: ([FunDef]) -> (HappyAbsSyn ) -happyIn47 x = unsafeCoerce# x -{-# INLINE happyIn47 #-} -happyOut47 :: (HappyAbsSyn ) -> ([FunDef]) -happyOut47 x = unsafeCoerce# x -{-# INLINE happyOut47 #-} -happyIn48 :: ([DataDef]) -> (HappyAbsSyn ) -happyIn48 x = unsafeCoerce# x -{-# INLINE happyIn48 #-} -happyOut48 :: (HappyAbsSyn ) -> ([DataDef]) -happyOut48 x = unsafeCoerce# x -{-# INLINE happyOut48 #-} -happyIn49 :: ([ParDef]) -> (HappyAbsSyn ) -happyIn49 x = unsafeCoerce# x -{-# INLINE happyIn49 #-} -happyOut49 :: (HappyAbsSyn ) -> ([ParDef]) -happyOut49 x = unsafeCoerce# x -{-# INLINE happyOut49 #-} -happyIn50 :: ([PrintDef]) -> (HappyAbsSyn ) -happyIn50 x = unsafeCoerce# x -{-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> ([PrintDef]) -happyOut50 x = unsafeCoerce# x -{-# INLINE happyOut50 #-} -happyIn51 :: ([FlagDef]) -> (HappyAbsSyn ) -happyIn51 x = unsafeCoerce# x -{-# INLINE happyIn51 #-} -happyOut51 :: (HappyAbsSyn ) -> ([FlagDef]) -happyOut51 x = unsafeCoerce# x -{-# INLINE happyOut51 #-} -happyIn52 :: ([ParConstr]) -> (HappyAbsSyn ) -happyIn52 x = unsafeCoerce# x -{-# INLINE happyIn52 #-} -happyOut52 :: (HappyAbsSyn ) -> ([ParConstr]) -happyOut52 x = unsafeCoerce# x -{-# INLINE happyOut52 #-} -happyIn53 :: ([PIdent]) -> (HappyAbsSyn ) -happyIn53 x = unsafeCoerce# x -{-# INLINE happyIn53 #-} -happyOut53 :: (HappyAbsSyn ) -> ([PIdent]) -happyOut53 x = unsafeCoerce# x -{-# INLINE happyOut53 #-} -happyIn54 :: (Name) -> (HappyAbsSyn ) -happyIn54 x = unsafeCoerce# x -{-# INLINE happyIn54 #-} -happyOut54 :: (HappyAbsSyn ) -> (Name) -happyOut54 x = unsafeCoerce# x -{-# INLINE happyOut54 #-} -happyIn55 :: ([Name]) -> (HappyAbsSyn ) -happyIn55 x = unsafeCoerce# x -{-# INLINE happyIn55 #-} -happyOut55 :: (HappyAbsSyn ) -> ([Name]) -happyOut55 x = unsafeCoerce# x -{-# INLINE happyOut55 #-} -happyIn56 :: (LocDef) -> (HappyAbsSyn ) -happyIn56 x = unsafeCoerce# x -{-# INLINE happyIn56 #-} -happyOut56 :: (HappyAbsSyn ) -> (LocDef) -happyOut56 x = unsafeCoerce# x -{-# INLINE happyOut56 #-} -happyIn57 :: ([LocDef]) -> (HappyAbsSyn ) -happyIn57 x = unsafeCoerce# x -{-# INLINE happyIn57 #-} -happyOut57 :: (HappyAbsSyn ) -> ([LocDef]) -happyOut57 x = unsafeCoerce# x -{-# INLINE happyOut57 #-} -happyIn58 :: (Exp) -> (HappyAbsSyn ) -happyIn58 x = unsafeCoerce# x -{-# INLINE happyIn58 #-} -happyOut58 :: (HappyAbsSyn ) -> (Exp) -happyOut58 x = unsafeCoerce# x -{-# INLINE happyOut58 #-} -happyIn59 :: (Exp) -> (HappyAbsSyn ) -happyIn59 x = unsafeCoerce# x -{-# INLINE happyIn59 #-} -happyOut59 :: (HappyAbsSyn ) -> (Exp) -happyOut59 x = unsafeCoerce# x -{-# INLINE happyOut59 #-} -happyIn60 :: (Exp) -> (HappyAbsSyn ) -happyIn60 x = unsafeCoerce# x -{-# INLINE happyIn60 #-} -happyOut60 :: (HappyAbsSyn ) -> (Exp) -happyOut60 x = unsafeCoerce# x -{-# INLINE happyOut60 #-} -happyIn61 :: (Exp) -> (HappyAbsSyn ) -happyIn61 x = unsafeCoerce# x -{-# INLINE happyIn61 #-} -happyOut61 :: (HappyAbsSyn ) -> (Exp) -happyOut61 x = unsafeCoerce# x -{-# INLINE happyOut61 #-} -happyIn62 :: (Exp) -> (HappyAbsSyn ) -happyIn62 x = unsafeCoerce# x -{-# INLINE happyIn62 #-} -happyOut62 :: (HappyAbsSyn ) -> (Exp) -happyOut62 x = unsafeCoerce# x -{-# INLINE happyOut62 #-} -happyIn63 :: (Exp) -> (HappyAbsSyn ) -happyIn63 x = unsafeCoerce# x -{-# INLINE happyIn63 #-} -happyOut63 :: (HappyAbsSyn ) -> (Exp) -happyOut63 x = unsafeCoerce# x -{-# INLINE happyOut63 #-} -happyIn64 :: (Exp) -> (HappyAbsSyn ) -happyIn64 x = unsafeCoerce# x -{-# INLINE happyIn64 #-} -happyOut64 :: (HappyAbsSyn ) -> (Exp) -happyOut64 x = unsafeCoerce# x -{-# INLINE happyOut64 #-} -happyIn65 :: ([Exp]) -> (HappyAbsSyn ) -happyIn65 x = unsafeCoerce# x -{-# INLINE happyIn65 #-} -happyOut65 :: (HappyAbsSyn ) -> ([Exp]) -happyOut65 x = unsafeCoerce# x -{-# INLINE happyOut65 #-} -happyIn66 :: (Exps) -> (HappyAbsSyn ) -happyIn66 x = unsafeCoerce# x -{-# INLINE happyIn66 #-} -happyOut66 :: (HappyAbsSyn ) -> (Exps) -happyOut66 x = unsafeCoerce# x -{-# INLINE happyOut66 #-} -happyIn67 :: (Patt) -> (HappyAbsSyn ) -happyIn67 x = unsafeCoerce# x -{-# INLINE happyIn67 #-} -happyOut67 :: (HappyAbsSyn ) -> (Patt) -happyOut67 x = unsafeCoerce# x -{-# INLINE happyOut67 #-} -happyIn68 :: (Patt) -> (HappyAbsSyn ) -happyIn68 x = unsafeCoerce# x -{-# INLINE happyIn68 #-} -happyOut68 :: (HappyAbsSyn ) -> (Patt) -happyOut68 x = unsafeCoerce# x -{-# INLINE happyOut68 #-} -happyIn69 :: (Patt) -> (HappyAbsSyn ) -happyIn69 x = unsafeCoerce# x -{-# INLINE happyIn69 #-} -happyOut69 :: (HappyAbsSyn ) -> (Patt) -happyOut69 x = unsafeCoerce# x -{-# INLINE happyOut69 #-} -happyIn70 :: (PattAss) -> (HappyAbsSyn ) -happyIn70 x = unsafeCoerce# x -{-# INLINE happyIn70 #-} -happyOut70 :: (HappyAbsSyn ) -> (PattAss) -happyOut70 x = unsafeCoerce# x -{-# INLINE happyOut70 #-} -happyIn71 :: (Label) -> (HappyAbsSyn ) -happyIn71 x = unsafeCoerce# x -{-# INLINE happyIn71 #-} -happyOut71 :: (HappyAbsSyn ) -> (Label) -happyOut71 x = unsafeCoerce# x -{-# INLINE happyOut71 #-} -happyIn72 :: (Sort) -> (HappyAbsSyn ) -happyIn72 x = unsafeCoerce# x -{-# INLINE happyIn72 #-} -happyOut72 :: (HappyAbsSyn ) -> (Sort) -happyOut72 x = unsafeCoerce# x -{-# INLINE happyOut72 #-} -happyIn73 :: ([PattAss]) -> (HappyAbsSyn ) -happyIn73 x = unsafeCoerce# x -{-# INLINE happyIn73 #-} -happyOut73 :: (HappyAbsSyn ) -> ([PattAss]) -happyOut73 x = unsafeCoerce# x -{-# INLINE happyOut73 #-} -happyIn74 :: ([Patt]) -> (HappyAbsSyn ) -happyIn74 x = unsafeCoerce# x -{-# INLINE happyIn74 #-} -happyOut74 :: (HappyAbsSyn ) -> ([Patt]) -happyOut74 x = unsafeCoerce# x -{-# INLINE happyOut74 #-} -happyIn75 :: (Bind) -> (HappyAbsSyn ) -happyIn75 x = unsafeCoerce# x -{-# INLINE happyIn75 #-} -happyOut75 :: (HappyAbsSyn ) -> (Bind) -happyOut75 x = unsafeCoerce# x -{-# INLINE happyOut75 #-} -happyIn76 :: ([Bind]) -> (HappyAbsSyn ) -happyIn76 x = unsafeCoerce# x -{-# INLINE happyIn76 #-} -happyOut76 :: (HappyAbsSyn ) -> ([Bind]) -happyOut76 x = unsafeCoerce# x -{-# INLINE happyOut76 #-} -happyIn77 :: (Decl) -> (HappyAbsSyn ) -happyIn77 x = unsafeCoerce# x -{-# INLINE happyIn77 #-} -happyOut77 :: (HappyAbsSyn ) -> (Decl) -happyOut77 x = unsafeCoerce# x -{-# INLINE happyOut77 #-} -happyIn78 :: (TupleComp) -> (HappyAbsSyn ) -happyIn78 x = unsafeCoerce# x -{-# INLINE happyIn78 #-} -happyOut78 :: (HappyAbsSyn ) -> (TupleComp) -happyOut78 x = unsafeCoerce# x -{-# INLINE happyOut78 #-} -happyIn79 :: (PattTupleComp) -> (HappyAbsSyn ) -happyIn79 x = unsafeCoerce# x -{-# INLINE happyIn79 #-} -happyOut79 :: (HappyAbsSyn ) -> (PattTupleComp) -happyOut79 x = unsafeCoerce# x -{-# INLINE happyOut79 #-} -happyIn80 :: ([TupleComp]) -> (HappyAbsSyn ) -happyIn80 x = unsafeCoerce# x -{-# INLINE happyIn80 #-} -happyOut80 :: (HappyAbsSyn ) -> ([TupleComp]) -happyOut80 x = unsafeCoerce# x -{-# INLINE happyOut80 #-} -happyIn81 :: ([PattTupleComp]) -> (HappyAbsSyn ) -happyIn81 x = unsafeCoerce# x -{-# INLINE happyIn81 #-} -happyOut81 :: (HappyAbsSyn ) -> ([PattTupleComp]) -happyOut81 x = unsafeCoerce# x -{-# INLINE happyOut81 #-} -happyIn82 :: (Case) -> (HappyAbsSyn ) -happyIn82 x = unsafeCoerce# x -{-# INLINE happyIn82 #-} -happyOut82 :: (HappyAbsSyn ) -> (Case) -happyOut82 x = unsafeCoerce# x -{-# INLINE happyOut82 #-} -happyIn83 :: ([Case]) -> (HappyAbsSyn ) -happyIn83 x = unsafeCoerce# x -{-# INLINE happyIn83 #-} -happyOut83 :: (HappyAbsSyn ) -> ([Case]) -happyOut83 x = unsafeCoerce# x -{-# INLINE happyOut83 #-} -happyIn84 :: (Equation) -> (HappyAbsSyn ) -happyIn84 x = unsafeCoerce# x -{-# INLINE happyIn84 #-} -happyOut84 :: (HappyAbsSyn ) -> (Equation) -happyOut84 x = unsafeCoerce# x -{-# INLINE happyOut84 #-} -happyIn85 :: ([Equation]) -> (HappyAbsSyn ) -happyIn85 x = unsafeCoerce# x -{-# INLINE happyIn85 #-} -happyOut85 :: (HappyAbsSyn ) -> ([Equation]) -happyOut85 x = unsafeCoerce# x -{-# INLINE happyOut85 #-} -happyIn86 :: (Altern) -> (HappyAbsSyn ) -happyIn86 x = unsafeCoerce# x -{-# INLINE happyIn86 #-} -happyOut86 :: (HappyAbsSyn ) -> (Altern) -happyOut86 x = unsafeCoerce# x -{-# INLINE happyOut86 #-} -happyIn87 :: ([Altern]) -> (HappyAbsSyn ) -happyIn87 x = unsafeCoerce# x -{-# INLINE happyIn87 #-} -happyOut87 :: (HappyAbsSyn ) -> ([Altern]) -happyOut87 x = unsafeCoerce# x -{-# INLINE happyOut87 #-} -happyIn88 :: (DDecl) -> (HappyAbsSyn ) -happyIn88 x = unsafeCoerce# x -{-# INLINE happyIn88 #-} -happyOut88 :: (HappyAbsSyn ) -> (DDecl) -happyOut88 x = unsafeCoerce# x -{-# INLINE happyOut88 #-} -happyIn89 :: ([DDecl]) -> (HappyAbsSyn ) -happyIn89 x = unsafeCoerce# x -{-# INLINE happyIn89 #-} -happyOut89 :: (HappyAbsSyn ) -> ([DDecl]) -happyOut89 x = unsafeCoerce# x -{-# INLINE happyOut89 #-} -happyIn90 :: (OldGrammar) -> (HappyAbsSyn ) -happyIn90 x = unsafeCoerce# x -{-# INLINE happyIn90 #-} -happyOut90 :: (HappyAbsSyn ) -> (OldGrammar) -happyOut90 x = unsafeCoerce# x -{-# INLINE happyOut90 #-} -happyIn91 :: (Include) -> (HappyAbsSyn ) -happyIn91 x = unsafeCoerce# x -{-# INLINE happyIn91 #-} -happyOut91 :: (HappyAbsSyn ) -> (Include) -happyOut91 x = unsafeCoerce# x -{-# INLINE happyOut91 #-} -happyIn92 :: (FileName) -> (HappyAbsSyn ) -happyIn92 x = unsafeCoerce# x -{-# INLINE happyIn92 #-} -happyOut92 :: (HappyAbsSyn ) -> (FileName) -happyOut92 x = unsafeCoerce# x -{-# INLINE happyOut92 #-} -happyIn93 :: ([FileName]) -> (HappyAbsSyn ) -happyIn93 x = unsafeCoerce# x -{-# INLINE happyIn93 #-} -happyOut93 :: (HappyAbsSyn ) -> ([FileName]) -happyOut93 x = unsafeCoerce# x -{-# INLINE happyOut93 #-} -happyInTok :: Token -> (HappyAbsSyn ) -happyInTok x = unsafeCoerce# x -{-# INLINE happyInTok #-} -happyOutTok :: (HappyAbsSyn ) -> Token -happyOutTok x = unsafeCoerce# x -{-# INLINE happyOutTok #-} - - -happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\xf8\x01\x28\x05\x26\x05\x12\x01\x06\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x05\x00\x00\x44\x05\x7a\x02\x14\x00\x46\x05\x02\x05\xfb\x04\x00\x00\x3f\x05\x23\x02\xea\x04\x4f\x00\x12\x01\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\xba\x00\x12\x01\x00\x00\x01\x05\x7a\x03\xdb\xff\x7a\x03\xf0\x04\xef\x04\x5d\x03\xeb\x04\xe7\x04\x00\x00\x00\x00\x00\x00\x00\x00\x32\x05\x41\x03\x00\x00\xe4\x04\x00\x00\x28\x00\x1e\x00\x41\x03\xe2\x04\xe1\x04\x68\x01\x0f\x05\x1d\x05\x1c\x05\xd0\x04\xd0\x04\xd0\x04\xd0\x04\xd0\x04\xd0\x04\x00\x00\x00\x00\x28\x00\x0d\x05\x00\x00\x28\x00\x28\x00\x28\x00\x2d\x08\x0c\x05\x69\x00\x2a\x02\x0b\x05\xcf\x04\x12\x01\x00\x00\xfc\xff\xb7\x04\xd1\x00\x1d\x02\x90\x00\x90\x00\xf9\x04\xfa\x04\xda\x04\xb2\x04\x35\x00\x23\x02\xc9\x04\x00\x00\xf7\x04\xf4\x04\xd8\x00\x00\x00\xe0\x04\x3a\x03\x00\x00\x00\x00\xee\x04\xf2\x04\xdb\x04\x2c\x02\xe9\x04\xde\x04\x1d\x03\x23\x00\x00\x00\x00\x00\x00\x00\xdf\x04\x00\x00\x9b\x04\x1d\x02\x1d\x02\x00\x00\x9d\x04\x00\x00\x99\x04\x90\x00\x90\x00\x53\x01\x53\x01\x53\x01\x53\x01\x53\x01\x90\x00\x9e\x04\xd9\x04\xfe\xff\xfa\x02\x00\x00\x95\x04\x00\x00\x00\x00\x98\x04\x92\x04\x00\x00\xdd\x02\x9c\x02\x00\x00\xdd\x02\xdd\x02\xdd\x02\x00\x00\x00\x00\x00\x00\x3a\x00\xc2\x04\xd1\x04\x88\x04\xb3\x04\xb2\x01\xca\x04\x00\x00\x24\x00\xc7\x04\xba\x04\x23\x02\x1b\x00\xc0\x04\x7c\x04\x00\x00\x7c\x04\xc6\x04\x90\x00\x00\x00\x00\x00\x90\x00\x90\x00\xba\x02\xaa\x04\x00\x00\xb5\x04\x90\x00\xd8\x00\x6f\x04\x23\x02\xab\x04\xa5\x04\x69\x04\x00\x00\x67\x04\x90\x00\x63\x04\xa1\x04\xa0\x04\x54\x04\x70\x01\x73\x00\x8e\x04\x51\x04\x97\x04\x90\x00\x1d\x02\x50\x04\x00\x00\x49\x04\x90\x00\x90\x00\x49\x04\x00\x00\xfb\xff\x00\x00\xa2\x00\x49\x04\x83\x00\x49\x04\x49\x04\x83\x00\x83\x00\x83\x00\x83\x00\x83\x00\x49\x04\x49\x04\x83\x00\xbe\x00\x49\x04\x83\x00\x83\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x89\x04\x00\x00\x00\x00\x62\x04\x53\x04\x00\x00\x75\x07\x3e\x04\x65\x04\x2b\x01\x00\x00\x4f\x04\x7d\x04\x3f\x00\x2d\x04\x2d\x04\x2d\x04\x2d\x04\x13\x00\x00\x00\x00\x00\x5d\x04\x00\x00\x06\x02\x4b\x01\x14\x04\x00\x00\x52\x04\x41\x04\x00\x00\x46\x04\x3c\x04\x83\x00\x83\x00\x00\x00\x36\x04\x28\x04\x00\x00\x23\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x04\x00\x00\x25\x04\x20\x04\x12\x04\x00\x00\x00\x00\x17\x00\x0d\x04\x00\x00\x00\x00\x00\x00\x09\x04\x00\x00\xca\x03\x00\x00\xe2\x03\x0e\x04\x15\x00\xc7\x03\xc7\x03\xc9\x03\x00\x00\xf5\x03\x00\x00\x00\x00\xb9\x03\xe7\x03\x00\x00\x00\x02\x00\x02\x90\x00\x00\x02\x00\x00\xb1\x03\x23\x02\x00\x00\x90\x00\x90\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x23\x02\x90\x00\x00\x00\x00\x02\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x97\x03\x00\x02\x00\x00\xb5\x03\x00\x00\x0e\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x90\x00\xd2\x03\xcf\x03\x93\x03\x00\x00\x00\x00\x23\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x82\x03\x13\x00\x82\x03\x00\x00\x13\x00\x00\x00\x75\x00\x9d\x02\x82\x03\x82\x03\x82\x03\x82\x03\x90\x00\x82\x03\x85\x03\x7c\x03\x12\x00\x00\x00\x00\x00\x90\x00\x6c\x00\x6c\x00\x00\x00\xac\x03\x90\x00\x90\x00\xb3\x03\x6c\x00\x00\x00\xb0\x03\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x74\x03\x79\x03\x9c\x03\x64\x03\x9e\x03\x58\x03\x86\x03\x4e\x03\x00\x00\x5f\x03\x96\x03\x91\x03\x35\x03\x00\x00\x00\x00\x11\x00\x00\x00\x90\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x03\x00\x00\x56\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x03\x42\x03\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x5d\x02\x49\x03\x33\x03\x6c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x03\x11\x00\x00\x00\x1f\x03\x55\x03\x17\x03\x17\x03\x0c\x08\x17\x03\x17\x03\x9d\x02\x90\x00\x00\x00\x00\x00\x17\x02\x11\x00\x2d\x03\x11\x00\xeb\x07\x3e\x03\x00\x00\x4c\x03\x0b\x03\x00\x00\x00\x00\x51\x03\x05\x03\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x48\x03\x31\x03\x00\x00\x00\x00\x90\x00\x00\x03\x3d\x03\x00\x00\x0a\x03\xf4\x02\x37\x03\x00\x00\x00\x00\x36\x03\x00\x00\xfe\x02\x21\x03\x18\x03\xe6\x02\x00\x00\xd2\x02\xd2\x02\xe7\x02\xca\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x03\xa9\x07\x00\x00\x00\x00\xd9\x02\x6b\x00\x11\x00\x11\x00\x16\x03\x14\x03\x00\x00\x00\x00\x00\x00"# - -happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\xb3\x01\x2e\x00\xc8\x01\x66\x01\x08\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x03\x15\x03\x10\x04\xd7\x03\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\xa1\x00\xef\x06\x00\x00\x00\x00\xae\x06\x54\x02\x48\x06\x00\x00\x00\x00\x69\x07\x00\x00\x29\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\xf5\x02\x03\x00\x00\x00\xf6\x02\xfd\x02\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xf9\x02\xf8\x02\xf1\x02\xec\x02\xe5\x02\xd6\x02\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x09\x00\x07\x00\x05\x00\xbe\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x04\x00\x00\x00\x00\xcb\x02\xdb\x06\xa1\x03\x5e\x04\xc2\x06\x00\x00\x00\x00\x00\x00\x15\x02\xcd\x02\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\xe2\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x30\x04\x04\x01\x00\x00\xbb\x02\x00\x00\xf8\x00\xa2\x06\x89\x06\x28\x07\x50\x07\xdb\x02\x5b\x02\x41\x07\x75\x06\x00\x00\x00\x00\x4e\x00\x60\x07\x00\x00\xe3\x01\x00\x00\x00\x00\xb2\x02\xbe\x01\x00\x00\x16\x05\x00\x00\x00\x00\x16\x05\x16\x05\x16\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\xa4\x02\x00\x00\x9a\x02\x00\x00\x5c\x06\x00\x00\x00\x00\xbe\x03\x3c\x06\x4a\x04\x00\x00\x00\x00\x00\x00\x23\x06\x0a\x00\x00\x00\x47\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x06\x15\x01\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x04\xb2\x03\x00\x00\x00\x00\x85\x01\xf6\x05\xd6\x05\x95\x02\x00\x00\x6a\x08\x00\x00\x30\x01\xad\x07\x99\x07\x60\x01\x4d\x01\x96\x07\x8a\x07\x7c\x07\x79\x07\x77\x07\x8e\x02\x64\x01\x4b\x07\x6a\x07\x8d\x02\x8a\x03\x2c\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x08\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x82\x02\x13\x02\x7c\x02\x78\x02\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x46\x01\x00\x00\x71\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x03\x86\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x5f\x02\x00\x00\x1a\x02\x00\x00\x00\x00\x5c\x02\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x03\x7f\x04\xbd\x05\x66\x04\x00\x00\x4e\x02\x97\x01\x00\x00\x24\x04\xac\x01\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\xa9\x05\x00\x00\xf5\x01\x00\x00\x00\x00\x90\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x8a\x00\xe5\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\x70\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x05\x00\x00\x00\x00\x00\x00\x00\x00\x86\x01\xed\x02\xee\x00\x00\x00\xdf\x02\xb9\x01\x94\x00\x10\x00\xff\x00\xa6\x01\x97\x00\x34\x02\x43\x05\xd4\x00\x00\x00\x56\x01\x18\x01\x00\x00\x00\x00\x2a\x05\xe2\x00\xa7\x01\x00\x00\x00\x00\x0a\x05\xf1\x04\x00\x00\x38\x01\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00\x00\x00\xad\x02\x1a\x00\x00\x00\x00\x00\x05\x01\x00\x00\x30\x02\x00\x00\xa3\x00\xf3\x01\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\xf9\x01\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x01\xc4\x04\x00\x00\x00\x00\x00\x00\x00\x00\xba\x01\x87\x02\x00\x00\x00\x00\x00\x00\x1f\x00\xc3\x01\xd5\x01\xbf\x01\x11\x01\x10\x00\xa4\x04\x00\x00\x00\x00\x00\x00\xf4\x01\x9f\x01\x9f\x00\x96\x01\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x04\x78\x01\x00\x00\x00\x00\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x01\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x02\x88\x01\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x20\x00\x00\x00\x00\x00\x8e\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf4\xff\xc3\xff\xf5\xfe\xc3\xff\x00\x00\x00\x00\xfa\xff\x6e\xff\x6f\xff\x6d\xff\x62\xff\x73\xff\x5e\xff\x52\xff\x4d\xff\x4b\xff\x49\xff\x3e\xff\x00\x00\x70\xff\x00\x00\x00\x00\x00\x00\x12\xff\x0b\xff\x6c\xff\x00\x00\x1d\xff\x1b\xff\x1a\xff\x1c\xff\x1e\xff\x00\x00\x12\xff\x00\x00\x6a\xff\x00\x00\x00\x00\x76\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\x00\x00\x00\x00\xc2\xff\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\xff\xf3\xfe\xf2\xfe\x00\x00\xf4\xfe\x00\x00\x00\x00\x00\x00\xf6\xfe\x00\x00\x7f\xff\x00\x00\x75\xff\x00\x00\x3d\xff\x73\xff\x00\x00\x00\x00\x00\x00\x76\xff\x3d\xff\x00\x00\x53\xff\x7f\xff\x00\x00\x76\xff\x00\x00\x01\xff\x00\x00\x14\xff\x11\xff\x00\x00\x12\xff\x13\xff\x00\x00\x3a\xff\x6b\xff\x51\xff\x0d\xff\x0a\xff\x00\x00\x73\xff\x00\x00\x00\x00\x00\x00\x00\x00\x30\xff\x2e\xff\x2f\xff\x33\xff\x54\xff\x00\x00\x00\x00\x08\xff\x38\xff\x00\x00\x34\xff\x19\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xff\x00\x00\x00\x00\x55\xff\x76\xff\x20\xff\x61\xff\x00\x00\x76\xff\x44\xff\x4d\xff\x4b\xff\x4c\xff\x4e\xff\x4f\xff\x50\xff\x4a\xff\x48\xff\x45\xff\x7f\xff\x00\x00\x18\xff\x00\x00\x00\x00\x33\xff\x25\xff\x22\xff\x0c\xff\x07\xff\x00\x00\x00\x00\x00\x00\x36\xff\x00\x00\x71\xff\x00\x00\x73\xff\x00\x00\x63\xff\x66\xff\x0b\xff\x00\x00\x3a\xff\x00\x00\x68\xff\x00\x00\x00\x00\x12\xff\x00\x00\x16\xff\x00\x00\x00\xff\x00\x00\x3f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xff\x00\x00\x33\xff\x00\x00\x04\xff\x00\x00\x00\x00\x3d\xff\x00\x00\x00\x00\x67\xff\x76\xff\x00\x00\x00\x00\x00\x00\x72\xff\xbe\xff\xce\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\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xfe\xf0\xfe\xef\xfe\xed\xfe\xee\xfe\x00\x00\xdc\xff\xdb\xff\x00\x00\x00\x00\xdd\xff\xbe\xff\x00\x00\x00\x00\xbb\xff\xf0\xff\xc8\xff\xd6\xff\xbd\xff\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\xec\xfe\x7d\xff\x00\x00\xa2\xff\x7b\xff\x00\x00\x00\x00\xaf\xff\x00\x00\x00\x00\xa6\xff\x7b\xff\x00\x00\x00\x00\x00\x00\xa4\xff\x94\xff\x00\x00\xae\xff\x00\x00\xad\xff\xa5\xff\xab\xff\xac\xff\xaa\xff\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\xa7\xff\xb1\xff\x7f\xff\x00\x00\xb2\xff\xb0\xff\xf8\xfe\x00\x00\xb4\xff\x00\x00\xe6\xff\xc8\xff\xe4\xff\xbd\xff\x00\x00\xbe\xff\x00\x00\x78\xff\x79\xff\x74\xff\x58\xff\x00\x00\x00\x00\x5c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2a\xff\x00\x00\x00\x00\x56\xff\x3d\xff\xfd\xfe\x7e\xff\x42\xff\x00\x00\x40\xff\x01\xff\x00\x00\x15\xff\x00\x00\x10\xff\x47\xff\x00\x00\x69\xff\x39\xff\x00\x00\x0d\xff\x09\xff\x00\x00\x65\xff\x5f\xff\x31\xff\x00\x00\x2b\xff\x26\xff\x2c\xff\x08\xff\x28\xff\x37\xff\x2d\xff\x19\xff\x00\x00\x32\xff\x00\x00\x1f\xff\x7f\xff\x41\xff\x21\xff\x17\xff\x06\xff\x35\xff\x0f\xff\x64\xff\x46\xff\x00\x00\x02\xff\xff\xfe\x00\x00\x00\x00\xfc\xfe\x00\x00\x3b\xff\x27\xff\x31\xff\x24\xff\x05\xff\x23\xff\x03\xff\x5a\xff\x5b\xff\x00\x00\x60\xff\xde\xff\xbd\xff\xdf\xff\xbe\xff\xcb\xff\xcd\xff\xe5\xff\xcb\xff\xf8\xfe\x8e\xff\xa0\xff\x8a\xff\x99\xff\x84\xff\x00\x00\x00\x00\x8c\xff\x00\x00\x88\xff\x82\xff\xa8\xff\xa9\xff\x00\x00\x00\x00\x86\xff\xa1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\xc6\xff\x00\x00\xc1\xff\xd9\xff\xda\xff\xd0\xff\xd1\xff\xcb\xff\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\x00\x00\xd5\xff\xca\xff\x00\x00\xc0\xff\xbf\xff\x00\x00\x8f\xff\x00\x00\xb7\xff\xb8\xff\x7c\xff\x85\xff\x7a\xff\x92\xff\xf8\xfe\x81\xff\x96\xff\x00\x00\x87\xff\xcf\xff\x8b\xff\x9d\xff\x91\xff\x83\xff\x9b\xff\x98\xff\x9c\xff\x00\x00\x89\xff\xf9\xfe\xf7\xfe\x12\xff\x8d\xff\x00\x00\x00\x00\x00\x00\xe3\xff\xbc\xff\x77\xff\x29\xff\x57\xff\xfd\xfe\x00\x00\x43\xff\x59\xff\xfe\xfe\xfb\xfe\xc8\xff\xcb\xff\xc7\xff\x9f\xff\x00\x00\x99\xff\x00\x00\x00\x00\x00\x00\x82\xff\x93\xff\x00\x00\xb6\xff\xd8\xff\x00\x00\xcb\xff\xc8\xff\xcb\xff\x00\x00\x00\x00\xba\xff\x00\x00\xee\xff\xb9\xff\xd7\xff\xd3\xff\x00\x00\xc9\xff\xc5\xff\x00\x00\xb5\xff\x80\xff\x00\x00\x00\x00\x9a\xff\x97\xff\x00\x00\x00\x00\xe1\xff\xe2\xff\xc8\xff\x00\x00\x00\x00\xa3\xff\x95\xff\x00\x00\xcf\xff\xc8\xff\x00\x00\xed\xff\x00\x00\xf1\xff\xee\xff\x00\x00\x00\x00\x00\x00\xc4\xff\xfa\xfe\x9e\xff\xe0\xff\xd4\xff\xcf\xff\xea\xff\xef\xff\xec\xff\xeb\xff\x00\x00\xd2\xff\xe9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xff\xe7\xff"# - -happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x03\x00\x01\x00\x08\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x04\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x05\x00\x05\x00\x05\x00\x0b\x00\x1e\x00\x07\x00\x08\x00\x09\x00\x04\x00\x07\x00\x0b\x00\x06\x00\x0b\x00\x04\x00\x09\x00\x4a\x00\x01\x00\x04\x00\x14\x00\x04\x00\x13\x00\x0b\x00\x51\x00\x09\x00\x16\x00\x11\x00\x04\x00\x0e\x00\x37\x00\x19\x00\x0c\x00\x07\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x40\x00\x04\x00\x1b\x00\x1f\x00\x20\x00\x45\x00\x15\x00\x32\x00\x0e\x00\x16\x00\x0b\x00\x4a\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x51\x00\x43\x00\x44\x00\x51\x00\x40\x00\x02\x00\x04\x00\x04\x00\x05\x00\x54\x00\x55\x00\x54\x00\x55\x00\x54\x00\x4c\x00\x54\x00\x48\x00\x54\x00\x49\x00\x54\x00\x50\x00\x12\x00\x51\x00\x51\x00\x51\x00\x16\x00\x4b\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x21\x00\x53\x00\x23\x00\x3b\x00\x0b\x00\x26\x00\x4e\x00\x0e\x00\x29\x00\x51\x00\x42\x00\x2c\x00\x09\x00\x00\x00\x01\x00\x02\x00\x31\x00\x04\x00\x3b\x00\x4e\x00\x4c\x00\x4d\x00\x4c\x00\x14\x00\x49\x00\x42\x00\x1e\x00\x3c\x00\x3d\x00\x3f\x00\x04\x00\x04\x00\x41\x00\x42\x00\x02\x00\x1e\x00\x04\x00\x05\x00\x47\x00\x2c\x00\x04\x00\x4a\x00\x0c\x00\x04\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x1e\x00\x12\x00\x04\x00\x39\x00\x04\x00\x16\x00\x04\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1c\x00\x11\x00\x13\x00\x23\x00\x15\x00\x4c\x00\x26\x00\x2d\x00\x3b\x00\x29\x00\x26\x00\x24\x00\x2c\x00\x51\x00\x4b\x00\x42\x00\x1e\x00\x31\x00\x2b\x00\x00\x00\x01\x00\x02\x00\x51\x00\x04\x00\x3e\x00\x4c\x00\x4d\x00\x41\x00\x3c\x00\x3d\x00\x43\x00\x44\x00\x2d\x00\x41\x00\x42\x00\x02\x00\x51\x00\x04\x00\x05\x00\x47\x00\x04\x00\x1f\x00\x4a\x00\x21\x00\x1e\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x24\x00\x12\x00\x43\x00\x44\x00\x04\x00\x16\x00\x2a\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1d\x00\x04\x00\x51\x00\x23\x00\x20\x00\x2e\x00\x26\x00\x30\x00\x21\x00\x29\x00\x27\x00\x04\x00\x2c\x00\x3b\x00\x3c\x00\x3d\x00\x2d\x00\x31\x00\x04\x00\x00\x00\x01\x00\x02\x00\x19\x00\x04\x00\x04\x00\x47\x00\x51\x00\x49\x00\x3c\x00\x3d\x00\x51\x00\x2e\x00\x2f\x00\x41\x00\x42\x00\x02\x00\x04\x00\x04\x00\x05\x00\x47\x00\x04\x00\x14\x00\x4a\x00\x04\x00\x1e\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x4e\x00\x12\x00\x2d\x00\x51\x00\x28\x00\x16\x00\x51\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x2d\x00\x22\x00\x04\x00\x23\x00\x3e\x00\x0c\x00\x26\x00\x41\x00\x22\x00\x29\x00\x04\x00\x2c\x00\x2c\x00\x3b\x00\x3c\x00\x3d\x00\x2d\x00\x31\x00\x2c\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x1e\x00\x04\x00\x47\x00\x1c\x00\x49\x00\x3c\x00\x3d\x00\x11\x00\x04\x00\x1a\x00\x41\x00\x42\x00\x02\x00\x26\x00\x04\x00\x05\x00\x47\x00\x04\x00\x10\x00\x4a\x00\x25\x00\x13\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x04\x00\x12\x00\x2e\x00\x2f\x00\x04\x00\x16\x00\x1d\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x02\x00\x0d\x00\x27\x00\x05\x00\x23\x00\x21\x00\x00\x00\x26\x00\x2d\x00\x0b\x00\x16\x00\x14\x00\x0e\x00\x29\x00\x10\x00\x3b\x00\x12\x00\x13\x00\x24\x00\x21\x00\x16\x00\x17\x00\x42\x00\x04\x00\x04\x00\x2b\x00\x04\x00\x29\x00\x1e\x00\x3c\x00\x3d\x00\x21\x00\x0a\x00\x2b\x00\x41\x00\x42\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x47\x00\x04\x00\x04\x00\x4a\x00\x18\x00\x19\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1b\x00\x2d\x00\x14\x00\x02\x00\x30\x00\x31\x00\x05\x00\x05\x00\x06\x00\x4a\x00\x53\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0e\x00\x51\x00\x04\x00\x04\x00\x12\x00\x1f\x00\x20\x00\x04\x00\x16\x00\x17\x00\x23\x00\x00\x00\x01\x00\x02\x00\x14\x00\x04\x00\x1e\x00\x2a\x00\x3b\x00\x21\x00\x04\x00\x2e\x00\x2f\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x40\x00\x51\x00\x04\x00\x18\x00\x19\x00\x45\x00\x2d\x00\x40\x00\x04\x00\x30\x00\x31\x00\x1b\x00\x45\x00\x11\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x4e\x00\x4f\x00\x4a\x00\x04\x00\x15\x00\x4d\x00\x4e\x00\x4f\x00\x02\x00\x51\x00\x11\x00\x05\x00\x3b\x00\x13\x00\x02\x00\x15\x00\x51\x00\x05\x00\x0c\x00\x42\x00\x15\x00\x04\x00\x2d\x00\x0b\x00\x12\x00\x30\x00\x31\x00\x04\x00\x16\x00\x04\x00\x12\x00\x04\x00\x52\x00\x53\x00\x16\x00\x06\x00\x1e\x00\x02\x00\x15\x00\x21\x00\x05\x00\x2b\x00\x1e\x00\x02\x00\x2e\x00\x21\x00\x05\x00\x0c\x00\x13\x00\x18\x00\x19\x00\x04\x00\x14\x00\x12\x00\x3b\x00\x3c\x00\x3d\x00\x16\x00\x04\x00\x12\x00\x17\x00\x0b\x00\x04\x00\x16\x00\x10\x00\x1e\x00\x10\x00\x13\x00\x21\x00\x4a\x00\x4b\x00\x1e\x00\x2d\x00\x17\x00\x21\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x4a\x00\x04\x00\x04\x00\x4d\x00\x4e\x00\x4f\x00\x4a\x00\x51\x00\x04\x00\x4d\x00\x4e\x00\x4f\x00\x2d\x00\x51\x00\x04\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x04\x00\x05\x00\x04\x00\x00\x00\x01\x00\x02\x00\x4a\x00\x04\x00\x51\x00\x4d\x00\x4e\x00\x4f\x00\x4a\x00\x51\x00\x12\x00\x4d\x00\x4e\x00\x4f\x00\x16\x00\x51\x00\x04\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x04\x00\x20\x00\x04\x00\x05\x00\x04\x00\x2d\x00\x3b\x00\x26\x00\x30\x00\x31\x00\x04\x00\x0d\x00\x14\x00\x42\x00\x04\x00\x04\x00\x12\x00\x32\x00\x33\x00\x34\x00\x16\x00\x04\x00\x04\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x04\x00\x13\x00\x40\x00\x15\x00\x01\x00\x04\x00\x3b\x00\x26\x00\x04\x00\x05\x00\x07\x00\x08\x00\x09\x00\x42\x00\x4a\x00\x04\x00\x23\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x2a\x00\x04\x00\x00\x00\x16\x00\x2e\x00\x2f\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x01\x00\x04\x00\x04\x00\x05\x00\x13\x00\x04\x00\x15\x00\x26\x00\x4a\x00\x08\x00\x09\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x04\x00\x01\x00\x04\x00\x16\x00\x08\x00\x09\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1b\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x26\x00\x04\x00\x05\x00\x04\x00\x00\x00\x01\x00\x02\x00\x4a\x00\x04\x00\x04\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x04\x00\x04\x00\x13\x00\x16\x00\x15\x00\x04\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x04\x00\x04\x00\x04\x00\x05\x00\x13\x00\x04\x00\x15\x00\x26\x00\x4a\x00\x0f\x00\x11\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x32\x00\x33\x00\x34\x00\x16\x00\x0f\x00\x04\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x04\x00\x06\x00\x40\x00\x06\x00\x44\x00\x05\x00\x3b\x00\x26\x00\x04\x00\x05\x00\x51\x00\x00\x00\x01\x00\x02\x00\x4a\x00\x04\x00\x11\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x04\x00\x4a\x00\x4c\x00\x16\x00\x13\x00\x37\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x06\x00\x06\x00\x04\x00\x05\x00\x4c\x00\x37\x00\x11\x00\x26\x00\x4a\x00\x08\x00\x1a\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x4d\x00\x06\x00\x4a\x00\x16\x00\x25\x00\x51\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x08\x00\x2e\x00\x2f\x00\x51\x00\x11\x00\x20\x00\x3b\x00\x26\x00\x04\x00\x05\x00\x22\x00\x37\x00\x10\x00\x25\x00\x4a\x00\x51\x00\x4a\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x2f\x00\x30\x00\x37\x00\x16\x00\x08\x00\x2c\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x49\x00\x13\x00\x04\x00\x05\x00\x3f\x00\x0e\x00\x2c\x00\x26\x00\x4a\x00\x44\x00\x51\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x12\x00\x4b\x00\x04\x00\x4b\x00\x16\x00\x04\x00\x13\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x08\x00\x51\x00\x26\x00\x00\x00\x01\x00\x02\x00\x1a\x00\x04\x00\x20\x00\x4a\x00\x49\x00\x51\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x25\x00\x23\x00\x13\x00\x00\x00\x01\x00\x02\x00\x51\x00\x04\x00\x2a\x00\x2e\x00\x2f\x00\x1e\x00\x2e\x00\x2f\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4a\x00\x4a\x00\x51\x00\x13\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x20\x00\x51\x00\x2d\x00\x4a\x00\x0b\x00\x30\x00\x31\x00\x51\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x3c\x00\x3d\x00\x4c\x00\x11\x00\x0f\x00\x06\x00\x4a\x00\x4b\x00\x00\x00\x01\x00\x02\x00\x51\x00\x04\x00\x15\x00\x4a\x00\x4b\x00\x3b\x00\x3c\x00\x3d\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4a\x00\x4b\x00\x40\x00\x2c\x00\x4c\x00\x4c\x00\x51\x00\x45\x00\x46\x00\x4c\x00\x48\x00\x20\x00\x13\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x08\x00\x40\x00\x51\x00\x37\x00\x11\x00\x51\x00\x45\x00\x46\x00\x11\x00\x48\x00\x3b\x00\x3c\x00\x3d\x00\x11\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x13\x00\x04\x00\x10\x00\x13\x00\x40\x00\x11\x00\x11\x00\x43\x00\x44\x00\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x13\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x13\x00\x40\x00\x0b\x00\x11\x00\x43\x00\x44\x00\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x11\x00\x40\x00\x51\x00\x00\x00\x01\x00\x02\x00\x45\x00\x04\x00\x3b\x00\x3c\x00\x3d\x00\x11\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x40\x00\x51\x00\x00\x00\x01\x00\x02\x00\x45\x00\x04\x00\x3a\x00\x08\x00\x37\x00\x22\x00\x4a\x00\x36\x00\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x36\x00\x10\x00\x51\x00\x04\x00\x4c\x00\x4c\x00\x40\x00\x11\x00\x4c\x00\x3b\x00\x3c\x00\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x11\x00\x11\x00\x4c\x00\x51\x00\x4c\x00\x11\x00\x40\x00\x0d\x00\x4a\x00\x3b\x00\x3c\x00\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x14\x00\x20\x00\x40\x00\x06\x00\x51\x00\x0e\x00\x15\x00\x45\x00\x07\x00\x0b\x00\x20\x00\x4c\x00\x13\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x11\x00\x51\x00\x40\x00\x4d\x00\x51\x00\x0e\x00\x4a\x00\x45\x00\x51\x00\x4e\x00\x51\x00\x0e\x00\x10\x00\x06\x00\x15\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x0b\x00\x10\x00\x36\x00\x20\x00\x0d\x00\x0b\x00\x51\x00\x40\x00\x0b\x00\x2c\x00\x0e\x00\x51\x00\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x11\x00\x40\x00\x11\x00\x13\x00\x11\x00\x51\x00\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x13\x00\x13\x00\x40\x00\x00\x00\x51\x00\x53\x00\x4a\x00\x45\x00\x53\x00\x51\x00\x4a\x00\x4a\x00\x51\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x40\x00\x4a\x00\x0d\x00\x4b\x00\x53\x00\x45\x00\x0a\x00\x17\x00\x0e\x00\x4d\x00\x2e\x00\x2d\x00\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\xff\xff\xff\xff\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\xff\xff\x25\x00\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\x2e\x00\x2f\x00\x04\x00\xff\xff\x04\x00\xff\xff\xff\xff\x04\x00\x40\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x04\x00\xff\xff\x40\x00\x1a\x00\x32\x00\x1a\x00\x2a\x00\x40\x00\x1a\x00\xff\xff\x2e\x00\x2f\x00\x04\x00\x32\x00\x25\x00\x04\x00\x25\x00\xff\xff\x40\x00\x25\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x2f\x00\x2e\x00\x2f\x00\x40\x00\x2e\x00\x2f\x00\x37\x00\x23\x00\xff\xff\xff\xff\x1a\x00\x04\x00\xff\xff\x1a\x00\x2a\x00\x40\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\x45\x00\x25\x00\xff\xff\xff\xff\x25\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\x2f\x00\x51\x00\x2e\x00\x2f\x00\xff\xff\x1d\x00\x1e\x00\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x32\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x24\x00\x46\x00\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x24\x00\x46\x00\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x24\x00\x46\x00\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x24\x00\x46\x00\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\x38\x00\x04\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\x04\x00\xff\xff\x43\x00\x44\x00\x10\x00\x46\x00\x12\x00\xff\xff\xff\xff\xff\xff\x0e\x00\xff\xff\x18\x00\x19\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x18\x00\x19\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"# - -happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x90\x00\x46\x00\xbe\xff\x46\x00\x47\x00\x46\x00\x47\x00\x46\x00\x47\x00\x46\x00\x47\x00\x46\x00\x47\x00\x62\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\x83\x00\x9b\x01\xbc\x01\x9b\x01\xc1\x00\xca\x00\x84\x00\x85\x00\x86\x00\xf3\x00\x3c\x00\x7d\x01\x53\x01\xc1\x00\xc2\x01\x35\x01\x5f\x00\x67\x00\xab\x00\x87\x00\x68\x00\x86\x01\x1a\x02\x31\x00\x35\x01\x38\x00\x46\x00\x98\x01\xac\x00\xcc\xff\xa9\x01\x4b\x00\x37\x00\x4c\x00\x4d\x00\x73\x00\x74\x00\x75\x00\x2a\x01\x76\x00\xd3\x00\xc3\x01\xfc\x01\x2b\x01\x22\x02\xc7\x01\x8a\x00\x38\x00\xc1\x00\xcb\x00\x73\x00\x74\x00\x75\x00\x7d\x01\x76\x00\x31\x00\x63\x00\x45\x01\x31\x00\x13\x00\x16\x00\x8d\x00\x17\x00\x18\x00\x48\x00\xfd\x00\x48\x00\x49\x00\xe5\x00\xd2\x00\xe6\x00\x88\x00\xe7\x00\x7e\x01\xe9\x00\xc8\x01\x19\x00\x31\x00\x31\x00\x31\x00\x1a\x00\x37\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x37\x01\x67\x00\xff\xff\x23\x00\xb9\x00\xc1\x00\x24\x00\x2e\x00\xd1\x00\x25\x00\x31\x00\xba\x00\x72\x00\x35\x01\x73\x00\x74\x00\x75\x00\x27\x00\x76\x00\xb9\x00\x2e\x00\xbb\x00\x69\x01\x5c\x01\x36\x01\xa0\x01\xd1\x01\x04\x01\x28\x00\x29\x00\x8e\x00\x5c\x00\x62\x00\x2a\x00\x2b\x00\x16\x00\x25\x01\x17\x00\x18\x00\x2c\x00\x21\x02\x21\x01\x2d\x00\x1d\x02\x19\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x04\x01\x19\x00\x98\x01\x22\x02\x62\x00\x1a\x00\x5c\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x22\x01\x1b\x02\xf2\x01\x23\x00\xab\x01\xd2\x00\x24\x00\x9c\x00\xb9\x00\x25\x00\xca\x01\x1a\x01\x26\x00\x31\x00\x37\x01\xba\x00\x25\x01\x27\x00\xc1\x01\x73\x00\x74\x00\x75\x00\x31\x00\xa0\x00\x9d\x00\xbb\x00\xbc\x00\x61\x01\x28\x00\x29\x00\x63\x00\xb5\x00\xec\x01\x2a\x00\x2b\x00\x16\x00\x31\x00\x17\x00\x18\x00\x2c\x00\x5c\x00\x66\x00\x2d\x00\x67\x00\x04\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x0b\x01\x19\x00\x63\x00\x64\x00\xfe\x00\x1a\x00\x0c\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x16\x01\xf3\x00\x31\x00\x23\x00\x6a\x00\xae\x01\x24\x00\xaf\x01\x67\x00\x25\x00\xbe\x01\x9b\x00\x72\x00\xa1\x00\xa2\x00\xa3\x00\x18\x01\x27\x00\xc5\x01\x73\x00\x74\x00\x75\x00\xcd\x01\xa0\x00\x5c\x00\xa4\x00\x31\x00\x62\x01\x28\x00\x29\x00\x31\x00\x08\x01\xb6\x01\x2a\x00\x2b\x00\x16\x00\xb8\x01\x17\x00\x18\x00\x2c\x00\x5c\x00\x0f\x02\x2d\x00\xb8\x01\x1e\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2e\x00\x19\x00\x9c\x00\x31\x00\xc6\x01\x1a\x00\x31\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xa6\x01\xb9\x01\x21\x01\x23\x00\x9d\x00\xa3\x01\x24\x00\x9e\x00\xb9\x01\x25\x00\xfe\x00\xf8\x01\x26\x00\xa1\x00\xa2\x00\xa3\x00\x3d\x01\x27\x00\xba\x01\xd3\x00\x73\x00\x74\x00\x75\x00\xa4\x01\x76\x00\xa4\x00\x22\x01\xa5\x00\x28\x00\x29\x00\x10\x02\x5c\x00\xff\x00\x2a\x00\x2b\x00\x16\x00\x23\x01\x17\x00\x58\x00\x2c\x00\x0d\x01\x95\x01\x2d\x00\xb0\x01\x96\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x01\x19\x00\x01\x01\x02\x01\x0d\x01\x1a\x00\x16\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x79\x00\x31\x00\x17\x01\x7a\x00\x23\x00\x0e\x01\x02\x02\x24\x00\x18\x01\xc1\x00\x32\x00\x14\x02\x39\x01\xbc\x01\x7f\xff\xb9\x00\x7b\x00\x7f\xff\x1a\x01\x0e\x01\x7c\x00\x3a\x01\x96\x01\x5c\x00\xf3\x00\x1b\x01\x17\x02\x0f\x01\x7d\x00\x28\x00\x29\x00\x7e\x00\x18\x02\x3a\x00\x2a\x00\x2b\x00\x34\x00\x73\x00\x74\x00\x75\x00\x2c\x00\x76\x00\x06\x02\x2d\x00\xcf\x01\x7a\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xc2\x01\xfe\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xd3\x00\x50\x00\xf3\x01\x79\x00\x51\x00\x2e\x01\x7a\x00\x3a\x00\x3b\x00\x7f\x00\xf5\xff\xd2\x00\x07\x00\x2e\x00\x2f\x00\x39\x01\x31\x00\x5c\x00\xf9\x01\x7b\x00\xc3\x01\xc4\x01\xfb\x01\x7c\x00\x3a\x01\x06\x01\x73\x00\x74\x00\x75\x00\x00\x02\x76\x00\x7d\x00\xb5\x01\x6f\x01\x7e\x00\xf3\x00\x08\x01\x09\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x6b\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x6b\x01\x13\x00\xe3\x01\x5e\x01\x79\x01\x7a\x01\x14\x00\x50\x00\x13\x00\x98\x01\x51\x00\x5c\x01\xd3\x00\x14\x00\xe0\x01\x6c\x01\xd8\x01\x73\x00\x74\x00\x75\x00\x98\x01\xa0\x00\x6c\x01\x6d\x01\x7f\x00\x98\x01\x23\x02\x07\x00\x2e\x00\x2f\x00\x79\x00\x31\x00\xeb\x01\x7a\x00\xb9\x00\xf4\x01\x79\x00\xab\x01\xcb\x01\x7a\x00\xa7\x00\x37\x01\xe6\x01\x98\x01\x50\x00\x91\x01\x7b\x00\x51\x00\x52\x00\xe7\x01\x7c\x00\xf3\x00\x7b\x00\x5c\x00\x34\x00\x35\x00\x7c\x00\xf6\x01\x7d\x00\x79\x00\x99\x01\x7e\x00\x7a\x00\x3a\x00\x7d\x00\x79\x00\x34\x00\x7e\x00\x7a\x00\xa7\x00\xf7\x01\x9d\x01\x7a\x01\x4f\x00\x7f\x01\x7b\x00\xa1\x00\xa2\x00\xc5\x00\x7c\x00\xee\x01\x7b\x00\xac\x01\x14\xff\xc0\x01\x7c\x00\xcf\x00\x7d\x00\x14\xff\xd0\x00\x7e\x00\xc6\x00\x67\x01\x7d\x00\x50\x00\x8b\x00\x7e\x00\x51\x00\xbe\x00\x73\x00\x74\x00\x75\x00\x7f\x00\x76\x00\x63\x01\x07\x00\x2e\x00\x2f\x00\x7f\x00\x31\x00\x70\x01\x07\x00\x2e\x00\x2f\x00\x50\x00\x31\x00\x5c\x00\x51\x00\x52\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x7b\x01\x57\x00\xca\x01\x81\x01\x73\x00\x74\x00\x75\x00\x7f\x00\x76\x00\x83\x01\x07\x00\x2e\x00\x2f\x00\x7f\x00\x31\x00\x19\x00\x07\x00\x2e\x00\x2f\x00\x1a\x00\x31\x00\x93\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x9b\x01\xdd\x01\x17\x00\x58\x00\x9c\x01\x50\x00\xb9\x00\x24\x00\x51\x00\x5d\x00\x9e\x01\x0e\xff\xa1\x01\x43\x01\xfe\x00\x98\x01\x19\x00\x0c\x00\x0d\x00\x95\x00\x1a\x00\x05\x01\x10\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x2b\x01\xff\x01\x13\x00\xab\x01\x83\x00\x4f\x01\xb9\x00\x24\x00\x57\x00\xca\x01\x84\x00\x85\x00\x86\x00\x37\x01\x8d\x00\x50\x01\x06\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\x8d\x01\x98\x01\x5d\x01\x1a\x00\x08\x01\x09\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x9f\x00\xa8\x00\x57\x00\x58\x00\xaa\x01\x09\x02\xab\x01\x24\x00\x2d\x00\x0a\x02\x19\x02\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\x09\x02\xbd\x00\xc8\x00\x1a\x00\x0a\x02\x0b\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xd3\x00\xea\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x24\x00\x17\x00\x58\x00\x98\x01\x73\x00\x74\x00\x75\x00\x8d\x00\x76\x00\xeb\x00\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\xec\x00\x98\x01\xcc\x01\x1a\x00\xab\x01\xed\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xee\x00\xef\x00\x57\x00\x58\x00\xce\x01\x3d\x00\xab\x01\x24\x00\x8d\x00\x3e\x00\x4d\x00\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\x0c\x00\x0d\x00\x96\x00\x1a\x00\x4e\x00\x6a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x72\x00\x25\x02\x13\x00\x26\x02\x20\x02\x1f\x02\x53\x01\x24\x00\x17\x00\x58\x00\x31\x00\x73\x00\x74\x00\x75\x00\x2d\x00\x76\x00\x0e\x02\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\xfe\x00\x17\x02\x0d\x02\x1a\x00\x0f\x02\x81\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x12\x02\x13\x02\x57\x00\x58\x00\x14\x02\x81\x01\x05\x02\x24\x00\x8d\x00\x02\x02\xff\x00\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\x07\x00\x06\x02\x08\x02\x1a\x00\x00\x01\x31\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x09\x02\x01\x01\x02\x01\x31\x00\xf0\x01\xf1\x01\x77\x00\x24\x00\x57\x00\x58\x00\x40\x00\x81\x01\xfe\x01\x41\x00\x2d\x00\x31\x00\xff\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\x42\x00\x43\x00\x81\x01\x1a\x00\xda\x01\xdc\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xdb\x01\x86\x01\x17\x00\x58\x00\x44\x00\xe0\x01\xe2\x01\x24\x00\x8d\x00\x45\x00\x31\x00\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x19\x00\xdf\x01\xfe\x00\xe3\x01\x1a\x00\xfe\x00\xe5\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x73\x00\x74\x00\x75\x00\xe9\x01\xa0\x00\xea\x01\x31\x00\x24\x00\x73\x00\x74\x00\x75\x00\xff\x00\xc4\x00\xee\x01\x59\x00\xeb\x01\x31\x00\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x04\x01\x06\x01\xa6\x01\x73\x00\x74\x00\x75\x00\x31\x00\xa0\x00\x8e\x01\x01\x01\x02\x01\xa8\x01\x08\x01\x09\x01\xb0\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xa9\x01\x2d\x00\x31\x00\xb2\x01\x07\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\xb5\x01\x31\x00\x50\x00\xbe\x01\x7d\x01\x51\x00\x52\x00\x31\x00\xa1\x00\xa2\x00\xc5\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xa1\x00\xa2\x00\xc5\x00\xd3\x01\xd4\x01\xd5\x01\x65\x01\xc6\x00\x74\x01\x73\x00\x74\x00\x75\x00\x31\x00\xa0\x00\x66\x01\xc6\x00\xc7\x00\xa1\x00\xa2\x00\xc5\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x4b\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x6e\x00\xc6\x00\x30\x01\x13\x00\x6b\x01\xd7\x01\x60\x01\x31\x00\x14\x00\x6c\x00\x77\x01\x4c\x01\x76\x01\x78\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x6b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x6e\x00\x79\x01\x7f\x01\x13\x00\x31\x00\x81\x01\x83\x01\x31\x00\x14\x00\x6c\x00\x85\x01\x6d\x00\xa1\x00\xa2\x00\x60\x01\x87\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x6f\x00\x73\x00\x74\x00\x75\x00\x88\x01\xa0\x00\x89\x01\x8b\x01\x13\x00\x8a\x01\x8c\x01\x63\x00\xdd\x01\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x6f\x00\x8d\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\x90\x01\x13\x00\x91\x01\x92\x01\x63\x00\x70\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xc2\x00\x6e\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x93\x01\x13\x00\x31\x00\x73\x00\x74\x00\x75\x00\x14\x00\xa0\x00\xa1\x00\xa2\x00\xa7\x00\x98\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xc2\x00\x31\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xb2\x00\x13\x00\x31\x00\x73\x00\x74\x00\x75\x00\x14\x00\xa0\x00\x49\x01\xa1\x01\x81\x01\xa5\x01\xf3\x00\xfb\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xc2\x00\xc3\x00\xfc\x00\xfd\x00\x31\x00\xab\x00\x30\x01\x33\x01\x13\x00\x34\x01\x3b\x01\xa1\x00\x71\x01\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xc2\x00\xcb\x00\x3c\x01\x3d\x01\x40\x01\x31\x00\x41\x01\x42\x01\x13\x00\x43\x01\x45\x01\xa1\x00\x73\x01\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x03\x02\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x48\x01\x49\x01\x13\x00\x4f\x01\x31\x00\x52\x01\x55\x01\x14\x00\x57\x01\x56\x01\x58\x01\x59\x01\x5b\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xf7\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x5a\x01\x31\x00\x13\x00\x07\x00\x31\x00\x8a\x00\x91\x00\x14\x00\x31\x00\x2e\x00\x31\x00\xaa\x00\xae\x00\xaf\x00\xb0\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xd7\x01\xb1\x00\xb2\x00\xb9\x00\xb5\x00\xb7\x00\xb8\x00\x31\x00\x13\x00\xc1\x00\xc0\x00\x8a\x00\x31\x00\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xe5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\xcd\x00\xce\x00\x13\x00\xe9\x00\xd3\x00\x46\x00\x31\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xb2\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xf1\x00\xf2\x00\x13\x00\xff\xff\x31\x00\xff\xff\x54\x00\x14\x00\xff\xff\x31\x00\x5a\x00\x5b\x00\x31\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xb3\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x88\x00\x13\x00\x61\x00\x80\x00\x81\x00\xff\xff\x14\x00\x82\x00\x8b\x00\x8a\x00\x07\x00\x34\x00\x37\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xbf\x01\x07\x00\x08\x00\x09\x00\x0a\x00\xac\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xd0\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xd5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5f\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x66\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x68\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x72\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x2c\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xb2\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x2d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x3e\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x46\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x4a\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5b\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x4d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x91\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x99\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x9a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5f\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x61\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\xfe\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\x0c\x00\x0d\x00\x92\x00\x93\x00\x10\x00\x98\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\xff\x00\x00\x00\x00\x00\x13\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x54\x00\xfe\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x0c\x00\x0d\x00\x92\x00\x93\x00\x94\x00\x00\x00\x01\x01\x02\x01\xfe\x00\x00\x00\xfe\x00\x00\x00\x00\x00\xfe\x00\x13\x00\x0c\x00\x0d\x00\x97\x00\x00\x00\x00\x00\x0c\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\xfe\x00\x00\x00\x13\x00\xff\x00\x8b\x00\xff\x00\x07\x01\x13\x00\xff\x00\x00\x00\x08\x01\x09\x01\xfe\x00\x55\x00\x11\x01\xfe\x00\x12\x01\x00\x00\x13\x00\x13\x01\x00\x00\x00\x00\x00\x00\x01\x01\x02\x01\x01\x01\x02\x01\x13\x00\x01\x01\x02\x01\xcc\xff\x06\x01\x00\x00\x00\x00\xff\x00\x1d\x01\x00\x00\xff\x00\x14\x01\xf9\x00\x00\x00\x00\x00\x08\x01\x09\x01\xfa\x00\x15\x01\x00\x00\x00\x00\x1c\x01\xcc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x02\x01\x31\x00\x01\x01\x02\x01\x00\x00\x16\x01\x1e\x01\x00\x00\xd5\x00\x00\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\xd9\x00\x1f\x01\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\xe4\x00\xd5\x00\xe5\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\xd9\x00\x1d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\xe4\x00\xd5\x00\xe5\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\xd9\x00\x16\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\xe4\x00\xd5\x00\xe5\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\xd9\x00\xf2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\xe4\x00\xd5\x00\xe5\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\xd9\x00\xfb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\xf3\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xe2\x00\x00\x00\x00\x00\xf3\x00\x00\x00\xe3\x00\xe4\x00\xf4\x00\xe5\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x25\x01\x00\x00\xf6\x00\xf7\x00\x26\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x28\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (5, 275) [ - (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), - (67 , happyReduce_67), - (68 , happyReduce_68), - (69 , happyReduce_69), - (70 , happyReduce_70), - (71 , happyReduce_71), - (72 , happyReduce_72), - (73 , happyReduce_73), - (74 , happyReduce_74), - (75 , happyReduce_75), - (76 , happyReduce_76), - (77 , happyReduce_77), - (78 , happyReduce_78), - (79 , happyReduce_79), - (80 , happyReduce_80), - (81 , happyReduce_81), - (82 , happyReduce_82), - (83 , happyReduce_83), - (84 , happyReduce_84), - (85 , happyReduce_85), - (86 , happyReduce_86), - (87 , happyReduce_87), - (88 , happyReduce_88), - (89 , happyReduce_89), - (90 , happyReduce_90), - (91 , happyReduce_91), - (92 , happyReduce_92), - (93 , happyReduce_93), - (94 , happyReduce_94), - (95 , happyReduce_95), - (96 , happyReduce_96), - (97 , happyReduce_97), - (98 , happyReduce_98), - (99 , happyReduce_99), - (100 , happyReduce_100), - (101 , happyReduce_101), - (102 , happyReduce_102), - (103 , happyReduce_103), - (104 , happyReduce_104), - (105 , happyReduce_105), - (106 , happyReduce_106), - (107 , happyReduce_107), - (108 , happyReduce_108), - (109 , happyReduce_109), - (110 , happyReduce_110), - (111 , happyReduce_111), - (112 , happyReduce_112), - (113 , happyReduce_113), - (114 , happyReduce_114), - (115 , happyReduce_115), - (116 , happyReduce_116), - (117 , happyReduce_117), - (118 , happyReduce_118), - (119 , happyReduce_119), - (120 , happyReduce_120), - (121 , happyReduce_121), - (122 , happyReduce_122), - (123 , happyReduce_123), - (124 , happyReduce_124), - (125 , happyReduce_125), - (126 , happyReduce_126), - (127 , happyReduce_127), - (128 , happyReduce_128), - (129 , happyReduce_129), - (130 , happyReduce_130), - (131 , happyReduce_131), - (132 , happyReduce_132), - (133 , happyReduce_133), - (134 , happyReduce_134), - (135 , happyReduce_135), - (136 , happyReduce_136), - (137 , happyReduce_137), - (138 , happyReduce_138), - (139 , happyReduce_139), - (140 , happyReduce_140), - (141 , happyReduce_141), - (142 , happyReduce_142), - (143 , happyReduce_143), - (144 , happyReduce_144), - (145 , happyReduce_145), - (146 , happyReduce_146), - (147 , happyReduce_147), - (148 , happyReduce_148), - (149 , happyReduce_149), - (150 , happyReduce_150), - (151 , happyReduce_151), - (152 , happyReduce_152), - (153 , happyReduce_153), - (154 , happyReduce_154), - (155 , happyReduce_155), - (156 , happyReduce_156), - (157 , happyReduce_157), - (158 , happyReduce_158), - (159 , happyReduce_159), - (160 , happyReduce_160), - (161 , happyReduce_161), - (162 , happyReduce_162), - (163 , happyReduce_163), - (164 , happyReduce_164), - (165 , happyReduce_165), - (166 , happyReduce_166), - (167 , happyReduce_167), - (168 , happyReduce_168), - (169 , happyReduce_169), - (170 , happyReduce_170), - (171 , happyReduce_171), - (172 , happyReduce_172), - (173 , happyReduce_173), - (174 , happyReduce_174), - (175 , happyReduce_175), - (176 , happyReduce_176), - (177 , happyReduce_177), - (178 , happyReduce_178), - (179 , happyReduce_179), - (180 , happyReduce_180), - (181 , happyReduce_181), - (182 , happyReduce_182), - (183 , happyReduce_183), - (184 , happyReduce_184), - (185 , happyReduce_185), - (186 , happyReduce_186), - (187 , happyReduce_187), - (188 , happyReduce_188), - (189 , happyReduce_189), - (190 , happyReduce_190), - (191 , happyReduce_191), - (192 , happyReduce_192), - (193 , happyReduce_193), - (194 , happyReduce_194), - (195 , happyReduce_195), - (196 , happyReduce_196), - (197 , happyReduce_197), - (198 , happyReduce_198), - (199 , happyReduce_199), - (200 , happyReduce_200), - (201 , happyReduce_201), - (202 , happyReduce_202), - (203 , happyReduce_203), - (204 , happyReduce_204), - (205 , happyReduce_205), - (206 , happyReduce_206), - (207 , happyReduce_207), - (208 , happyReduce_208), - (209 , happyReduce_209), - (210 , happyReduce_210), - (211 , happyReduce_211), - (212 , happyReduce_212), - (213 , happyReduce_213), - (214 , happyReduce_214), - (215 , happyReduce_215), - (216 , happyReduce_216), - (217 , happyReduce_217), - (218 , happyReduce_218), - (219 , happyReduce_219), - (220 , happyReduce_220), - (221 , happyReduce_221), - (222 , happyReduce_222), - (223 , happyReduce_223), - (224 , happyReduce_224), - (225 , happyReduce_225), - (226 , happyReduce_226), - (227 , happyReduce_227), - (228 , happyReduce_228), - (229 , happyReduce_229), - (230 , happyReduce_230), - (231 , happyReduce_231), - (232 , happyReduce_232), - (233 , happyReduce_233), - (234 , happyReduce_234), - (235 , happyReduce_235), - (236 , happyReduce_236), - (237 , happyReduce_237), - (238 , happyReduce_238), - (239 , happyReduce_239), - (240 , happyReduce_240), - (241 , happyReduce_241), - (242 , happyReduce_242), - (243 , happyReduce_243), - (244 , happyReduce_244), - (245 , happyReduce_245), - (246 , happyReduce_246), - (247 , happyReduce_247), - (248 , happyReduce_248), - (249 , happyReduce_249), - (250 , happyReduce_250), - (251 , happyReduce_251), - (252 , happyReduce_252), - (253 , happyReduce_253), - (254 , happyReduce_254), - (255 , happyReduce_255), - (256 , happyReduce_256), - (257 , happyReduce_257), - (258 , happyReduce_258), - (259 , happyReduce_259), - (260 , happyReduce_260), - (261 , happyReduce_261), - (262 , happyReduce_262), - (263 , happyReduce_263), - (264 , happyReduce_264), - (265 , happyReduce_265), - (266 , happyReduce_266), - (267 , happyReduce_267), - (268 , happyReduce_268), - (269 , happyReduce_269), - (270 , happyReduce_270), - (271 , happyReduce_271), - (272 , happyReduce_272), - (273 , happyReduce_273), - (274 , happyReduce_274), - (275 , happyReduce_275) - ] - -happy_n_terms = 84 :: Int -happy_n_nonterms = 86 :: Int - -happyReduce_5 = happySpecReduce_1 0# happyReduction_5 -happyReduction_5 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) -> - happyIn8 - ((read (BS.unpack happy_var_1)) :: Integer - )} - -happyReduce_6 = happySpecReduce_1 1# happyReduction_6 -happyReduction_6 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) -> - happyIn9 - (BS.unpack happy_var_1 - )} - -happyReduce_7 = happySpecReduce_1 2# happyReduction_7 -happyReduction_7 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) -> - happyIn10 - ((read (BS.unpack happy_var_1)) :: Double - )} - -happyReduce_8 = happySpecReduce_1 3# happyReduction_8 -happyReduction_8 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (T_LString happy_var_1)) -> - happyIn11 - (LString (happy_var_1) - )} - -happyReduce_9 = happySpecReduce_1 4# happyReduction_9 -happyReduction_9 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn12 - (PIdent (mkPosToken happy_var_1) - )} - -happyReduce_10 = happySpecReduce_1 5# happyReduction_10 -happyReduction_10 happy_x_1 - = case happyOut14 happy_x_1 of { happy_var_1 -> - happyIn13 - (Gr (reverse happy_var_1) - )} - -happyReduce_11 = happySpecReduce_0 6# happyReduction_11 -happyReduction_11 = happyIn14 - ([] - ) - -happyReduce_12 = happySpecReduce_2 6# happyReduction_12 -happyReduction_12 happy_x_2 - happy_x_1 - = case happyOut14 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_2 of { happy_var_2 -> - happyIn14 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_13 = happySpecReduce_2 7# happyReduction_13 -happyReduction_13 happy_x_2 - happy_x_1 - = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn15 - (happy_var_1 - )} - -happyReduce_14 = happyReduce 10# 7# happyReduction_14 -happyReduction_14 (happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - 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 happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_7 of { happy_var_7 -> - case happyOut17 happy_x_9 of { happy_var_9 -> - happyIn15 - (MMain happy_var_2 happy_var_7 happy_var_9 - ) `HappyStk` happyRest}}} - -happyReduce_15 = happyReduce 4# 7# happyReduction_15 -happyReduction_15 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut30 happy_x_1 of { happy_var_1 -> - case happyOut23 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_4 of { happy_var_4 -> - happyIn15 - (MModule happy_var_1 happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_16 = happySpecReduce_3 8# happyReduction_16 -happyReduction_16 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut18 happy_x_3 of { happy_var_3 -> - happyIn16 - (ConcSpec happy_var_1 happy_var_3 - )}} - -happyReduce_17 = happySpecReduce_0 9# happyReduction_17 -happyReduction_17 = happyIn17 - ([] - ) - -happyReduce_18 = happySpecReduce_1 9# happyReduction_18 -happyReduction_18 happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn17 - ((:[]) happy_var_1 - )} - -happyReduce_19 = happySpecReduce_3 9# happyReduction_19 -happyReduction_19 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut17 happy_x_3 of { happy_var_3 -> - happyIn17 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_20 = happySpecReduce_2 10# happyReduction_20 -happyReduction_20 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn18 - (ConcExp happy_var_1 (reverse happy_var_2) - )}} - -happyReduce_21 = happySpecReduce_0 11# happyReduction_21 -happyReduction_21 = happyIn19 - ([] - ) - -happyReduce_22 = happySpecReduce_2 11# happyReduction_22 -happyReduction_22 happy_x_2 - happy_x_1 - = case happyOut19 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - happyIn19 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_23 = happyReduce 5# 12# happyReduction_23 -happyReduction_23 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut29 happy_x_4 of { happy_var_4 -> - happyIn20 - (TransferIn happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_24 = happyReduce 5# 12# happyReduction_24 -happyReduction_24 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut29 happy_x_4 of { happy_var_4 -> - happyIn20 - (TransferOut happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_25 = happyReduce 4# 13# happyReduction_25 -happyReduction_25 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut30 happy_x_1 of { happy_var_1 -> - case happyOut23 happy_x_2 of { happy_var_2 -> - case happyOut22 happy_x_4 of { happy_var_4 -> - happyIn21 - (MModule2 happy_var_1 happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_26 = happySpecReduce_2 14# happyReduction_26 -happyReduction_26 happy_x_2 - happy_x_1 - = case happyOut26 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn22 - (MBody2 happy_var_1 happy_var_2 - )}} - -happyReduce_27 = happySpecReduce_1 14# happyReduction_27 -happyReduction_27 happy_x_1 - = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn22 - (MNoBody2 happy_var_1 - )} - -happyReduce_28 = happySpecReduce_3 14# happyReduction_28 -happyReduction_28 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - happyIn22 - (MWith2 happy_var_1 happy_var_3 - )}} - -happyReduce_29 = happyReduce 5# 14# happyReduction_29 -happyReduction_29 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_5 of { happy_var_5 -> - happyIn22 - (MWithBody2 happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_30 = happyReduce 5# 14# happyReduction_30 -happyReduction_30 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut27 happy_x_5 of { happy_var_5 -> - happyIn22 - (MWithE2 happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_31 = happyReduce 7# 14# happyReduction_31 -happyReduction_31 (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 happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut27 happy_x_5 of { happy_var_5 -> - case happyOut28 happy_x_7 of { happy_var_7 -> - happyIn22 - (MWithEBody2 happy_var_1 happy_var_3 happy_var_5 happy_var_7 - ) `HappyStk` happyRest}}}} - -happyReduce_32 = happySpecReduce_2 14# happyReduction_32 -happyReduction_32 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn22 - (MReuse2 happy_var_2 - )} - -happyReduce_33 = happySpecReduce_2 14# happyReduction_33 -happyReduction_33 happy_x_2 - happy_x_1 - = case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn22 - (MUnion2 happy_var_2 - )} - -happyReduce_34 = happySpecReduce_2 15# happyReduction_34 -happyReduction_34 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn23 - (MTAbstract happy_var_2 - )} - -happyReduce_35 = happySpecReduce_2 15# happyReduction_35 -happyReduction_35 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn23 - (MTResource happy_var_2 - )} - -happyReduce_36 = happySpecReduce_2 15# happyReduction_36 -happyReduction_36 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn23 - (MTInterface happy_var_2 - )} - -happyReduce_37 = happyReduce 4# 15# happyReduction_37 -happyReduction_37 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - happyIn23 - (MTConcrete happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_38 = happyReduce 4# 15# happyReduction_38 -happyReduction_38 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - happyIn23 - (MTInstance happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_39 = happyReduce 6# 15# happyReduction_39 -happyReduction_39 (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 happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut29 happy_x_4 of { happy_var_4 -> - case happyOut29 happy_x_6 of { happy_var_6 -> - happyIn23 - (MTTransfer happy_var_2 happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}} - -happyReduce_40 = happyReduce 5# 16# happyReduction_40 -happyReduction_40 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut26 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_4 of { happy_var_4 -> - happyIn24 - (MBody happy_var_1 happy_var_2 (reverse happy_var_4) - ) `HappyStk` happyRest}}} - -happyReduce_41 = happySpecReduce_1 16# happyReduction_41 -happyReduction_41 happy_x_1 - = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn24 - (MNoBody happy_var_1 - )} - -happyReduce_42 = happySpecReduce_3 16# happyReduction_42 -happyReduction_42 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - happyIn24 - (MWith happy_var_1 happy_var_3 - )}} - -happyReduce_43 = happyReduce 8# 16# happyReduction_43 -happyReduction_43 (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 happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_5 of { happy_var_5 -> - case happyOut25 happy_x_7 of { happy_var_7 -> - happyIn24 - (MWithBody happy_var_1 happy_var_3 happy_var_5 (reverse happy_var_7) - ) `HappyStk` happyRest}}}} - -happyReduce_44 = happyReduce 5# 16# happyReduction_44 -happyReduction_44 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut27 happy_x_5 of { happy_var_5 -> - happyIn24 - (MWithE happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_45 = happyReduce 10# 16# happyReduction_45 -happyReduction_45 (happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - 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 happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut27 happy_x_5 of { happy_var_5 -> - case happyOut28 happy_x_7 of { happy_var_7 -> - case happyOut25 happy_x_9 of { happy_var_9 -> - happyIn24 - (MWithEBody happy_var_1 happy_var_3 happy_var_5 happy_var_7 (reverse happy_var_9) - ) `HappyStk` happyRest}}}}} - -happyReduce_46 = happySpecReduce_2 16# happyReduction_46 -happyReduction_46 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn24 - (MReuse happy_var_2 - )} - -happyReduce_47 = happySpecReduce_2 16# happyReduction_47 -happyReduction_47 happy_x_2 - happy_x_1 - = case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn24 - (MUnion happy_var_2 - )} - -happyReduce_48 = happySpecReduce_0 17# happyReduction_48 -happyReduction_48 = happyIn25 - ([] - ) - -happyReduce_49 = happySpecReduce_2 17# happyReduction_49 -happyReduction_49 happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_2 of { happy_var_2 -> - happyIn25 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_50 = happySpecReduce_2 18# happyReduction_50 -happyReduction_50 happy_x_2 - happy_x_1 - = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn26 - (Ext happy_var_1 - )} - -happyReduce_51 = happySpecReduce_0 18# happyReduction_51 -happyReduction_51 = happyIn26 - (NoExt - ) - -happyReduce_52 = happySpecReduce_0 19# happyReduction_52 -happyReduction_52 = happyIn27 - ([] - ) - -happyReduce_53 = happySpecReduce_1 19# happyReduction_53 -happyReduction_53 happy_x_1 - = case happyOut29 happy_x_1 of { happy_var_1 -> - happyIn27 - ((:[]) happy_var_1 - )} - -happyReduce_54 = happySpecReduce_3 19# happyReduction_54 -happyReduction_54 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - happyIn27 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_55 = happySpecReduce_0 20# happyReduction_55 -happyReduction_55 = happyIn28 - (NoOpens - ) - -happyReduce_56 = happySpecReduce_3 20# happyReduction_56 -happyReduction_56 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut27 happy_x_2 of { happy_var_2 -> - happyIn28 - (OpenIn happy_var_2 - )} - -happyReduce_57 = happySpecReduce_1 21# happyReduction_57 -happyReduction_57 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn29 - (OName happy_var_1 - )} - -happyReduce_58 = happyReduce 4# 21# happyReduction_58 -happyReduction_58 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut31 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn29 - (OQualQO happy_var_2 happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_59 = happyReduce 6# 21# happyReduction_59 -happyReduction_59 (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 happyOut31 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - case happyOut12 happy_x_5 of { happy_var_5 -> - happyIn29 - (OQual happy_var_2 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_60 = happySpecReduce_0 22# happyReduction_60 -happyReduction_60 = happyIn30 - (CMCompl - ) - -happyReduce_61 = happySpecReduce_1 22# happyReduction_61 -happyReduction_61 happy_x_1 - = happyIn30 - (CMIncompl - ) - -happyReduce_62 = happySpecReduce_0 23# happyReduction_62 -happyReduction_62 = happyIn31 - (QOCompl - ) - -happyReduce_63 = happySpecReduce_1 23# happyReduction_63 -happyReduction_63 happy_x_1 - = happyIn31 - (QOIncompl - ) - -happyReduce_64 = happySpecReduce_1 23# happyReduction_64 -happyReduction_64 happy_x_1 - = happyIn31 - (QOInterface - ) - -happyReduce_65 = happySpecReduce_0 24# happyReduction_65 -happyReduction_65 = happyIn32 - ([] - ) - -happyReduce_66 = happySpecReduce_1 24# happyReduction_66 -happyReduction_66 happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn32 - ((:[]) happy_var_1 - )} - -happyReduce_67 = happySpecReduce_3 24# happyReduction_67 -happyReduction_67 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn32 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_68 = happySpecReduce_1 25# happyReduction_68 -happyReduction_68 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn33 - (IAll happy_var_1 - )} - -happyReduce_69 = happyReduce 4# 25# happyReduction_69 -happyReduction_69 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - happyIn33 - (ISome happy_var_1 happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_70 = happyReduce 5# 25# happyReduction_70 -happyReduction_70 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_4 of { happy_var_4 -> - happyIn33 - (IMinus happy_var_1 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_71 = happySpecReduce_3 26# happyReduction_71 -happyReduction_71 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn34 - (DDecl happy_var_1 happy_var_3 - )}} - -happyReduce_72 = happySpecReduce_3 26# happyReduction_72 -happyReduction_72 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn34 - (DDef happy_var_1 happy_var_3 - )}} - -happyReduce_73 = happyReduce 4# 26# happyReduction_73 -happyReduction_73 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut74 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn34 - (DPatt happy_var_1 happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_74 = happyReduce 5# 26# happyReduction_74 -happyReduction_74 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_5 of { happy_var_5 -> - happyIn34 - (DFull happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_75 = happySpecReduce_2 27# happyReduction_75 -happyReduction_75 happy_x_2 - happy_x_1 - = case happyOut46 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefCat happy_var_2 - )} - -happyReduce_76 = happySpecReduce_2 27# happyReduction_76 -happyReduction_76 happy_x_2 - happy_x_1 - = case happyOut47 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefFun happy_var_2 - )} - -happyReduce_77 = happySpecReduce_2 27# happyReduction_77 -happyReduction_77 happy_x_2 - happy_x_1 - = case happyOut47 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefFunData happy_var_2 - )} - -happyReduce_78 = happySpecReduce_2 27# happyReduction_78 -happyReduction_78 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefDef happy_var_2 - )} - -happyReduce_79 = happySpecReduce_2 27# happyReduction_79 -happyReduction_79 happy_x_2 - happy_x_1 - = case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefData happy_var_2 - )} - -happyReduce_80 = happySpecReduce_2 27# happyReduction_80 -happyReduction_80 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefTrans happy_var_2 - )} - -happyReduce_81 = happySpecReduce_2 27# happyReduction_81 -happyReduction_81 happy_x_2 - happy_x_1 - = case happyOut49 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefPar happy_var_2 - )} - -happyReduce_82 = happySpecReduce_2 27# happyReduction_82 -happyReduction_82 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefOper happy_var_2 - )} - -happyReduce_83 = happySpecReduce_2 27# happyReduction_83 -happyReduction_83 happy_x_2 - happy_x_1 - = case happyOut50 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefLincat happy_var_2 - )} - -happyReduce_84 = happySpecReduce_2 27# happyReduction_84 -happyReduction_84 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefLindef happy_var_2 - )} - -happyReduce_85 = happySpecReduce_2 27# happyReduction_85 -happyReduction_85 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefLin happy_var_2 - )} - -happyReduce_86 = happySpecReduce_3 27# happyReduction_86 -happyReduction_86 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn35 - (DefPrintCat happy_var_3 - )} - -happyReduce_87 = happySpecReduce_3 27# happyReduction_87 -happyReduction_87 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn35 - (DefPrintFun happy_var_3 - )} - -happyReduce_88 = happySpecReduce_2 27# happyReduction_88 -happyReduction_88 happy_x_2 - happy_x_1 - = case happyOut51 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefFlag happy_var_2 - )} - -happyReduce_89 = happySpecReduce_2 27# happyReduction_89 -happyReduction_89 happy_x_2 - happy_x_1 - = case happyOut50 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefPrintOld happy_var_2 - )} - -happyReduce_90 = happySpecReduce_2 27# happyReduction_90 -happyReduction_90 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefLintype happy_var_2 - )} - -happyReduce_91 = happySpecReduce_2 27# happyReduction_91 -happyReduction_91 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefPattern happy_var_2 - )} - -happyReduce_92 = happyReduce 7# 27# happyReduction_92 -happyReduction_92 (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 happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_5 of { happy_var_5 -> - happyIn35 - (DefPackage happy_var_2 (reverse happy_var_5) - ) `HappyStk` happyRest}} - -happyReduce_93 = happySpecReduce_2 27# happyReduction_93 -happyReduction_93 happy_x_2 - happy_x_1 - = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefVars happy_var_2 - )} - -happyReduce_94 = happySpecReduce_3 27# happyReduction_94 -happyReduction_94 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn35 - (DefTokenizer happy_var_2 - )} - -happyReduce_95 = happySpecReduce_2 28# happyReduction_95 -happyReduction_95 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - happyIn36 - (SimpleCatDef happy_var_1 (reverse happy_var_2) - )}} - -happyReduce_96 = happyReduce 4# 28# happyReduction_96 -happyReduction_96 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn36 - (ListCatDef happy_var_2 (reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_97 = happyReduce 7# 28# happyReduction_97 -happyReduction_97 (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 happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut89 happy_x_3 of { happy_var_3 -> - case happyOut8 happy_x_6 of { happy_var_6 -> - happyIn36 - (ListSizeCatDef happy_var_2 (reverse happy_var_3) happy_var_6 - ) `HappyStk` happyRest}}} - -happyReduce_98 = happySpecReduce_3 29# happyReduction_98 -happyReduction_98 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut53 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn37 - (FunDef happy_var_1 happy_var_3 - )}} - -happyReduce_99 = happySpecReduce_3 30# happyReduction_99 -happyReduction_99 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn38 - (DataDef happy_var_1 happy_var_3 - )}} - -happyReduce_100 = happySpecReduce_1 31# happyReduction_100 -happyReduction_100 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn39 - (DataId happy_var_1 - )} - -happyReduce_101 = happySpecReduce_3 31# happyReduction_101 -happyReduction_101 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn39 - (DataQId happy_var_1 happy_var_3 - )}} - -happyReduce_102 = happySpecReduce_0 32# happyReduction_102 -happyReduction_102 = happyIn40 - ([] - ) - -happyReduce_103 = happySpecReduce_1 32# happyReduction_103 -happyReduction_103 happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - happyIn40 - ((:[]) happy_var_1 - )} - -happyReduce_104 = happySpecReduce_3 32# happyReduction_104 -happyReduction_104 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn40 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_105 = happySpecReduce_3 33# happyReduction_105 -happyReduction_105 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn41 - (ParDefDir happy_var_1 happy_var_3 - )}} - -happyReduce_106 = happyReduce 6# 33# happyReduction_106 -happyReduction_106 (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 happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_5 of { happy_var_5 -> - happyIn41 - (ParDefIndir happy_var_1 happy_var_5 - ) `HappyStk` happyRest}} - -happyReduce_107 = happySpecReduce_1 33# happyReduction_107 -happyReduction_107 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn41 - (ParDefAbs happy_var_1 - )} - -happyReduce_108 = happySpecReduce_2 34# happyReduction_108 -happyReduction_108 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - happyIn42 - (ParConstr happy_var_1 (reverse happy_var_2) - )}} - -happyReduce_109 = happySpecReduce_3 35# happyReduction_109 -happyReduction_109 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn43 - (PrintDef happy_var_1 happy_var_3 - )}} - -happyReduce_110 = happySpecReduce_3 36# happyReduction_110 -happyReduction_110 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn44 - (FlagDef happy_var_1 happy_var_3 - )}} - -happyReduce_111 = happySpecReduce_2 37# happyReduction_111 -happyReduction_111 happy_x_2 - happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn45 - ((:[]) happy_var_1 - )} - -happyReduce_112 = happySpecReduce_3 37# happyReduction_112 -happyReduction_112 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_3 of { happy_var_3 -> - happyIn45 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_113 = happySpecReduce_2 38# happyReduction_113 -happyReduction_113 happy_x_2 - happy_x_1 - = case happyOut36 happy_x_1 of { happy_var_1 -> - happyIn46 - ((:[]) happy_var_1 - )} - -happyReduce_114 = happySpecReduce_3 38# happyReduction_114 -happyReduction_114 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut36 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn46 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_115 = happySpecReduce_2 39# happyReduction_115 -happyReduction_115 happy_x_2 - happy_x_1 - = case happyOut37 happy_x_1 of { happy_var_1 -> - happyIn47 - ((:[]) happy_var_1 - )} - -happyReduce_116 = happySpecReduce_3 39# happyReduction_116 -happyReduction_116 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_3 of { happy_var_3 -> - happyIn47 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_117 = happySpecReduce_2 40# happyReduction_117 -happyReduction_117 happy_x_2 - happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn48 - ((:[]) happy_var_1 - )} - -happyReduce_118 = happySpecReduce_3 40# happyReduction_118 -happyReduction_118 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_3 of { happy_var_3 -> - happyIn48 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_119 = happySpecReduce_2 41# happyReduction_119 -happyReduction_119 happy_x_2 - happy_x_1 - = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn49 - ((:[]) happy_var_1 - )} - -happyReduce_120 = happySpecReduce_3 41# happyReduction_120 -happyReduction_120 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut41 happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_3 of { happy_var_3 -> - happyIn49 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_121 = happySpecReduce_2 42# happyReduction_121 -happyReduction_121 happy_x_2 - happy_x_1 - = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn50 - ((:[]) happy_var_1 - )} - -happyReduce_122 = happySpecReduce_3 42# happyReduction_122 -happyReduction_122 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut43 happy_x_1 of { happy_var_1 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn50 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_123 = happySpecReduce_2 43# happyReduction_123 -happyReduction_123 happy_x_2 - happy_x_1 - = case happyOut44 happy_x_1 of { happy_var_1 -> - happyIn51 - ((:[]) happy_var_1 - )} - -happyReduce_124 = happySpecReduce_3 43# happyReduction_124 -happyReduction_124 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut51 happy_x_3 of { happy_var_3 -> - happyIn51 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_125 = happySpecReduce_0 44# happyReduction_125 -happyReduction_125 = happyIn52 - ([] - ) - -happyReduce_126 = happySpecReduce_1 44# happyReduction_126 -happyReduction_126 happy_x_1 - = case happyOut42 happy_x_1 of { happy_var_1 -> - happyIn52 - ((:[]) happy_var_1 - )} - -happyReduce_127 = happySpecReduce_3 44# happyReduction_127 -happyReduction_127 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn52 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_128 = happySpecReduce_1 45# happyReduction_128 -happyReduction_128 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn53 - ((:[]) happy_var_1 - )} - -happyReduce_129 = happySpecReduce_3 45# happyReduction_129 -happyReduction_129 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - happyIn53 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_130 = happySpecReduce_1 46# happyReduction_130 -happyReduction_130 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn54 - (IdentName happy_var_1 - )} - -happyReduce_131 = happySpecReduce_3 46# happyReduction_131 -happyReduction_131 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn54 - (ListName happy_var_2 - )} - -happyReduce_132 = happySpecReduce_1 47# happyReduction_132 -happyReduction_132 happy_x_1 - = case happyOut54 happy_x_1 of { happy_var_1 -> - happyIn55 - ((:[]) happy_var_1 - )} - -happyReduce_133 = happySpecReduce_3 47# happyReduction_133 -happyReduction_133 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_3 of { happy_var_3 -> - happyIn55 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_134 = happySpecReduce_3 48# happyReduction_134 -happyReduction_134 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut53 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn56 - (LDDecl happy_var_1 happy_var_3 - )}} - -happyReduce_135 = happySpecReduce_3 48# happyReduction_135 -happyReduction_135 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut53 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn56 - (LDDef happy_var_1 happy_var_3 - )}} - -happyReduce_136 = happyReduce 5# 48# happyReduction_136 -happyReduction_136 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut53 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_5 of { happy_var_5 -> - happyIn56 - (LDFull happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_137 = happySpecReduce_0 49# happyReduction_137 -happyReduction_137 = happyIn57 - ([] - ) - -happyReduce_138 = happySpecReduce_1 49# happyReduction_138 -happyReduction_138 happy_x_1 - = case happyOut56 happy_x_1 of { happy_var_1 -> - happyIn57 - ((:[]) happy_var_1 - )} - -happyReduce_139 = happySpecReduce_3 49# happyReduction_139 -happyReduction_139 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_3 of { happy_var_3 -> - happyIn57 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_140 = happySpecReduce_1 50# happyReduction_140 -happyReduction_140 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn58 - (EIdent happy_var_1 - )} - -happyReduce_141 = happySpecReduce_3 50# happyReduction_141 -happyReduction_141 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn58 - (EConstr happy_var_2 - )} - -happyReduce_142 = happySpecReduce_3 50# happyReduction_142 -happyReduction_142 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn58 - (ECons happy_var_2 - )} - -happyReduce_143 = happySpecReduce_1 50# happyReduction_143 -happyReduction_143 happy_x_1 - = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn58 - (ESort happy_var_1 - )} - -happyReduce_144 = happySpecReduce_1 50# happyReduction_144 -happyReduction_144 happy_x_1 - = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn58 - (EString happy_var_1 - )} - -happyReduce_145 = happySpecReduce_1 50# happyReduction_145 -happyReduction_145 happy_x_1 - = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn58 - (EInt happy_var_1 - )} - -happyReduce_146 = happySpecReduce_1 50# happyReduction_146 -happyReduction_146 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn58 - (EFloat happy_var_1 - )} - -happyReduce_147 = happySpecReduce_1 50# happyReduction_147 -happyReduction_147 happy_x_1 - = happyIn58 - (EMeta - ) - -happyReduce_148 = happySpecReduce_2 50# happyReduction_148 -happyReduction_148 happy_x_2 - happy_x_1 - = happyIn58 - (EEmpty - ) - -happyReduce_149 = happySpecReduce_1 50# happyReduction_149 -happyReduction_149 happy_x_1 - = happyIn58 - (EData - ) - -happyReduce_150 = happyReduce 4# 50# happyReduction_150 -happyReduction_150 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut66 happy_x_3 of { happy_var_3 -> - happyIn58 - (EList happy_var_2 happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_151 = happySpecReduce_3 50# happyReduction_151 -happyReduction_151 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut9 happy_x_2 of { happy_var_2 -> - happyIn58 - (EStrings happy_var_2 - )} - -happyReduce_152 = happySpecReduce_3 50# happyReduction_152 -happyReduction_152 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut57 happy_x_2 of { happy_var_2 -> - happyIn58 - (ERecord happy_var_2 - )} - -happyReduce_153 = happySpecReduce_3 50# happyReduction_153 -happyReduction_153 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut80 happy_x_2 of { happy_var_2 -> - happyIn58 - (ETuple happy_var_2 - )} - -happyReduce_154 = happyReduce 4# 50# happyReduction_154 -happyReduction_154 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn58 - (EIndir happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_155 = happyReduce 5# 50# happyReduction_155 -happyReduction_155 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut64 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn58 - (ETyped happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_156 = happySpecReduce_3 50# happyReduction_156 -happyReduction_156 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn58 - (happy_var_2 - )} - -happyReduce_157 = happySpecReduce_1 50# happyReduction_157 -happyReduction_157 happy_x_1 - = case happyOut11 happy_x_1 of { happy_var_1 -> - happyIn58 - (ELString happy_var_1 - )} - -happyReduce_158 = happySpecReduce_3 51# happyReduction_158 -happyReduction_158 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - happyIn59 - (EProj happy_var_1 happy_var_3 - )}} - -happyReduce_159 = happyReduce 5# 51# happyReduction_159 -happyReduction_159 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - happyIn59 - (EQConstr happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_160 = happyReduce 4# 51# happyReduction_160 -happyReduction_160 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - happyIn59 - (EQCons happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_161 = happySpecReduce_1 51# happyReduction_161 -happyReduction_161 happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn59 - (happy_var_1 - )} - -happyReduce_162 = happySpecReduce_2 52# happyReduction_162 -happyReduction_162 happy_x_2 - happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_2 of { happy_var_2 -> - happyIn60 - (EApp happy_var_1 happy_var_2 - )}} - -happyReduce_163 = happyReduce 4# 52# happyReduction_163 -happyReduction_163 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut83 happy_x_3 of { happy_var_3 -> - happyIn60 - (ETable happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_164 = happyReduce 5# 52# happyReduction_164 -happyReduction_164 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut58 happy_x_2 of { happy_var_2 -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn60 - (ETTable happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_165 = happyReduce 5# 52# happyReduction_165 -happyReduction_165 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut58 happy_x_2 of { happy_var_2 -> - case happyOut65 happy_x_4 of { happy_var_4 -> - happyIn60 - (EVTable happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_166 = happyReduce 6# 52# happyReduction_166 -happyReduction_166 (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 happyOut64 happy_x_2 of { happy_var_2 -> - case happyOut83 happy_x_5 of { happy_var_5 -> - happyIn60 - (ECase happy_var_2 happy_var_5 - ) `HappyStk` happyRest}} - -happyReduce_167 = happyReduce 4# 52# happyReduction_167 -happyReduction_167 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut65 happy_x_3 of { happy_var_3 -> - happyIn60 - (EVariants happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_168 = happyReduce 6# 52# happyReduction_168 -happyReduction_168 (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 happyOut64 happy_x_3 of { happy_var_3 -> - case happyOut87 happy_x_5 of { happy_var_5 -> - happyIn60 - (EPre happy_var_3 happy_var_5 - ) `HappyStk` happyRest}} - -happyReduce_169 = happyReduce 4# 52# happyReduction_169 -happyReduction_169 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut65 happy_x_3 of { happy_var_3 -> - happyIn60 - (EStrs happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_170 = happySpecReduce_3 52# happyReduction_170 -happyReduction_170 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut58 happy_x_3 of { happy_var_3 -> - happyIn60 - (EConAt happy_var_1 happy_var_3 - )}} - -happyReduce_171 = happySpecReduce_2 52# happyReduction_171 -happyReduction_171 happy_x_2 - happy_x_1 - = case happyOut67 happy_x_2 of { happy_var_2 -> - happyIn60 - (EPatt happy_var_2 - )} - -happyReduce_172 = happySpecReduce_2 52# happyReduction_172 -happyReduction_172 happy_x_2 - happy_x_1 - = case happyOut59 happy_x_2 of { happy_var_2 -> - happyIn60 - (EPattType happy_var_2 - )} - -happyReduce_173 = happySpecReduce_1 52# happyReduction_173 -happyReduction_173 happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - happyIn60 - (happy_var_1 - )} - -happyReduce_174 = happySpecReduce_2 52# happyReduction_174 -happyReduction_174 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn60 - (ELin happy_var_2 - )} - -happyReduce_175 = happySpecReduce_3 53# happyReduction_175 -happyReduction_175 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut60 happy_x_3 of { happy_var_3 -> - happyIn61 - (ESelect happy_var_1 happy_var_3 - )}} - -happyReduce_176 = happySpecReduce_3 53# happyReduction_176 -happyReduction_176 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut60 happy_x_3 of { happy_var_3 -> - happyIn61 - (ETupTyp happy_var_1 happy_var_3 - )}} - -happyReduce_177 = happySpecReduce_3 53# happyReduction_177 -happyReduction_177 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut60 happy_x_3 of { happy_var_3 -> - happyIn61 - (EExtend happy_var_1 happy_var_3 - )}} - -happyReduce_178 = happySpecReduce_1 53# happyReduction_178 -happyReduction_178 happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn61 - (happy_var_1 - )} - -happyReduce_179 = happySpecReduce_3 54# happyReduction_179 -happyReduction_179 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut62 happy_x_3 of { happy_var_3 -> - happyIn62 - (EGlue happy_var_1 happy_var_3 - )}} - -happyReduce_180 = happySpecReduce_1 54# happyReduction_180 -happyReduction_180 happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn62 - (happy_var_1 - )} - -happyReduce_181 = happySpecReduce_3 55# happyReduction_181 -happyReduction_181 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_3 of { happy_var_3 -> - happyIn63 - (EConcat happy_var_1 happy_var_3 - )}} - -happyReduce_182 = happySpecReduce_1 55# happyReduction_182 -happyReduction_182 happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - happyIn63 - (happy_var_1 - )} - -happyReduce_183 = happySpecReduce_3 56# happyReduction_183 -happyReduction_183 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut63 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn64 - (EVariant happy_var_1 happy_var_3 - )}} - -happyReduce_184 = happyReduce 4# 56# happyReduction_184 -happyReduction_184 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn64 - (EAbstr happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_185 = happyReduce 5# 56# happyReduction_185 -happyReduction_185 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_5 of { happy_var_5 -> - happyIn64 - (ECTable happy_var_3 happy_var_5 - ) `HappyStk` happyRest}} - -happyReduce_186 = happySpecReduce_3 56# happyReduction_186 -happyReduction_186 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut77 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn64 - (EProd happy_var_1 happy_var_3 - )}} - -happyReduce_187 = happySpecReduce_3 56# happyReduction_187 -happyReduction_187 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn64 - (ETType happy_var_1 happy_var_3 - )}} - -happyReduce_188 = happyReduce 6# 56# happyReduction_188 -happyReduction_188 (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 happyOut57 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_6 of { happy_var_6 -> - happyIn64 - (ELet happy_var_3 happy_var_6 - ) `HappyStk` happyRest}} - -happyReduce_189 = happyReduce 4# 56# happyReduction_189 -happyReduction_189 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut57 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn64 - (ELetb happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_190 = happyReduce 5# 56# happyReduction_190 -happyReduction_190 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_4 of { happy_var_4 -> - happyIn64 - (EWhere happy_var_1 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_191 = happyReduce 4# 56# happyReduction_191 -happyReduction_191 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut85 happy_x_3 of { happy_var_3 -> - happyIn64 - (EEqs happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_192 = happySpecReduce_3 56# happyReduction_192 -happyReduction_192 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut59 happy_x_2 of { happy_var_2 -> - case happyOut9 happy_x_3 of { happy_var_3 -> - happyIn64 - (EExample happy_var_2 happy_var_3 - )}} - -happyReduce_193 = happySpecReduce_1 56# happyReduction_193 -happyReduction_193 happy_x_1 - = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn64 - (happy_var_1 - )} - -happyReduce_194 = happySpecReduce_0 57# happyReduction_194 -happyReduction_194 = happyIn65 - ([] - ) - -happyReduce_195 = happySpecReduce_1 57# happyReduction_195 -happyReduction_195 happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn65 - ((:[]) happy_var_1 - )} - -happyReduce_196 = happySpecReduce_3 57# happyReduction_196 -happyReduction_196 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_3 of { happy_var_3 -> - happyIn65 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_197 = happySpecReduce_0 58# happyReduction_197 -happyReduction_197 = happyIn66 - (NilExp - ) - -happyReduce_198 = happySpecReduce_2 58# happyReduction_198 -happyReduction_198 happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut66 happy_x_2 of { happy_var_2 -> - happyIn66 - (ConsExp happy_var_1 happy_var_2 - )}} - -happyReduce_199 = happySpecReduce_1 59# happyReduction_199 -happyReduction_199 happy_x_1 - = happyIn67 - (PChar - ) - -happyReduce_200 = happySpecReduce_3 59# happyReduction_200 -happyReduction_200 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut9 happy_x_2 of { happy_var_2 -> - happyIn67 - (PChars happy_var_2 - )} - -happyReduce_201 = happySpecReduce_2 59# happyReduction_201 -happyReduction_201 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn67 - (PMacro happy_var_2 - )} - -happyReduce_202 = happyReduce 4# 59# happyReduction_202 -happyReduction_202 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - happyIn67 - (PM happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_203 = happySpecReduce_1 59# happyReduction_203 -happyReduction_203 happy_x_1 - = happyIn67 - (PW - ) - -happyReduce_204 = happySpecReduce_1 59# happyReduction_204 -happyReduction_204 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn67 - (PV happy_var_1 - )} - -happyReduce_205 = happySpecReduce_3 59# happyReduction_205 -happyReduction_205 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn67 - (PCon happy_var_2 - )} - -happyReduce_206 = happySpecReduce_3 59# happyReduction_206 -happyReduction_206 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn67 - (PQ happy_var_1 happy_var_3 - )}} - -happyReduce_207 = happySpecReduce_1 59# happyReduction_207 -happyReduction_207 happy_x_1 - = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn67 - (PInt happy_var_1 - )} - -happyReduce_208 = happySpecReduce_1 59# happyReduction_208 -happyReduction_208 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn67 - (PFloat happy_var_1 - )} - -happyReduce_209 = happySpecReduce_1 59# happyReduction_209 -happyReduction_209 happy_x_1 - = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn67 - (PStr happy_var_1 - )} - -happyReduce_210 = happySpecReduce_3 59# happyReduction_210 -happyReduction_210 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut73 happy_x_2 of { happy_var_2 -> - happyIn67 - (PR happy_var_2 - )} - -happyReduce_211 = happySpecReduce_3 59# happyReduction_211 -happyReduction_211 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut81 happy_x_2 of { happy_var_2 -> - happyIn67 - (PTup happy_var_2 - )} - -happyReduce_212 = happySpecReduce_3 59# happyReduction_212 -happyReduction_212 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut69 happy_x_2 of { happy_var_2 -> - happyIn67 - (happy_var_2 - )} - -happyReduce_213 = happySpecReduce_2 60# happyReduction_213 -happyReduction_213 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut74 happy_x_2 of { happy_var_2 -> - happyIn68 - (PC happy_var_1 happy_var_2 - )}} - -happyReduce_214 = happyReduce 4# 60# happyReduction_214 -happyReduction_214 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - case happyOut74 happy_x_4 of { happy_var_4 -> - happyIn68 - (PQC happy_var_1 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_215 = happySpecReduce_2 60# happyReduction_215 -happyReduction_215 happy_x_2 - happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn68 - (PRep happy_var_1 - )} - -happyReduce_216 = happySpecReduce_3 60# happyReduction_216 -happyReduction_216 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn68 - (PAs happy_var_1 happy_var_3 - )}} - -happyReduce_217 = happySpecReduce_2 60# happyReduction_217 -happyReduction_217 happy_x_2 - happy_x_1 - = case happyOut67 happy_x_2 of { happy_var_2 -> - happyIn68 - (PNeg happy_var_2 - )} - -happyReduce_218 = happySpecReduce_1 60# happyReduction_218 -happyReduction_218 happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn68 - (happy_var_1 - )} - -happyReduce_219 = happySpecReduce_3 61# happyReduction_219 -happyReduction_219 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_3 of { happy_var_3 -> - happyIn69 - (PDisj happy_var_1 happy_var_3 - )}} - -happyReduce_220 = happySpecReduce_3 61# happyReduction_220 -happyReduction_220 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_3 of { happy_var_3 -> - happyIn69 - (PSeq happy_var_1 happy_var_3 - )}} - -happyReduce_221 = happySpecReduce_1 61# happyReduction_221 -happyReduction_221 happy_x_1 - = case happyOut68 happy_x_1 of { happy_var_1 -> - happyIn69 - (happy_var_1 - )} - -happyReduce_222 = happySpecReduce_3 62# happyReduction_222 -happyReduction_222 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut53 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_3 of { happy_var_3 -> - happyIn70 - (PA happy_var_1 happy_var_3 - )}} - -happyReduce_223 = happySpecReduce_1 63# happyReduction_223 -happyReduction_223 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn71 - (LIdent happy_var_1 - )} - -happyReduce_224 = happySpecReduce_2 63# happyReduction_224 -happyReduction_224 happy_x_2 - happy_x_1 - = case happyOut8 happy_x_2 of { happy_var_2 -> - happyIn71 - (LVar happy_var_2 - )} - -happyReduce_225 = happySpecReduce_1 64# happyReduction_225 -happyReduction_225 happy_x_1 - = happyIn72 - (Sort_Type - ) - -happyReduce_226 = happySpecReduce_1 64# happyReduction_226 -happyReduction_226 happy_x_1 - = happyIn72 - (Sort_PType - ) - -happyReduce_227 = happySpecReduce_1 64# happyReduction_227 -happyReduction_227 happy_x_1 - = happyIn72 - (Sort_Tok - ) - -happyReduce_228 = happySpecReduce_1 64# happyReduction_228 -happyReduction_228 happy_x_1 - = happyIn72 - (Sort_Str - ) - -happyReduce_229 = happySpecReduce_1 64# happyReduction_229 -happyReduction_229 happy_x_1 - = happyIn72 - (Sort_Strs - ) - -happyReduce_230 = happySpecReduce_0 65# happyReduction_230 -happyReduction_230 = happyIn73 - ([] - ) - -happyReduce_231 = happySpecReduce_1 65# happyReduction_231 -happyReduction_231 happy_x_1 - = case happyOut70 happy_x_1 of { happy_var_1 -> - happyIn73 - ((:[]) happy_var_1 - )} - -happyReduce_232 = happySpecReduce_3 65# happyReduction_232 -happyReduction_232 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut70 happy_x_1 of { happy_var_1 -> - case happyOut73 happy_x_3 of { happy_var_3 -> - happyIn73 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_233 = happySpecReduce_1 66# happyReduction_233 -happyReduction_233 happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn74 - ((:[]) happy_var_1 - )} - -happyReduce_234 = happySpecReduce_2 66# happyReduction_234 -happyReduction_234 happy_x_2 - happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - case happyOut74 happy_x_2 of { happy_var_2 -> - happyIn74 - ((:) happy_var_1 happy_var_2 - )}} - -happyReduce_235 = happySpecReduce_1 67# happyReduction_235 -happyReduction_235 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn75 - (BIdent happy_var_1 - )} - -happyReduce_236 = happySpecReduce_1 67# happyReduction_236 -happyReduction_236 happy_x_1 - = happyIn75 - (BWild - ) - -happyReduce_237 = happySpecReduce_0 68# happyReduction_237 -happyReduction_237 = happyIn76 - ([] - ) - -happyReduce_238 = happySpecReduce_1 68# happyReduction_238 -happyReduction_238 happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn76 - ((:[]) happy_var_1 - )} - -happyReduce_239 = happySpecReduce_3 68# happyReduction_239 -happyReduction_239 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut76 happy_x_3 of { happy_var_3 -> - happyIn76 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_240 = happyReduce 5# 69# happyReduction_240 -happyReduction_240 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn77 - (DDec happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_241 = happySpecReduce_1 69# happyReduction_241 -happyReduction_241 happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn77 - (DExp happy_var_1 - )} - -happyReduce_242 = happySpecReduce_1 70# happyReduction_242 -happyReduction_242 happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn78 - (TComp happy_var_1 - )} - -happyReduce_243 = happySpecReduce_1 71# happyReduction_243 -happyReduction_243 happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - happyIn79 - (PTComp happy_var_1 - )} - -happyReduce_244 = happySpecReduce_0 72# happyReduction_244 -happyReduction_244 = happyIn80 - ([] - ) - -happyReduce_245 = happySpecReduce_1 72# happyReduction_245 -happyReduction_245 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn80 - ((:[]) happy_var_1 - )} - -happyReduce_246 = happySpecReduce_3 72# happyReduction_246 -happyReduction_246 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - case happyOut80 happy_x_3 of { happy_var_3 -> - happyIn80 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_247 = happySpecReduce_0 73# happyReduction_247 -happyReduction_247 = happyIn81 - ([] - ) - -happyReduce_248 = happySpecReduce_1 73# happyReduction_248 -happyReduction_248 happy_x_1 - = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn81 - ((:[]) happy_var_1 - )} - -happyReduce_249 = happySpecReduce_3 73# happyReduction_249 -happyReduction_249 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut79 happy_x_1 of { happy_var_1 -> - case happyOut81 happy_x_3 of { happy_var_3 -> - happyIn81 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_250 = happySpecReduce_3 74# happyReduction_250 -happyReduction_250 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn82 - (Case happy_var_1 happy_var_3 - )}} - -happyReduce_251 = happySpecReduce_1 75# happyReduction_251 -happyReduction_251 happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn83 - ((:[]) happy_var_1 - )} - -happyReduce_252 = happySpecReduce_3 75# happyReduction_252 -happyReduction_252 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut83 happy_x_3 of { happy_var_3 -> - happyIn83 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_253 = happySpecReduce_3 76# happyReduction_253 -happyReduction_253 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut74 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn84 - (Equ happy_var_1 happy_var_3 - )}} - -happyReduce_254 = happySpecReduce_0 77# happyReduction_254 -happyReduction_254 = happyIn85 - ([] - ) - -happyReduce_255 = happySpecReduce_1 77# happyReduction_255 -happyReduction_255 happy_x_1 - = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn85 - ((:[]) happy_var_1 - )} - -happyReduce_256 = happySpecReduce_3 77# happyReduction_256 -happyReduction_256 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut84 happy_x_1 of { happy_var_1 -> - case happyOut85 happy_x_3 of { happy_var_3 -> - happyIn85 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_257 = happySpecReduce_3 78# happyReduction_257 -happyReduction_257 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn86 - (Alt happy_var_1 happy_var_3 - )}} - -happyReduce_258 = happySpecReduce_0 79# happyReduction_258 -happyReduction_258 = happyIn87 - ([] - ) - -happyReduce_259 = happySpecReduce_1 79# happyReduction_259 -happyReduction_259 happy_x_1 - = case happyOut86 happy_x_1 of { happy_var_1 -> - happyIn87 - ((:[]) happy_var_1 - )} - -happyReduce_260 = happySpecReduce_3 79# happyReduction_260 -happyReduction_260 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut86 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_3 of { happy_var_3 -> - happyIn87 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_261 = happyReduce 5# 80# happyReduction_261 -happyReduction_261 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn88 - (DDDec happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_262 = happySpecReduce_1 80# happyReduction_262 -happyReduction_262 happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn88 - (DDExp happy_var_1 - )} - -happyReduce_263 = happySpecReduce_0 81# happyReduction_263 -happyReduction_263 = happyIn89 - ([] - ) - -happyReduce_264 = happySpecReduce_2 81# happyReduction_264 -happyReduction_264 happy_x_2 - happy_x_1 - = case happyOut89 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn89 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_265 = happySpecReduce_2 82# happyReduction_265 -happyReduction_265 happy_x_2 - happy_x_1 - = case happyOut91 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - happyIn90 - (OldGr happy_var_1 (reverse happy_var_2) - )}} - -happyReduce_266 = happySpecReduce_0 83# happyReduction_266 -happyReduction_266 = happyIn91 - (NoIncl - ) - -happyReduce_267 = happySpecReduce_2 83# happyReduction_267 -happyReduction_267 happy_x_2 - happy_x_1 - = case happyOut93 happy_x_2 of { happy_var_2 -> - happyIn91 - (Incl happy_var_2 - )} - -happyReduce_268 = happySpecReduce_1 84# happyReduction_268 -happyReduction_268 happy_x_1 - = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn92 - (FString happy_var_1 - )} - -happyReduce_269 = happySpecReduce_1 84# happyReduction_269 -happyReduction_269 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn92 - (FIdent happy_var_1 - )} - -happyReduce_270 = happySpecReduce_2 84# happyReduction_270 -happyReduction_270 happy_x_2 - happy_x_1 - = case happyOut92 happy_x_2 of { happy_var_2 -> - happyIn92 - (FSlash happy_var_2 - )} - -happyReduce_271 = happySpecReduce_2 84# happyReduction_271 -happyReduction_271 happy_x_2 - happy_x_1 - = case happyOut92 happy_x_2 of { happy_var_2 -> - happyIn92 - (FDot happy_var_2 - )} - -happyReduce_272 = happySpecReduce_2 84# happyReduction_272 -happyReduction_272 happy_x_2 - happy_x_1 - = case happyOut92 happy_x_2 of { happy_var_2 -> - happyIn92 - (FMinus happy_var_2 - )} - -happyReduce_273 = happySpecReduce_2 84# happyReduction_273 -happyReduction_273 happy_x_2 - happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut92 happy_x_2 of { happy_var_2 -> - happyIn92 - (FAddId happy_var_1 happy_var_2 - )}} - -happyReduce_274 = happySpecReduce_2 85# happyReduction_274 -happyReduction_274 happy_x_2 - happy_x_1 - = case happyOut92 happy_x_1 of { happy_var_1 -> - happyIn93 - ((:[]) happy_var_1 - )} - -happyReduce_275 = happySpecReduce_3 85# happyReduction_275 -happyReduction_275 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOut93 happy_x_3 of { happy_var_3 -> - happyIn93 - ((:) happy_var_1 happy_var_3 - )}} - -happyNewToken action sts stk [] = - happyDoAction 83# notHappyAtAll 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 _ 1) -> cont 1#; - PT _ (TS _ 2) -> cont 2#; - PT _ (TS _ 3) -> cont 3#; - PT _ (TS _ 4) -> cont 4#; - PT _ (TS _ 5) -> cont 5#; - PT _ (TS _ 6) -> cont 6#; - PT _ (TS _ 7) -> cont 7#; - PT _ (TS _ 8) -> cont 8#; - PT _ (TS _ 9) -> cont 9#; - PT _ (TS _ 10) -> cont 10#; - PT _ (TS _ 11) -> cont 11#; - PT _ (TS _ 12) -> cont 12#; - PT _ (TS _ 13) -> cont 13#; - PT _ (TS _ 14) -> cont 14#; - PT _ (TS _ 15) -> cont 15#; - PT _ (TS _ 16) -> cont 16#; - PT _ (TS _ 17) -> cont 17#; - PT _ (TS _ 18) -> cont 18#; - PT _ (TS _ 19) -> cont 19#; - PT _ (TS _ 20) -> cont 20#; - PT _ (TS _ 21) -> cont 21#; - PT _ (TS _ 22) -> cont 22#; - PT _ (TS _ 23) -> cont 23#; - PT _ (TS _ 24) -> cont 24#; - PT _ (TS _ 25) -> cont 25#; - PT _ (TS _ 26) -> cont 26#; - PT _ (TS _ 27) -> cont 27#; - PT _ (TS _ 28) -> cont 28#; - PT _ (TS _ 29) -> cont 29#; - PT _ (TS _ 30) -> cont 30#; - PT _ (TS _ 31) -> cont 31#; - PT _ (TS _ 32) -> cont 32#; - PT _ (TS _ 33) -> cont 33#; - PT _ (TS _ 34) -> cont 34#; - PT _ (TS _ 35) -> cont 35#; - PT _ (TS _ 36) -> cont 36#; - PT _ (TS _ 37) -> cont 37#; - PT _ (TS _ 38) -> cont 38#; - PT _ (TS _ 39) -> cont 39#; - PT _ (TS _ 40) -> cont 40#; - PT _ (TS _ 41) -> cont 41#; - PT _ (TS _ 42) -> cont 42#; - PT _ (TS _ 43) -> cont 43#; - PT _ (TS _ 44) -> cont 44#; - PT _ (TS _ 45) -> cont 45#; - PT _ (TS _ 46) -> cont 46#; - PT _ (TS _ 47) -> cont 47#; - PT _ (TS _ 48) -> cont 48#; - PT _ (TS _ 49) -> cont 49#; - PT _ (TS _ 50) -> cont 50#; - PT _ (TS _ 51) -> cont 51#; - PT _ (TS _ 52) -> cont 52#; - PT _ (TS _ 53) -> cont 53#; - PT _ (TS _ 54) -> cont 54#; - PT _ (TS _ 55) -> cont 55#; - PT _ (TS _ 56) -> cont 56#; - PT _ (TS _ 57) -> cont 57#; - PT _ (TS _ 58) -> cont 58#; - PT _ (TS _ 59) -> cont 59#; - PT _ (TS _ 60) -> cont 60#; - PT _ (TS _ 61) -> cont 61#; - PT _ (TS _ 62) -> cont 62#; - PT _ (TS _ 63) -> cont 63#; - PT _ (TS _ 64) -> cont 64#; - PT _ (TS _ 65) -> cont 65#; - PT _ (TS _ 66) -> cont 66#; - PT _ (TS _ 67) -> cont 67#; - PT _ (TS _ 68) -> cont 68#; - PT _ (TS _ 69) -> cont 69#; - PT _ (TS _ 70) -> cont 70#; - PT _ (TS _ 71) -> cont 71#; - PT _ (TS _ 72) -> cont 72#; - PT _ (TS _ 73) -> cont 73#; - PT _ (TS _ 74) -> cont 74#; - PT _ (TS _ 75) -> cont 75#; - PT _ (TS _ 76) -> cont 76#; - PT _ (TI happy_dollar_dollar) -> cont 77#; - PT _ (TL happy_dollar_dollar) -> cont 78#; - PT _ (TD happy_dollar_dollar) -> cont 79#; - PT _ (T_LString happy_dollar_dollar) -> cont 80#; - PT _ (T_PIdent _) -> cont 81#; - _ -> cont 82#; - _ -> 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 - -pGrammar tks = happySomeParser where - happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut13 x)) - -pModDef tks = happySomeParser where - happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut15 x)) - -pOldGrammar tks = happySomeParser where - happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut90 x)) - -pModHeader tks = happySomeParser where - happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut21 x)) - -pExp tks = happySomeParser where - happySomeParser = happyThen (happyParse 4# tks) (\x -> happyReturn (happyOut64 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 ++ - case ts of - [] -> [] - [Err _] -> " due to lexer error" - _ -> " before " ++ unwords (map (BS.unpack . prToken) (take 4 ts)) - -myLexer = tokens -{-# LINE 1 "templates/GenericTemplate.hs" #-} -{-# LINE 1 "templates/GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "templates/GenericTemplate.hs" #-} --- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp - -{-# LINE 28 "templates/GenericTemplate.hs" #-} - - -data Happy_IntList = HappyCons Int# Happy_IntList - - - - - -{-# LINE 49 "templates/GenericTemplate.hs" #-} - -{-# LINE 59 "templates/GenericTemplate.hs" #-} - -{-# LINE 68 "templates/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 "templates/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 "templates/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 tk) (\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 - -happyMonad2Reduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonad2Reduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - - off = indexShortOffAddr happyGotoOffsets st1 - off_i = (off +# nt) - new_state = indexShortOffAddr happyTable off_i - - - - -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/GF/Source/ParGF.y b/src/GF/Source/ParGF.y deleted file mode 100644 index 3a52b0cb6..000000000 --- a/src/GF/Source/ParGF.y +++ /dev/null @@ -1,643 +0,0 @@ --- This Happy file was machine-generated by the BNF converter -{ -{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-} -module GF.Source.ParGF where -import GF.Source.AbsGF -import GF.Source.LexGF -import GF.Data.ErrM -import qualified Data.ByteString.Char8 as BS -} - -%name pGrammar Grammar -%name pModDef ModDef -%name pOldGrammar OldGrammar -%partial pModHeader ModHeader -%name pExp Exp - --- no lexer declaration -%monad { Err } { thenM } { returnM } -%tokentype { Token } - -%token - '!' { PT _ (TS _ 1) } - '#' { PT _ (TS _ 2) } - '$' { PT _ (TS _ 3) } - '%' { PT _ (TS _ 4) } - '(' { PT _ (TS _ 5) } - ')' { PT _ (TS _ 6) } - '*' { PT _ (TS _ 7) } - '**' { PT _ (TS _ 8) } - '+' { PT _ (TS _ 9) } - '++' { PT _ (TS _ 10) } - ',' { PT _ (TS _ 11) } - '-' { PT _ (TS _ 12) } - '->' { PT _ (TS _ 13) } - '.' { PT _ (TS _ 14) } - '/' { PT _ (TS _ 15) } - ':' { PT _ (TS _ 16) } - ';' { PT _ (TS _ 17) } - '<' { PT _ (TS _ 18) } - '=' { PT _ (TS _ 19) } - '=>' { PT _ (TS _ 20) } - '>' { PT _ (TS _ 21) } - '?' { PT _ (TS _ 22) } - '@' { PT _ (TS _ 23) } - 'Lin' { PT _ (TS _ 24) } - 'PType' { PT _ (TS _ 25) } - 'Str' { PT _ (TS _ 26) } - 'Strs' { PT _ (TS _ 27) } - 'Tok' { PT _ (TS _ 28) } - 'Type' { PT _ (TS _ 29) } - '[' { PT _ (TS _ 30) } - '\\' { PT _ (TS _ 31) } - ']' { PT _ (TS _ 32) } - '_' { PT _ (TS _ 33) } - 'abstract' { PT _ (TS _ 34) } - 'case' { PT _ (TS _ 35) } - 'cat' { PT _ (TS _ 36) } - 'concrete' { PT _ (TS _ 37) } - 'data' { PT _ (TS _ 38) } - 'def' { PT _ (TS _ 39) } - 'flags' { PT _ (TS _ 40) } - 'fn' { PT _ (TS _ 41) } - 'fun' { PT _ (TS _ 42) } - 'grammar' { PT _ (TS _ 43) } - 'in' { PT _ (TS _ 44) } - 'include' { PT _ (TS _ 45) } - 'incomplete' { PT _ (TS _ 46) } - 'instance' { PT _ (TS _ 47) } - 'interface' { PT _ (TS _ 48) } - 'let' { PT _ (TS _ 49) } - 'lin' { PT _ (TS _ 50) } - 'lincat' { PT _ (TS _ 51) } - 'lindef' { PT _ (TS _ 52) } - 'lintype' { PT _ (TS _ 53) } - 'of' { PT _ (TS _ 54) } - 'open' { PT _ (TS _ 55) } - 'oper' { PT _ (TS _ 56) } - 'out' { PT _ (TS _ 57) } - 'package' { PT _ (TS _ 58) } - 'param' { PT _ (TS _ 59) } - 'pattern' { PT _ (TS _ 60) } - 'pre' { PT _ (TS _ 61) } - 'printname' { PT _ (TS _ 62) } - 'resource' { PT _ (TS _ 63) } - 'reuse' { PT _ (TS _ 64) } - 'strs' { PT _ (TS _ 65) } - 'table' { PT _ (TS _ 66) } - 'tokenizer' { PT _ (TS _ 67) } - 'transfer' { PT _ (TS _ 68) } - 'union' { PT _ (TS _ 69) } - 'var' { PT _ (TS _ 70) } - 'variants' { PT _ (TS _ 71) } - 'where' { PT _ (TS _ 72) } - 'with' { PT _ (TS _ 73) } - '{' { PT _ (TS _ 74) } - '|' { PT _ (TS _ 75) } - '}' { PT _ (TS _ 76) } - -L_integ { PT _ (TI $$) } -L_quoted { PT _ (TL $$) } -L_doubl { PT _ (TD $$) } -L_LString { PT _ (T_LString $$) } -L_PIdent { PT _ (T_PIdent _) } -L_err { _ } - - -%% - -Integer :: { Integer } : L_integ { (read (BS.unpack $1)) :: Integer } -String :: { String } : L_quoted { BS.unpack $1 } -Double :: { Double } : L_doubl { (read (BS.unpack $1)) :: Double } -LString :: { LString} : L_LString { LString ($1)} -PIdent :: { PIdent} : L_PIdent { PIdent (mkPosToken $1)} - -Grammar :: { Grammar } -Grammar : ListModDef { Gr (reverse $1) } - - -ListModDef :: { [ModDef] } -ListModDef : {- empty -} { [] } - | ListModDef ModDef { flip (:) $1 $2 } - - -ModDef :: { ModDef } -ModDef : ModDef ';' { $1 } - | 'grammar' PIdent '=' '{' 'abstract' '=' PIdent ';' ListConcSpec '}' { MMain $2 $7 $9 } - | ComplMod ModType '=' ModBody { MModule $1 $2 $4 } - - -ConcSpec :: { ConcSpec } -ConcSpec : PIdent '=' ConcExp { ConcSpec $1 $3 } - - -ListConcSpec :: { [ConcSpec] } -ListConcSpec : {- empty -} { [] } - | ConcSpec { (:[]) $1 } - | ConcSpec ';' ListConcSpec { (:) $1 $3 } - - -ConcExp :: { ConcExp } -ConcExp : PIdent ListTransfer { ConcExp $1 (reverse $2) } - - -ListTransfer :: { [Transfer] } -ListTransfer : {- empty -} { [] } - | ListTransfer Transfer { flip (:) $1 $2 } - - -Transfer :: { Transfer } -Transfer : '(' 'transfer' 'in' Open ')' { TransferIn $4 } - | '(' 'transfer' 'out' Open ')' { TransferOut $4 } - - -ModHeader :: { ModHeader } -ModHeader : ComplMod ModType '=' ModHeaderBody { MModule2 $1 $2 $4 } - - -ModHeaderBody :: { ModHeaderBody } -ModHeaderBody : Extend Opens { MBody2 $1 $2 } - | ListIncluded { MNoBody2 $1 } - | Included 'with' ListOpen { MWith2 $1 $3 } - | Included 'with' ListOpen '**' Opens { MWithBody2 $1 $3 $5 } - | ListIncluded '**' Included 'with' ListOpen { MWithE2 $1 $3 $5 } - | ListIncluded '**' Included 'with' ListOpen '**' Opens { MWithEBody2 $1 $3 $5 $7 } - | 'reuse' PIdent { MReuse2 $2 } - | 'union' ListIncluded { MUnion2 $2 } - - -ModType :: { ModType } -ModType : 'abstract' PIdent { MTAbstract $2 } - | 'resource' PIdent { MTResource $2 } - | 'interface' PIdent { MTInterface $2 } - | 'concrete' PIdent 'of' PIdent { MTConcrete $2 $4 } - | 'instance' PIdent 'of' PIdent { MTInstance $2 $4 } - | 'transfer' PIdent ':' Open '->' Open { MTTransfer $2 $4 $6 } - - -ModBody :: { ModBody } -ModBody : Extend Opens '{' ListTopDef '}' { MBody $1 $2 (reverse $4) } - | ListIncluded { MNoBody $1 } - | Included 'with' ListOpen { MWith $1 $3 } - | Included 'with' ListOpen '**' Opens '{' ListTopDef '}' { MWithBody $1 $3 $5 (reverse $7) } - | ListIncluded '**' Included 'with' ListOpen { MWithE $1 $3 $5 } - | ListIncluded '**' Included 'with' ListOpen '**' Opens '{' ListTopDef '}' { MWithEBody $1 $3 $5 $7 (reverse $9) } - | 'reuse' PIdent { MReuse $2 } - | 'union' ListIncluded { MUnion $2 } - - -ListTopDef :: { [TopDef] } -ListTopDef : {- empty -} { [] } - | ListTopDef TopDef { flip (:) $1 $2 } - - -Extend :: { Extend } -Extend : ListIncluded '**' { Ext $1 } - | {- empty -} { NoExt } - - -ListOpen :: { [Open] } -ListOpen : {- empty -} { [] } - | Open { (:[]) $1 } - | Open ',' ListOpen { (:) $1 $3 } - - -Opens :: { Opens } -Opens : {- empty -} { NoOpens } - | 'open' ListOpen 'in' { OpenIn $2 } - - -Open :: { Open } -Open : PIdent { OName $1 } - | '(' QualOpen PIdent ')' { OQualQO $2 $3 } - | '(' QualOpen PIdent '=' PIdent ')' { OQual $2 $3 $5 } - - -ComplMod :: { ComplMod } -ComplMod : {- empty -} { CMCompl } - | 'incomplete' { CMIncompl } - - -QualOpen :: { QualOpen } -QualOpen : {- empty -} { QOCompl } - | 'incomplete' { QOIncompl } - | 'interface' { QOInterface } - - -ListIncluded :: { [Included] } -ListIncluded : {- empty -} { [] } - | Included { (:[]) $1 } - | Included ',' ListIncluded { (:) $1 $3 } - - -Included :: { Included } -Included : PIdent { IAll $1 } - | PIdent '[' ListPIdent ']' { ISome $1 $3 } - | PIdent '-' '[' ListPIdent ']' { IMinus $1 $4 } - - -Def :: { Def } -Def : ListName ':' Exp { DDecl $1 $3 } - | ListName '=' Exp { DDef $1 $3 } - | Name ListPatt '=' Exp { DPatt $1 $2 $4 } - | ListName ':' Exp '=' Exp { DFull $1 $3 $5 } - - -TopDef :: { TopDef } -TopDef : 'cat' ListCatDef { DefCat $2 } - | 'fun' ListFunDef { DefFun $2 } - | 'data' ListFunDef { DefFunData $2 } - | 'def' ListDef { DefDef $2 } - | 'data' ListDataDef { DefData $2 } - | 'transfer' ListDef { DefTrans $2 } - | 'param' ListParDef { DefPar $2 } - | 'oper' ListDef { DefOper $2 } - | 'lincat' ListPrintDef { DefLincat $2 } - | 'lindef' ListDef { DefLindef $2 } - | 'lin' ListDef { DefLin $2 } - | 'printname' 'cat' ListPrintDef { DefPrintCat $3 } - | 'printname' 'fun' ListPrintDef { DefPrintFun $3 } - | 'flags' ListFlagDef { DefFlag $2 } - | 'printname' ListPrintDef { DefPrintOld $2 } - | 'lintype' ListDef { DefLintype $2 } - | 'pattern' ListDef { DefPattern $2 } - | 'package' PIdent '=' '{' ListTopDef '}' ';' { DefPackage $2 (reverse $5) } - | 'var' ListDef { DefVars $2 } - | 'tokenizer' PIdent ';' { DefTokenizer $2 } - - -CatDef :: { CatDef } -CatDef : PIdent ListDDecl { SimpleCatDef $1 (reverse $2) } - | '[' PIdent ListDDecl ']' { ListCatDef $2 (reverse $3) } - | '[' PIdent ListDDecl ']' '{' Integer '}' { ListSizeCatDef $2 (reverse $3) $6 } - - -FunDef :: { FunDef } -FunDef : ListPIdent ':' Exp { FunDef $1 $3 } - - -DataDef :: { DataDef } -DataDef : PIdent '=' ListDataConstr { DataDef $1 $3 } - - -DataConstr :: { DataConstr } -DataConstr : PIdent { DataId $1 } - | PIdent '.' PIdent { DataQId $1 $3 } - - -ListDataConstr :: { [DataConstr] } -ListDataConstr : {- empty -} { [] } - | DataConstr { (:[]) $1 } - | DataConstr '|' ListDataConstr { (:) $1 $3 } - - -ParDef :: { ParDef } -ParDef : PIdent '=' ListParConstr { ParDefDir $1 $3 } - | PIdent '=' '(' 'in' PIdent ')' { ParDefIndir $1 $5 } - | PIdent { ParDefAbs $1 } - - -ParConstr :: { ParConstr } -ParConstr : PIdent ListDDecl { ParConstr $1 (reverse $2) } - - -PrintDef :: { PrintDef } -PrintDef : ListName '=' Exp { PrintDef $1 $3 } - - -FlagDef :: { FlagDef } -FlagDef : PIdent '=' PIdent { FlagDef $1 $3 } - - -ListDef :: { [Def] } -ListDef : Def ';' { (:[]) $1 } - | Def ';' ListDef { (:) $1 $3 } - - -ListCatDef :: { [CatDef] } -ListCatDef : CatDef ';' { (:[]) $1 } - | CatDef ';' ListCatDef { (:) $1 $3 } - - -ListFunDef :: { [FunDef] } -ListFunDef : FunDef ';' { (:[]) $1 } - | FunDef ';' ListFunDef { (:) $1 $3 } - - -ListDataDef :: { [DataDef] } -ListDataDef : DataDef ';' { (:[]) $1 } - | DataDef ';' ListDataDef { (:) $1 $3 } - - -ListParDef :: { [ParDef] } -ListParDef : ParDef ';' { (:[]) $1 } - | ParDef ';' ListParDef { (:) $1 $3 } - - -ListPrintDef :: { [PrintDef] } -ListPrintDef : PrintDef ';' { (:[]) $1 } - | PrintDef ';' ListPrintDef { (:) $1 $3 } - - -ListFlagDef :: { [FlagDef] } -ListFlagDef : FlagDef ';' { (:[]) $1 } - | FlagDef ';' ListFlagDef { (:) $1 $3 } - - -ListParConstr :: { [ParConstr] } -ListParConstr : {- empty -} { [] } - | ParConstr { (:[]) $1 } - | ParConstr '|' ListParConstr { (:) $1 $3 } - - -ListPIdent :: { [PIdent] } -ListPIdent : PIdent { (:[]) $1 } - | PIdent ',' ListPIdent { (:) $1 $3 } - - -Name :: { Name } -Name : PIdent { IdentName $1 } - | '[' PIdent ']' { ListName $2 } - - -ListName :: { [Name] } -ListName : Name { (:[]) $1 } - | Name ',' ListName { (:) $1 $3 } - - -LocDef :: { LocDef } -LocDef : ListPIdent ':' Exp { LDDecl $1 $3 } - | ListPIdent '=' Exp { LDDef $1 $3 } - | ListPIdent ':' Exp '=' Exp { LDFull $1 $3 $5 } - - -ListLocDef :: { [LocDef] } -ListLocDef : {- empty -} { [] } - | LocDef { (:[]) $1 } - | LocDef ';' ListLocDef { (:) $1 $3 } - - -Exp6 :: { Exp } -Exp6 : PIdent { EIdent $1 } - | '{' PIdent '}' { EConstr $2 } - | '%' PIdent '%' { ECons $2 } - | Sort { ESort $1 } - | String { EString $1 } - | Integer { EInt $1 } - | Double { EFloat $1 } - | '?' { EMeta } - | '[' ']' { EEmpty } - | 'data' { EData } - | '[' PIdent Exps ']' { EList $2 $3 } - | '[' String ']' { EStrings $2 } - | '{' ListLocDef '}' { ERecord $2 } - | '<' ListTupleComp '>' { ETuple $2 } - | '(' 'in' PIdent ')' { EIndir $3 } - | '<' Exp ':' Exp '>' { ETyped $2 $4 } - | '(' Exp ')' { $2 } - | LString { ELString $1 } - - -Exp5 :: { Exp } -Exp5 : Exp5 '.' Label { EProj $1 $3 } - | '{' PIdent '.' PIdent '}' { EQConstr $2 $4 } - | '%' PIdent '.' PIdent { EQCons $2 $4 } - | Exp6 { $1 } - - -Exp4 :: { Exp } -Exp4 : Exp4 Exp5 { EApp $1 $2 } - | 'table' '{' ListCase '}' { ETable $3 } - | 'table' Exp6 '{' ListCase '}' { ETTable $2 $4 } - | 'table' Exp6 '[' ListExp ']' { EVTable $2 $4 } - | 'case' Exp 'of' '{' ListCase '}' { ECase $2 $5 } - | 'variants' '{' ListExp '}' { EVariants $3 } - | 'pre' '{' Exp ';' ListAltern '}' { EPre $3 $5 } - | 'strs' '{' ListExp '}' { EStrs $3 } - | PIdent '@' Exp6 { EConAt $1 $3 } - | '#' Patt2 { EPatt $2 } - | 'pattern' Exp5 { EPattType $2 } - | Exp5 { $1 } - | 'Lin' PIdent { ELin $2 } - - -Exp3 :: { Exp } -Exp3 : Exp3 '!' Exp4 { ESelect $1 $3 } - | Exp3 '*' Exp4 { ETupTyp $1 $3 } - | Exp3 '**' Exp4 { EExtend $1 $3 } - | Exp4 { $1 } - - -Exp2 :: { Exp } -Exp2 : Exp3 '+' Exp2 { EGlue $1 $3 } - | Exp3 { $1 } - - -Exp1 :: { Exp } -Exp1 : Exp2 '++' Exp1 { EConcat $1 $3 } - | Exp2 { $1 } - - -Exp :: { Exp } -Exp : Exp1 '|' Exp { EVariant $1 $3 } - | '\\' ListBind '->' Exp { EAbstr $2 $4 } - | '\\' '\\' ListBind '=>' Exp { ECTable $3 $5 } - | Decl '->' Exp { EProd $1 $3 } - | Exp3 '=>' Exp { ETType $1 $3 } - | 'let' '{' ListLocDef '}' 'in' Exp { ELet $3 $6 } - | 'let' ListLocDef 'in' Exp { ELetb $2 $4 } - | Exp3 'where' '{' ListLocDef '}' { EWhere $1 $4 } - | 'fn' '{' ListEquation '}' { EEqs $3 } - | 'in' Exp5 String { EExample $2 $3 } - | Exp1 { $1 } - - -ListExp :: { [Exp] } -ListExp : {- empty -} { [] } - | Exp { (:[]) $1 } - | Exp ';' ListExp { (:) $1 $3 } - - -Exps :: { Exps } -Exps : {- empty -} { NilExp } - | Exp6 Exps { ConsExp $1 $2 } - - -Patt2 :: { Patt } -Patt2 : '?' { PChar } - | '[' String ']' { PChars $2 } - | '#' PIdent { PMacro $2 } - | '#' PIdent '.' PIdent { PM $2 $4 } - | '_' { PW } - | PIdent { PV $1 } - | '{' PIdent '}' { PCon $2 } - | PIdent '.' PIdent { PQ $1 $3 } - | Integer { PInt $1 } - | Double { PFloat $1 } - | String { PStr $1 } - | '{' ListPattAss '}' { PR $2 } - | '<' ListPattTupleComp '>' { PTup $2 } - | '(' Patt ')' { $2 } - - -Patt1 :: { Patt } -Patt1 : PIdent ListPatt { PC $1 $2 } - | PIdent '.' PIdent ListPatt { PQC $1 $3 $4 } - | Patt2 '*' { PRep $1 } - | PIdent '@' Patt2 { PAs $1 $3 } - | '-' Patt2 { PNeg $2 } - | Patt2 { $1 } - - -Patt :: { Patt } -Patt : Patt '|' Patt1 { PDisj $1 $3 } - | Patt '+' Patt1 { PSeq $1 $3 } - | Patt1 { $1 } - - -PattAss :: { PattAss } -PattAss : ListPIdent '=' Patt { PA $1 $3 } - - -Label :: { Label } -Label : PIdent { LIdent $1 } - | '$' Integer { LVar $2 } - - -Sort :: { Sort } -Sort : 'Type' { Sort_Type } - | 'PType' { Sort_PType } - | 'Tok' { Sort_Tok } - | 'Str' { Sort_Str } - | 'Strs' { Sort_Strs } - - -ListPattAss :: { [PattAss] } -ListPattAss : {- empty -} { [] } - | PattAss { (:[]) $1 } - | PattAss ';' ListPattAss { (:) $1 $3 } - - -ListPatt :: { [Patt] } -ListPatt : Patt2 { (:[]) $1 } - | Patt2 ListPatt { (:) $1 $2 } - - -Bind :: { Bind } -Bind : PIdent { BIdent $1 } - | '_' { BWild } - - -ListBind :: { [Bind] } -ListBind : {- empty -} { [] } - | Bind { (:[]) $1 } - | Bind ',' ListBind { (:) $1 $3 } - - -Decl :: { Decl } -Decl : '(' ListBind ':' Exp ')' { DDec $2 $4 } - | Exp4 { DExp $1 } - - -TupleComp :: { TupleComp } -TupleComp : Exp { TComp $1 } - - -PattTupleComp :: { PattTupleComp } -PattTupleComp : Patt { PTComp $1 } - - -ListTupleComp :: { [TupleComp] } -ListTupleComp : {- empty -} { [] } - | TupleComp { (:[]) $1 } - | TupleComp ',' ListTupleComp { (:) $1 $3 } - - -ListPattTupleComp :: { [PattTupleComp] } -ListPattTupleComp : {- empty -} { [] } - | PattTupleComp { (:[]) $1 } - | PattTupleComp ',' ListPattTupleComp { (:) $1 $3 } - - -Case :: { Case } -Case : Patt '=>' Exp { Case $1 $3 } - - -ListCase :: { [Case] } -ListCase : Case { (:[]) $1 } - | Case ';' ListCase { (:) $1 $3 } - - -Equation :: { Equation } -Equation : ListPatt '->' Exp { Equ $1 $3 } - - -ListEquation :: { [Equation] } -ListEquation : {- empty -} { [] } - | Equation { (:[]) $1 } - | Equation ';' ListEquation { (:) $1 $3 } - - -Altern :: { Altern } -Altern : Exp '/' Exp { Alt $1 $3 } - - -ListAltern :: { [Altern] } -ListAltern : {- empty -} { [] } - | Altern { (:[]) $1 } - | Altern ';' ListAltern { (:) $1 $3 } - - -DDecl :: { DDecl } -DDecl : '(' ListBind ':' Exp ')' { DDDec $2 $4 } - | Exp6 { DDExp $1 } - - -ListDDecl :: { [DDecl] } -ListDDecl : {- empty -} { [] } - | ListDDecl DDecl { flip (:) $1 $2 } - - -OldGrammar :: { OldGrammar } -OldGrammar : Include ListTopDef { OldGr $1 (reverse $2) } - - -Include :: { Include } -Include : {- empty -} { NoIncl } - | 'include' ListFileName { Incl $2 } - - -FileName :: { FileName } -FileName : String { FString $1 } - | PIdent { FIdent $1 } - | '/' FileName { FSlash $2 } - | '.' FileName { FDot $2 } - | '-' FileName { FMinus $2 } - | PIdent FileName { FAddId $1 $2 } - - -ListFileName :: { [FileName] } -ListFileName : FileName ';' { (:[]) $1 } - | FileName ';' ListFileName { (:) $1 $3 } - - - -{ - -returnM :: a -> Err a -returnM = return - -thenM :: Err a -> (a -> Err b) -> Err b -thenM = (>>=) - -happyError :: [Token] -> Err a -happyError ts = - Bad $ "syntax error at " ++ tokenPos ts ++ - case ts of - [] -> [] - [Err _] -> " due to lexer error" - _ -> " before " ++ unwords (map (BS.unpack . prToken) (take 4 ts)) - -myLexer = tokens -} - diff --git a/src/GFI.hs b/src/GFI.hs index 486b807d0..cdf8ddf52 100644 --- a/src/GFI.hs +++ b/src/GFI.hs @@ -7,7 +7,9 @@ import GF.Command.Commands import GF.Command.Abstract import GF.Command.Parse import GF.Data.ErrM -import GF.Grammar.API -- for cc command +import GF.Grammar.API +import GF.Grammar.Lexer +import GF.Grammar.Parser import GF.Infra.Dependencies import GF.Infra.UseIO import GF.Infra.Option @@ -24,6 +26,7 @@ import Data.Char import Data.Maybe import Data.List(isPrefixOf) import qualified Data.Map as Map +import qualified Data.ByteString.Char8 as BS import qualified Text.ParserCombinators.ReadP as RP import System.Cmd import System.CPUTime @@ -104,9 +107,11 @@ loop opts gfenv0 = do pOpts style q ws = (style,q,unwords ws) (style,q,s) = pOpts TermPrintDefault Qualified ws - case pTerm s >>= checkTerm sgr >>= computeTerm sgr of - Ok x -> putStrLn $ enc (showTerm style q x) - Bad s -> putStrLn $ enc s + case runP pExp (BS.pack s) of + Left (_,msg) -> putStrLn msg + Right t -> case checkTerm sgr t >>= computeTerm sgr of + Ok x -> putStrLn $ enc (showTerm style q x) + Bad s -> putStrLn $ enc s loopNewCPU gfenv "dg":ws -> do writeFile "_gfdepgraph.dot" (depGraph sgr)