h)a     0.1.0.0 Safe-Inferred" Safe-Inferred"4snail!The initial character of any textsnail...snail...snail...snail...snail... Safe-Inferred"snailTODO: ; is the error type but we should use an explicit error typesnail Megaparsec's < takes a prefix and skips lines that begin with that prefixsnail Megaparsec's 7 takes prefix and suffix and skips anything in betweensnail4Generate a parser for whitespace in a language with  and snailParse a   verbatim!snailParse an S-Expression"snailThe list of valid token characters, note that we allow invalid tokens at this point#snailAny   object that starts with an appropriately valid character. This could be an variable or function name. For example, hello. is a valid lexeme in the s-expression below. (hello) $snail1An escaped quote to support nesting `"` inside a  snailMatches any non-quote character snail7Matches a literal text and supports nested quotes, e.g.  ("hello"") %snail(Parse one of the possible structures in -. These are parsed recursively separated by  in  . snail Parse an  snailParse a valid snail file   Safe-Inferred"/snailGiven a &, attempt to parse  from a file. Safe-Inferred"\ Safe-Inferred"  '      !"#$%&'()*+,-./01#234snail-0.1.0.0-inplaceSnail.Characters Snail.LexerSnail.IO Snail.ToTextsnail Paths_snailSnailinitialCharacterspecialInitialCharacterpeculiarCharacterdigitCharacterspecialSubsequentCharacterparenthesisStartingCharacterSnailAstLexeme TextLiteral SExpressionnonQuoteCharacter textLiteral sExpressionsnailAst $fEqSnailAst$fShowSnailAst readSnailFiletoTextversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDirParserbase Data.VoidVoidskipLineCommentskipBlockCommentspacessymbol text-2.0.2Data.Text.InternalTextparensvalidCharacterlexeme escapedQuoteleavesGHC.IOFilePath