X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=src%2Flex.icl;h=63a14e02d69a8b5e2dca8e044038eeba9375d692;hb=ca00099482644c76d6d918f536f69db32ac85058;hp=e3c8484e7f888bd57995cd0db92e8426e52a96f8;hpb=2c3c54fbde3f89ed2b87cbf6d4be5d4e7811d694;p=cc1516.git diff --git a/src/lex.icl b/src/lex.icl index e3c8484..63a14e0 100644 --- a/src/lex.icl +++ b/src/lex.icl @@ -20,6 +20,9 @@ lexProgram = some lexToken <* many (satisfy isSpace) <* eof lexToken :: Parser Char TokenValue lexToken = + //Comments + (list (fromString "//") >>| until top ((item '\n' >>| return Void) <|> eof) >>| lexToken) <|> + (list (fromString "/*") >>| until top (list (fromString "*/")) >>| lexToken) <|> //Keyword tokens (lexKw "var" VarToken) <|> (lexKw "Void" VoidToken) <|> @@ -41,8 +44,9 @@ lexToken = (lexOp "<=" LesserEqToken) <|> (lexOp ">=" GreaterEqToken) <|> (lexOp "==" EqualsToken) <|> (lexOp "&&" AmpersandsToken) <|> (lexOp "||" PipesToken) <|> (lexOp "[]" EmptyListToken) <|> - (lexOp "->" ArrowToken) <|> (lexOp "(" BraceOpenToken) <|> + (lexOp "->" ArrowToken) <|> //One char ops tokens + (lexOp "(" BraceOpenToken) <|> (lexOp ")" BraceCloseToken) <|> (lexOp "{" CBraceOpenToken) <|> (lexOp "}" CBraceCloseToken) <|> (lexOp "[" SquareOpenToken) <|> (lexOp "]" SquareCloseToken) <|> (lexOp "," CommaToken) <|> @@ -56,7 +60,7 @@ lexToken = (liftM (NumberToken o toInt o toString) $ some $ satisfy isDigit) <|> //Ident tokens (liftM IdentToken $ some $ satisfy isIdentChar) <|> - (satisfy isSpace >>| lexToken) //<|> + (satisfy isSpace >>| lexToken) // (eof >>| pure EndOfFileToken) where isIdentChar c = isAlphanum c || c == '_'