diff --git a/src/TextToAST.hs b/src/TextToAST.hs index 400f101..781abc9 100644 --- a/src/TextToAST.hs +++ b/src/TextToAST.hs @@ -10,7 +10,6 @@ module TextToAST textToAST ) where -import Debug.Trace import AST import Data.Int (Int64) import Data.Char (isDigit) @@ -74,10 +73,10 @@ nextToParse str | skipableChar (head str) = nextToParse (dropWhile skipableChar (dropWhile notSkipableChar (dropWhile skipableChar str)) countAtoms :: String -> Int -> Int -countAtoms str depth | depth >= 2 = trace ("maxdepth") $ 2 +countAtoms str depth | depth >= 2 = 2 | not (null $ takeWhile (/= ')') - (dropWhile skipableChar str)) = trace ("+1atom, str: " ++ str ++ " parseRes: " ++ (nextToParse str)) $ + (dropWhile skipableChar str)) = countAtoms (nextToParse str) (depth + 1) | otherwise = depth diff --git a/test/Spec.hs b/test/Spec.hs index ca9a043..8879c79 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -172,4 +172,30 @@ unitTestsASTParse = testGroup "AST Parse Tests" (Just $ Leaf (Boolean True)) ) (textToAST "(foo ((def)) #t)") + , testCase "(do (re (mi)) 12)" $ + assertEqual "(do (re (mi)) 12)" + (Just $ Node "do" + (Just $ Node "re" + (Just $ Leaf (Symbol "mi")) + (Just $ Empty) + ) + (Just $ Leaf (Number 12)) + ) + (textToAST "(do (re (mi)) 12)") + , testCase "(do (re (mi)) 12 (re (mi)))" $ + assertEqual "(do (re (mi)) 12 (re (mi)))" + (Just $ Node "do" + (Just $ Node "re" + (Just $ Leaf (Symbol "mi")) + (Just $ Empty) + ) + (Just $ Variadic + (Just $ Leaf (Number 12)) + (Just $ Node "re" + (Just $ Leaf (Symbol "mi")) + (Just $ Empty) + ) + ) + ) + (textToAST "(do (re (mi)) 12 (re (mi)))") ]