Skip to content

Commit

Permalink
Fix norm
Browse files Browse the repository at this point in the history
  • Loading branch information
Saverio976 committed Dec 27, 2023
1 parent 8a0a2ea commit 396f68d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
3 changes: 2 additions & 1 deletion lvtc/app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import Expression
import Parser

main :: IO ()
main = print $ runParser (parseExpresion) "fn main () -> Int \n{\n <- 0;\n};\n"
main = print $ runParser (parseExpresion)
"fn main () -> Int \n{\n <- 0;\n};\n"
-- main = print $ runParser (parseExpresion) "alias abc def;\n"
-- main = print $ runParser (parseExpresion) "// this is a comment\n"
17 changes: 10 additions & 7 deletions lvtc/src/Expression.hs
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,28 @@ countBracketsForFunction n ('}':xs) = countBracketsForFunction (n - 1) xs
countBracketsForFunction n ('\\':_:xs) = countBracketsForFunction n xs
countBracketsForFunction n (_:xs) = countBracketsForFunction n xs

parseFunction' :: Parser Expression
parseFunction' = Function <$> ((++) <$>
(parseString "fn " <|> parseString "export fn") <*>
parseAllCharUntil "\n};\n")

parseFunction :: Parser Expression
parseFunction = Parser f
where
f str = case runParser (
Function <$>
((++) <$>
(parseString "fn " <|> parseString "export fn") <*>
parseAllCharUntil "\n};\n")) str of
f str = case runParser parseFunction' str of
Nothing -> Nothing
Just (Function x, xs) -> case countBracketsForFunction 0 x of
0 -> Just (Function x, xs)
_ -> Nothing
Just _ -> Nothing

parseAlias :: Parser Expression
parseAlias = Alias <$> ((++) <$> parseString "alias " <*> parseAllCharUntil ";\n")
parseAlias =
Alias <$> ((++) <$> parseString "alias " <*> parseAllCharUntil ";\n")

parseComment :: Parser Expression
parseComment = Comment <$> ((++) <$> parseString "//" <*> parseAllCharUntil "\n")
parseComment =
Comment <$> ((++) <$> parseString "//" <*> parseAllCharUntil "\n")

parseExpresion :: Parser Expression
parseExpresion = parseAlias <|> parseFunction <|> parseComment
Expand Down
3 changes: 2 additions & 1 deletion lvtc/src/ParseUtil.hs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ parseAnyChar str = Parser f
parseString :: String -> Parser String
parseString value = Parser f
where
f s | take (length value) s == value = Just (value, drop (length value) s)
f s | take (length value) s == value =
Just (value, drop (length value) s)
| otherwise = Nothing

parseUInt :: Parser Int32
Expand Down

0 comments on commit 396f68d

Please sign in to comment.