diff --git a/impl/ZOWIE.hs/src/Language/ZOWIE/Parser.hs b/impl/ZOWIE.hs/src/Language/ZOWIE/Parser.hs index 2a3646b..9ecca44 100644 --- a/impl/ZOWIE.hs/src/Language/ZOWIE/Parser.hs +++ b/impl/ZOWIE.hs/src/Language/ZOWIE/Parser.hs @@ -40,7 +40,7 @@ operand = do spaces - r <- indirect <|> direct <|> immediate + r <- (try indirect) <|> (try direct) <|> immediate return r indirect = do @@ -56,7 +56,7 @@ immediate = do n <- number - return $ Direct n + return $ Immediate n number = do c <- digit diff --git a/impl/ZOWIE.hs/src/Main.hs b/impl/ZOWIE.hs/src/Main.hs index fec528f..74aa9c0 100644 --- a/impl/ZOWIE.hs/src/Main.hs +++ b/impl/ZOWIE.hs/src/Main.hs @@ -11,6 +11,11 @@ main = do args <- getArgs case args of + ["parse", fileName] -> do + text <- readFile fileName + let prog = Parser.parseZOWIE text + putStrLn $ show $ prog + return () ["run", fileName] -> do text <- readFile fileName let prog = Parser.parseZOWIE text @@ -18,7 +23,7 @@ putStrLn $ show $ result return () _ -> do - abortWith "Usage: zowie run <carriage-program-text-filename>" + abortWith "Usage: zowie (parse|run) <zowie-program-filename>" abortWith msg = do hPutStrLn stderr msg