From 947949648f3dacffa2bb075e1bd561ba31760908 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 7 Nov 2007 16:30:56 +0000 Subject: [PATCH] added fields for global options and showable lincats to gfcc --- src/GF/Devel/GrammarToGFCC.hs | 8 +++-- src/GF/GFCC/AbsGFCC.hs | 4 +-- src/GF/GFCC/DataGFCC.hs | 42 +++++++++++++++----------- src/GF/GFCC/GFCC.cf | 3 +- src/GF/GFCC/LexGFCC.hs | 2 +- src/GF/GFCC/Macros.hs | 12 +++++--- src/GF/GFCC/ParGFCC.hs | 56 ++++++++++++++++++++--------------- src/GF/GFCC/PrintGFCC.hs | 5 ++-- 8 files changed, 78 insertions(+), 54 deletions(-) diff --git a/src/GF/Devel/GrammarToGFCC.hs b/src/GF/Devel/GrammarToGFCC.hs index 213f5d304..ea1a7f420 100644 --- a/src/GF/Devel/GrammarToGFCC.hs +++ b/src/GF/Devel/GrammarToGFCC.hs @@ -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 diff --git a/src/GF/GFCC/AbsGFCC.hs b/src/GF/GFCC/AbsGFCC.hs index ccf540d4e..e3b2582be 100644 --- a/src/GF/GFCC/AbsGFCC.hs +++ b/src/GF/GFCC/AbsGFCC.hs @@ -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 = diff --git a/src/GF/GFCC/DataGFCC.hs b/src/GF/GFCC/DataGFCC.hs index 47a891083..781f76968 100644 --- a/src/GF/GFCC/DataGFCC.hs +++ b/src/GF/GFCC/DataGFCC.hs @@ -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 } diff --git a/src/GF/GFCC/GFCC.cf b/src/GF/GFCC/GFCC.cf index 861e68f73..96d68649b 100644 --- a/src/GF/GFCC/GFCC.cf +++ b/src/GF/GFCC/GFCC.cf @@ -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 ; diff --git a/src/GF/GFCC/LexGFCC.hs b/src/GF/GFCC/LexGFCC.hs index 8d91493fb..c86195e3d 100644 --- a/src/GF/GFCC/LexGFCC.hs +++ b/src/GF/GFCC/LexGFCC.hs @@ -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 diff --git a/src/GF/GFCC/Macros.hs b/src/GF/GFCC/Macros.hs index f75941f53..cb4727e61 100644 --- a/src/GF/GFCC/Macros.hs +++ b/src/GF/GFCC/Macros.hs @@ -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 = diff --git a/src/GF/GFCC/ParGFCC.hs b/src/GF/GFCC/ParGFCC.hs index c512b4f74..2ccd5b19e 100644 --- a/src/GF/GFCC/ParGFCC.hs +++ b/src/GF/GFCC/ParGFCC.hs @@ -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) } diff --git a/src/GF/GFCC/PrintGFCC.hs b/src/GF/GFCC/PrintGFCC.hs index 87d790d2a..9eed30d61 100644 --- a/src/GF/GFCC/PrintGFCC.hs +++ b/src/GF/GFCC/PrintGFCC.hs @@ -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 [])