+++ /dev/null
-module test
-
-import StdEnv
-
-import Data.Functor
-import Control.Applicative
-
-import Text.Parsers.Simple.Core
-import Text.Parsers.Simple.Chars
-
-preprocess :: [Char] -> [Char]
-preprocess c = ['((((':foldr prep ['))))'] c]
-where
- prep '(' cs = ['(','(','(','(':cs]
- prep ')' cs = [')',')',')',')':cs]
- prep '^' cs = [')','^','(':cs]
- prep '*' cs = [')',')','*','(','(':cs]
- prep '/' cs = [')',')','/','(','(':cs]
- prep '+' cs = [')',')',')','+','(','(','(':cs]
- prep '-' cs = [')',')',')','-','(','(','(':cs]
- prep c cs = [c:cs]
-
-:: Expr = BinOp Expr Char Expr | Lit Int | Var [Char]
-
-parseExpr :: Parser Char Expr
-parseExpr
- = BinOp <$ pToken '(' <*> parseExpr <*> pOneOf ['^*/+-'] <*> parseExpr <* pToken ')'
- <|> Var <$> some pAlpha
- <|> Lit o toInt o toString <$> some pDigit
-
-Start = parse parseExpr (preprocess ['a'])
-//Start = parse parseExpr (preprocess ['a*b+c^d/e'])