From 281425310c5db21f87981eeb9601a71d1974d98d Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Thu, 10 Apr 2014 05:25:03 +1000 Subject: Rearranging files --- Thue/Parser.hs | 84 ---------------------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 Thue/Parser.hs (limited to 'Thue/Parser.hs') diff --git a/Thue/Parser.hs b/Thue/Parser.hs deleted file mode 100644 index 2ee41ae..0000000 --- a/Thue/Parser.hs +++ /dev/null @@ -1,84 +0,0 @@ -module Thue.Parser ( - ThueProgram(..), - ThueRule(..), - ThueState, - - parseThue - ) where - -import Control.Applicative( some ) -import Text.ParserCombinators.Parsec - - - -data ThueProgram = ThueProgram { thueRules :: [ThueRule] - , thueInitialState :: ThueState } - deriving (Show, Eq) - - -data ThueRule = ThueRule { original :: ThueState - , replacement :: ThueState } - deriving (Show, Eq) - - -type ThueState = String - - - - -parseThue :: String -> Either ParseError ThueProgram -parseThue = parse thue "error" - - - - -thue = do - rs <- many rule - separatorLine - i <- initialState - eof - return (ThueProgram rs i) - - -rule = do - o <- ruleState - separator - r <- state - eol - return (ThueRule o r) - - -separatorLine = whiteSpace >> separator >> whiteSpace >> eol -separator = string "::=" - "rule separator" - - -initialState = do - s <- state `sepEndBy` eol - return (concat s) - - -ruleState = some ruleStateChar - - -ruleStateChar = noneOf "\n\r:" - <|> try (char ':' >> notFollowedBy (string ":=") >> return ':') - "state character" - - -state = many stateChar - - -stateChar = noneOf "\n\r" - "state character" - - -whiteSpace = many (oneOf "\t ") - - -eol = try (string "\r\n") - <|> try (string "\n\r") - <|> try (string "\r") - <|> try (string "\n") - "end of line" - -- cgit