From 945a49214bd49fb082e8f613fc68d192a1b38743 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 5 Oct 2007 09:02:47 +0000 Subject: [PATCH] cleaned up new GFCC, but added RP as deprecated --- src/GF/Devel/GrammarToGFCC.hs | 2 +- src/GF/GFCC/AbsGFCC.hs | 7 +- src/GF/GFCC/DataGFCC.hs | 3 +- src/GF/GFCC/GFCC.cf | 19 +- src/GF/GFCC/LexGFCC.hs | 35 ++-- src/GF/GFCC/Macros.hs | 5 +- src/GF/GFCC/ParGFCC.hs | 373 +++++++++++++++++----------------- src/GF/GFCC/PrintGFCC.hs | 7 +- src/GF/GFCC/SkelGFCC.hs | 3 +- src/GF/Infra/CompactPrint.hs | 16 +- 10 files changed, 244 insertions(+), 226 deletions(-) diff --git a/src/GF/Devel/GrammarToGFCC.hs b/src/GF/Devel/GrammarToGFCC.hs index 0a59a8920..452d2e03c 100644 --- a/src/GF/Devel/GrammarToGFCC.hs +++ b/src/GF/Devel/GrammarToGFCC.hs @@ -48,7 +48,7 @@ canon2gfcc opts cgr@(M.MGrammar ((a,M.ModMod abm):cms)) = cns = map (i2i . fst) cms abs = D.Abstr aflags funs cats catfuns aflags = Map.fromAscList [] ---- flags - lfuns = [(f', (mkType ty,CM.tree (C.AC f') [])) | ---- defs + lfuns = [(f', (mkType ty,CM.primNotion)) | ---- defs (f,AbsFun (Yes ty) _) <- tree2list (M.jments abm), let f' = i2i f] funs = Map.fromAscList lfuns lcats = [(i2i c,[]) | ---- context diff --git a/src/GF/GFCC/AbsGFCC.hs b/src/GF/GFCC/AbsGFCC.hs index b41f66d6f..ccf540d4e 100644 --- a/src/GF/GFCC/AbsGFCC.hs +++ b/src/GF/GFCC/AbsGFCC.hs @@ -32,13 +32,11 @@ data LinDef = deriving (Eq,Ord,Show) data Type = - Typ [CId] CId - | DTyp [Hypo] CId [Exp] + DTyp [Hypo] CId [Exp] deriving (Eq,Ord,Show) data Exp = - Tr Atom [Exp] - | DTr [CId] Atom [Exp] + DTr [CId] Atom [Exp] | EEq [Equation] deriving (Eq,Ord,Show) @@ -62,6 +60,7 @@ data Term = | FV [Term] | W String Term | TM + | RP Term Term deriving (Eq,Ord,Show) data Tokn = diff --git a/src/GF/GFCC/DataGFCC.hs b/src/GF/GFCC/DataGFCC.hs index aac35857b..e2e5a4efe 100644 --- a/src/GF/GFCC/DataGFCC.hs +++ b/src/GF/GFCC/DataGFCC.hs @@ -2,6 +2,7 @@ module GF.GFCC.DataGFCC where import GF.GFCC.AbsGFCC import GF.GFCC.PrintGFCC +import GF.Infra.CompactPrint import Data.Map import Data.List @@ -70,7 +71,7 @@ mkGFCC (Grm a cs ab@(Abs afls fs cts) ccs) = GFCC { -- convert internal GFCC and pretty-print it printGFCC :: GFCC -> String -printGFCC gfcc = printTree $ Grm +printGFCC gfcc = compactPrintGFCC $ printTree $ Grm (absname gfcc) (cncnames gfcc) (Abs diff --git a/src/GF/GFCC/GFCC.cf b/src/GF/GFCC/GFCC.cf index 4ecf7e942..23ee38e58 100644 --- a/src/GF/GFCC/GFCC.cf +++ b/src/GF/GFCC/GFCC.cf @@ -26,8 +26,8 @@ Cat. CatDef ::= CId "[" [Hypo] "]" ; Fun. FunDef ::= CId ":" Type "=" Exp ; Lin. LinDef ::= CId "=" Term ; -Typ. Type ::= [CId] "->" CId ; -- context-free type -Tr. Exp ::= "(" Atom [Exp] ")" ; -- context-free term +DTyp. Type ::= "[" [Hypo] "]" CId [Exp] ; -- dependent type +DTr. Exp ::= "[" "(" [CId] ")" Atom [Exp] "]" ; -- term with bindings AC. Atom ::= CId ; AS. Atom ::= String ; @@ -51,6 +51,8 @@ KP. Tokn ::= "[" "pre" [String] "[" [Variant] "]" "]" ; Var. Variant ::= [String] "/" [String] ; +RP. Term ::= "(" Term "@" Term ")"; -- DEPRECATED: record parameter alias + terminator Concrete ";" ; terminator Flag ";" ; terminator CatDef ";" ; @@ -64,16 +66,15 @@ separator Variant "," ; token CId (('_' | letter) (letter | digit | '\'' | '_')*) ; + -- the following are needed if dependent types or HOAS or defs are present -Hyp. Hypo ::= CId ":" Type ; -DTyp. Type ::= "[" [Hypo] "]" CId [Exp] ; -- dependent type -DTr. Exp ::= "[" "(" [CId] ")" Atom [Exp] "]" ; -- term with bindings -AV. Atom ::= "$" CId ; +Hyp. Hypo ::= CId ":" Type ; +AV. Atom ::= "$" CId ; -EEq. Exp ::= "{" [Equation] "}" ; -- list of pattern eqs; primitive notion: [] -Equ. Equation ::= [Exp] "->" Exp ; -- patterns are encoded as exps +EEq. Exp ::= "{" [Equation] "}" ; -- list of pattern eqs; primitive: [] +Equ. Equation ::= [Exp] "->" Exp ; -- patterns are encoded as exps -terminator Hypo ";" ; +separator Hypo "," ; terminator Equation ";" ; diff --git a/src/GF/GFCC/LexGFCC.hs b/src/GF/GFCC/LexGFCC.hs index 041f213cb..8d91493fb 100644 --- a/src/GF/GFCC/LexGFCC.hs +++ b/src/GF/GFCC/LexGFCC.hs @@ -24,18 +24,18 @@ import GHC.Exts import GlaExts #endif alex_base :: AlexAddr -alex_base = AlexA# "\x01\x00\x00\x00\x39\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xff\xff\x0a\x00\x00\x00\xec\xff\xff\xff\x9a\x00\x00\x00\x6a\x01\x00\x00\x3a\x02\x00\x00\x0a\x03\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\xe5\x01\x00\x00\xd3\x00\x00\x00\x35\x00\x00\x00\xe5\x00\x00\x00\x3f\x00\x00\x00\xf0\x00\x00\x00\x1b\x01\x00\x00\xb5\x01\x00\x00"# +alex_base = AlexA# "\x01\x00\x00\x00\x39\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xff\xff\xeb\xff\xff\xff\x0b\x00\x00\x00\x9a\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\xd3\x00\x00\x00\x35\x00\x00\x00\xe5\x00\x00\x00\x3f\x00\x00\x00\xf0\x00\x00\x00\x1b\x01\x00\x00\xb8\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\x02\x00\x02\x00\x02\x00\x02\x00\x02\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\x02\x00\x03\x00\x0c\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x03\x00\x03\x00\xff\xff\x03\x00\x03\x00\x05\x00\xff\xff\x03\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x03\x00\x03\x00\xff\xff\x03\x00\xff\xff\x03\x00\xff\xff\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x03\x00\x03\x00\x03\x00\x00\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x04\x00\xff\xff\x03\x00\xff\xff\x07\x00\xff\xff\x02\x00\x12\x00\x00\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x00\x00\x00\x00\x00\x00\x03\x00\x06\x00\x03\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\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x0d\x00\x00\x00\x00\x00\xff\xff\x09\x00\x0d\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\xff\xff\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x14\x00\x00\x00\x13\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x0e\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0e\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x09\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00"# +alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x00\x02\x00\x02\x00\x02\x00\x02\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\x02\x00\x03\x00\x0a\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x03\x00\x03\x00\xff\xff\x03\x00\x03\x00\x06\x00\xff\xff\x03\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x03\x00\x03\x00\xff\xff\x03\x00\xff\xff\x03\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x03\x00\x03\x00\x03\x00\x00\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x04\x00\xff\xff\x03\x00\xff\xff\x07\x00\xff\xff\x02\x00\x0f\x00\x00\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x03\x00\x05\x00\x03\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\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x0a\x00\x00\x00\x00\x00\xff\xff\x07\x00\x0a\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x0b\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x08\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x10\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7c\x00\x3e\x00\x5d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\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\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\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\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\xff\xff\xff\xff\xd7\x00\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\xff\xff\xff\xff\xf7\x00\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\x2d\x00\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\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\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_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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7c\x00\x5d\x00\x3e\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\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\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\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\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\xff\xff\xff\xff\xd7\x00\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\xff\xff\xff\xff\xf7\x00\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\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# alex_deflt :: AlexAddr -alex_deflt = AlexA# "\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +alex_deflt = AlexA# "\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,20) [[],[],[(AlexAccSkip)],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[],[],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_4))],[],[],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_6))],[],[],[]] +alex_accept = listArray (0::Int,17) [[],[],[(AlexAccSkip)],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[],[],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_4))],[],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_6))],[],[],[]] {-# LINE 33 "GF/GFCC/LexGFCC.x" #-} tok f p s = f p s @@ -158,9 +158,18 @@ alex_action_6 = tok (\p s -> PT p (TD $ share s)) -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine + {-# LINE 35 "GenericTemplate.hs" #-} -{-# LINE 45 "GenericTemplate.hs" #-} + + + + + + + + + data AlexAddr = AlexA# Addr# @@ -226,7 +235,7 @@ data AlexReturn a | AlexSkip !AlexInput !Int | AlexToken !AlexInput !Int a --- alexScan :: AlexInput -> StartCode -> AlexReturn a +-- alexScan :: AlexInput -> StartCode -> Maybe (AlexInput,Int,act) alexScan input (I# (sc)) = alexScanUser undefined input (I# (sc)) @@ -263,6 +272,11 @@ alexScanUser user input (I# (sc)) alex_scan_tkn user orig_input len input s last_acc = input `seq` -- strict in the input + case s of + -1# -> (last_acc, input) + _ -> alex_scan_tkn' user orig_input len input s last_acc + +alex_scan_tkn' user orig_input len input s last_acc = let new_acc = check_accs (alex_accept `quickIndex` (I# (s))) in @@ -283,12 +297,7 @@ alex_scan_tkn user orig_input len input s last_acc = 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 + alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc where check_accs [] = last_acc diff --git a/src/GF/GFCC/Macros.hs b/src/GF/GFCC/Macros.hs index a23c4c021..2fe6770f1 100644 --- a/src/GF/GFCC/Macros.hs +++ b/src/GF/GFCC/Macros.hs @@ -53,7 +53,10 @@ wildCId :: CId wildCId = CId "_" exp0 :: Exp -exp0 = Tr (AM 0) [] +exp0 = tree (AM 0) [] + +primNotion :: Exp +primNotion = EEq [] term0 :: CId -> Term term0 _ = TM diff --git a/src/GF/GFCC/ParGFCC.hs b/src/GF/GFCC/ParGFCC.hs index f5d244ed2..c512b4f74 100644 --- a/src/GF/GFCC/ParGFCC.hs +++ b/src/GF/GFCC/ParGFCC.hs @@ -4,18 +4,14 @@ module GF.GFCC.ParGFCC where import GF.GFCC.AbsGFCC import GF.GFCC.LexGFCC import GF.GFCC.ErrM -#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.16 +-- parser produced by Happy Version 1.15 newtype HappyAbsSyn = HappyAbsSyn (() -> ()) happyIn30 :: (String) -> (HappyAbsSyn ) @@ -212,19 +208,19 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x3e\x01\x3f\x01\x3b\x01\x39\x01\x39\x01\x39\x01\x39\x01\x0b\x00\xbb\x00\x4a\x00\x0a\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x01\x0a\x00\x00\x00\x00\x00\x36\x01\x37\x01\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x34\x01\x41\x00\xb3\x00\x34\x01\x2b\x01\x33\x01\x00\x00\x32\x01\x67\x00\x31\x01\xa6\x00\x01\x00\x00\x00\x00\x00\x00\x00\x30\x01\x00\x00\x2d\x01\x0a\x00\x02\x00\x00\x00\x2f\x01\x0a\x00\x00\x00\x2c\x01\x2a\x01\x41\x00\x41\x00\x41\x00\x41\x00\xff\xff\x2a\x01\x2a\x01\x2e\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x27\x01\x28\x01\x00\x00\x25\x01\x4a\x00\x00\x00\x26\x01\x24\x01\x23\x01\x00\x00\x22\x01\x21\x01\x20\x01\x1f\x01\x1e\x01\x1b\x01\x1d\x01\x19\x01\x19\x01\x18\x01\x17\x01\x1a\x01\x02\x01\x11\x01\x1c\x01\x0e\x01\x15\x01\x0d\x01\x00\x00\x0b\x00\x0a\x00\x04\x00\xff\x00\xff\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x14\x01\x13\x01\x12\x01\x10\x01\x0f\x01\xfe\x00\x05\x01\x00\x00\x08\x01\x01\x01\xb5\x00\x0a\x01\x0a\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x0b\x00\xbb\x00\x0c\x01\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xb7\x00\x00\x00\x09\x01\x00\x00\xf8\x00\x00\x00\x04\x01\xfe\xff\x00\x00\xf7\x00\x00\x00\xf6\x00\x07\x01\x1e\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x4a\x00\x00\x00\x5d\x00\x06\x01\x03\x01\x00\x00\x00\x00\xfc\x00\x00\x00\xbb\x00\x00\x00\x6a\x00\x00\x00\x00\x01\xf4\x00\x60\x00\x00\x00\x96\x00\xfa\x00\x00\x00\x00\x00\xa4\x00\x00\x00\xfb\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\xf1\x00\x00\x00\x93\x00\x00\x00\xb8\x00\x00\x00\xfc\xff\x00\x00\x00\x00"# +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"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\xf9\x00\xf3\x00\xf5\x00\xd0\x00\xc1\x00\x5e\x00\xa5\x00\x59\x00\xf0\x00\xa0\x00\x8a\x00\x0e\x00\x6e\x00\xee\x00\xef\x00\xed\x00\xe6\x00\xe4\x00\x5b\x00\x51\x00\xdf\x00\xdd\x00\x99\x00\x13\x00\xbc\x00\xd7\x00\xd5\x00\x00\x00\x00\x00\xb6\x00\x10\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\xf2\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x39\x00\x00\x00\xec\x00\x33\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x46\x00\xc0\x00\xca\x00\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x00\xe8\x00\x00\x00\x00\x00\x92\x00\xd3\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\xe5\x00\xc7\x00\x50\x00\x7a\x00\x10\x00\xe0\x00\x5a\x00\xb4\x00\xd1\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\xce\x00\x97\x00\x42\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x76\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\xd4\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\xcc\x00\x25\x00\x00\x00\xc8\x00\xcb\x00\x00\x00\xcd\x00\xc4\x00\x8e\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\xc9\x00\x00\x00\xc8\x00\xa2\x00\x00\x00\xa7\x00\x46\x00\x95\x00\x73\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x31\x00\x00\x00\x85\x00\xc0\x00\x58\x00\xa1\x00\x00\x00\x14\x00\x23\x00\xa1\x00\x06\x00\xa1\x00\xf2\xff\xa1\x00\x00\x00\x00\x00"# +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"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xff\xc1\xff\xbf\xff\xbd\xff\xbb\xff\xb9\xff\xb7\xff\xb4\xff\xb1\xff\xaf\xff\xaf\xff\x00\x00\xb1\xff\xa8\xff\xa6\xff\x00\x00\xe4\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xff\xac\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xff\xc9\xff\xc8\xff\xb3\xff\xcb\xff\x00\x00\xb4\xff\xb4\xff\xc5\xff\x00\x00\xb4\xff\xe3\xff\xb6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xd2\xff\xd1\xff\xd4\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x00\x00\x00\x00\xa6\xff\x00\x00\x00\x00\x00\x00\xa8\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\xa8\xff\xb7\xff\x00\x00\x00\x00\x00\x00\xb7\xff\xb1\xff\xb1\xff\xcf\xff\xd0\xff\xaf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\x00\x00\xca\xff\x00\x00\xc4\xff\xb3\xff\x00\x00\xb4\xff\xb0\xff\xae\xff\xaf\xff\xad\xff\xb7\xff\x00\x00\x00\x00\x00\x00\xa5\xff\xa7\xff\xa9\xff\xaa\xff\xab\xff\xc2\xff\xb2\xff\xcc\xff\x00\x00\x00\x00\xce\xff\xc7\xff\xb5\xff\xb8\xff\xba\xff\xbc\xff\xbe\xff\xc0\xff\x00\x00\x00\x00\xd5\xff\x00\x00\xd9\xff\x00\x00\xda\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xbf\xff\xb7\xff\x00\x00\x00\x00\xbf\xff\xdc\xff\x00\x00\xb1\xff\x00\x00\xd7\xff\xad\xff\x00\x00\x00\x00\xcd\xff\xc6\xff\x00\x00\xb1\xff\xd8\xff\xdb\xff\x00\x00\xbb\xff\x00\x00\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xc3\xff\xd6\xff\x00\x00\xbd\xff\x00\x00\xc1\xff\x00\x00\xb9\xff\x00\x00\xdf\xff\xe0\xff\xb9\xff\x00\x00\xb9\xff\x00\x00\xb9\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\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"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x05\x00\x01\x00\x01\x00\x07\x00\x04\x00\x08\x00\x15\x00\x07\x00\x07\x00\x05\x00\x01\x00\x08\x00\x0b\x00\x00\x00\x0d\x00\x0e\x00\x07\x00\x07\x00\x03\x00\x15\x00\x0b\x00\x03\x00\x0d\x00\x0e\x00\x07\x00\x06\x00\x15\x00\x1f\x00\x0f\x00\x22\x00\x1d\x00\x22\x00\x1f\x00\x20\x00\x24\x00\x22\x00\x24\x00\x22\x00\x22\x00\x03\x00\x1f\x00\x20\x00\x1b\x00\x22\x00\x22\x00\x1b\x00\x00\x00\x01\x00\x1f\x00\x03\x00\x00\x00\x01\x00\x17\x00\x03\x00\x1a\x00\x15\x00\x00\x00\x01\x00\x16\x00\x03\x00\x0e\x00\x0f\x00\x22\x00\x22\x00\x0e\x00\x0f\x00\x03\x00\x13\x00\x03\x00\x17\x00\x0e\x00\x0f\x00\x03\x00\x17\x00\x00\x00\x01\x00\x0b\x00\x03\x00\x09\x00\x17\x00\x00\x00\x01\x00\x03\x00\x03\x00\x0b\x00\x16\x00\x0d\x00\x16\x00\x0e\x00\x0f\x00\x0b\x00\x03\x00\x03\x00\x03\x00\x0e\x00\x0f\x00\x03\x00\x17\x00\x22\x00\x0b\x00\x24\x00\x16\x00\x09\x00\x17\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x15\x00\x11\x00\x16\x00\x16\x00\x16\x00\x00\x00\x01\x00\x14\x00\x03\x00\x00\x00\x01\x00\x11\x00\x03\x00\x00\x00\x01\x00\x1f\x00\x03\x00\x10\x00\x0c\x00\x0e\x00\x0f\x00\x22\x00\x19\x00\x0e\x00\x0f\x00\x1f\x00\x19\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x22\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x11\x00\x01\x00\x0e\x00\x0f\x00\x04\x00\x0d\x00\x10\x00\x07\x00\x08\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x19\x00\x1a\x00\x10\x00\x03\x00\x10\x00\x15\x00\x0a\x00\x05\x00\x0d\x00\x1b\x00\x0a\x00\x19\x00\x1a\x00\x19\x00\x1a\x00\x01\x00\x22\x00\x14\x00\x04\x00\x01\x00\x02\x00\x07\x00\x04\x00\x01\x00\x0a\x00\x07\x00\x04\x00\x1c\x00\x0c\x00\x07\x00\x03\x00\x03\x00\x1f\x00\x22\x00\x12\x00\x08\x00\x08\x00\x24\x00\x03\x00\x18\x00\x03\x00\x18\x00\x07\x00\x1c\x00\x07\x00\x1c\x00\x03\x00\x18\x00\x0c\x00\x1e\x00\x07\x00\x1c\x00\x0c\x00\x22\x00\x18\x00\x18\x00\x12\x00\x12\x00\x03\x00\x0c\x00\x00\x00\x0c\x00\x03\x00\x1d\x00\x00\x00\x03\x00\x19\x00\x19\x00\x18\x00\x03\x00\x03\x00\x01\x00\x01\x00\x0c\x00\x1d\x00\x06\x00\x1e\x00\x00\x00\x1e\x00\x1d\x00\x0c\x00\x19\x00\x18\x00\x05\x00\x15\x00\x14\x00\x06\x00\x0c\x00\x04\x00\x03\x00\x11\x00\x13\x00\x12\x00\x08\x00\x03\x00\x08\x00\x02\x00\x15\x00\x13\x00\x02\x00\x02\x00\x06\x00\x02\x00\x02\x00\x16\x00\x03\x00\x03\x00\x08\x00\x10\x00\x03\x00\x03\x00\x0f\x00\x03\x00\x03\x00\x03\x00\x22\x00\x04\x00\x22\x00\x05\x00\x1f\x00\x01\x00\x04\x00\xff\xff\x22\x00\x22\x00\xff\xff\x06\x00\x16\x00\x07\x00\x24\x00\x01\x00\x06\x00\x09\x00\xff\xff\xff\xff\x1f\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x24\x00\xff\xff\x24\x00\x12\x00\x24\x00\xff\xff\xff\xff\x12\x00\x24\x00\x12\x00\x24\x00\xff\xff\x20\x00\x24\x00\x24\x00\x22\x00\x1d\x00\xff\xff\x24\x00\x24\x00\x20\x00\x15\x00\x24\x00\x13\x00\xff\xff\x1f\x00\x24\x00\x18\x00\x24\x00\x24\x00\x22\x00\x24\x00\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"# +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"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\xcb\x00\x4a\x00\x30\x00\xa9\x00\x4b\x00\xa4\x00\xc9\x00\x4c\x00\x31\x00\xc3\x00\x30\x00\x99\x00\x32\x00\x29\x00\x33\x00\x34\x00\x31\x00\x4f\x00\x21\x00\x59\x00\x32\x00\x21\x00\x33\x00\x34\x00\x3f\x00\x6c\x00\xc7\x00\x1d\x00\x3d\x00\x24\x00\x6c\x00\x24\x00\x1d\x00\x35\x00\xff\xff\x24\x00\xff\xff\x24\x00\x24\x00\x35\x00\x1d\x00\x35\x00\x7f\x00\x24\x00\x24\x00\x22\x00\x29\x00\x2a\x00\x1d\x00\x2b\x00\x29\x00\x2a\x00\xb3\x00\x2b\x00\xc5\x00\xc5\x00\x29\x00\x2a\x00\xa0\x00\x2b\x00\x2c\x00\x2d\x00\x24\x00\x24\x00\x2c\x00\x2d\x00\x35\x00\xbf\x00\x35\x00\x87\x00\x2c\x00\x2d\x00\x51\x00\x72\x00\x75\x00\x2a\x00\x84\x00\x2b\x00\x6f\x00\x74\x00\x29\x00\x2a\x00\x35\x00\x2b\x00\x46\x00\x8d\x00\x47\x00\x4d\x00\x76\x00\x2d\x00\x9a\x00\x35\x00\x35\x00\x35\x00\x2c\x00\x2d\x00\x51\x00\x77\x00\x24\x00\x4c\x00\xff\xff\x4d\x00\x52\x00\x2e\x00\x1d\x00\x35\x00\x48\x00\x24\x00\xc1\x00\xaf\xff\x4d\x00\x96\x00\x36\x00\x29\x00\x2a\x00\xbd\x00\x2b\x00\x29\x00\x2a\x00\x7c\x00\x2b\x00\x29\x00\x2a\x00\xaf\xff\x2b\x00\x3c\x00\x79\x00\xa9\x00\x2d\x00\x24\x00\xb7\x00\xaa\x00\x2d\x00\x1d\x00\x25\x00\x99\x00\x2d\x00\x29\x00\x2a\x00\x24\x00\x2b\x00\x40\x00\x41\x00\x42\x00\x43\x00\x40\x00\x41\x00\x42\x00\x43\x00\xc3\x00\x4a\x00\x3f\x00\x2d\x00\x4b\x00\xae\x00\x24\x00\x4c\x00\xbb\x00\x68\x00\x40\x00\x41\x00\x42\x00\x43\x00\x4f\x00\x25\x00\xad\x00\x24\x00\x4f\x00\x24\x00\xbb\x00\x70\x00\xbd\x00\x44\x00\xc7\x00\x50\x00\x25\x00\x85\x00\x25\x00\x26\x00\x4a\x00\x24\x00\xb5\x00\x4b\x00\x4a\x00\xa8\x00\x4c\x00\x4b\x00\x4a\x00\x7f\x00\x4c\x00\x4b\x00\xc1\x00\x8a\x00\x4c\x00\x53\x00\x53\x00\x1d\x00\x24\x00\x79\x00\x6e\x00\x54\x00\xff\xff\x55\x00\x1f\x00\x55\x00\x1f\x00\x6d\x00\x80\x00\x6d\x00\x80\x00\x55\x00\x1f\x00\x79\x00\xc9\x00\x56\x00\x20\x00\xb0\x00\x24\x00\xb7\x00\xaf\x00\xb1\x00\xa1\x00\xa5\x00\x79\x00\x7a\x00\x83\x00\x97\x00\x9b\x00\x9c\x00\x5d\x00\x86\x00\x93\x00\x94\x00\x5f\x00\x69\x00\x6a\x00\x73\x00\x79\x00\x64\x00\x6c\x00\x67\x00\x7a\x00\x1d\x00\x1e\x00\x79\x00\x27\x00\x28\x00\x59\x00\x37\x00\x38\x00\x57\x00\x48\x00\x5b\x00\xbf\x00\x3b\x00\x39\x00\x3a\x00\xba\x00\xb5\x00\xb9\x00\xac\x00\x59\x00\x5b\x00\xad\x00\xb4\x00\xa5\x00\xa7\x00\x89\x00\xa3\x00\x82\x00\x83\x00\x8c\x00\x8b\x00\x8f\x00\x90\x00\x8d\x00\x91\x00\x92\x00\x93\x00\x24\x00\x9e\x00\x24\x00\x96\x00\x1d\x00\xa0\x00\x5f\x00\x00\x00\x24\x00\x24\x00\x00\x00\x61\x00\x9f\x00\x62\x00\xff\xff\x67\x00\x64\x00\x63\x00\x00\x00\x00\x00\x1d\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\xff\xff\x00\x00\xff\xff\x72\x00\xff\xff\x00\x00\x00\x00\x79\x00\xff\xff\x7d\x00\xff\xff\x00\x00\x35\x00\xff\xff\xff\xff\x24\x00\x6c\x00\x00\x00\xff\xff\xff\xff\x35\x00\x59\x00\xff\xff\x5b\x00\x00\x00\x1d\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x24\x00\xad\xff\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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"# happyReduceArr = array (27, 90) [ (27 , happyReduce_27), @@ -293,31 +289,31 @@ happyReduceArr = array (27, 90) [ (90 , happyReduce_90) ] -happy_n_terms = 37 :: Int +happy_n_terms = 38 :: Int happy_n_nonterms = 31 :: Int -happyReduce_27 = happySpecReduce_1 0# happyReduction_27 +happyReduce_27 = happySpecReduce_1 0# happyReduction_27 happyReduction_27 happy_x_1 = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) -> happyIn30 (happy_var_1 )} -happyReduce_28 = happySpecReduce_1 1# happyReduction_28 +happyReduce_28 = happySpecReduce_1 1# happyReduction_28 happyReduction_28 happy_x_1 = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) -> happyIn31 ((read happy_var_1) :: Integer )} -happyReduce_29 = happySpecReduce_1 2# happyReduction_29 +happyReduce_29 = happySpecReduce_1 2# happyReduction_29 happyReduction_29 happy_x_1 = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) -> happyIn32 ((read happy_var_1) :: Double )} -happyReduce_30 = happySpecReduce_1 3# happyReduction_30 +happyReduce_30 = happySpecReduce_1 3# happyReduction_30 happyReduction_30 happy_x_1 = case happyOutTok happy_x_1 of { (PT _ (T_CId happy_var_1)) -> happyIn33 @@ -390,7 +386,7 @@ happyReduction_33 (happy_x_16 `HappyStk` (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}}}}}}} -happyReduce_34 = happySpecReduce_3 7# happyReduction_34 +happyReduce_34 = happySpecReduce_3 7# happyReduction_34 happyReduction_34 happy_x_3 happy_x_2 happy_x_1 @@ -409,7 +405,7 @@ happyReduction_35 (happy_x_4 `HappyStk` = case happyOut33 happy_x_1 of { happy_var_1 -> case happyOut59 happy_x_3 of { happy_var_3 -> happyIn38 - (Cat happy_var_1 (reverse happy_var_3) + (Cat happy_var_1 happy_var_3 ) `HappyStk` happyRest}} happyReduce_36 = happyReduce 5# 9# happyReduction_36 @@ -426,7 +422,7 @@ happyReduction_36 (happy_x_5 `HappyStk` (Fun happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} -happyReduce_37 = happySpecReduce_3 10# happyReduction_37 +happyReduce_37 = happySpecReduce_3 10# happyReduction_37 happyReduction_37 happy_x_3 happy_x_2 happy_x_1 @@ -436,18 +432,8 @@ happyReduction_37 happy_x_3 (Lin happy_var_1 happy_var_3 )}} -happyReduce_38 = happySpecReduce_3 11# happyReduction_38 -happyReduction_38 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut52 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - happyIn41 - (Typ happy_var_1 happy_var_3 - )}} - -happyReduce_39 = happyReduce 5# 11# happyReduction_39 -happyReduction_39 (happy_x_5 `HappyStk` +happyReduce_38 = happyReduce 5# 11# happyReduction_38 +happyReduction_38 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -457,23 +443,11 @@ happyReduction_39 (happy_x_5 `HappyStk` case happyOut33 happy_x_4 of { happy_var_4 -> case happyOut54 happy_x_5 of { happy_var_5 -> happyIn41 - (DTyp (reverse happy_var_2) happy_var_4 (reverse happy_var_5) + (DTyp happy_var_2 happy_var_4 (reverse happy_var_5) ) `HappyStk` happyRest}}} -happyReduce_40 = happyReduce 4# 12# happyReduction_40 -happyReduction_40 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut43 happy_x_2 of { happy_var_2 -> - case happyOut54 happy_x_3 of { happy_var_3 -> - happyIn42 - (Tr happy_var_2 (reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_41 = happyReduce 7# 12# happyReduction_41 -happyReduction_41 (happy_x_7 `HappyStk` +happyReduce_39 = happyReduce 7# 12# happyReduction_39 +happyReduction_39 (happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` @@ -488,8 +462,8 @@ happyReduction_41 (happy_x_7 `HappyStk` (DTr happy_var_3 happy_var_5 (reverse happy_var_6) ) `HappyStk` happyRest}}} -happyReduce_42 = happySpecReduce_3 12# happyReduction_42 -happyReduction_42 happy_x_3 +happyReduce_40 = happySpecReduce_3 12# happyReduction_40 +happyReduction_40 happy_x_3 happy_x_2 happy_x_1 = case happyOut60 happy_x_2 of { happy_var_2 -> @@ -497,52 +471,52 @@ happyReduction_42 happy_x_3 (EEq (reverse happy_var_2) )} -happyReduce_43 = happySpecReduce_1 13# happyReduction_43 -happyReduction_43 happy_x_1 +happyReduce_41 = happySpecReduce_1 13# happyReduction_41 +happyReduction_41 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> happyIn43 (AC happy_var_1 )} -happyReduce_44 = happySpecReduce_1 13# happyReduction_44 -happyReduction_44 happy_x_1 +happyReduce_42 = happySpecReduce_1 13# happyReduction_42 +happyReduction_42 happy_x_1 = case happyOut30 happy_x_1 of { happy_var_1 -> happyIn43 (AS happy_var_1 )} -happyReduce_45 = happySpecReduce_1 13# happyReduction_45 -happyReduction_45 happy_x_1 +happyReduce_43 = happySpecReduce_1 13# happyReduction_43 +happyReduction_43 happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> happyIn43 (AI happy_var_1 )} -happyReduce_46 = happySpecReduce_1 13# happyReduction_46 -happyReduction_46 happy_x_1 +happyReduce_44 = happySpecReduce_1 13# happyReduction_44 +happyReduction_44 happy_x_1 = case happyOut32 happy_x_1 of { happy_var_1 -> happyIn43 (AF happy_var_1 )} -happyReduce_47 = happySpecReduce_2 13# happyReduction_47 -happyReduction_47 happy_x_2 +happyReduce_45 = happySpecReduce_2 13# happyReduction_45 +happyReduction_45 happy_x_2 happy_x_1 = case happyOut31 happy_x_2 of { happy_var_2 -> happyIn43 (AM happy_var_2 )} -happyReduce_48 = happySpecReduce_2 13# happyReduction_48 -happyReduction_48 happy_x_2 +happyReduce_46 = happySpecReduce_2 13# happyReduction_46 +happyReduction_46 happy_x_2 happy_x_1 = case happyOut33 happy_x_2 of { happy_var_2 -> happyIn43 (AV happy_var_2 )} -happyReduce_49 = happySpecReduce_3 14# happyReduction_49 -happyReduction_49 happy_x_3 +happyReduce_47 = happySpecReduce_3 14# happyReduction_47 +happyReduction_47 happy_x_3 happy_x_2 happy_x_1 = case happyOut53 happy_x_2 of { happy_var_2 -> @@ -550,8 +524,8 @@ happyReduction_49 happy_x_3 (R happy_var_2 )} -happyReduce_50 = happyReduce 5# 14# happyReduction_50 -happyReduction_50 (happy_x_5 `HappyStk` +happyReduce_48 = happyReduce 5# 14# happyReduction_48 +happyReduction_48 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -563,8 +537,8 @@ happyReduction_50 (happy_x_5 `HappyStk` (P happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_51 = happySpecReduce_3 14# happyReduction_51 -happyReduction_51 happy_x_3 +happyReduce_49 = happySpecReduce_3 14# happyReduction_49 +happyReduction_49 happy_x_3 happy_x_2 happy_x_1 = case happyOut53 happy_x_2 of { happy_var_2 -> @@ -572,37 +546,37 @@ happyReduction_51 happy_x_3 (S happy_var_2 )} -happyReduce_52 = happySpecReduce_1 14# happyReduction_52 -happyReduction_52 happy_x_1 +happyReduce_50 = happySpecReduce_1 14# happyReduction_50 +happyReduction_50 happy_x_1 = case happyOut45 happy_x_1 of { happy_var_1 -> happyIn44 (K happy_var_1 )} -happyReduce_53 = happySpecReduce_2 14# happyReduction_53 -happyReduction_53 happy_x_2 +happyReduce_51 = happySpecReduce_2 14# happyReduction_51 +happyReduction_51 happy_x_2 happy_x_1 = case happyOut31 happy_x_2 of { happy_var_2 -> happyIn44 (V (fromInteger happy_var_2) --H )} -happyReduce_54 = happySpecReduce_1 14# happyReduction_54 -happyReduction_54 happy_x_1 +happyReduce_52 = happySpecReduce_1 14# happyReduction_52 +happyReduction_52 happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> happyIn44 (C (fromInteger happy_var_1) --H )} -happyReduce_55 = happySpecReduce_1 14# happyReduction_55 -happyReduction_55 happy_x_1 +happyReduce_53 = happySpecReduce_1 14# happyReduction_53 +happyReduction_53 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> happyIn44 (F happy_var_1 )} -happyReduce_56 = happySpecReduce_3 14# happyReduction_56 -happyReduction_56 happy_x_3 +happyReduce_54 = happySpecReduce_3 14# happyReduction_54 +happyReduction_54 happy_x_3 happy_x_2 happy_x_1 = case happyOut53 happy_x_2 of { happy_var_2 -> @@ -610,8 +584,8 @@ happyReduction_56 happy_x_3 (FV happy_var_2 )} -happyReduce_57 = happyReduce 5# 14# happyReduction_57 -happyReduction_57 (happy_x_5 `HappyStk` +happyReduce_55 = happyReduce 5# 14# happyReduction_55 +happyReduction_55 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -623,21 +597,34 @@ happyReduction_57 (happy_x_5 `HappyStk` (W happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_58 = happySpecReduce_1 14# happyReduction_58 -happyReduction_58 happy_x_1 +happyReduce_56 = happySpecReduce_1 14# happyReduction_56 +happyReduction_56 happy_x_1 = happyIn44 (TM ) -happyReduce_59 = happySpecReduce_1 15# happyReduction_59 -happyReduction_59 happy_x_1 +happyReduce_57 = happyReduce 5# 14# happyReduction_57 +happyReduction_57 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut44 happy_x_2 of { happy_var_2 -> + case happyOut44 happy_x_4 of { happy_var_4 -> + happyIn44 + (RP happy_var_2 happy_var_4 + ) `HappyStk` happyRest}} + +happyReduce_58 = happySpecReduce_1 15# happyReduction_58 +happyReduction_58 happy_x_1 = case happyOut30 happy_x_1 of { happy_var_1 -> happyIn45 (KS happy_var_1 )} -happyReduce_60 = happyReduce 7# 15# happyReduction_60 -happyReduction_60 (happy_x_7 `HappyStk` +happyReduce_59 = happyReduce 7# 15# happyReduction_59 +happyReduction_59 (happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` @@ -651,8 +638,8 @@ happyReduction_60 (happy_x_7 `HappyStk` (KP (reverse happy_var_3) happy_var_5 ) `HappyStk` happyRest}} -happyReduce_61 = happySpecReduce_3 16# happyReduction_61 -happyReduction_61 happy_x_3 +happyReduce_60 = happySpecReduce_3 16# happyReduction_60 +happyReduction_60 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -661,13 +648,13 @@ happyReduction_61 happy_x_3 (Var (reverse happy_var_1) (reverse happy_var_3) )}} -happyReduce_62 = happySpecReduce_0 17# happyReduction_62 -happyReduction_62 = happyIn47 +happyReduce_61 = happySpecReduce_0 17# happyReduction_61 +happyReduction_61 = happyIn47 ([] ) -happyReduce_63 = happySpecReduce_3 17# happyReduction_63 -happyReduction_63 happy_x_3 +happyReduce_62 = happySpecReduce_3 17# happyReduction_62 +happyReduction_62 happy_x_3 happy_x_2 happy_x_1 = case happyOut47 happy_x_1 of { happy_var_1 -> @@ -676,13 +663,13 @@ happyReduction_63 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_64 = happySpecReduce_0 18# happyReduction_64 -happyReduction_64 = happyIn48 +happyReduce_63 = happySpecReduce_0 18# happyReduction_63 +happyReduction_63 = happyIn48 ([] ) -happyReduce_65 = happySpecReduce_3 18# happyReduction_65 -happyReduction_65 happy_x_3 +happyReduce_64 = happySpecReduce_3 18# happyReduction_64 +happyReduction_64 happy_x_3 happy_x_2 happy_x_1 = case happyOut48 happy_x_1 of { happy_var_1 -> @@ -691,13 +678,13 @@ happyReduction_65 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_66 = happySpecReduce_0 19# happyReduction_66 -happyReduction_66 = happyIn49 +happyReduce_65 = happySpecReduce_0 19# happyReduction_65 +happyReduction_65 = happyIn49 ([] ) -happyReduce_67 = happySpecReduce_3 19# happyReduction_67 -happyReduction_67 happy_x_3 +happyReduce_66 = happySpecReduce_3 19# happyReduction_66 +happyReduction_66 happy_x_3 happy_x_2 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> @@ -706,13 +693,13 @@ happyReduction_67 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_68 = happySpecReduce_0 20# happyReduction_68 -happyReduction_68 = happyIn50 +happyReduce_67 = happySpecReduce_0 20# happyReduction_67 +happyReduction_67 = happyIn50 ([] ) -happyReduce_69 = happySpecReduce_3 20# happyReduction_69 -happyReduction_69 happy_x_3 +happyReduce_68 = happySpecReduce_3 20# happyReduction_68 +happyReduction_68 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> @@ -721,13 +708,13 @@ happyReduction_69 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_70 = happySpecReduce_0 21# happyReduction_70 -happyReduction_70 = happyIn51 +happyReduce_69 = happySpecReduce_0 21# happyReduction_69 +happyReduction_69 = happyIn51 ([] ) -happyReduce_71 = happySpecReduce_3 21# happyReduction_71 -happyReduction_71 happy_x_3 +happyReduce_70 = happySpecReduce_3 21# happyReduction_70 +happyReduction_70 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_1 of { happy_var_1 -> @@ -736,20 +723,20 @@ happyReduction_71 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_72 = happySpecReduce_0 22# happyReduction_72 -happyReduction_72 = happyIn52 +happyReduce_71 = happySpecReduce_0 22# happyReduction_71 +happyReduction_71 = happyIn52 ([] ) -happyReduce_73 = happySpecReduce_1 22# happyReduction_73 -happyReduction_73 happy_x_1 +happyReduce_72 = happySpecReduce_1 22# happyReduction_72 +happyReduction_72 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> happyIn52 ((:[]) happy_var_1 )} -happyReduce_74 = happySpecReduce_3 22# happyReduction_74 -happyReduction_74 happy_x_3 +happyReduce_73 = happySpecReduce_3 22# happyReduction_73 +happyReduction_73 happy_x_3 happy_x_2 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> @@ -758,20 +745,20 @@ happyReduction_74 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_75 = happySpecReduce_0 23# happyReduction_75 -happyReduction_75 = happyIn53 +happyReduce_74 = happySpecReduce_0 23# happyReduction_74 +happyReduction_74 = happyIn53 ([] ) -happyReduce_76 = happySpecReduce_1 23# happyReduction_76 -happyReduction_76 happy_x_1 +happyReduce_75 = happySpecReduce_1 23# happyReduction_75 +happyReduction_75 happy_x_1 = case happyOut44 happy_x_1 of { happy_var_1 -> happyIn53 ((:[]) happy_var_1 )} -happyReduce_77 = happySpecReduce_3 23# happyReduction_77 -happyReduction_77 happy_x_3 +happyReduce_76 = happySpecReduce_3 23# happyReduction_76 +happyReduction_76 happy_x_3 happy_x_2 happy_x_1 = case happyOut44 happy_x_1 of { happy_var_1 -> @@ -780,13 +767,13 @@ happyReduction_77 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_78 = happySpecReduce_0 24# happyReduction_78 -happyReduction_78 = happyIn54 +happyReduce_77 = happySpecReduce_0 24# happyReduction_77 +happyReduction_77 = happyIn54 ([] ) -happyReduce_79 = happySpecReduce_2 24# happyReduction_79 -happyReduction_79 happy_x_2 +happyReduce_78 = happySpecReduce_2 24# happyReduction_78 +happyReduction_78 happy_x_2 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> case happyOut42 happy_x_2 of { happy_var_2 -> @@ -794,13 +781,13 @@ happyReduction_79 happy_x_2 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_80 = happySpecReduce_0 25# happyReduction_80 -happyReduction_80 = happyIn55 +happyReduce_79 = happySpecReduce_0 25# happyReduction_79 +happyReduction_79 = happyIn55 ([] ) -happyReduce_81 = happySpecReduce_2 25# happyReduction_81 -happyReduction_81 happy_x_2 +happyReduce_80 = happySpecReduce_2 25# happyReduction_80 +happyReduction_80 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> case happyOut30 happy_x_2 of { happy_var_2 -> @@ -808,20 +795,20 @@ happyReduction_81 happy_x_2 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_82 = happySpecReduce_0 26# happyReduction_82 -happyReduction_82 = happyIn56 +happyReduce_81 = happySpecReduce_0 26# happyReduction_81 +happyReduction_81 = happyIn56 ([] ) -happyReduce_83 = happySpecReduce_1 26# happyReduction_83 -happyReduction_83 happy_x_1 +happyReduce_82 = happySpecReduce_1 26# happyReduction_82 +happyReduction_82 happy_x_1 = case happyOut46 happy_x_1 of { happy_var_1 -> happyIn56 ((:[]) happy_var_1 )} -happyReduce_84 = happySpecReduce_3 26# happyReduction_84 -happyReduction_84 happy_x_3 +happyReduce_83 = happySpecReduce_3 26# happyReduction_83 +happyReduction_83 happy_x_3 happy_x_2 happy_x_1 = case happyOut46 happy_x_1 of { happy_var_1 -> @@ -830,8 +817,8 @@ happyReduction_84 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_85 = happySpecReduce_3 27# happyReduction_85 -happyReduction_85 happy_x_3 +happyReduce_84 = happySpecReduce_3 27# happyReduction_84 +happyReduction_84 happy_x_3 happy_x_2 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> @@ -840,8 +827,8 @@ happyReduction_85 happy_x_3 (Hyp happy_var_1 happy_var_3 )}} -happyReduce_86 = happySpecReduce_3 28# happyReduction_86 -happyReduction_86 happy_x_3 +happyReduce_85 = happySpecReduce_3 28# happyReduction_85 +happyReduction_85 happy_x_3 happy_x_2 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> @@ -850,27 +837,34 @@ happyReduction_86 happy_x_3 (Equ (reverse happy_var_1) happy_var_3 )}} -happyReduce_87 = happySpecReduce_0 29# happyReduction_87 -happyReduction_87 = happyIn59 +happyReduce_86 = happySpecReduce_0 29# happyReduction_86 +happyReduction_86 = happyIn59 ([] ) -happyReduce_88 = happySpecReduce_3 29# happyReduction_88 +happyReduce_87 = happySpecReduce_1 29# happyReduction_87 +happyReduction_87 happy_x_1 + = case happyOut57 happy_x_1 of { happy_var_1 -> + happyIn59 + ((:[]) happy_var_1 + )} + +happyReduce_88 = happySpecReduce_3 29# happyReduction_88 happyReduction_88 happy_x_3 happy_x_2 happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_2 of { happy_var_2 -> + = case happyOut57 happy_x_1 of { happy_var_1 -> + case happyOut59 happy_x_3 of { happy_var_3 -> happyIn59 - (flip (:) happy_var_1 happy_var_2 + ((:) happy_var_1 happy_var_3 )}} -happyReduce_89 = happySpecReduce_0 30# happyReduction_89 +happyReduce_89 = happySpecReduce_0 30# happyReduction_89 happyReduction_89 = happyIn60 ([] ) -happyReduce_90 = happySpecReduce_3 30# happyReduction_90 +happyReduce_90 = happySpecReduce_3 30# happyReduction_90 happyReduction_90 happy_x_3 happy_x_2 happy_x_1 @@ -881,7 +875,7 @@ happyReduction_90 happy_x_3 )}} happyNewToken action sts stk [] = - happyDoAction 36# notHappyAtAll action sts stk [] + happyDoAction 37# (error "reading EOF!") action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in @@ -895,32 +889,33 @@ happyNewToken action sts stk (tk:tks) = PT _ (TS "[") -> cont 7#; PT _ (TS "]") -> cont 8#; PT _ (TS ":") -> cont 9#; - PT _ (TS "->") -> cont 10#; - PT _ (TS "?") -> cont 11#; - PT _ (TS "!") -> cont 12#; - PT _ (TS "$") -> cont 13#; - PT _ (TS "[|") -> cont 14#; - PT _ (TS "|]") -> cont 15#; - PT _ (TS "+") -> cont 16#; - PT _ (TS "/") -> cont 17#; + PT _ (TS "?") -> cont 10#; + PT _ (TS "!") -> cont 11#; + PT _ (TS "$") -> cont 12#; + PT _ (TS "[|") -> cont 13#; + PT _ (TS "|]") -> cont 14#; + PT _ (TS "+") -> cont 15#; + PT _ (TS "/") -> cont 16#; + PT _ (TS "@") -> cont 17#; PT _ (TS ",") -> cont 18#; - PT _ (TS "abstract") -> cont 19#; - PT _ (TS "cat") -> cont 20#; - PT _ (TS "concrete") -> cont 21#; - PT _ (TS "flags") -> cont 22#; - PT _ (TS "fun") -> cont 23#; - PT _ (TS "grammar") -> cont 24#; - PT _ (TS "lin") -> cont 25#; - PT _ (TS "lincat") -> cont 26#; - PT _ (TS "lindef") -> cont 27#; - PT _ (TS "oper") -> cont 28#; - PT _ (TS "pre") -> cont 29#; - PT _ (TS "printname") -> cont 30#; - PT _ (TL happy_dollar_dollar) -> cont 31#; - PT _ (TI happy_dollar_dollar) -> cont 32#; - PT _ (TD happy_dollar_dollar) -> cont 33#; - PT _ (T_CId happy_dollar_dollar) -> cont 34#; - _ -> cont 35#; + PT _ (TS "->") -> cont 19#; + PT _ (TS "abstract") -> cont 20#; + PT _ (TS "cat") -> cont 21#; + PT _ (TS "concrete") -> cont 22#; + PT _ (TS "flags") -> cont 23#; + PT _ (TS "fun") -> cont 24#; + PT _ (TS "grammar") -> cont 25#; + PT _ (TS "lin") -> cont 26#; + 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#; _ -> happyError' (tk:tks) } @@ -1019,7 +1014,6 @@ pListEquation tks = happySomeParser where happySeq = happyDontSeq - returnM :: a -> Err a returnM = return @@ -1039,7 +1033,8 @@ myLexer = tokens {-# LINE 1 "" #-} {-# LINE 1 "" #-} {-# LINE 1 "GenericTemplate.hs" #-} --- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp +-- $Id$ + {-# LINE 28 "GenericTemplate.hs" #-} @@ -1050,11 +1045,20 @@ data Happy_IntList = HappyCons Int# Happy_IntList + {-# LINE 49 "GenericTemplate.hs" #-} + {-# LINE 59 "GenericTemplate.hs" #-} -{-# LINE 68 "GenericTemplate.hs" #-} + + + + + + + + infixr 9 `HappyStk` data HappyStk a = HappyStk a (HappyStk a) @@ -1106,7 +1110,14 @@ happyDoAction i tk st action | check = indexShortOffAddr happyTable off_i | otherwise = indexShortOffAddr happyDefActions st -{-# LINE 127 "GenericTemplate.hs" #-} + + + + + + + + indexShortOffAddr (HappyA# arr) off = @@ -1188,24 +1199,10 @@ happyReduce k nt fn j tk st sts stk 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)) + happyThen1 (fn stk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) drop_stk = happyDropStk k stk -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 diff --git a/src/GF/GFCC/PrintGFCC.hs b/src/GF/GFCC/PrintGFCC.hs index de3482369..87d790d2a 100644 --- a/src/GF/GFCC/PrintGFCC.hs +++ b/src/GF/GFCC/PrintGFCC.hs @@ -75,6 +75,7 @@ instance Print Integer where instance Print Int where --H prt _ x = doc (shows x) --H + instance Print Double where prt _ x = doc (shows x) @@ -141,13 +142,11 @@ instance Print LinDef where instance Print Type where prt i e = case e of - Typ cids cid -> prPrec i 0 (concatD [prt 0 cids , doc (showString "->") , prt 0 cid]) DTyp hypos cid exps -> prPrec i 0 (concatD [doc (showString "[") , prt 0 hypos , doc (showString "]") , prt 0 cid , prt 0 exps]) instance Print Exp where prt i e = case e of - Tr atom exps -> prPrec i 0 (concatD [doc (showString "(") , prt 0 atom , prt 0 exps , doc (showString ")")]) DTr cids atom exps -> prPrec i 0 (concatD [doc (showString "[") , doc (showString "(") , prt 0 cids , doc (showString ")") , prt 0 atom , prt 0 exps , doc (showString "]")]) EEq equations -> prPrec i 0 (concatD [doc (showString "{") , prt 0 equations , doc (showString "}")]) @@ -177,6 +176,7 @@ instance Print Term where FV terms -> prPrec i 0 (concatD [doc (showString "[|") , prt 0 terms , doc (showString "|]")]) W str term -> prPrec i 0 (concatD [doc (showString "(") , prt 0 str , doc (showString "+") , prt 0 term , doc (showString ")")]) TM -> prPrec i 0 (concatD [doc (showString "?")]) + RP term0 term -> prPrec i 0 (concatD [doc (showString "(") , prt 0 term0 , doc (showString "@") , prt 0 term , doc (showString ")")]) prtList es = case es of [] -> (concatD []) @@ -204,7 +204,8 @@ instance Print Hypo where prtList es = case es of [] -> (concatD []) - x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs]) + [x] -> (concatD [prt 0 x]) + x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) instance Print Equation where prt i e = case e of diff --git a/src/GF/GFCC/SkelGFCC.hs b/src/GF/GFCC/SkelGFCC.hs index 7d5fb3eab..f9fffa217 100644 --- a/src/GF/GFCC/SkelGFCC.hs +++ b/src/GF/GFCC/SkelGFCC.hs @@ -51,13 +51,11 @@ transLinDef x = case x of transType :: Type -> Result transType x = case x of - Typ cids cid -> failure x DTyp hypos cid exps -> failure x transExp :: Exp -> Result transExp x = case x of - Tr atom exps -> failure x DTr cids atom exps -> failure x EEq equations -> failure x @@ -84,6 +82,7 @@ transTerm x = case x of FV terms -> failure x W str term -> failure x TM -> failure x + RP term0 term -> failure x transTokn :: Tokn -> Result diff --git a/src/GF/Infra/CompactPrint.hs b/src/GF/Infra/CompactPrint.hs index 56aaf4d64..eb964809f 100644 --- a/src/GF/Infra/CompactPrint.hs +++ b/src/GF/Infra/CompactPrint.hs @@ -1,11 +1,19 @@ module GF.Infra.CompactPrint where import Data.Char -compactPrint = tail . concat . map spaceIf . words +compactPrint = compactPrintCustom keywordGF (const False) -spaceIf w = case w of - _ | keyword w -> "\n" ++ w +compactPrintGFCC = compactPrintCustom (const False) keywordGFCC + +compactPrintCustom pre post = tail . concat . map (spaceIf pre post) . words + +spaceIf pre post w = case w of + _ | pre w -> "\n" ++ w + _ | post w -> w ++ "\n" c:cs | isAlpha c || isDigit c -> " " ++ w _ -> w -keyword w = elem w ["cat","fun","lin","lincat","lindef","oper","param"] +keywordGF w = elem w ["cat","fun","lin","lincat","lindef","oper","param"] +keywordGFCC w = + last w == ';' || + elem w ["flags","fun","cat","lin","oper","lincat","lindef","printname"] \ No newline at end of file