added fields for global options and showable lincats to gfcc

This commit is contained in:
aarne
2007-11-07 16:30:56 +00:00
parent 0be4e801f4
commit 947949648f
8 changed files with 78 additions and 54 deletions

View File

@@ -44,12 +44,14 @@ mkCanon2gfcc opts cnc gr =
canon2gfcc :: Options -> SourceGrammar -> D.GFCC
canon2gfcc opts cgr@(M.MGrammar ((a,M.ModMod abm):cms)) =
(if (oElem (iOpt "show_canon") opts) then trace (prGrammar cgr) else id) $
D.GFCC an cns abs cncs
D.GFCC an cns gflags abs cncs
where
-- abstract
an = (i2i a)
cns = map (i2i . fst) cms
abs = D.Abstr aflags funs cats catfuns
gflags = Map.fromList [(C.CId fg,x) | Just x <- [getOptVal opts (aOpt fg)]]
where fg = "firstlang"
aflags = Map.fromList [(C.CId f,x) | Opt (f,[x]) <- M.flags abm]
mkDef pty = case pty of
Yes t -> mkExp t
@@ -66,7 +68,8 @@ canon2gfcc opts cgr@(M.MGrammar ((a,M.ModMod abm):cms)) =
[(cat,[f | (f, (C.DTyp _ c _,_)) <- lfuns, c==cat]) | (cat,_) <- lcats]
cncs = Map.fromList [mkConcr (i2i lang) mo | (lang,M.ModMod mo) <- cms]
mkConcr lang mo = (lang,D.Concr flags lins opers lincats lindefs printnames)
mkConcr lang mo =
(lang,D.Concr flags lins opers lincats lindefs printnames params)
where
js = tree2list (M.jments mo)
flags = Map.fromList [(C.CId f,x) | Opt (f,[x]) <- M.flags mo]
@@ -82,6 +85,7 @@ canon2gfcc opts cgr@(M.MGrammar ((a,M.ModMod abm):cms)) =
printnames = Map.union
(Map.fromAscList [(i2i f, mkTerm tr) | (f,CncFun _ _ (Yes tr)) <- js])
(Map.fromAscList [(i2i f, mkTerm tr) | (f,CncCat _ _ (Yes tr)) <- js])
params = lincats -----
i2i :: Ident -> C.CId
i2i = C.CId . prIdent

View File

@@ -4,7 +4,7 @@ module GF.GFCC.AbsGFCC where
newtype CId = CId String deriving (Eq,Ord,Show)
data Grammar =
Grm CId [CId] Abstract [Concrete]
Grm CId [CId] [Flag] Abstract [Concrete]
deriving (Eq,Ord,Show)
data Abstract =
@@ -12,7 +12,7 @@ data Abstract =
deriving (Eq,Ord,Show)
data Concrete =
Cnc CId [Flag] [LinDef] [LinDef] [LinDef] [LinDef] [LinDef]
Cnc CId [Flag] [LinDef] [LinDef] [LinDef] [LinDef] [LinDef] [LinDef]
deriving (Eq,Ord,Show)
data Flag =

View File

