úÎ]KYt>      !"#$%&'()*+,-./0123456789:;<=2Type to capture Haskell like indentation. Besides   and   Gthe important indentations are blocks and line folds. A block starting  at position p7 consists of all tokens that have indentation at least  as much as p%. A folded like starting at position p is The indentation parser. $The inner monad for indent parsers. DType class that captures generic indentation rule. It should follow the condition that     = > ?. )an indentation state where no tokens are  accepted. 'an indentation that will always accept  tokens. Check if the current  position is acceptable. Inner indentation. Outer indentation. 'True if the inner indentation can nest  inside the outer indentations. ,Build indentation awareness into the parser ?Any nested indentation starts at a position. Given an indentor Dfunction, i.e. a function to compute the indentation state from the Ecurrent position, and a parser to parse the body of the indentation, Cruns the parser inside the nested indentation context given by the  indentor. indentor function. The nested parser to run @Inner indentation Outer indentation  body parser +run a given parser neglecting indentation. BRun a given indentation aware parser with a starting indentation. The starting indentation, The parser to run, The user state, Name of the input source, The actual stream,  The result Same as  always. The parser to run, The user state, Name of the input source, The actual stream,  The result.       #run a given parser inside a block. 'run a given parser inside a line fold.  Similar to Text.Parsec.Combinator.between. However, the Text.Parsec.Combinator.between# will not work as expected because @it will not turn off the indentation check of its input parser. So something like  . whereClause = between lbrack rbrack bindings  lbrack = do char '{'; spaces  rbrack = do char '}'; spaces will not be able to parse say   where {  a = 10  } 1Use the version exported by this module instead. the opening delimiter the closing delimiter  the contents  Similar to / but if the opening and closing delimiters are Gnot given, uses a block to delimit the nesting. For example, a haskell where clause will look like 3 whereClause = betweenBlock lbrack rbrack bindings  lbrack = do char '{'; spaces  rbrack = do char '}'; spaces opening delimitor closing delimitor the contents parser .9Indentation aware tokeniser to match a valid identifier. 1Indentation aware tokeniser matches an operator. 6Indentation aware tokeniser to match a reserved word. The reserved word. =Indentation aware parser to match a reserved operator of the  language. %The reserved operator to be matched. BIndentation aware parser to match a character literal (the syntax ? is assumend to be that of Hasekell which matches that of most  programming language BIndentation aware parser to match a string literal (the syntax is < assumend to be that of Hasekell which matches that of most  programming language). 4Indentation aware parser to match a natural number. !.Indentation aware parser to match an integer. ">Indentation aware tokeniser to match a floating point number. #@Indentation aware tokensier to match either a natural number or  Floating point number. $<Indentation aware tokensier to match an integer in decimal. %@Indentation aware tokeniser to match an integer in hexadecimal. &;Indentation aware tokeniser to match an integer in ocatal. '1Indentation aware tokeniser that is equvalent to string. (@Creates a lexeme tokeniser. The resultant tokeniser indentation & aware and skips trailing white spaces/ comments. )?The parser whiteSpace skips spaces and comments. This does not : care about indentation as skipping spaces should be done ! irrespective of the indentation * Matches a semicolon and returns ';'. +Matches a comma and returns ,. ,Matches a colon and returns :. -Matches a dot and returns .. ABCDEFGH.Match the input parser p within a pair of paranthesis. /Same as .3 but if no explicit paranthesis are given, matches p inside an indented block. 0Match the input parser p within a pair of braces 1Same as 0. but if no explicit braces are given, matches p inside an indented block. 2Match the input parser p) within a pair of angular brackets, i.e. I and J. 3Same as 21 but if no explicit anglular brackets are given, %matches p inside and indented block. 4'Match p within a angular brackets i.e. '[' and ']'. 5Same as 42 but if no explicit brackets are given, matches p inside and indented block. 6Parse zero or more p seperated by by a semicolon 7Parse one or more p seperated by a semicolon 8Parse zero or more p0 seperated by semicolon or new line. Long lines "are continued using line folding. 9Parse one or more p0 seperated by semicolon or new line. Long lines "are continued using line folding. :Parse zero or more p seperated by by a comma. ;Parse one or more p seperated by a comma. <Parse zero or more p0 seperated by comma or new line. Long lines are continued using line folding. =Parse one or more p0 seperated by comma or new line. Long lines are continued using line folding. & !"#$%&'()*+,-./0123456789:;<=& !"#$%&'()*+,-./0123456879:<;=& !"#$%&'()*+,-./0123456789:;<=>  !"#$%&'()*+,-./0123456789:;<=K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQCRSCRTUindentparser-0.1Text.Parsec.IndentParsec.Prim#Text.Parsec.IndentParsec.CombinatorText.Parsec.IndentParsec.TokenText.Parsec.IndentParsec IndentParsec IndentParsecTGenIndentParsec HaskellLikeLineFoldBlockNeglectNeverGenIndentParsecTIndentT Indentationneveralways acceptable nestableIn tokenisernest neglectIndentrunGIPT'runGIPTblockOf foldedLinesOfbetween betweenBlockIndentTokenParserGenIndentTokenParser identifieroperatorreserved reservedOp charLiteral stringLiteralnaturalintegerfloatnaturalOrFloatdecimal hexadecimaloctalsymbollexeme whiteSpacesemicommacolondotparens parensBlockbraces bracesBlockangles anglesBlockbrackets bracketsBlocksemiSepsemiSep1semiSepOrFoldedLinessemiSepOrFoldedLines1commaSep commaSep1commaSepOrFoldedLinescommaSepOrFoldedLines1baseGHC.Baseconstghc-prim GHC.TypesFalsenestPlparenrparenlbracerbracelangleranglelbracketrbracket GHC.Classes<>