3)3      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ portable provisional daan@cs.uu.nl    portable provisional daan@cs.uu.nl !"#Language independent show function  !"" ! !"portable provisional daan@cs.uu.nl0#$%&'()*+,-./0123456789:;<=4The most primitive token recogniser. The expression )tokenPrimEx show nextpos mbnextstate test,  recognises tokens when test returns Just x (and returns the value x). Tokens are shown in  error messages using show#. The position is calculated using nextpos, and finally,  mbnextstate, f can hold a function that updates the user state on every token recognised (nice to count tokens :-).  The function is packed into a  type for performance reasons. >?@ABC!#$%&'()*+,-./0123456789:;<=>?@ABC!*+)(8756;C<=:>?@9AB,-./102#$%&'34!#$%&'$%&'()*+,-./0123456789:;<=>?@ABCportable provisional daan@cs.uu.nlDEFGHIJKLMNOPQRSTUDEFGHIJKLMNOPQRSTUDGHIJKLMNOPQRUSEFTDEFGHIJKLMNOPQRSTUportable provisional daan@cs.uu.nlVWXYZ[\]^_`abcdefghijkVWXYZ[\]^_`abcdefghijkVbYWXZ[\]a`_^decfhijkgVWXYZ[\]^_`abcdefghijkportable provisional daan@cs.uu.nl lmnopqrstu lmnopqrstu qtsrmponlu lmponnopqtsrrstu portable provisional daan@cs.uu.nlW #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk >non-portable (uses existentially quantified data constructors) provisional daan@cs.uu.nl-vwxyz{|}~-vwxyz{|}~-vwxyz{|}~-vwxyz{|}~wxyz{|}~ Knon-portable (uses non-portable module Text.ParserCombinators.Parsec.Token) provisional daan@cs.uu.nl >non-portable (uses existentially quantified data constructors) provisional daan@cs.uu.nl    !"#$%&'()*+,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   2    parsec-2.0!Text.ParserCombinators.Parsec.Pos#Text.ParserCombinators.Parsec.Error"Text.ParserCombinators.Parsec.Prim"Text.ParserCombinators.Parsec.Char(Text.ParserCombinators.Parsec.Combinator"Text.ParserCombinators.Parsec.Expr#Text.ParserCombinators.Parsec.Token&Text.ParserCombinators.Parsec.Language"Text.ParserCombinators.Parsec.PermText.ParserCombinators.Parsec SourcePosColumnLine SourceNamenewPos initialPos sourceName sourceLine sourceColumn incSourceLineincSourceColumn setSourceName setSourceLinesetSourceColumnupdatePosString updatePosChar ParseErrorMessageExpectUnExpect SysUnExpectmessageCompare messageString messageEqerrorPos errorMessageserrorIsUnknownnewErrorUnknownnewErrorMessageaddErrorMessage setErrorPossetErrorMessage mergeErrorshowErrorMessagesState stateInputstatePos stateUser GenParserParser<|>getStatesetState updateState getPositiongetInput setPositionsetInputgetParserStatesetParserState parseFromFile parseTestparse runParserpzerotrytoken tokenPrim tokenPrimExlabellabels unexpectedmanyskipManytokens CharParseroneOfnoneOfspacesspacenewlinetabupperloweralphaNumletterdigithexDigitoctDigitcharanyCharsatisfystringchoiceoptionoptionalbetween skipMany1many1sepBysepBy1 sepEndBy1sepEndByendBy1endBycountchainrchainlchainl1chainr1anyTokeneof notFollowedBymanyTill lookAhead OperatorTableOperatorPostfixPrefixInfixAssoc AssocRight AssocLeft AssocNonebuildExpressionParser TokenParser identifierreservedoperator reservedOp charLiteral stringLiteralnaturalintegerfloatnaturalOrFloatdecimal hexadecimaloctalsymbollexeme whiteSpaceparensbracesanglesbracketssquaressemicommacolondotsemiSepsemiSep1commaSep commaSep1 LanguageDef commentStart commentEnd commentLinenestedComments identStart identLetteropStartopLetter reservedNamesreservedOpNames caseSensitivemakeTokenParser haskellStyle javaStyleemptyDefhaskell haskellDefmondrian mondrianDef PermParser<||><$$><|?><$?>permuteforcePosReplyErrorOkConsumedEmpty parsecMap parsecReturn parsecBind parsecFail parsecZero parsecPlusbase Data.MaybeMaybeupdateParserState manyAccum haskell98DefBranchPermptestnewpermaddaddoptmapPerms