@@ -13,6 +13,7 @@ import Data.List
data GFCC = GFCC {
absname :: CId ,
cncnames :: [CId] ,
gflags :: Map CId String, -- value of a global flag
abstract :: Abstr ,
concretes :: Map CId Concr
}
@@ -25,12 +26,13 @@ data Abstr = Abstr {
}
data Concr = Concr {
flags :: Map CId String, -- value of a flag
lins :: Map CId Term, -- lin of a fun
opers :: Map CId Term, -- oper generated by subex elim
lincats :: Map CId Term, -- lin type of a cat
lindefs :: Map CId Term, -- lin default of a cat
printnames :: Map CId Term -- printname of a cat or a fun
cflags :: Map CId String, -- value of a flag
lins :: Map CId Term, -- lin of a fun
opers :: Map CId Term, -- oper generated by subex elim
lincats :: Map CId Term, -- lin type of a cat
lindefs :: Map CId Term, -- lin default of a cat
printnames :: Map CId Term, -- printname of a cat or a fun
paramlincats :: Map CId Term -- lin type of cat, with printable param names
}
statGFCC :: GFCC -> String
@@ -44,9 +46,10 @@ statGFCC gfcc = unlines [
-- convert parsed grammar to internal GFCC
mkGFCC :: Grammar -> GFCC
mkGFCC (Grm a cs ab@(Abs afls fs cts) ccs) = GFCC {
mkGFCC (Grm a cs gfs ab@(Abs afls fs cts) ccs) = GFCC {
absname = a,
cncnames = cs,
gflags = fromAscList [(f,v) | Flg f v <- gfs],
abstract =
let
aflags = fromAscList [(f,v) | Flg f v <- afls]
@@ -60,15 +63,17 @@ mkGFCC (Grm a cs ab@(Abs afls fs cts) ccs) = GFCC {
concretes = fromAscList (lmap mkCnc ccs)
}
where
mkCnc (Cnc lang fls ls ops lincs linds prns) =
(lang, Concr flags lins opers lincats lindefs printnames) where
flags = fromAscList [(f,v) | Flg f v <- fls]
lins = fromAscList [(f,v) | Lin f v <- ls]
opers = fromAscList [(f,v) | Lin f v <- ops]
lincats = fromAscList [(f,v) | Lin f v <- lincs]
lindefs = fromAscList [(f,v) | Lin f v <- linds]
printnames = fromAscList [(f,v) | Lin f v <- prns]
mkCnc (Cnc lang fls ls ops lincs linds prns params) = (lang,
Concr {
cflags = fromAscList [(f,v) | Flg f v <- fls],
lins = fromAscList [(f,v) | Lin f v <- ls],
opers = fromAscList [(f,v) | Lin f v <- ops],
lincats = fromAscList [(f,v) | Lin f v <- lincs],
lindefs = fromAscList [(f,v) | Lin f v <- linds],
printnames = fromAscList [(f,v) | Lin f v <- prns],
paramlincats = fromAscList [(f,v) | Lin f v <- params]
}
)
-- convert internal GFCC and pretty-print it
@@ -76,6 +81,7 @@ printGFCC :: GFCC -> String
printGFCC gfcc0 = compactPrintGFCC $ printTree $ Grm
(absname gfcc)
(cncnames gfcc)
[Flg f v | (f,v) <- assocs (gflags gfcc)]
(Abs
[Flg f v | (f,v) <- assocs (aflags (abstract gfcc))]
[Fun f ty df | (f,(ty,df)) <- assocs (funs (abstract gfcc))]
@@ -84,12 +90,13 @@ printGFCC gfcc0 = compactPrintGFCC $ printTree $ Grm
[fromCnc lang cnc | (lang,cnc) <- assocs (concretes gfcc)]
where
fromCnc lang cnc = Cnc lang
[Flg f v | (f,v) <- assocs (flags cnc)]
[Flg f v | (f,v) <- assocs (cflags cnc)]
[Lin f v | (f,v) <- assocs (lins cnc)]
[Lin f v | (f,v) <- assocs (opers cnc)]
[Lin f v | (f,v) <- assocs (lincats cnc)]
[Lin f v | (f,v) <- assocs (lindefs cnc)]
[Lin f v | (f,v) <- assocs (printnames cnc)]
[Lin f v | (f,v) <- assocs (paramlincats cnc)]
gfcc = utf8GFCC gfcc0
@@ -108,6 +115,7 @@ emptyGFCC :: GFCC
emptyGFCC = GFCC {
absname = CId "",
cncnames = [] ,
gflags = empty,
abstract = error "empty grammar, no abstract",
concretes = empty
}

View File

@@ -1,5 +1,5 @@
Grm. Grammar ::=
"grammar" CId "(" [CId] ")" ";"
"grammar" CId "(" [CId] ")" "(" [Flag] ")" ";"
Abstract ";"
[Concrete] ;
@@ -18,6 +18,7 @@ Cnc. Concrete ::=
"lincat" [LinDef]
"lindef" [LinDef]
"printname" [LinDef]
"param" [LinDef] -- lincats with param value names
"}" ;
Flg. Flag ::= CId "=" String ;

View File

@@ -86,7 +86,7 @@ eitherResIdent tv s = treeFind resWords
| s > a = treeFind right
| s == a = t
resWords = b "lin" (b "flags" (b "cat" (b "abstract" N N) (b "concrete" N N)) (b "grammar" (b "fun" N N) N)) (b "oper" (b "lindef" (b "lincat" N N) N) (b "printname" (b "pre" N N) N))
resWords = b "lin" (b "flags" (b "cat" (b "abstract" N N) (b "concrete" N N)) (b "grammar" (b "fun" N N) N)) (b "param" (b "lindef" (b "lincat" N N) (b "oper" N N)) (b "printname" (b "pre" N N) N))
where b s = B s (TS s)
unescapeInitTail :: String -> String

View File

@@ -24,13 +24,17 @@ lookType :: GFCC -> CId -> Type
lookType gfcc f =
fst $ lookMap (error $ "lookType " ++ show f) f (funs (abstract gfcc))
lookGlobalFlag :: GFCC -> CId -> String
lookGlobalFlag gfcc f =
lookMap "?" f (gflags gfcc)
lookAbsFlag :: GFCC -> CId -> String
lookAbsFlag gfcc f =
lookMap (error $ "lookAbsFlag " ++ show f) f (aflags (abstract gfcc))
lookMap "?" f (aflags (abstract gfcc))
lookFlag :: GFCC -> CId -> CId -> String
lookFlag gfcc lang fun =
lookMap "?" fun $ flags $ lookMap (error "no lang") lang $ concretes gfcc
lookCncFlag :: GFCC -> CId -> CId -> String
lookCncFlag gfcc lang f =
lookMap "?" f $ cflags $ lookMap (error "no lang") lang $ concretes gfcc
functionsToCat :: GFCC -> CId -> [(CId,Type)]
functionsToCat gfcc cat =

View File

@@ -208,19 +208,19 @@ happyOutTok x = unsafeCoerce# x
{-# INLINE happyOutTok #-}
happyActOffsets :: HappyAddr
happyActOffsets = HappyA# "\x37\x01\x39\x01\x35\x01\x33\x01\x33\x01\x33\x01\x33\x01\x41\x01\xc4\x00\x1f\x00\x05\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x01\x05\x00\x00\x00\x00\x00\x30\x01\x2f\x01\x00\x00\x2f\x01\x00\x00\x2e\x01\x00\x00\x2c\x01\x2d\x01\x2b\x01\x2a\x01\x00\x00\x83\x00\x2a\x01\x2a\x01\x29\x01\x2d\x00\x27\x01\x99\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x28\x01\x00\x00\x25\x01\x05\x00\x01\x00\x00\x00\x24\x01\x05\x00\x00\x00\x23\x01\x22\x01\x50\x00\x50\x00\x50\x00\x50\x00\x4f\x00\x22\x01\x22\x01\x26\x01\x21\x01\x00\x00\x00\x00\x00\x00\x00\x00\x21\x01\x20\x01\x1f\x01\x00\x00\x1e\x01\x00\x00\x1d\x01\x1b\x01\x1c\x01\x1a\x01\x19\x01\x18\x01\x17\x01\x16\x01\x14\x01\x15\x01\x13\x01\x13\x01\x10\x01\x0f\x01\x11\x01\x0d\x01\x0c\x01\x12\x01\x0b\x01\x0e\x01\x09\x01\x02\x01\x0a\x01\x05\x00\x07\x01\xf7\x00\xff\x00\x00\x00\x00\x00\x00\x00\x08\x01\x06\x01\x05\x01\x04\x01\x03\x01\xf3\x00\x00\x01\x00\x00\xfd\x00\xed\x00\x4a\x00\x01\x01\x05\x00\x00\x00\x00\x00\x00\x00\x25\x00\xc4\x00\xf1\x00\xfb\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x05\x00\x05\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\xfc\x00\xea\x00\x00\x00\xfa\x00\xf5\x00\x00\x00\xe8\x00\x00\x00\xe7\x00\xf9\x00\x1b\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x1f\x00\x25\x00\xf8\x00\xf6\x00\xf4\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\xc4\x00\x00\x00\x8b\x00\x00\x00\xf2\x00\xe5\x00\x09\x00\x00\x00\xb8\x00\xeb\x00\x00\x00\x00\x00\x93\x00\x00\x00\xee\x00\x00\x00\x0f\x00\x00\x00\x44\x00\x00\x00\xd2\x00\x00\x00\x72\x00\x00\x00\xa6\x00\x00\x00\x04\x00\x00\x00\x00\x00"#
happyActOffsets = HappyA# "\x40\x01\x41\x01\x3d\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x4a\x01\xc9\x00\xf7\xff\x05\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x01\x05\x00\x00\x00\x00\x00\x37\x01\x36\x01\x00\x00\x36\x01\x00\x00\x33\x01\x00\x00\x32\x01\x3a\x01\x35\x01\x31\x01\x00\x00\x79\x00\x31\x01\x31\x01\x30\x01\x47\x00\x2c\x01\x95\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x2a\x01\x05\x00\x01\x00\x00\x00\x2b\x01\x05\x00\x00\x00\x2e\x01\x29\x01\xa8\x00\xa8\x00\xa8\x00\xa8\x00\x06\x00\x29\x01\x29\x01\x2d\x01\x28\x01\x00\x00\x00\x00\x00\x00\x00\x00\x28\x01\x27\x01\x26\x01\x00\x00\x25\x01\x00\x00\x24\x01\x22\x01\x21\x01\x23\x01\x20\x01\x1f\x01\x1e\x01\x1d\x01\x18\x01\x1c\x01\x17\x01\x17\x01\x1b\x01\x16\x01\x1a\x01\x15\x01\x13\x01\x19\x01\x10\x01\x14\x01\x0d\x01\x09\x01\x12\x01\x05\x00\x0f\x01\x06\x01\x11\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x0c\x01\x0b\x01\x0a\x01\x08\x01\xf8\x00\x07\x01\x00\x00\x04\x01\xfa\x00\x9e\x00\x05\x01\x05\x00\x00\x00\x00\x00\x00\x00\x3f\x00\xc9\x00\xf7\x00\x03\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x05\x00\x05\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x01\xf0\x00\x00\x00\xfe\x00\x00\x01\x00\x00\xef\x00\x00\x00\xec\x00\xff\x00\x7c\x00\x00\x00\x00\x00\xc9\x00\x00\x00\xf7\xff\x3f\x00\xfd\x00\xfc\x00\xfb\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\xc9\x00\x00\x00\x49\x00\x00\x00\xf9\x00\x00\x00\x54\x00\x00\x00\xb8\x00\xf3\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x07\x00\xf6\x00\x10\x00\x00\x00\x8a\x00\x00\x00\xee\x00\xf5\x00\x00\x00\x11\x00\x00\x00\xea\x00\x00\x00\xab\x00\x00\x00\x93\x00\x00\x00\x0f\x00\x00\x00\x00\x00"#
happyGotoOffsets :: HappyAddr
happyGotoOffsets = HappyA# "\xec\x00\xe9\x00\xe6\x00\xbf\x00\xb0\x00\xac\x00\xaa\x00\xe4\x00\xe1\x00\x9b\x00\x85\x00\x5d\x00\x79\x00\xe3\x00\xe0\x00\xd6\x00\xd7\x00\xd1\x00\x48\x00\x63\x00\xcf\x00\xcc\x00\x92\x00\x1d\x00\xab\x00\x19\x00\xc6\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\xe2\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x49\x00\x00\x00\xdf\x00\x43\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x9e\x00\xaf\x00\x8a\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\xdb\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\xda\x00\x12\x00\xcd\x00\x81\x00\x00\x00\x38\x00\xeb\xff\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\xbd\x00\x90\x00\xcb\x00\xfe\xff\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x7d\x00\x6d\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x02\x00\x00\x00\x7c\x00\xb2\x00\x00\x00\xc3\x00\xbb\x00\x97\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\xc2\x00\x00\x00\x7c\x00\xb9\x00\x00\x00\xb6\x00\x9e\x00\xb7\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x07\x00\x00\x00\xa0\x00\xaf\x00\xb5\x00\x9c\x00\x00\x00\xb4\x00\x8e\x00\x9c\x00\x3a\x00\x9c\x00\x22\x00\x9c\x00\x00\x00\x00\x00"#
happyGotoOffsets = HappyA# "\xf2\x00\xed\x00\xeb\x00\xc3\x00\xb2\x00\xa4\x00\x9c\x00\xe9\x00\xe7\x00\x9b\x00\x88\x00\x4e\x00\x71\x00\xe6\x00\xe3\x00\xd9\x00\xd5\x00\xdb\x00\x48\x00\x58\x00\xd7\x00\xd4\x00\x91\x00\x25\x00\xad\x00\x1b\x00\xcd\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\xe8\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x43\x00\x00\x00\xe5\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x5c\x00\xb1\x00\xc0\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\xe0\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x13\x00\xd3\x00\x84\x00\x00\x00\x46\x00\xa6\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\xc8\x00\x89\x00\xd1\x00\x02\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x74\x00\x70\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x27\x00\x00\x00\xba\x00\xc5\x00\x00\x00\xca\x00\xbd\x00\x8d\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\xc7\x00\x00\x00\xba\x00\xbe\x00\x00\x00\xbf\x00\x5c\x00\xa3\x00\x98\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x9f\x00\xba\x00\x00\x00\xb1\x00\x80\x00\x8e\x00\x00\x00\x81\x00\x00\x00\x30\x00\x8e\x00\x65\x00\x5e\x00\x2d\x00\x8e\x00\xf2\xff\x8e\x00\xef\xff\x8e\x00\x00\x00\x00\x00"#
happyDefActions :: HappyAddr
happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xc2\xff\xc0\xff\xbe\xff\xbc\xff\xba\xff\xb8\xff\xb5\xff\xb2\xff\xb0\xff\xb0\xff\x00\x00\xb2\xff\xa9\xff\xa6\xff\x00\x00\xe4\xff\xb2\xff\x00\x00\xa8\xff\x00\x00\xe1\xff\x00\x00\x00\x00\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xcb\xff\xca\xff\xb4\xff\xcd\xff\x00\x00\xb5\xff\xb5\xff\xc7\xff\x00\x00\xb5\xff\xe3\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\xff\xd4\xff\xd3\xff\xd6\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x00\x00\xa6\xff\x00\x00\x00\x00\xa9\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\x00\x00\xa9\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xb2\xff\xd1\xff\xd2\xff\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x00\x00\xcc\xff\x00\x00\xc5\xff\xb4\xff\x00\x00\xb5\xff\xb1\xff\xaf\xff\xb0\xff\xae\xff\x00\x00\xa9\xff\x00\x00\x00\x00\xa5\xff\xab\xff\xa7\xff\xaa\xff\xac\xff\xc3\xff\xb3\xff\xce\xff\x00\x00\x00\x00\x00\x00\xd0\xff\xc9\xff\xb6\xff\xb9\xff\xbb\xff\xbd\xff\xbf\xff\xc1\xff\x00\x00\xd7\xff\x00\x00\x00\x00\xda\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xc0\xff\xb8\xff\x00\x00\x00\x00\xc0\xff\xdc\xff\x00\x00\xb2\xff\x00\x00\xae\xff\x00\x00\x00\x00\x00\x00\xcf\xff\xc6\xff\xc8\xff\x00\x00\xb2\xff\xd9\xff\xdb\xff\x00\x00\xbc\xff\x00\x00\x00\x00\x00\x00\xba\xff\x00\x00\x00\x00\xc4\xff\xd8\xff\x00\x00\xbe\xff\x00\x00\xc2\xff\x00\x00\xba\xff\x00\x00\xdf\xff\xe0\xff\xba\xff\x00\x00\xba\xff\x00\x00\xba\xff\x00\x00\xde\xff"#
happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xc2\xff\xc0\xff\xbe\xff\xbc\xff\xba\xff\xb8\xff\xb5\xff\xb2\xff\xb0\xff\xb0\xff\x00\x00\xb2\xff\xa9\xff\xa6\xff\x00\x00\xe4\xff\xb2\xff\x00\x00\xa8\xff\x00\x00\xe1\xff\x00\x00\x00\x00\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xcb\xff\xca\xff\xb4\xff\xcd\xff\x00\x00\xb5\xff\xb5\xff\xc7\xff\x00\x00\xb5\xff\xe3\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\xff\xd4\xff\xd3\xff\xd6\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x00\x00\xa6\xff\x00\x00\x00\x00\xa9\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\x00\x00\xa9\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xb2\xff\xd1\xff\xd2\xff\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x00\x00\xcc\xff\x00\x00\xc5\xff\xb4\xff\x00\x00\xb5\xff\xb1\xff\xaf\xff\xb0\xff\xae\xff\x00\x00\xa9\xff\x00\x00\x00\x00\xa5\xff\xab\xff\xa7\xff\xaa\xff\xac\xff\xc3\xff\xb3\xff\xce\xff\x00\x00\x00\x00\x00\x00\xd0\xff\xc9\xff\xb6\xff\xb9\xff\xbb\xff\xbd\xff\xbf\xff\xc1\xff\x00\x00\xd7\xff\x00\x00\x00\x00\xda\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xc0\xff\xb8\xff\x00\x00\x00\x00\xc0\xff\xdc\xff\x00\x00\xb2\xff\x00\x00\xae\xff\x00\x00\x00\x00\x00\x00\xcf\xff\xc6\xff\xc8\xff\x00\x00\xb2\xff\xd9\xff\xdb\xff\x00\x00\xbc\xff\x00\x00\xc0\xff\x00\x00\xba\xff\x00\x00\x00\x00\xc4\xff\xd8\xff\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\xba\xff\x00\x00\xdf\xff\x00\x00\x00\x00\xba\xff\x00\x00\xc2\xff\xe0\xff\xba\xff\x00\x00\xba\xff\x00\x00\xba\xff\x00\x00\xde\xff"#
happyCheck :: HappyAddr
happyCheck = HappyA# "\xff\xff\x03\x00\x01\x00\x18\x00\x07\x00\x03\x00\x01\x00\x1c\x00\x07\x00\x05\x00\x07\x00\x0a\x00\x07\x00\x0c\x00\x0d\x00\x0a\x00\x04\x00\x0c\x00\x0d\x00\x07\x00\x05\x00\x03\x00\x03\x00\x03\x00\x16\x00\x1b\x00\x13\x00\x1d\x00\x03\x00\x20\x00\x15\x00\x1e\x00\x03\x00\x20\x00\x21\x00\x20\x00\x23\x00\x20\x00\x21\x00\x23\x00\x23\x00\x0a\x00\x16\x00\x0c\x00\x23\x00\x1b\x00\x1b\x00\x1d\x00\x1d\x00\x25\x00\x23\x00\x18\x00\x1b\x00\x10\x00\x1d\x00\x15\x00\x1b\x00\x00\x00\x01\x00\x03\x00\x03\x00\x10\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x01\x00\x20\x00\x03\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x03\x00\x03\x00\x20\x00\x16\x00\x15\x00\x17\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x0b\x00\x03\x00\x0e\x00\x0f\x00\x0c\x00\x17\x00\x11\x00\x12\x00\x00\x00\x16\x00\x1b\x00\x17\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x16\x00\x03\x00\x23\x00\x00\x00\x01\x00\x17\x00\x03\x00\x0f\x00\x00\x00\x01\x00\x10\x00\x03\x00\x0e\x00\x0f\x00\x23\x00\x25\x00\x25\x00\x0e\x00\x0f\x00\x19\x00\x1a\x00\x17\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x03\x00\x03\x00\x00\x00\x01\x00\x07\x00\x03\x00\x00\x00\x01\x00\x04\x00\x03\x00\x10\x00\x07\x00\x0e\x00\x0f\x00\x03\x00\x1c\x00\x0e\x00\x0f\x00\x07\x00\x19\x00\x0e\x00\x0f\x00\x23\x00\x13\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x10\x00\x03\x00\x10\x00\x15\x00\x0d\x00\x1a\x00\x0a\x00\x09\x00\x0d\x00\x19\x00\x1a\x00\x19\x00\x1a\x00\x03\x00\x23\x00\x03\x00\x1d\x00\x11\x00\x03\x00\x03\x00\x0a\x00\x09\x00\x23\x00\x08\x00\x08\x00\x20\x00\x06\x00\x05\x00\x04\x00\x18\x00\x25\x00\x07\x00\x08\x00\x1c\x00\x03\x00\x18\x00\x12\x00\x1f\x00\x07\x00\x1c\x00\x04\x00\x23\x00\x15\x00\x07\x00\x15\x00\x14\x00\x0c\x00\x0c\x00\x12\x00\x03\x00\x18\x00\x18\x00\x00\x00\x0b\x00\x19\x00\x0c\x00\x0b\x00\x19\x00\x00\x00\x03\x00\x03\x00\x01\x00\x03\x00\x1e\x00\x01\x00\x0c\x00\x00\x00\x06\x00\x1e\x00\x19\x00\x15\x00\x18\x00\x16\x00\x13\x00\x0c\x00\x14\x00\x06\x00\x0c\x00\x05\x00\x0b\x00\x04\x00\x03\x00\x12\x00\x08\x00\x11\x00\x03\x00\x02\x00\x08\x00\x02\x00\x14\x00\x02\x00\x02\x00\x0f\x00\x08\x00\x02\x00\x17\x00\x06\x00\x03\x00\x07\x00\x02\x00\x05\x00\x08\x00\x03\x00\x03\x00\x03\x00\x03\x00\x23\x00\x03\x00\xff\xff\x23\x00\x0e\x00\x08\x00\x20\x00\x07\x00\x04\x00\x01\x00\x23\x00\x04\x00\x23\x00\xff\xff\xff\xff\xff\xff\x23\x00\x06\x00\xff\xff\x07\x00\x01\x00\xff\xff\x06\x00\x09\x00\x17\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\x25\x00\x23\x00\x25\x00\x12\x00\x09\x00\xff\xff\x25\x00\x25\x00\x12\x00\x12\x00\x25\x00\x12\x00\x25\x00\x23\x00\x25\x00\x21\x00\x23\x00\x25\x00\x1e\x00\x21\x00\x25\x00\x25\x00\x07\x00\xff\xff\x25\x00\x16\x00\x25\x00\x14\x00\x20\x00\x25\x00\x19\x00\x25\x00\x23\x00\xff\xff\x23\x00\x25\x00\x23\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"#
happyCheck = HappyA# "\xff\xff\x0a\x00\x01\x00\x0c\x00\x15\x00\x03\x00\x01\x00\x15\x00\x07\x00\x02\x00\x07\x00\x0a\x00\x07\x00\x0c\x00\x0d\x00\x0a\x00\x04\x00\x0c\x00\x0d\x00\x07\x00\x05\x00\x05\x00\x03\x00\x03\x00\x21\x00\x22\x00\x23\x00\x24\x00\x16\x00\x1b\x00\x03\x00\x1d\x00\x1f\x00\x07\x00\x21\x00\x22\x00\x21\x00\x24\x00\x21\x00\x22\x00\x03\x00\x24\x00\x03\x00\x24\x00\x26\x00\x1c\x00\x1b\x00\x1b\x00\x1d\x00\x1d\x00\x26\x00\x24\x00\x24\x00\x24\x00\x1b\x00\x03\x00\x1d\x00\x00\x00\x01\x00\x21\x00\x03\x00\x16\x00\x00\x00\x01\x00\x1b\x00\x03\x00\x15\x00\x00\x00\x01\x00\x15\x00\x03\x00\x0e\x00\x0f\x00\x03\x00\x16\x00\x03\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x17\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x17\x00\x03\x00\x10\x00\x00\x00\x01\x00\x17\x00\x03\x00\x16\x00\x0f\x00\x16\x00\x03\x00\x21\x00\x0e\x00\x0f\x00\x1a\x00\x06\x00\x09\x00\x0e\x00\x0f\x00\x21\x00\x15\x00\x17\x00\x00\x00\x01\x00\x24\x00\x03\x00\x17\x00\x00\x00\x01\x00\x10\x00\x03\x00\x00\x00\x01\x00\x11\x00\x03\x00\x24\x00\x0e\x00\x0f\x00\x19\x00\x1a\x00\x04\x00\x0e\x00\x0f\x00\x07\x00\x10\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x05\x00\x03\x00\x00\x00\x01\x00\x19\x00\x03\x00\x13\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x0e\x00\x0f\x00\x18\x00\x15\x00\x0e\x00\x0f\x00\x0a\x00\x10\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x24\x00\x10\x00\x19\x00\x1a\x00\x0c\x00\x1b\x00\x0a\x00\x03\x00\x0d\x00\x0b\x00\x19\x00\x1a\x00\x1d\x00\x09\x00\x24\x00\x11\x00\x12\x00\x1e\x00\x13\x00\x24\x00\x03\x00\x03\x00\x21\x00\x24\x00\x15\x00\x08\x00\x08\x00\x26\x00\x04\x00\x03\x00\x18\x00\x07\x00\x08\x00\x07\x00\x1c\x00\x03\x00\x18\x00\x18\x00\x03\x00\x07\x00\x1c\x00\x1c\x00\x07\x00\x20\x00\x24\x00\x04\x00\x26\x00\x24\x00\x07\x00\x12\x00\x14\x00\x0c\x00\x18\x00\x18\x00\x0c\x00\x12\x00\x12\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x0c\x00\x0b\x00\x1e\x00\x03\x00\x19\x00\x03\x00\x03\x00\x19\x00\x01\x00\x01\x00\x06\x00\x00\x00\x14\x00\x0c\x00\x1e\x00\x13\x00\x19\x00\x0c\x00\x18\x00\x15\x00\x06\x00\x05\x00\x0c\x00\x0b\x00\x12\x00\x04\x00\x11\x00\x03\x00\x03\x00\x01\x00\x08\x00\x08\x00\x02\x00\x02\x00\x02\x00\x16\x00\x02\x00\x14\x00\x02\x00\x06\x00\x03\x00\x17\x00\x02\x00\x08\x00\x0f\x00\x07\x00\x03\x00\x08\x00\x03\x00\x03\x00\x03\x00\x24\x00\x03\x00\x21\x00\xff\xff\x24\x00\x0e\x00\x05\x00\x08\x00\x04\x00\x07\x00\x01\x00\x24\x00\x24\x00\xff\xff\x04\x00\xff\xff\xff\xff\xff\xff\x06\x00\xff\xff\x07\x00\x01\x00\xff\xff\x17\x00\x09\x00\x06\x00\x24\x00\xff\xff\xff\xff\x24\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x26\x00\x26\x00\x26\x00\x26\x00\x24\x00\x12\x00\x12\x00\x12\x00\x09\x00\x26\x00\x24\x00\x26\x00\x12\x00\x26\x00\x22\x00\x24\x00\x26\x00\x1f\x00\x22\x00\x26\x00\x26\x00\x26\x00\x07\x00\x26\x00\x16\x00\x21\x00\x14\x00\xff\xff\x26\x00\x26\x00\x19\x00\x24\x00\xff\xff\x24\x00\x26\x00\xff\xff\x24\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"#
happyTable :: HappyAddr
happyTable = HappyA# "\x00\x00\x1e\x00\x31\x00\x22\x00\xa4\x00\x36\x00\x31\x00\x7d\x00\x32\x00\xc8\x00\x40\x00\x33\x00\x32\x00\x34\x00\x35\x00\x33\x00\x4b\x00\x34\x00\x35\x00\x4c\x00\xc0\x00\x1e\x00\x1e\x00\x36\x00\x9c\x00\x1f\x00\xbc\x00\x80\x00\x1e\x00\x1d\x00\xba\x00\x69\x00\x1e\x00\x1d\x00\x36\x00\x1d\x00\x22\x00\x1d\x00\x36\x00\x22\x00\x22\x00\x47\x00\x8b\x00\x48\x00\x22\x00\x1f\x00\x1f\x00\x97\x00\x63\x00\xff\xff\x22\x00\xb0\x00\x1f\x00\xb0\xff\x20\x00\xc6\x00\x24\x00\x2a\x00\x2b\x00\x36\x00\x2c\x00\x79\x00\x22\x00\x1d\x00\x36\x00\x49\x00\x22\x00\x2a\x00\x2b\x00\xb0\xff\x2c\x00\x2d\x00\x2e\x00\x2a\x00\x2b\x00\x36\x00\x2c\x00\x1d\x00\x93\x00\xc4\x00\x84\x00\x2d\x00\x2e\x00\x72\x00\x2b\x00\x87\x00\x2c\x00\x2d\x00\x2e\x00\x76\x00\x6f\x00\x88\x00\x76\x00\x2a\x00\x37\x00\xc2\x00\x71\x00\x73\x00\x2e\x00\x2a\x00\x2b\x00\x58\x00\x2c\x00\x22\x00\x2a\x00\x2b\x00\x74\x00\x2c\x00\x3e\x00\x2a\x00\x2b\x00\x25\x00\x2c\x00\x2d\x00\x2e\x00\x22\x00\xff\xff\xff\xff\xa4\x00\x2e\x00\x26\x00\xaa\x00\x2f\x00\xa5\x00\x2e\x00\x2a\x00\x2b\x00\x54\x00\x2c\x00\x2a\x00\x2b\x00\x6a\x00\x2c\x00\x2a\x00\x2b\x00\x4b\x00\x2c\x00\x3d\x00\x4c\x00\xa6\x00\x2e\x00\x54\x00\xc4\x00\x95\x00\x2e\x00\x6a\x00\x26\x00\x40\x00\x2e\x00\x22\x00\x7b\x00\x41\x00\x42\x00\x43\x00\x44\x00\x41\x00\x42\x00\x43\x00\x44\x00\x4e\x00\x25\x00\x50\x00\x25\x00\xc2\x00\xab\x00\xb4\x00\x6d\x00\x6c\x00\x45\x00\x26\x00\x82\x00\x26\x00\x27\x00\x4e\x00\x22\x00\x50\x00\xbe\x00\xc0\x00\x52\x00\x52\x00\x4f\x00\x51\x00\x22\x00\x6b\x00\x53\x00\x1d\x00\x69\x00\xba\x00\x4b\x00\x22\x00\xff\xff\x4c\x00\xb8\x00\x7d\x00\x54\x00\x22\x00\xae\x00\xc6\x00\x55\x00\x23\x00\x4b\x00\x22\x00\xbe\x00\x4c\x00\xb8\x00\xb2\x00\x76\x00\xad\x00\x9d\x00\xa1\x00\xb4\x00\xac\x00\x77\x00\x7f\x00\x83\x00\x81\x00\x96\x00\x91\x00\x98\x00\x5c\x00\x5e\x00\x67\x00\x66\x00\x65\x00\x70\x00\x76\x00\x77\x00\x69\x00\x1d\x00\x28\x00\x38\x00\x29\x00\x58\x00\x3a\x00\x76\x00\x39\x00\x56\x00\x49\x00\x58\x00\x4c\x00\x5a\x00\xbc\x00\x3b\x00\xb7\x00\x3c\x00\xb2\x00\xa8\x00\xb6\x00\xa9\x00\x5a\x00\xaa\x00\xb1\x00\x89\x00\xa0\x00\xa3\x00\x9f\x00\xa1\x00\x7f\x00\x4e\x00\x86\x00\x93\x00\x8a\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x22\x00\x91\x00\x00\x00\x22\x00\x8b\x00\x95\x00\x1d\x00\x4e\x00\x9a\x00\x9c\x00\x22\x00\x5e\x00\x22\x00\x00\x00\x00\x00\x00\x00\x22\x00\x60\x00\x00\x00\x61\x00\x65\x00\x00\x00\x63\x00\x62\x00\x9b\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\xff\xff\x22\x00\xff\xff\x6f\x00\x7d\x00\x00\x00\xff\xff\xff\xff\x76\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x22\x00\xff\xff\x36\x00\x22\x00\xff\xff\x69\x00\x36\x00\xff\xff\xff\xff\x4e\x00\x00\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x1d\x00\xff\xff\x5c\x00\xff\xff\x22\x00\x00\x00\x22\x00\xae\xff\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
happyTable = HappyA# "\x00\x00\x47\x00\x31\x00\x48\x00\xcb\x00\x1e\x00\x31\x00\xc9\x00\x32\x00\xbc\x00\xa4\x00\x33\x00\x32\x00\x34\x00\x35\x00\x33\x00\x4b\x00\x34\x00\x35\x00\x4c\x00\xcd\x00\xc0\x00\x1e\x00\x1e\x00\x1d\x00\x36\x00\x49\x00\x22\x00\x58\x00\x1f\x00\x1e\x00\x80\x00\x69\x00\x40\x00\x1d\x00\x36\x00\x1d\x00\x22\x00\x1d\x00\x36\x00\x1e\x00\x22\x00\x36\x00\x22\x00\xff\xff\xc7\x00\x1f\x00\x1f\x00\x97\x00\x63\x00\xff\xff\x22\x00\x22\x00\x22\x00\x1f\x00\x36\x00\x20\x00\x2a\x00\x2b\x00\x1d\x00\x2c\x00\x9c\x00\x2a\x00\x2b\x00\x24\x00\x2c\x00\xc7\x00\x2a\x00\x2b\x00\xc3\x00\x2c\x00\x2d\x00\x2e\x00\x36\x00\x8b\x00\x36\x00\x2d\x00\x2e\x00\x2a\x00\xb0\xff\x84\x00\x2d\x00\x2e\x00\x72\x00\x2b\x00\x6f\x00\x2c\x00\x79\x00\x2a\x00\x2b\x00\x71\x00\x2c\x00\x93\x00\x3e\x00\x37\x00\x50\x00\xb0\xff\x73\x00\x2e\x00\xb4\x00\x69\x00\x6c\x00\x2d\x00\x2e\x00\x1d\x00\xba\x00\x74\x00\x2a\x00\x2b\x00\x22\x00\x2c\x00\x2f\x00\x2a\x00\x2b\x00\x25\x00\x2c\x00\x2a\x00\x2b\x00\xc5\x00\x2c\x00\x22\x00\xa4\x00\x2e\x00\x26\x00\xaa\x00\x4b\x00\xa5\x00\x2e\x00\x4c\x00\x3d\x00\xa6\x00\x2e\x00\x2a\x00\x2b\x00\xc1\x00\x2c\x00\x2a\x00\x2b\x00\x26\x00\x2c\x00\x7b\x00\x41\x00\x42\x00\x43\x00\x44\x00\x4e\x00\x95\x00\x2e\x00\xb0\x00\xbe\x00\x40\x00\x2e\x00\x6d\x00\x25\x00\xab\x00\x41\x00\x42\x00\x43\x00\x44\x00\x4e\x00\x22\x00\x25\x00\x26\x00\x82\x00\x76\x00\xc3\x00\x4f\x00\x50\x00\x45\x00\x87\x00\x26\x00\x27\x00\xbe\x00\x51\x00\x22\x00\x88\x00\x76\x00\xcb\x00\xbc\x00\x22\x00\x52\x00\x52\x00\x1d\x00\x22\x00\xb8\x00\x6b\x00\x53\x00\xff\xff\x4b\x00\x54\x00\x22\x00\x4c\x00\xb8\x00\x6a\x00\x7d\x00\x54\x00\x22\x00\x22\x00\x54\x00\x6a\x00\x7d\x00\x23\x00\x55\x00\xc9\x00\x22\x00\x4b\x00\xff\xff\x22\x00\x4c\x00\xba\x00\xb2\x00\x76\x00\xb4\x00\xac\x00\xad\x00\xae\x00\x9d\x00\xa1\x00\x77\x00\x7f\x00\x98\x00\x81\x00\x96\x00\x65\x00\x5c\x00\x83\x00\x5e\x00\x66\x00\x91\x00\x67\x00\x70\x00\x69\x00\x77\x00\x39\x00\x76\x00\x1d\x00\x3a\x00\x28\x00\x76\x00\x29\x00\x38\x00\x56\x00\x58\x00\x49\x00\x4c\x00\x3b\x00\x5a\x00\x3c\x00\xc5\x00\xc1\x00\xb2\x00\xb7\x00\xb6\x00\xa8\x00\xa9\x00\xaa\x00\x58\x00\xb1\x00\x5a\x00\xa3\x00\xa1\x00\x7f\x00\x9f\x00\x86\x00\xa0\x00\x89\x00\x4e\x00\x8d\x00\x8a\x00\x8e\x00\x8f\x00\x90\x00\x22\x00\x91\x00\x1d\x00\x00\x00\x22\x00\x8b\x00\x93\x00\x95\x00\x9a\x00\x4e\x00\x9c\x00\x22\x00\x22\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x61\x00\x65\x00\x00\x00\x9b\x00\x62\x00\x63\x00\x22\x00\x00\x00\x00\x00\x22\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x6f\x00\x76\x00\x7a\x00\x7d\x00\xff\xff\x22\x00\xff\xff\x7c\x00\xff\xff\x36\x00\x22\x00\xff\xff\x69\x00\x36\x00\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\x58\x00\x1d\x00\x5a\x00\x00\x00\xff\xff\xff\xff\x5c\x00\x22\x00\x00\x00\x22\x00\xae\xff\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (27, 90) [
(27 , happyReduce_27),
@@ -289,7 +289,7 @@ happyReduceArr = array (27, 90) [
(90 , happyReduce_90)
]
happy_n_terms = 38 :: Int
happy_n_terms = 39 :: Int
happy_n_nonterms = 31 :: Int
happyReduce_27 = happySpecReduce_1 0# happyReduction_27
@@ -320,8 +320,11 @@ happyReduction_30 happy_x_1
(CId (happy_var_1)
)}
happyReduce_31 = happyReduce 9# 4# happyReduction_31
happyReduction_31 (happy_x_9 `HappyStk`
happyReduce_31 = happyReduce 12# 4# happyReduction_31
happyReduction_31 (happy_x_12 `HappyStk`
happy_x_11 `HappyStk`
happy_x_10 `HappyStk`
happy_x_9 `HappyStk`
happy_x_8 `HappyStk`
happy_x_7 `HappyStk`
happy_x_6 `HappyStk`
@@ -333,11 +336,12 @@ happyReduction_31 (happy_x_9 `HappyStk`
happyRest)
= case happyOut33 happy_x_2 of { happy_var_2 ->
case happyOut52 happy_x_4 of { happy_var_4 ->
case happyOut35 happy_x_7 of { happy_var_7 ->
case happyOut47 happy_x_9 of { happy_var_9 ->
case happyOut48 happy_x_7 of { happy_var_7 ->
case happyOut35 happy_x_10 of { happy_var_10 ->
case happyOut47 happy_x_12 of { happy_var_12 ->
happyIn34
(Grm happy_var_2 happy_var_4 happy_var_7 (reverse happy_var_9)
) `HappyStk` happyRest}}}}
(Grm happy_var_2 happy_var_4 (reverse happy_var_7) happy_var_10 (reverse happy_var_12)
) `HappyStk` happyRest}}}}}
happyReduce_32 = happyReduce 9# 5# happyReduction_32
happyReduction_32 (happy_x_9 `HappyStk`
@@ -357,8 +361,10 @@ happyReduction_32 (happy_x_9 `HappyStk`
(Abs (reverse happy_var_4) (reverse happy_var_6) (reverse happy_var_8)
) `HappyStk` happyRest}}}
happyReduce_33 = happyReduce 16# 6# happyReduction_33
happyReduction_33 (happy_x_16 `HappyStk`
happyReduce_33 = happyReduce 18# 6# happyReduction_33
happyReduction_33 (happy_x_18 `HappyStk`
happy_x_17 `HappyStk`
happy_x_16 `HappyStk`
happy_x_15 `HappyStk`
happy_x_14 `HappyStk`
happy_x_13 `HappyStk`
@@ -382,9 +388,10 @@ happyReduction_33 (happy_x_16 `HappyStk`
case happyOut51 happy_x_11 of { happy_var_11 ->
case happyOut51 happy_x_13 of { happy_var_13 ->
case happyOut51 happy_x_15 of { happy_var_15 ->
case happyOut51 happy_x_17 of { happy_var_17 ->
happyIn36
(Cnc happy_var_2 (reverse happy_var_5) (reverse happy_var_7) (reverse happy_var_9) (reverse happy_var_11) (reverse happy_var_13) (reverse happy_var_15)
) `HappyStk` happyRest}}}}}}}
(Cnc happy_var_2 (reverse happy_var_5) (reverse happy_var_7) (reverse happy_var_9) (reverse happy_var_11) (reverse happy_var_13) (reverse happy_var_15) (reverse happy_var_17)
) `HappyStk` happyRest}}}}}}}}
happyReduce_34 = happySpecReduce_3 7# happyReduction_34
happyReduction_34 happy_x_3
@@ -875,7 +882,7 @@ happyReduction_90 happy_x_3
)}}
happyNewToken action sts stk [] =
happyDoAction 37# (error "reading EOF!") action sts stk []
happyDoAction 38# (error "reading EOF!") action sts stk []
happyNewToken action sts stk (tk:tks) =
let cont i = happyDoAction i tk action sts stk tks in
@@ -909,13 +916,14 @@ happyNewToken action sts stk (tk:tks) =
PT _ (TS "lincat") -> cont 27#;
PT _ (TS "lindef") -> cont 28#;
PT _ (TS "oper") -> cont 29#;
PT _ (TS "pre") -> cont 30#;
PT _ (TS "printname") -> cont 31#;
PT _ (TL happy_dollar_dollar) -> cont 32#;
PT _ (TI happy_dollar_dollar) -> cont 33#;
PT _ (TD happy_dollar_dollar) -> cont 34#;
PT _ (T_CId happy_dollar_dollar) -> cont 35#;
_ -> cont 36#;
PT _ (TS "param") -> cont 30#;
PT _ (TS "pre") -> cont 31#;
PT _ (TS "printname") -> cont 32#;
PT _ (TL happy_dollar_dollar) -> cont 33#;
PT _ (TI happy_dollar_dollar) -> cont 34#;
PT _ (TD happy_dollar_dollar) -> cont 35#;
PT _ (T_CId happy_dollar_dollar) -> cont 36#;
_ -> cont 37#;
_ -> happyError' (tk:tks)
}

