import Text.ParserCombinators.Parsec {----------------------}{------------------------------------------------------} -- data Stage1Element = StringLiteral String | Unparsed String -- -- parseProgram = try parseProgram' <|> do input <- getInput -- setInput ("<-- " ++ input) -- -- parseProgram' = do -- unparsed <- many (notFollowedBy (char '"' <|> string "<--") >> anyChar) -- remainder <- (char '"' >> parseString) <|> (string "<--" >> parseComment) -- return Unparsed unparsed : remainder -- -- parseString = {----------------------}{------------------------------------------------------} data Special = Period | Colon | Dollar data Token = StringLiteral String | LeftBrace [Special] | RightBrace | LeftBrack [Special] | RightBrack | LeftParen [Special] | RightParen | IntegerLiteral Integer |