>8!t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs  Document type(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimentalportableSafeA G represents a tree of the parsed input. Directly after parsing, every Rule+ that was applied, gets a node in the tree. You can use   and  1 to reduce the tree into a more managable shape.  Some operations on documents(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimentalScopedTypeVariablesSafeT :Filter documents according to some predicate. Similar to t in the Prelude.Squash all contents of a  into a single Squash all contents of a ' which matches the predicate See also Squash all contents using the u instance of a, cascading into s.Looks up nested Ns with a particular identifier. NB: Will not recurse into matching documents. Predicate to checkDocument to filterReturns v1 if the predicate fails, cascades otherwiseIdentifier to search for to search in   Types used by the parser(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimentalportableSafe+A +P represents a single entry in your ABNF. It could, for example, look like this: CRLF = %x0D.0A  !"#$%&'()*+, !"#$%&'()*+,+,)*'(%&#$ !"  !"#$%&'()*+,Canonicalize a list of rules(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimental non-portableSafeACanonicalize a list of +s, leaving only a single +. wAThe main, or top-level, +List of +s to canonicalizeOThe operation may fail for a number of reasons, for example, because the main + does not existxyz{|}~AA wAxyz{|}~#Tools to parse ABNF into a Document(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimental non-portableSafeB)Convenience function to directly parse a C Generate an  .https://hackage.haskell.org/package/attoparsec attoparsec parser B+ to parse againstText to parse Return a 4 describing the error or the successfully parsed .The format of the  is as returned by  .https://hackage.haskell.org/package/attoparsec attoparsec.CDEFGHIJKL BCDEFGHIJKL BCDEFGHIJKL BCDEFGHIJKL)Documents according to an ABNF definition(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimental non-portableSafe  BC  CBPretty printer for ABNF rules(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimentalportableSafe MNOPQRSTUVWXYMN MNYXWVUTSRQPO MNOPQRSTUVWXY ABNF Parser(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimentalportableNone[OConvencience function to directly parse a list of rules. This is equivalent to  \ \(The main parser, which parses a list of +s.Z[\]^_`abcdefghijklmnopqrsZ[\]^_`abcdefghijklmnopqrsZ[\]^_`abcdefghijklmnopqrsZ[\]^_`abcdefghijklmnopqrs ABNF(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimental non-portableNone+,A[\+,\[A Top-level module(c) Martin Zeller, 2016BSD2(Martin Zeller <mz.bremerhaven@gmail.com> experimental non-portableNone +,ABC[\    !"#$$%&'()*++,,--..//0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxywz{wz|}~wz#abnf-0.3.2.0-6yFzgHSRJAz3HW3HBN7Va7Text.ABNF.Document.TypesText.ABNF.Document.OperationsText.ABNF.ABNF.TypesText.ABNF.ABNF.CanonicalizerText.ABNF.Document.ParserText.ABNF.PrettyPrinterText.ABNF.ABNF.ParserText.ABNF.DocumentfilterDocumentsquashDocumentOnText.ABNF.ABNF Text.ABNFContentTerminal NonTerminalDocument$fMonadContent$fApplicativeContent$fFunctorContent$fFunctorDocument $fShowContent $fEqContent$fShowDocument $fEqDocumentsquashDocument squashContentlookupDocument DefinedAsEqualsAddsNumLitIntLitRangeLitLiteralCharLitGroupElement RuleElement' RuleElement GroupElement OptionElementLiteralElementRepeat Repetition ProductSpecSumSpecRule $fShowRepeat $fEqRepeat $fShowNumLit $fEqNumLit $fShowLiteral $fEqLiteral$fShowDefinedAs $fEqDefinedAs $fShowRule$fEqRule $fShowSumSpec $fEqSumSpec$fShowProductSpec$fEqProductSpec$fShowRepetition$fEqRepetition $fShowElement $fEqElement $fShowGroup $fEqGroupcanonicalizeRules parseDocumentgenerateParser parseRule parseSumSpec parseProdSpecparseRepetition parseElem parseLiteral parseNumLittoListoneOfPretty prettyShow$fPrettyNumLit$fPrettyLiteral $fPrettyGroup$fPrettyElement$fPrettyRepeat$fPrettyRepetition$fPrettyProductSpec$fPrettySumSpec$fPrettyDefinedAs $fPrettyRule $fPretty[] identifier parseABNFrulelistrule defined_aselementsc_wspc_nlcomment alternation concatenation repetitionrepeatelementgroupoption_literalchar_valnum_valbin_valdec_valhex_valnum_val' prose_valvcharwspbaseGHC.ListfilterGHC.BaseMonoidNothingRuleMap mergeRulesinlineRulesRuleinlineRulesSumSpecinlineRulesProdSpecinlineRulesRepetitioninlineRulesElementinlineRulesGroupString'megaparsec-5.0.0-HnmtEEIg7af7FbrK7japhdText.Megaparsec.Primparse