He      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~         p     !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./012345678  !"#$%&,-'()*+./012345678  !"#$%&'()*+,-./0123456789:=>?@BCDEFGHIOPSTU9:;<=>?@ABCDEFGHIJKLMNOPQRSTU9B:C<=>?@ADEFG;HIJKLMNOPQRTSU9:=>?@BCDEFGHIOPSTU= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU"<=>VWXYZ[?@ABCDEFG\]HIQVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Q[\]klmnopcdefghijb^_`aw{|vyzu}~xtsqrVZYXWVZYXWWXYZ[\]],The 1 class contains the interface that the AnaParser F parsers expect for the input. A minimal complete instance definition  consists of ,  and . (Splits the state in a strict variant of J, with  if a symbol  can be split off and  if none can =Splits the state in the first symbol and the remaining state 'Gets the current position in the input Reports an error 5Modify the state as the result of inserting a symbol s in the input. F The symbol that has already been considered as having been inserted : is passed. It should normally not be added to the state. 4Modify the state as the result of deleting a symbol s from the input. J The symbol that has already been deleted from the input state is passed. 3 It should normally not be deleted from the state. 2KLMNOP/, ,PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst,, uv                        !"#$%&'()*+,- !"#$%&'()*+,-*)('&%$#"! +,- )('&%$#"!  !"#$%&'()*+,- ./0123456789 ./0123456789 ./0123456789 ./0123456789w:;<The <0 class contains the base combinators with which F to write parsers. A minimal complete instance definition consists of  definitions for '( *)', '( |)', B, C, E,  F, G, J, K, and L. =7Sequential composition. Often used in combination with  $. A The function returned by parsing the left-hand side is applied 7 to the value returned by parsing the right-hand side. A Note: Implementations of this combinator should lazily match on C and evaluate the right-hand side parser. The derived combinators / for list parsing will explode if they do not. >@Value ignoring versions of sequential composition. These ignore D either the value returned by the parser on the right-hand side or > the left-hand side, depending on the visual direction of the  combinator. ?@;Applies the function f to the result of p after parsing p. AB.Two variants of the parser for empty strings. B parses the H empty string, and fully counts as an alternative parse. It returns the  value passed to it. CC> parses the empty string, but alternatives to pLow are always  preferred over C parsing the empty string. D@Alternative combinator. Succeeds if either of the two arguments < succeed, and returns the result of the best success parse. E>This parser always fails, and never returns any value at all. FDParses a range of symbols with an associated cost and the symbol to H insert if no symbol in the range is present. Returns the actual symbol  parsed. GDParses a symbol with an associated cost and the symbol to insert if  the symbol to parse isn'/t present. Returns either the symbol parsed or  the symbol inserted. H,Parses a symbol. Returns the symbol parsed. IJAGet the firsts set from the parser, i.e. the symbols it expects. K"Set the firsts set in the parser. LL returns Nothing' if the parser can not parse the empty  string, and returns Just p with p! a parser that parses the empty + string and returns the appropriate value. MM returns Nothing( if the parser can only parse the empty  string, and returns Just p with p" a parser that does not parse any  empty string. NOPQRSTUx The fast  instance of the < class. Note that this  requires a functioning y& for the symbol type s, as tokens are  often compared using the z function in y rather than always  using { rom |3. The two do need to be consistent though, that is  for any two x1, x2 such that x1 == x2 you must have  compare x1 x2 == EQ. RKLMNOP:;<=>?@ABCDEFGHIJKLMNOP}QRSTUN<=>?@ABCDEFGHIJKLMOPQRS:;TU:;;<=>?@ABCDEFGHIJKLM=>?@ABCDEFGHIJKLMNOPQRSTU1V&Checks if the parser accepts epsilon. WX%Parses the specified range, see also I.  Example:  pDig = 'a' <..> 'z' YZOptionally recognize parser p. If p( can be recognized, the return value of p is used. Otherwise,  the value v6 is used. Note that opt is greedy, if you do not want  this use ...  | pSucceed v instead. Furthermore, p should not  recognise the empty string. [\]^Parses the sequence of pa and pb , and combines them as a tuple. _ASuppose we have a parser a with two alternatives that both start D with recognizing a non-terminal p, then we will typically rewrite:   a = f <$> p <*> q  <|> g <$> p <*> r into: $ a = p <**> (f <$$> q <|> g <$$> r) `abcThis can be used to parse x surrounded by l and r.  Example: # pParens = pPacked pOParen pCParen defghijklmnopqrstuvwxyz{|}~,Parses using any of the parsers in the list l.  Warning: l may not be an empty list. Parses any of the symbols in l. 1VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~&plainly lift tokens to offside tokens 4 scanLiftTokensToOffside :: (InputState i s p) => [i]- -> OffsideInput i s p -> OffsideInput i s p 6convert tokens to offside tokens, dealing with Haskell's layout rule     6666j      !"#$%&'()*+,-./0123456789KLMNOP:;<=>?@ABCDEFGHIJKLMNOP}QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:*;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+?<*;                       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H IJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl+mnopqrstuvwxyz{|}~-'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE0FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz { {|}~~~~E&&') uulib-0.9.13 UU.PPrint UU.Util.UtilsUU.Util.PermTreeUU.Util.BinaryTreesUU.Pretty.Basic UU.Pretty.ExtUU.Parsing.MachineInterfaceUU.Parsing.MachineUU.Parsing.StateParserUU.Scanner.PositionUU.Scanner.GenTokenUU.Scanner.TokenUU.Scanner.ScannerUU.Parsing.InterfaceUU.Parsing.DerivedUU.Parsing.OffsideUU.Scanner.GenTokenParserUU.Scanner.TokenParserUU.Parsing.CharParser UU.ParsingUU.Parsing.MergeUU.Parsing.Perms UU.PrettyUU.Scanner.GenTokenOrdUU.Scanner.GenTokenSymbolUU.Scanner.TokenShow UU.ScannerbaseGHC.ShowshowIdcrosssplitfst3snd3thd3BranchBrPermsChoiceaddempty<$$><$?><||><|?> BinSearchTreeNilNodetab2treebtFind btLocateInbtLookupPP_ExpPPppppListPP_Doctextindent>|<>-<fill fillblock>//<joineindent>>|<<>>-<<>>//<<ejoinpar>>$<>>$<<render renderAlldispc2e element_h1 eelement_h1vcenter invisiblefparspar>^<>#<pp_es wide_textvlisthlisthlist_splist_h1hlist_h1>>^<<>>#<<>|<<>-<<>>|<>>-<vdisppp_wrap pp_quotespp_doubleQuotes pp_parens pp_brackets pp_braceshvhv_sppp_blockpp_itepp_slistpp_listpp_parens_list SimpleDocSLineSTextSCharSEmptyDocPrettyprettylisttupled semiBraces encloseSep punctuatesepfillSephsepvsepcatfillCathcatvcat<><+><$>softline softbreaksquotesdquotesbracesparensanglesbracketslparenrparenlangleranglelbracerbracelbracketrbracketsquotedquotesemicoloncommaspacedot backslashequalsstringboolintintegerfloatdoublerational fillBreakwidthhangaligncharline linebreaknestcolumnnestinggroup renderPretty renderCompactdisplayS displayIOputDochPutDocSymbolREmptyRRange ExpectingESeqEOrEStrESymMessageMsgActionOtherDeleteInsertSteps NoMoreStepsBestStRepairmCostcostingOkrestOkValEither'Right'Left'Symbol deleteCost symBeforesymAfter OutputStateacceptRnextR InputState splitStateE splitState getPosition reportError insertSymbol deleteSymbolval evalStepsgetMsgsNatInfiniteSuccZero TableEntryOneDescrfirststable AnaParserparslengzeroponepToBeatParsRecPR RealAcceptA RealRecognR RealParserP parseRecbasic parsebasic libAcceptlibFailstarting hasSuccesseorlibBestlibBest' lib_correct libCorrecttraverseanaFaillibMappMaplibWrappWrap lookupSym StateParserchangesetgetPosPositionfileFilenameColumnLineinitPosnoPosadvladvcadvupdPostabnewltabWidthupdPos'advc'tab'newl'GenTokenValTokenReservedposition EnumValTokenTkErrorTkConOpTkOpTkTextlnTkTextnm TkFraction TkInteger16 TkInteger10 TkInteger8TkCharTkStringTkConidTkVaridTokenreserved valueTokenerrTokenscanFilescanlexNest scanStringscanChargetchar getEscCharreadn getNumber isHexaDigit isOctalDigitvaluePairIsParser<*><**><$pSucceedpLow<|>pFail pCostRangepCostSympSympRange getfirsts setfirstsgetzeropgetonepParserpCost getInputStateparseparseIOMessageparseIOMessageN evalStepsIO evalStepsIO'acceptsepsilonmnz<..>pExceptoptasListasList1asOpt<**>pPacked pFoldr_ng pFoldr_grpFoldr pFoldr1_gr pFoldr1_ngpFoldr1 pFoldrSep_gr pFoldrSep_ng pFoldrSep pFoldr1Sep_gr pFoldr1Sep_ng pFoldr1Seplist_algpList_grpList_ngpList pList1_gr pList1_ngpList1 pListSep_gr pListSep_ngpListSep pList1Sep_gr pList1Sep_ng pList1Sep pChainr_gr pChainr_ngpChainr pChainl_gr pChainl_ngpChainlpAnypAnySympTokspLocate OffsideParserOP OffsideInputStream OffsideSymbol OpenBrace CloseBrace SemiColonOffsideTriggerTrigger_IndentGETrigger_IndentGTscanLiftTokensToOffside scanOffsidescanOffsideWithTriggers pSeparatorpClosepOpenpOffsidepBlockpBlock1 parseOffsidepCostReserved' pReserved'pCostValToken' pValToken' pCostReserved pCostValToken pReserved pValTokenpValTokenNoPospKeyPospSpecPospKeypSpec pStringPospCharPos pInteger8Pos pInteger10Pos pInteger16Pos pFractionPos pVaridPos pConidPos pConsymPos pVarsymPos pTextnmPos pTextlnPos pIntegerPospStringpChar pInteger8 pInteger10 pInteger16 pFractionpVaridpConidpVarsympConsympTextnmpTextlnpIntegerpCommapSemipOParenpCParenpOBrackpCBrackpOCurlypCCurly pCommaPospSemiPos pOParenPos pCParenPos pOBrackPos pCBrackPos pOCurlyPos pCCurlyPospCommaspSemicspParenspBrackspCurlypParens_pCommaspBracks_pCommaspCurly_pSemicsInput CharParser parseString parseStringIO parseFileparseIOpMergedlist_of~*~~$~ succeedPermspPerms pPermsSep T_CenterListT_LiftST_DispT_Root T_FillList T_PPCArgs T_PPSArgsT_PPCT_PPST_SynPPS T_Function T_FormatsTFormatsAFormatT_ErrorT_ErrsT_FmtsT_ReqsT_MinsFormatElemheightlast_wtotal_wtxtstrT_FrameFT_PHT_PLLT_PWFormatsPPExpPPDoclift empty_fmts text_fmts indent_fmts beside_fmts above_fmts error_indent error_besides2fmt indent_fmt above_fmt beside_fmtmergel sem_PPS_Empty sem_PPS_Textsem_PPS_Indentsem_PPS_Beside sem_PPS_Above sem_PPS_Dup sem_PPS_Join sem_PPS_Apply sem_PPS_Fillsem_PPS_FillBlock sem_PPS_Filt sem_PPS_Invsem_PPS_Centersem_PPC_Indentsem_PPC_Beside sem_PPC_Above sem_PPC_Dup sem_PPC_Join sem_PPC_Par sem_PPC_Apply sem_PPC_Pps sem_PPC_Filtsem_PPSArgs_Nilsem_PPSArgs_Conssem_PPCArgs_Nilsem_PPCArgs_Conssem_FillList_Nilsem_FillList_Cons sem_Root_Best sem_Root_All sem_Disp_Dispsem_LiftS_Liftsem_CenterList_Nilsem_CenterList_ConsDocsConsNestingUnionNestCatTextCharEmpty prettyListflatten Data.EitherEithermk_range symInRangesymRSexcept usererror systemerrorpDynEpDynLmkPRunPunR libInsert libSucceedlibSeq libDollar libDollarL libDollarRlibSeqLlibSeqRlibOrgetStart addToMessage addexpecting noOneParserpEmpty anaSucceedanaLowanaDynEanaDynLanaOranaSeq seqZeroZero orOneOneDescr anaCostRange anaGetFirsts anaSetFirsts mapOneParsmkParsernat_lenat_minnat_add mergeTablesErrors maybeshow$fIsParserAnaParsers GHC.ClassesOrdcompare==Eq handleEofOff IndentContextCxtEnd