úÎYÃNÃ`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _ ,WMapping from types to the list of types (with specific constructor instantiations, the '[[Type]]') in the same binding group. `abcdefghiMap for looking up vars jThe next edge, parent and type klGraph of our type dependencies m8Edges can be Strong (direct) or Weak (through variable) noUniform representation of 'data' and  'newtype' pq/Find cyclic type dependencies (binding groups) rstuvwGet a unified type for 'data' and  'newtype' xyz{|}~€‚ƒ$Get the types of a type application „…† ‡ˆ‰Š‹ŒŽ    .  !"#$%&'()*+;Data type describing grammatical structures of data types, 5 including information about precedences. The type  DGrammar a * describes the grammar of the data type a. ,&A grammar consists of an environment ( ) with the * defined non-terminals and a reference ( ) to the  main non-terminal in the environment. -DClass of data types with typed grammar representation. It has to be + instantiated in order to use the function Text.GRead.gread. CInstances can be derived automatically using the functions defined  in the module Text.GRead.Derive. $For example, given the declarations   infixl 5 :<:  infixr 6 :>:, :*:   data T1 = T1 :<: T1  | T1 :>: T1  | C1   data T2 a = a :*: T2 a  | C2 the instances of - can be   _0 = Zero  _1 = Suc _0   instance Gram T1 where  grammar = DGrammar _0 envT1  % envT1 :: Env DGram ((),T1) ((),T1) " envT1 = consD (nonts _0) Empty  where  nonts _T1 = DLNontDefs  [ ( DRef (_T1, 5) 9 , DPS [ dNont (_T1, 5) .#. dTerm ":<:" .#. 7 dNont (_T1, 6) .#. dEnd infixL ]  )  , ( DRef (_T1, 6) 9 , DPS [ dNont (_T1, 7) .#. dTerm ":>:" .#. 8 dNont (_T1, 6) .#. dEnd infixR ]  )  , ( DRef (_T1,10) 7 , DPS [ dTerm "C1" .#. dEnd (const C1) 7 , dTerm "(" .#. dNont (_T1,0) .#. 3 dTerm ")" .#. dEnd parenT ]  )  ] $ infixL e1 _ e2 = e2 :<: e1 % infixR e1 _ e2 = e2 :>: e1  & instance Gram a => Gram (T2 a) where " grammar = DGrammar _0 envT2  / envT2 :: (Gram a) => Env DGram (((),a),T2 a) / (((),a),T2 a) " envT2 = consD (nonts _0 _1) $  consG grammar Empty  where ! nonts _T2 _A = DLNontDefs  [ ( DRef (_T2, 6) < , DPS [ dNont (_A, 7) .#. dTerm ":*:" .#. : dNont (_T2, 7) .#. dEnd infixT ]  )  , ( DRef (_T2,10) 7 , DPS [ dTerm "C2" .#. dEnd (const C2) : , dTerm "(" .#. dNont (_T2,0) .#. 6 dTerm ")" .#. dEnd parenT ]  )  ] % infixP e1 _ e2 = e2 :+: e1 & infixT e1 _ e2 = e2 :*: e1 @In case of mutually recursive datatypes, their definitions have 2 to be tupled together into a single environment. . The function .' returns the grammar representation of  the data type. /0123456789.  !"#$%&'()*+,-./0123456789.-.+,(*)&'$%!"# /012345  6789.    !"#"#$%%&''(*))*+,,-../0123456789:;<=>?@ABCDEFGHIJK:;<=>?@ABCDEFGHIJKABCD@EF=>?:;<GHIJK:;<;<=>?>?@ABCBCDEFGHIJK+‘L Derive a Text.GRead.GramA instance. This is a Template Haskell function. Usage example:  data T1 = C1 | C2 | C3  $(deriveGrammar ''T1) MSimpler version of L that doesn't do binding group O calculations. Use this for large types without cyclic references to other  types. 'For example, if you want to derive the  HDYRM.Gram for T3 and T4 $ below, you will need the normal L.  data T3 = T3 T4 | C3 data T4 = T4 T3 | C4 ’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹LMLMLM NOPQRSTUVWX NOPQRSTUVWX QRSTPUVNOWX NOOPQRRSTUVWXº»¼½Y¾¿ÀÁÂÃÄÅÆYYY ZÇÈÉÊËÌÍÎÏZZZ ÐÑÒ[Type of _ results. \]^Type of error repair messages. _The _+ reads input from a string, which must be - completely consumed by the input process.  Returns Ok value on a successful parse.  Otherwise returns Rep value msgs , where the value 1 results of parsing a repaired input. The list msgs  contains the " corrections" done to the input. For example, a Ó-like implementation can be: ! read :: (Gram a) => String -> a " read input = case gread input of # Ok a -> a 0 Rep _ (m:_) -> error $ show m ÔÕÖ×3  !"#$%&'()*+,-./0123456789[\]^__^[]\[]\\]^_Ø     !"##$%&'()*+,--../01223456789:;<=>?@@ABBCDEEFGHIJKLMNOPQQRSSTUVWXYZ[ \ ] ^ _ `abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…††‡ˆ‰Š‹ŒyŽŽ‘’‡“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ‹¶·¸¸¹¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊË Ì Í ÎÏÐÑ Ò Ó Ô ÕÖChristmasTree-0.2Text.GRead.Derive.BindingGroup Text.GShowText.GRead.Grammar Text.GRead.Transformations.GroupText.GRead.Derive$Text.GRead.Transformations.GramTrafo#Text.GRead.Transformations.LeftFact%Text.GRead.Transformations.LeftCorner Text.GRead BindingGroupUserTypeUserDshowBindingGroupgetBindingGroup getUserType unrollAppGShowgshow gshowsPrecapp_prec deriveShowTokenCloseOpenKeywSymbolTermNontProdEndSeq ProductionsPSunPSGrammarDSymbolDTermDNontDProdDEndDSeq DProductionsDPSunDPS DLNontDefsDRefDGramDGGDGDDGrammarGramgrammar.#.consGconsDdNontdTermdEndparenText.*.matchSymappendDMapping unDMappingListDRunListDRGTrafoDTunDT mapDP2Proddp2prodld2nt dmap2transplookupgroupgGrammargDGrams deriveGrammarderiveSimpleGrammarMapping GramTrafoMapA_XemptyMap extendMapinitMapnewNontR map2transmapProd leftfactoring leftcorner GReadResultRepOkGReadMsggreadSynthesizedState InheritStateISnextEdgevarMap typeGraphbindingsnodeMapcontextsVarMapNextEdge TypeContext TypeGraphEdgeTypeWeakStrong startState returnStatetypeName typeBindingsoutgoingBindings getBindings getTypeGraphmkGraph'tyVarBndr2NameextendGraphTypegetCtxthd extendGraphextendGraphVarextendGraphConinsNodemkNextEdgeTypemkNextEdgeType'extendGraphApp extendVarMap replaceVarsADInfo mkContext filterVars unrollApps deriveShowCongetPrecgetInfo TTTAS-0.4.0Language.AbstractSyntax.TTTASEnvRefPrecProdderiveGrammar'mkInstanceType consArgsTypes uniqueVarsisVarTmkBodycalculateStrongEdgesgetEdgesmkNontsInstance envSignaturecreateInstancescreateInstanceinstName mkNontsTypeedgeType mkGrammarPartrefEdgenameEdgenameArgsgetNeededInstanceslinkRefsconProds parensProd getTypeRefapp2Ref app2TopReftype2Ref type2Ref'var2Refvar2Ref' type2Nonts var2TopRef type2TopRef nameStringE insertCon infixProd insertCon'consExpBTAnySymlftraforulesapp_rulerulerinsertaddprod getrepeatedauxiselemlctraforules1 app_rule1rule1rule2rule2arule2binsert extendA_XConstCunCbase Text.ReadreadcompilemapEnvparserparse