View File

@@ -75,7 +75,6 @@ instance Print Integer where
instance Print Int where --H
prt _ x = doc (shows x) --H
instance Print Double where
prt _ x = doc (shows x)
@@ -92,7 +91,7 @@ instance Print CId where
instance Print Grammar where
prt i e = case e of
Grm cid cids abstract concretes -> prPrec i 0 (concatD [doc (showString "grammar") , prt 0 cid , doc (showString "(") , prt 0 cids , doc (showString ")") , doc (showString ";") , prt 0 abstract , doc (showString ";") , prt 0 concretes])
Grm cid cids flags abstract concretes -> prPrec i 0 (concatD [doc (showString "grammar") , prt 0 cid , doc (showString "(") , prt 0 cids , doc (showString ")") , doc (showString "(") , prt 0 flags , doc (showString ")") , doc (showString ";") , prt 0 abstract , doc (showString ";") , prt 0 concretes])
instance Print Abstract where
@@ -102,7 +101,7 @@ instance Print Abstract where
instance Print Concrete where
prt i e = case e of
Cnc cid flags lindefs0 lindefs1 lindefs2 lindefs3 lindefs -> prPrec i 0 (concatD [doc (showString "concrete") , prt 0 cid , doc (showString "{") , doc (showString "flags") , prt 0 flags , doc (showString "lin") , prt 0 lindefs0 , doc (showString "oper") , prt 0 lindefs1 , doc (showString "lincat") , prt 0 lindefs2 , doc (showString "lindef") , prt 0 lindefs3 , doc (showString "printname") , prt 0 lindefs , doc (showString "}")])
Cnc cid flags lindefs0 lindefs1 lindefs2 lindefs3 lindefs4 lindefs -> prPrec i 0 (concatD [doc (showString "concrete") , prt 0 cid , doc (showString "{") , doc (showString "flags") , prt 0 flags , doc (showString "lin") , prt 0 lindefs0 , doc (showString "oper") , prt 0 lindefs1 , doc (showString "lincat") , prt 0 lindefs2 , doc (showString "lindef") , prt 0 lindefs3 , doc (showString "printname") , prt 0 lindefs4 , doc (showString "param") , prt 0 lindefs , doc (showString "}")])
prtList es = case es of
[] -> (concatD [])