diff options
Diffstat (limited to 'main.hs')
| -rw-r--r-- | main.hs | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/main.hs b/main.hs deleted file mode 100644 index c327d2b..0000000 --- a/main.hs +++ /dev/null @@ -1,45 +0,0 @@ -import System.Environment -import Data.Char - -data TokenType = Number | Add | Sub | Mul | Exp | Equal deriving (Show) -data Token = Token TokenType Float deriving (Show) - -main = do - args <- getArgs - -- putStr $ show args - let l = lexer $ (head args) - putStrLn $ show l - - -lexer :: String -> [Token] -lexer "" = [] -lexer (c:rest) - | c == ' ' = lexer rest - | isDigit c = (Token Number (read (isolateFloat (c:rest)) :: Float)) : lexer (afterFloat (c:rest)) - | c == '+' = (Token Add 0.0) : lexer rest - | c == '-' = (Token Sub 0.0) : lexer rest - | c == '*' = (Token Mul 0.0) : lexer rest - | c == '^' = (Token Exp 0.0) : lexer rest - | c == '=' = (Token Equal 0.0) : lexer rest - - where isolateFloat :: String -> String - isolateFloat "" = "" - isolateFloat (c:cs) - | isDigit c = c : isolateFloat cs - | c == '.' = c : isolateFloat cs - | otherwise = "" - - afterFloat :: String -> String - afterFloat "" = "" - afterFloat (c:cs) - | isDigit c = afterFloat cs - | c == '.' = afterFloat cs - | otherwise = (c:cs) - - --- parse :: Lexing -> SyntaxTree --- parse s = 2 --- --- --- eval :: SyntaxTree -> Maybe [Float] --- eval _ = 0.0 |
