};      !"#$%&'()*+,-./0123456789:An indentation aware parser. ;FIndentation awareness is built into indentation parser by using these Hparser states. To distinguish it from the actual user defined state we Dcall the former the indentation state and the later the user state. <=>$The mode of the indentation parser. In line fold mode In block mode Ignore indentation Gets the current user state. ?$Gets the current indentation state. @"Gets the current identation mode. A6Gets the position where the last indentation started. Sets the user state. B*Sets the indentation state of the parser. CSets the current indentation. D#Sets the current indentation mode. 1The most generic way to run an IndentParser. Use  parseTest for testing your parser instead. the parser to be run the initial state the indentation mode the source file name the list of tokens the result of parsing ERuns the given parser on a given input stream and returns either the result or parse error. The parser to run *The name of the source (to report errors) The input to the parser Like   but use the contents of  SourceName as the input tokens. The parser to run The file on which to run. ARuns the input parser on the given stream and prints the result. Useful for testing parsers. The parser to test The input to the parser ;@ACD ;@ACD E ?The combinator indentParser makes its input parser indentation G aware. Usually one would want to make all the tokenisers indentation  aware.  The parser   p runs p ignoring any indentation based Fstructure. This can be used to parse for example an explicitly braced where clause in Haskell. F The parser  p parses a block of p.  The parser  lineFold p parses a folded line of p.  The parser betweenOrBlock open close p parses p between open and close. If open is matched p is parsed in  mode otherwise a block p is parsed in & mode. For eg. the parser for parsing %haskell where clause would look like : whereClause = do reserved where; betweenOrBlock bindings >Similar to betweenOrBlock but uses lineFold instead of block. G%This returns the current line number H'This returns the current column number IJK The parser  saveIndent p&, saves the current indentation, runs p, #and restores the indentation back. L    )<Indentation aware parser to match a valid identifier of the  language. CIndentation aware parser to match a reserved word of the language. !The reserved word to be matched.  The parser reserved tokP keyword$ parses the reserved word keyword. I The string keyword should have been declared as a reserved word in the  2Text.ParserCombinator.Parserc.Language.LanguageDef  -record. GIndentation aware parser to match a reserved operator of the language. 1The reserved operator to be matched. Should have . been declared as a reserved operator in the  2Text.ParserCombinator.Parserc.Language.LanguageDef  record. 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 Gassumend to be that of Hasekell which matches that of most programming  language). 6Indentation aware parser to match a natural number. .Indentation aware parser to match an integer. =Indentation aware parser to match a floating point number. =Indentation aware parser to match either a natural number or Floating point number. 9Indentation aware parser to match an integer in decimal. =Indentation aware parser to match an integer in hexadecimal. 8Indentation aware parser to match an integer in ocatal.  Matches a semicolon and returns ';'. !Matches a comma and returns ,. "Matches a colon and returns :. #Matches a dot and returns . $"Given an indentation aware parser p as argument  semiSep tokP : returns a parser that parses zero or more occurances of p  seperated by semicolon (';') %"Given an indentation aware parser p as argument  semiSep1 tokP 9 returns a parser that parses one or more occurances of p seperated  by semicolon (';') The input Parser &"Given an indentation aware parser p as argument  commaSep tokP : returns a parser that parses zero or more occurances of p  seperated by comma (',') The input Parser '"Given an indentation aware parser p as argument commaSep1 tokP 9 returns a parser that parses one or more occurances of p seperated  by comma (',') The input Parser ("Given an indentation aware parser p as argument semiOrNewLineSep1 tokP8 returns a parser that parses one or more occurances of p  seperated by either semicolons (';'#) or newline. To seperate multiple  occurance of p- in the same line use an explicit semicolon (';'). The input Parser )"Given an indentation aware parser p as argument semiOrNewLineSep tokP9 returns a parser that parses zero or more occurances of p  seperated by either semicolons (';'$) or newlines. To seperate multiple  occurance of p- in the same line use an explicit semicolon (';'). The input Parser *"Given an indentation aware parser p as argument commaOrNewLineSep1 tokP8 returns a parser that parses one or more occurances of p seperated by either comma (','#) or newline. To seperate multiple  occurance of p) in the same line use an explicit comma (','). The input Parser +"Given an indentation aware parser p as argument commaOrNewLineSep tokP9 returns a parser that parses zero or more occurances of p seperated by either comma (','$) or newlines. To seperate multiple  occurance of p) in the same line use an explicit comma (','). The input Parser , The parser  parens tokP p parses p between '(' and ')' . The parser p& does not care about indentation i.e. p is run in  mode. The input Parser - Similar to , but when no explicit '(' and ')' are given, groups p by block indentation. The input parser . Similar to , but when no explicit '(' and ')' are given, groups p by a line fold. The input parser / The parser  braces tokP p parses p between '{' and '}' . The parser p& does not care about indentation i.e. p is run in  mode. The input Parser 0 Similar to / but when no explicit '{' and '}' are given, groups p by block indentation. The input parser 1 Similar to / but when no explicit '{' and '}' are given, groups p by a line fold. The input parser 2 The parser  angles tokP p parses p between angles. The parser p %does not care about indentation i.e. p is run in  mode. The input Parser 3 Similar to 2/ but when no explicit angles are given, groups p by block indentation. The input parser 4 Similar to 2/ but when no explicit angles are given, groups p by a line fold. The input parser 5 The parser brackets tokP p parses p between '[' and ']'. The parser p& does not care about indentation i.e. p is run in  mode. The input Parser 6 Similar to 5 but when no explicit '[' and ']' are given, groups p by block indentation. The input parser 7 Similar to 5 but when no explicit '[' and ']' are given, groups p by a line fold. The input parser 8:Indentation aware parser that is equvalent to string str. 9=Creates a lexeme parser. The resultant parser skips trailing #spaces and is indentation aware. The input parser. :?The parser whiteSpace skips spaces and comments. This does not Fcare about indentation as skipping spaces should be done irrespective of the indentation. * !"#$%&'()*+,-./0123456789:* "#!98:$%&')(+*,-./01234567) !"#$%&'()*+,-./0123456789:M      !"#$%&'()*+,-./0123456789:;<=>??@ABCDEFGHIJKLMNOPIndentParser-0.2.1*Text.ParserCombinators.Parsec.IndentParser0Text.ParserCombinators.Parsec.IndentParser.Token/Text.ParserCombinators.Parsec.IndentParser.PrimIndentCharParser IndentParser IndentModeLineFoldBlockNoIndentgetStatesetState runParserparse parseFromFile parseTest indentParsernoIndentblocklineFoldbetweenOrBlockbetweenOrLineFold TokenParser identifierreservedoperator reservedOp charLiteral stringLiteralnaturalintegerfloatnaturalOrFloatdecimal hexadecimaloctalsemicommacolondotsemiSepsemiSep1commaSep commaSep1semiOrNewLineSep1semiOrNewLineSepcommaOrNewLineSep1commaOrNewLineSepparens parensOrBlockparensOrLineFoldbraces bracesOrBlockbracesOrLineFoldangles anglesOrBlockanglesOrLineFoldbracketsbracketsOrBlockbracketsOrLineFoldsymbollexeme whiteSpace IndentState indentMode indentPosgetIndentState getIndentMode getIndentPossetIndentState setIndentPos setIndentModeindentGT eobReachedlinecolumn indentColumnnextPos saveIndentwithIndentMode