aboutsummaryrefslogtreecommitdiff
path: root/thue.hs
diff options
context:
space:
mode:
Diffstat (limited to 'thue.hs')
-rw-r--r--thue.hs72
1 files changed, 0 insertions, 72 deletions
diff --git a/thue.hs b/thue.hs
deleted file mode 100644
index b76056e..0000000
--- a/thue.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-
-import Text.Combinators.Parsec
-
-
-
-data ThueProgram = ThueProgram { thueRules :: [Rule]
- , thueInitialState :: State }
- deriving (Show)
-
-
-data Rule = Rule { original :: State
- , replacement :: State }
- deriving (Show)
-
-
-type State = 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 (Rule o r)
-
-
-separatorLine = whiteSpace >> separator >> whiteSpace >> eol
-separator = string "::="
-
-
-initialState = do
- s <- state `sepEndBy` eol
- return (concat s)
-
-
-ruleState = many ruleStateChar
-
-
-ruleStateChar = noneOf "\n\r:"
- <|> try (do { char ':'; notFollowedBy (string ":="); return ':'})
-
-
-state = many stateChar
-
-
-stateChar = noneOf "\n\r"
-
-
-whiteSpace = many (oneOf "\t ")
-
-
-eol = try (string "\r\n")
- <|> try (string "\n\r")
- <|> try (string "\r")
- <|> try (string "\n")
-