!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe*35KLN'Class whose members are super-types of .9Class that captures elements of an input string (tokens). is the end-of-string symbol  is the empty-string symbolBoth  and  must be distinct from eachother and from all tokens in the input string. The show instance is required to throw error messages.This function is used for matching grammar tokens and input tokens. Override this method if, for example, your input tokens store lexemes while the grammar tokens do notdThis function pretty-prints the Parseable type by displaying its lexeme. Default implementation is 7, which should be replaced for prettier error messages. A list of sA datatype for representing tokens with some builtins and an aribitrary Token constructor. This datatype stores (optional) lexemes.Palternative identifiers, for example functions vs. constructors (as in Haskell). A list of sA X is either a nonterminal or a terminal, where a terminal contains some arbitrary token.dA grammar slot acts as a label to identify progress of matching a production. As such, a slot is a Prod with its right-hand side split in two: a part before and a part after 'the dot'. The dot indicates which part of the right-hand side has been processed thus far.7A grammar is a start symbol and a list of productions.  A list of s.{A production binds a nonterminal identifier (left-hand side) to a list of symbols (the right-hand side of the production).Identifier for nonterminals.Pretty-prints a list of &s as a concatenation of their lexemes.% "  Safe35KLNAssumes  and '#'" never appear in the inpur string.Safe*35KLN An SPPFNodeI is either a symbol node, an intermediate node, a packed node or a dummy.%!Stores edges, potentially costly.&'Stores intermediate nodes using nested  Data.IntMaps, nesting is as follows: left extent right extent set of slots '!Stores symbol nodes using nested  Data.IntMaps, nesting is as follows: left extent right extentset of symbols(!Stores packed nodes using nested  Data.IntMaps, nesting is as follows: left extent right extent!dot position (from left to right))mapping from productions to set of pivots)An ) contains symbol nodes, intermediate nodes, packed nodes and edges between them. See Scott and Johnstone (2013) for an explanation of the )./ !"#$%&'()*- !"#$%&'()*+ !"#$%&'()*Safe35KLN+The  ParseResult datatype contains the SPPF/ and some other information about the parse:) Whether the parse was successful2The number of descriptors that have been processed5The number of symbol nodes (nonterminal and terminal)The number of intermediate noesThe number of packed nodesThe number of GSS nodesThe number of GSS edges8 A list of  ParserOptions9%An option updates the current set of ./Flags to influence the behaviour of the parser.$Monad for implicitly passing around contextConnecting it allPop-setGSS representationThe worklist and descriptor set Types for "Representation of the input string Create an  (nonterminal) from a String.:)A smart constructor for creating a start  (nonterminal).;#A smart constructor for creating a  (production).</A smart constructor for creating a nonterminal .=,A smart constructor for creating a terminal .5The default flags: * Do not add symbol nodes to the )*. * Do not add intermediate nodes to the ). * Do not add edges to the )`. * Flexible binarisation. * The three furthest discoveries of a token mismatch are reported. Execute the given Options in left-to-right order on .> Create the )> with all nodes and edges, not necessarily strictly binarised.?-Create all nodes, but no edges between nodes.@Create packed-nodes only.A/Fully binarise the SPPF, resulting in a larger ) and possibly slower runtimes. When this flag is on, packed nodes can only have a single symbol node child or one intermediate node child and one symbol node child. With the flag disabled a packed node can have two symbol node children.BHSet the maximum number of errors shown in case of an unsuccessful parse.CRun the GLL parser given a  t and a list of t s, where t6 is an arbitrary token-type. All token-types must be .D)Run the GLL parser given some options, a  t and a list of ts."If no options are given a minimal ) will be created:only packed nodes are createdthe resulting ) is not strictly binarisedQ+,-./0123456789:;<=>?@ABCD4 !"#$%&'()*+,-./0123456789:;<=>?@ABCD4:;<=CD89A>?@B+,-./01234567) !"#$'&(%*4+ ,-./0123456789:;<=>?@ABCDSafe35KLN   Safe35KLN E9Settings for changing the behaviour of the builtin lexer P. Lexers are built using Text.Regex.Applicative.G+Which keychars to recognise? Default: none.H+Which keywords to recognise? Default: none.I4What is considered a whitespace character? Default:  .J*How does a line comment start? Default: '"//"'.KPHow to recognise identifiers? Default alphanumerical with lowercase alpha start.L\How to recognise alternative identifiers? Default alphanumerical with uppercase alpha start.MArbitrary tokens (a,b). a is the token name, b is a regular expression.N The default E.OA lexer using the default E.PA lexer parameterised by E. EFGHIJKLMNOP EFGHIJKLMNOPEFGHIJKLMNOP None35KLNQAn impure reference to a R.RA R maps left-extent l to right-extent r to some results a, indicating the the substring ranging from l to r is derived with parse result a.S Clears the R% to which the given reference refers.TCreate a reference to a fresh R.QR  STQR  STQR  ST Safe35KLN UA single option.V A list of U(s for evaluating combinator expressions.CombinatorOptions datatype * left_biased_choice: see function leftBiased * pivot_select: provide a filtering function on pivots'The default options: no disambiguation.W Enables a 'longest-match' at production level. Enables a 'shortest-match' at production level.2Discards a pivot select option (internal use only)XEnables 'longest-match' at non-terminal level. YHSet the maximum number of errors shown in case of an unsuccessful parse.ZIf there are no parse results, the default behaviour is to return an empty list. If this option is used, a runtime error will be reported, with debugging information.Turns all occurrences of <||> into a 'left biased' variant: only return results of the second alternate if the first alternate does not have any results.[OWhether to use unsafe memoisation to speed up the enumeration of parse results.rFilter a list such that the only remaining elements are equal to the maximum element, given an ordering operator.UVWXYZ[UVWXYZ[UVWXYZ[ Safe35KLN !"#$% !"#$% !"#$% None35KLN\Class for lifting to d. ^Class for lifting to c. `Class for lifting to f.b Synonym of a for creating derived combinators. c@A list of alternatives represents the right-hand side of a rule.d[A combinator expression representing an alternative: the right-hand side of a production.e^A combinator expression representing a BNF-grammar. The terminals of the grammar are of type tF. When used to parse, the expression yields semantic results of type a. f2A combinator expression representing a symbol. A fj either represents a terminal or a nonterminal. In the latter case it is constructed with (a variant of) <:=>Z and adds a rule to the grammar of which the represented symbol is the left-hand side.\]^_`abcd&ef'()*+,-./0123\]^_`abcd&ef'()*\]^_`abcd&ef'()*+,-./0123None35KLN?4The grammar of a given parser.g Runs a parser given a string of [s and returns a list of semantic results, corresponding to all finitely many derivations.hRun the parser with some V.iRun the parser with some Vj and return either an error or the results. Any returned results will be a list of length greater than 0.jGet the +, containing an )?, produced by parsing the given input with the given parser.kGet the + given some 8 and V. lvForm a rule by giving the name of the left-hand side of the new rule. Use this combinator on recursive non-terminals.m Variant of ll for recursive non-terminals that have a potentially infinite number of derivations for some input string.A non-terminal yields infinitely many derivations if and only if it is left-recursive and would be left-recursive if all the right-hand sides of the productions of the grammar are reversed.nForm an dJ by mapping some semantic action overy the result of the second argument.oAdd a f* to the right-hand side represented by an d creating a new d]. The semantic result of the first argument is applied to the second as a cross-product. p Variant of o0 that applies longest match on the left operand.q Variant of o1 that applies shortest match on the left operand.rAdd an d to a list of dD The resuling '[] :. AltExpr' forms the right-hand side of a rule.sApply this combinator to an alternative to indicate that the alternative is for a left-associative operator. Used for top-down disambiguation.tApply this combinator to an alternative to indicate that the alternative is for a right-associative operator. Used for top-down disambiguation.uApply this combinator to an alternative to indicate that the alternative is for an associative operator. Used for top-down disambiguation.v+Create a symbol-parse for a terminal given:The # token represented by the terminal.A function from that  to a semantic result.wParse a single character. char c = term_parser c id Currently, this is the only character-level combinator exported by this module. Please use token-level combinators for practical parsing. Might change in the future.x"Parse a single character, using a  type.y"Parse a single character, using a  type.z Parse a single integer, using a 5 type. Returns the lexeme interpreted as an integer.{ Parse a single Boolean, using a 4 type. Returns the lexeme interpreter as a Boolean.|*Parse a single Character literal, using a > type. Returns the lexeme interpreted as a Character literal.}'Parse a single String literal, using a ; type. Returns the lexeme interpreted as a String literal.~#Parse a single identifier, using a ' type. Returns the lexeme as a String./Parse a single alternative identifier, using a ' type. Returns the lexeme as a String.(Parse a single arbitrary token, using a  type. Returns the lexeme.QThe empty right-hand side that yields its first argument as a semantic result.'This function memoises a parser, given:A Q pointing to a fresh R, created using T.The f to memoise.Use  on all parsers that are expected to derive the same substring multiple times. If the same combinator expression is used to parse multiple times the Q needs to be cleared using S. relies on 52 and is therefore potentially unsafe. The option [5 enables memoisation. It is off by default, even if $ is used in a combinator expression.3Helper function for defining new combinators. Use H to form a new unique non-terminal name based on the symbol of a given f and a 61 that is unique to the newly defined combinator.7Specialised fmap for altparsers Variant of n: that ignores the semantic result of its second argument.  Variant of o8 that ignores the semantic result of the first argument. Variant of o9 that ignores the semantic result of the second argument. Variant of 0 that applies longest match on its left operand.Variant 0 that applies shortest match on its left operand Variant of mD that prioritises productions from left-to-right (or top-to-bottom). Variant of lD that prioritises productions from left-to-right (or top-to-bottom).oTry to apply a parser multiple times (0 or more) with shortest match applied to each occurrence of the parser.oTry to apply a parser multiple times (1 or more) with shortest match applied to each occurrence of the parser.nTry to apply a parser multiple times (0 or more) with longest match applied to each occurrence of the parser.nTry to apply a parser multiple times (1 or more) with longest match applied to each occurrence of the parser.Try to apply a parser multiple times (0 or more). The results are returned in a list. In the case of ambiguity the largest list is returned.Try to apply a parser multiple times (1 or more). The results are returned in a list. In the case of ambiguity the largest list is returned.8Internal9InternalSame as " but with an additional separator.Same as " but with an additional separator.Same as " but with an additional separator.Same as " but with an additional separator.Same as " but with an additional separator.Same as " but with an additional separator.Like  but matching at least two occurrences of the first argument. The returned list is therefore always of at least length 2. At least one separator will be consumed.Like a but matching the minimum number of occurrences of the first argument as possible (at least 2).Like ` but matching the maximum number of occurrences of the first argument as possible (at least 2).FMake a piece of BNF optional, but proceed if unsuccessful (yielding : as a result in that case).Place a piece of BNF within3 two other BNF fragments, ignoring their semantics.8Place a piece of BNF between the characters '(' and ')'.8Place a piece of BNF between the characters '{' and '}'.8Place a piece of BNF between the characters '[' and ']'.,Place a piece of BNF between the characters ; and <.=/Place a piece of BNF between two single quotes.>/Place a piece of BNF between two double quotes.F?4ghijk@lmnopqrstuvwxyz{|}~A789BC=> +,-./01234567>?@AEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~vxyz{|}~wornlmefdc ghVUYZWX>?@Aijk+,-./01234567OPEFGHIJKLMNqptsu^_`ab\]TSRQ[F?4ghijk@lmnopqrstuvwxyz{|}~A789BC=>lmnopqrNone35KLN*Defines and executes multiple1 unit-tests  None35KLN +,-./01234567>?@AEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~D !"#$%%&'(()*+,-./01234566789:;<=>?@ABCDEFGHIJKLMNOOPQRSTUVWXY Z [ \ ] ^ _ ` a L b c d e f g h i j k l m nMNopqrstuvwxyz{|}~#.,                         ! " # $ % l n & ' ( ) * + , - . / 0 123456789:;<:;=>?@ABCDgll_4PPu0DCARxmDJLgQfQBbZ2GLL.Combinators.Interface GLL.ParserGLL.Combinators.Test.InterfaceGLL.Types.AbstractGLL.Parseable.CharGLL.Types.GrammarGLL.Combinators.Visit.GrammarGLL.Combinators.LexerGLL.Combinators.MemoisationGLL.Combinators.OptionsGLL.Combinators.Visit.SemGLL.Combinators.Visit.JoinGLL.Combinators SubsumesTokenupcastdowncast ParseableeosepsmatchesunlexTokenCharKeywordEOSEpsilonIntLitBoolLit StringLitCharLitIDLitAltIDLitSymbolsSymbolNtTermSlotGrammarProdsProd unlexTokens unlexTokenSPPFNodeSNodeINodePNodeDummyEdgeMapImdMapSymbMapPackMapSPPFshowSPPF ParseResult sppf_result res_successnr_descriptorsnr_nterm_nodes nr_term_nodesnr_intermediate_nodesnr_packed_nodes nr_sppf_edges nr_gss_nodes nr_gss_edges error_message ParseOptions ParseOptionstartprodntermtermfullSPPFallNodespackedNodesOnlystrictBinarisation maximumErrorsparseparseWithOptions LexerSettingskeycharskeywords whitespace lineComment identifiersaltIdentifierstokens emptyLanguage default_lexerlexerMemoRef MemoTablememClear newMemoTableCombinatorOptionCombinatorOptions maximumPivotmaximumPivotAtNt throwErrorsuseMemoisation IsAltExprtoAltHasAltsaltsOf IsSymbExprtoSymbmkRuleAltExprsAltExprBNFSymbExprparseWithOptionsAndError parseResultparseResultWithOptions<:=><::=><$$><**><**>>><<<**><||>lassocrassocassoc term_parsercharkeycharkeywordint_litbool_litchar_lit string_litid_lit alt_id_littokensatisfymemomkNt<$$**>**>>><<**><**<**>><<<**<::=<:=manymany1somesome1multiple multiple1 manySepBy manySepBy1 someSepBy someSepBy1 multipleSepBymultipleSepBy1multipleSepBy2 someSepBy2 manySepBy2optionalwithinparensbracesbracketsanglesmainbaseGHC.ShowshowTokens$fParseableToken $fShowToken$fSubsumesTokenToken$fParseableCharGHC.Base$ FollowMapFirstMap SelectMap PrefixMapProdMapPEdgeSEdgeNtLPrLSlotL emptySPPF pNodeLookup pMapInsert sNodeLookup sNodeInsert sNodeRemove iNodeLookup iNodeInsert iNodeRemove eMapInsertinUtoUshowDshowGshowPshowSnTepsilon fixedMapsisNtisTermisChar $fShowSymbol $fShowSlotFlagsGLLMutablePcalGSSRcal LhsParamsInput string2nt defaultFlags runOptions symbol_nodesintermediate_nodesedgesflexible_binarisation max_errors mut_successmut_sppf mut_worklistmut_descriptorsmut_gss mut_popsetmut_mismatches MisMatchesGSlotU0GSSNodeGSSEdgeUcal RhsParamsrunGLL addSPPFEdgeaddDescrgetDescraddPop getChildren addGSSEdgegetPops addSuccessgetFlags addMisMatchgll joinSPPFsresultFromMutable renderErrors$fShowParseResult $fMonadGLL $fFunctorGLL$fApplicativeGLL$fShowSPPFNode $fShowGSlot Grammar_Expr grammar_nterm grammar_apply grammar_seq GHC.UnicodeisSpacelTokens memLookup memInsert PCOptionsdefaultOptions minimumPivotanyPivot leftBiased maximumsWithleft_biased_choice pivot_selectpivot_select_nt throw_errorsdo_memo runOptionsOn maintainWith AncestorsSem_AltSem_Symb sem_nterm sem_applysem_seq inAncestors toAncestorsmkNtRule join_applyjoin_seq $fIsAltExprOO$fIsAltExprSymbExpr$fIsAltExprAltExpr $fHasAltsOO$fHasAltsSymbExpr$fHasAltsAltExpr$fIsSymbExprOO$fIsSymbExprSymbExpr$fIsSymbExprAltExprgrammarGHC.IOunsafePerformIOString.$. multiple_ multiple1_Nothingghc-prim GHC.Classes<>quotesdquotesparse' defaultPOptssepBysepBy1