úÎz  Try to run a parser. C If it succeeds, return (Just value) and advance input position. < If it fails, return Nothing and keep the input position.        ! ! !"A spreadsheet is a list of lines, each line consists of cells, and each cell is a string. +Ideally, spreadsheets read from a CSV file 3have lines with the same number of cells per line.  However, we cannot assert this, -and thus we parse the lines as they come in. "#$%&'()fromString qm sep text parses text into a spreadsheet, using the quotation character qm and the separator character sep. fromString qm sep text parses text into a spreadsheet Eand additionally returns text that follows after CSV formatted data. *This is a quick hack. GIt does neither handle field nor line separators within quoted fields. )You must provide well-formed CSV content 5without field and line separators within quotations. !Everything else yields an error. +,-.       !"#$%&'()*+,-./0spreadsheet-0.1.2Data.SpreadsheetData.Spreadsheet.CharSourceData.Spreadsheet.Parser UserMessageT fromStringfromStringWithRemaindertoStringfromStringSimpletoStringSimpleString runStringCgetisEndstopfallibletryPossiblyIncompletePartialFalliblePartialFallibleStraightsatisfycharstringmanyappendIncompleteabsorbExceptionmanyIncompletesepByIncompletebetween terminatedeitherOrdeflt parseChar parseQuoted parseUnquoted parseCell parseLine parseLineEndparseLineWithEnd parseTablequote_dequoteSimpledequoteSimpleOptionalunescapeQuoteSimple