úÎ__:      !"#$%&'()*+,-./0123456789portablealphayaml-oren@ben-kiki.orgÖ. converts a (named) input text into a list of  . Errors ! are reported as tokens with the Error , and the unparsed text = following an error may be attached as a final token (if the Bool is  True"). Note that tokens are available " immediately", allowing for N streaming of large YAML files with memory requirements depending only on the  YAML nesting level. Chomp method. :Keep all trailing line breaks. ; Keep first trailing line break. <!Remove all trailing line breaks. Production context. =Implicit flow key. >Implicit block key. ?Inside flow collection. @Outside flow collection. AInside block sequence. BOutside block sequence. CMatch parameter result# specifies that we can convert the  parameter to  a DE returning the result. FG!The internal parser state. We don''t bother with parameterising it with a  " UserState"?, we just bundle the generic and specific fields together (not , that it is that easy to draw the line - is sLine generic or specific?). HI#The input name for error messages. JThe input UTF encoding. KCurrent decision name. LLookahead characters limit. M Pattern we must not enter into. NDisables token generation. OIs at start of line? P-(Reversed) characters collected for a token. Q*Byte offset of first collected character. R*Char offset of first collected character. S#Line of first collected character. T0Character in line of first collected character. UOffset in bytes in the input. V#Offset in characters in the input. WBuilds on YAML's line break definition. XCharacter number in line. Y&Of token we are collecting chars for. ZLast matched character. [The decoded input characters. \]Each invication of a DE yields a ^]. The _` is only one  part of the ^]. ^aParsing result. b Tokens generated by the parser. c Commitment to a decision point. dThe updated parser state. `The _`> of each invocation is either an error, the actual result, or 1 a continuation for computing the actual result. e(Parsing is ongoing with a continuation. _!Parsing completed with a result. f Parsing aborted with a failure. EA DE% is basically a function computing a ^]. DParsed token. gh0-base byte offset in stream. i#0-base character offset in stream. j1-based line number. k0-based character in line. lSpecific token . mContained input chars, if any.  codes. "Detected parameter (for testing). ,Unparsed due to errors (or at end of test). Parsing error at this point. Ends YAML stream. Begins YAML stream. Ends document. Begins document. Ends complete node. Begins complete node. Ends mapping key:value pair. Begins mapping key:value pair. Ends mapping content. Begins mapping content. Ends sequence content. Begins sequence content. Ends scalar content. Begins scalar content.  Ends alias. Begins alias. Ends node properties. Begins node properties.  Ends anchor. Begins anchor. Ends tag handle. Begins tag handle.  Ends tag.  Begins tag. Ends directive. !Begins directive. "Ends comment. #Begins comment. $Ends escape sequence. %Begins escape sequence. &Document end marker. 'Document start marker. (Indentation spaces. )Separation white space. * Character indicating structure. +$Line break folded to content space. ,,Line break normalized to content line feed. -Separation line break. .$Non-content (meta) text characters. /Content text characters. 0BOM, contains "TF8", "TF16LE", "TF32BE", etc. nFRecognized Unicode encodings. As of YAML 1.2 UTF-32 is also required. oUTF-32 big endian pUTF-32 little endian qUTF-16 big endian rUTF-16 little endian sUTF-8 encoding (or ASCII) trecord |> field is the same as  field record, but is more readable. u decode bytes automatically detects the n used and converts the  bytesB to Unicode characters, with byte offsets. Note the offset is for / past end of the character, not its beginning. vdetectEncoding text- examines the first few chars (bytes) of the text A to deduce the Unicode encoding used according to the YAML spec. wundoEncoding encoding bytes converts a bytes stream to Unicode  characters according to the encoding. xhasFewerThan bytes n% checks whether there are fewer than n bytes  left to read. yundoUTF32LE bytes offset decoded a UTF-32LE bytes stream to Unicode  chars. zundoUTF32BE bytes offset decoded a UTF-32BE bytes stream to Unicode  chars. {combinePairs chars8 converts each pair of UTF-16 surrogate characters to a  single Unicode character. |combineLead lead rest combines the lead surrogate with the head of the  rest% of the input chars, assumed to be a trail surrogate, and continues  combining surrogate pairs. }surrogateOffset" is copied from the Unicode FAQs. ~combineSurrogates lead trail. combines two UTF-16 surrogates into a single  Unicode character. undoUTF18LE bytes offset decoded a UTF-16LE bytes stream to Unicode  chars. €undoUTF18BE bytes offset decoded a UTF-16BE bytes stream to Unicode  chars. undoUTF8 bytes offset decoded a UTF-8 bytes stream to Unicode chars. ‚ decodeTwoUTF8 first offset bytes% decodes a two-byte UTF-8 character,  where the first9 byte is already available and the second is the head of  the bytes1, and then continues to undo the UTF-8 encoding. ƒcombineTwoUTF8 first second combines the first and second bytes of a 1 two-byte UTF-8 char into a single Unicode char. „"decodeThreeUTF8 first offset bytes' decodes a three-byte UTF-8 character,  where the first< byte is already available and the second and third are the  head of the bytes1, and then continues to undo the UTF-8 encoding. …combineThreeUTF8 first second combines the first, second and third > bytes of a three-byte UTF-8 char into a single Unicode char. †!decodeFourUTF8 first offset bytes& decodes a four-byte UTF-8 character,  where the first< byte is already available and the second, third and fourth  are the head of the bytes1, and then continues to undo the UTF-8 encoding. ‡combineFourUTF8 first second combines the first, second and third > bytes of a three-byte UTF-8 char into a single Unicode char. ˆescapeString string- escapes all the non-ASCII characters in the  string, as well as escaping the "\" character, using the "\xXX",  "\uXXXX" and "\ UXXXXXXXX" escape sequences. ‰toHex digits int converts the int to the specified number of  hexadecimal digits. 1showTokens tokens converts a list of tokens to a multi-line YEAST  text. ŠinitialState name input returns an initial HG for parsing the  input (with name for error messages). ‹setDecision name state sets the  sDecision field to decision. ŒsetLimit limit state sets the sLimit field to limit. setForbidden forbidden state sets the  sForbidden field to  forbidden. setCode code state sets the sCode field to code. returnReply state result prepares a ^] with the specified state  and result. tokenReply state token returns a ^] containing the state and  tokenE. Any collected characters are cleared (either there are none, or we " put them in this token, or we don't want them). failReply state message prepares a ^] with the specified state  and error message. ‘unexpectedReply state returns a  failReply for an unexpected character. ’ parser % n repeats parser exactly n times. “parser <% n matches fewer than n occurrences of parser. ”decision ^ (option / option / ...) provides a decision name to the & choice about to be made, to allow to commit to it. •parser ! decision commits to decision (in an option) after  successfully matching the parser. –parser ?! decision commits to decision (in an option) if the current  position matches parser$, without consuming any characters. — lookbehind <?1 matches the current point without consuming any M characters, if the previous character matches the lookbehind parser (single  character positive lookbehind) ˜ lookahead >?< matches the current point without consuming any characters 9 if it matches the lookahead parser (positive lookahead) ™ lookbehind <?1 matches the current point without consuming any L characters, if the previous character does not match the lookbehind parser ( (single character negative lookbehind) š lookahead >?< matches the current point without consuming any characters 9 if it matches the lookahead parser (negative lookahead) ›parser - rejected matches parser , except if rejected matches at this  point. œbefore & after parses before and, if it succeeds, parses after. This  basically invokes the monad's >>= (bind) method. first / second tries to parse first, and failing that parses  second , unless first3 has committed in which case is fails immediately.  (optional ?) tries to match parser, otherwise does nothing. Ÿ (parser *)% matches zero or more occurrences of repeat, as long as each ) one actually consumes input characters.   (parser +)$ matches one or more occurrences of parser, as long as each ) one actually consumed input characters. ¡decide first second tries to parse first, and failing that parses  second , unless first3 has committed in which case is fails immediately. ¢choice decision parser provides a decision name to the choice about to  be made in parser, to allow to commit to it. £parser `£` pattern parses the specified parser; if it fails,  it continues to the recovery parser to recover. ¤ prev parser succeeds if parser' matches at the previous character. It  does not consume any input. ¥ peek parser succeeds if parser% matches at this point, but does not  consume any input. ¦reject parser name fails if parser! matches at this point, and does  nothing otherwise. If name/ is provided, it is used in the error message, 4 otherwise the messages uses the current character. § upto parser= consumes all the character up to and not including the next . point where the specified parser is a match. ¨nonEmpty parser succeeds if parser matches some non-empty input  characters at this point. ©empty- always matches without consuming any input. ªeof matches the end of the input. «sol matches the start of a line. ¬commit decision8 commits the parser to all the decisions up to the most  recent parent decision2. This makes all tokens generated in this parsing + path immediately available to the caller. ­nextLine increments sLine counter and resets  sLineChar. ®#with setField getField value parser invokes the specified parser with ) the value of the specified field set to value for the duration of the  invocation, using the setField and getField functions to manipulate it. ¯parser `¯` pattern parses the specified parser ensuring 0 that it does not contain anything matching the  forbidden parser. °parser `°` limit parses the specified parser 1 ensuring that it does not consume more than the limit input chars. ± nextIf test+ fails if the current position matches the HG forbidden  pattern or if the HG3 lookahead limit is reached. Otherwise it consumes 3 (and buffers) the next input char if it satisfies test. ² finishToken= places all collected text into a new token and begins a new < one, or does nothing if there are no collected characters. ³ wrap parser invokes the parser), ensures any unclaimed input characters N are wrapped into a token (only happens when testing productions), ensures no / input is left unparsed, and returns the parser' s result. ´consume parser invokes the parser! and then consumes all remaining  unparsed input characters. µtoken code parser places all text matched by parser into a  with  the specified code9 (unless it is empty). Note it collects the text even if  there is an error. ¶fake code text$ creates a token with the specified code and "fake"  textB characters, instead of whatever characters are collected so far. · meta parser, collects the text matched by the specified parser into a  | Meta token. ¸indicator code, collects the text matched by the specified parser into an   Indicator token. ¹ text parser- collects the text matched by the specified parser into a  Text token. ºemptyToken code returns an empty token. »#wrapTokens beginCode endCode parser wraps the specified parser with  matching  beginCode and endCode tokens. ¼prefixErrorWith pattern prefix will invoke the prefix parser if an  error is detected during the pattern$ parser, and then return the error. ½patternTokenizer pattern converts the pattern to a simple . ¾parserTokenizer what parser converts the parser returning what to a  simple : (only used for tests). The result is reported as a token  with the Detected , The result is reported as a token with the  Detected . ¿.errorTokens tokens state message withFollowing appends an Error token  with the specified message at the end of tokens , and if  withFollowing ? also appends the unparsed text following the error as a final Unparsed  token. commitBugs reply7 inserts an error token if a commit was made outside a 7 named choice. This should never happen outside tests. 2yaml name input converts the Unicode input (called name in error  messages) to a list of ) according to the YAML spec. This is it! À pName name converts a parser name to the "proper" spec name. Á tokenizers: returns a mapping from a production name to a production  tokenizer. 3tokenizer name, converts the production with the specified name to a  simple , or Nothing if it isn' t known. ÂtokenizersWithN: returns a mapping from a production name to a production  tokenizer (that takes an n argument). 4tokenizerWithN name n+ converts the production (that requires an n  argument) with the specified name to a simple , or Nothing if  it isn' t known. ÃtokenizersWithC: returns a mapping from a production name to a production  tokenizer (that takes a c argument). 5tokenizerWithC name c* converts the production (that requires a c  argument) with the specified name to a simple , or Nothing if  it isn' t known. ÄtokenizersWithT: returns a mapping from a production name to a production  tokenizer (that takes a t argument). 6tokenizerWithT name t+ converts the production (that requires an t  argument) with the specified name to a simple , or Nothing if  it isn' t known. ÅtokenizersWithNC/ returns a mapping from a production name to a % production tokenizer (that requires n and c arguments). 7tokenizerWithNC name n c( converts the production (that requires n and  c arguments) with the specified name to a simple , or  Nothing if it isn' t known. ÆtokenizersWithNT/ returns a mapping from a production name to a % production tokenizer (that requires n and t arguments). 8tokenizerWithNT name n t( converts the production (that requires n and  t arguments) with the specified name to a simple , or  Nothing if it isn' t known. 9tokenizerNames3 returns the list of all productions (tokenizers). Çdetect_utf_encoding doesn'0t actually detect the encoding, we just call it N this way to make the productions compatible with the spec. Instead it simply L reports the encoding (which was already detected when we started parsing). na is the "non-applicable"" indentation value. We use Haskell' s laziness $ to verify it really is never used. È asInteger? returns the last consumed character, which is assumed to be a  decimal digit, as an integer. É result value is the same as  return value except that we give the L Haskell type deduction the additional boost it needs to figure out this is  wrapped in a DE. Ê read chomp converts a Ë to a . Ì show chomp converts a  to a Ë. Í read context converts a Ë to a . We trust our callers to  convert any - characters into _ to allow the built-in lex function to ) handle the names as single identifiers. Î show context converts a  to a Ë. ÏAllow using the do5 notation for our parsers, which makes for short and  sweet do= syntax when we want to examine the results (we typically don't). Ğ We convert Ë8 to a parser for a sequence of characters (that returns  nothing). Ñ We convert a Ò7 tuple to a parser for a character range (that returns  nothing). Ó We convert Ò5 to a parser for a character (that returns nothing). ÔWe don't need to convert a DE, it already is one. Õ show token converts a ( to two YEAST lines: a comment with the - position numbers and the actual token line. Ö show code converts a - to the one-character YEAST token code char. 2 The list of byte codes is also documented in the  yaml2yeast program. × show encoding converts an n to the encoding name (with a -)  as used by most programs. :  !"#$%&'()*+,-./0123456789:0/.-,+*)('&%$#"!  234567891:,0/.-,+*)('&%$#"!    !"#$%&'()*+,-./0123456789Ø      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFFGHHIJKLMNOPQRSTUVWXYZ[\]]^^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙYamlReference-0.9.3Text.Yaml.Reference TokenizerChompContextTokenCodeDetectedUnparsedError EndStream BeginStream EndDocument BeginDocumentEndNode BeginNodeEndPair BeginPair EndMapping BeginMapping EndSequence BeginSequence EndScalar BeginScalarEndAlias BeginAlias EndPropertiesBeginProperties EndAnchor BeginAnchor EndHandle BeginHandleEndTagBeginTag EndDirectiveBeginDirective EndComment BeginComment EndEscape BeginEscape DocumentEnd DirectivesEndIndentWhite IndicatorLineFoldLineFeedBreakMetaTextBom showTokensyaml tokenizertokenizerWithNtokenizerWithCtokenizerWithTtokenizerWithNCtokenizerWithNTtokenizerNamesKeepClipStripFlowKeyBlockKeyFlowInFlowOutBlockInBlockOutMatchParsermatchStatesName sEncoding sDecisionsLimit sForbiddensIsPeeksIsSolsCharssCharsByteOffsetsCharsCharOffset sCharsLinesCharsLineChar sByteOffset sCharOffsetsLine sLineCharsCodesLastsInputPatternReplyResultrResultrTokensrCommitrStateMoreFailed tByteOffset tCharOffsettLine tLineChartCodetTextEncodingUTF32BEUTF32LEUTF16BEUTF16LEUTF8|>decodedetectEncoding undoEncoding hasFewerThan undoUTF32LE undoUTF32BE combinePairs combineLeadsurrogateOffsetcombineSurrogates undoUTF16LE undoUTF16BEundoUTF8 decodeTwoUTF8combineTwoUTF8decodeThreeUTF8combineThreeUTF8decodeFourUTF8combineFourUTF8 escapeStringtoHex initialState setDecisionsetLimit setForbiddensetCode returnReply failReplyunexpectedReply%<%^!?!?!-&/?*+decidechoicerecoveryprevpeekrejectuptononEmptyemptyeofsolcommitnextLinewith forbidding limitedTonextIf finishTokenwrapconsumetokenfakemeta indicatortext emptyToken wrapTokensprefixErrorWithpatternTokenizerparserTokenizer commitBugspName tokenizerstokenizersWithNtokenizersWithCtokenizersWithTtokenizersWithNCtokenizersWithNTna asIntegerresult $fReadChompbaseGHC.BaseString $fShowChomp $fReadContext $fShowContext $fMonadParser $fMatch[]() $fMatch(,)()ghc-prim GHC.TypesChar $fMatchChar()$fMatchParserresult $fShowToken $fShowCode$fShowEncoding