From 6d608f00cdc30a30355529bd429a3d7669565f58 Mon Sep 17 00:00:00 2001 From: ala89 Date: Tue, 26 Dec 2023 12:46:05 +0100 Subject: [PATCH] Add return keyword --- src/include/types.h | 4 ++-- src/tokenize.cpp | 6 ++++++ test/tokenize.cpp | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/include/types.h b/src/include/types.h index adadbb0..50b4e6c 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -16,11 +16,11 @@ enum class TokenType { Identifier, Litteral, Plus, Minus, DoublePlus, DoubleMinus, DoubleEqual, Land, Lor, Lt, Gt, Leq, Geq, NotEqual, Not, Star, Slash, Percent, Equal, Semicolon, LParenthese, RParenthese, LCurlyBracket, RCurlyBracket, If, Else, While, For, - Break, Continue, Comma + Break, Continue, Return, Comma }; enum class Type { - Int, Double + Int, Double, Void }; using TokenData = variant; diff --git a/src/tokenize.cpp b/src/tokenize.cpp index daac99f..7264188 100644 --- a/src/tokenize.cpp +++ b/src/tokenize.cpp @@ -17,6 +17,7 @@ vector> simpleTokens = { { "for", TokenType::For }, { "break", TokenType::Break }, { "continue", TokenType::Continue }, + { "return", TokenType::Return }, { "++", TokenType::DoublePlus }, { "--", TokenType::DoubleMinus }, { "==", TokenType::DoubleEqual }, @@ -46,6 +47,7 @@ string _debug_get_type_name(Type type) { switch (type) { case Type::Int: return "INT"; case Type::Double: return "DOUBLE"; + case Type::Void: return "VOID"; default: return "Unknown"; } } @@ -82,6 +84,7 @@ string _debug_get_token_type_name(TokenType type) { case TokenType::For: return "For"; case TokenType::Break: return "Break"; case TokenType::Continue: return "Continue"; + case TokenType::Return: return "Return"; case TokenType::Comma: return "Comma"; default: return "Unknown"; } @@ -184,6 +187,9 @@ void _debug_print_token(Token token) { case TokenType::Continue: cout << "Continue"; break; + case TokenType::Return: + cout << "Return"; + break; case TokenType::Comma: cout << "Comma"; break; diff --git a/test/tokenize.cpp b/test/tokenize.cpp index 2919d5d..b40aebb 100644 --- a/test/tokenize.cpp +++ b/test/tokenize.cpp @@ -11,7 +11,7 @@ int main() { /* All tokens */ vector inputs = { - "int", "a", "=", "x", "++", "--", "==", "&&", "||", "<", ">", "<=", ">=", "!=", "!", "*", "/", "%", "=", ";", "(", ")", "{", "}", "if", "else", "while", "for", "break", "continue", "," + "int", "a", "=", "x", "++", "--", "==", "&&", "||", "<", ">", "<=", ">=", "!=", "!", "*", "/", "%", "=", ";", "(", ")", "{", "}", "if", "else", "while", "for", "break", "continue", "return", "," }; vector expectedTypes = { @@ -21,7 +21,7 @@ int main() { TokenType::Not, TokenType::Star, TokenType::Slash, TokenType::Percent, TokenType::Equal, TokenType::Semicolon, TokenType::LParenthese, TokenType::RParenthese, TokenType::LCurlyBracket, TokenType::RCurlyBracket, TokenType::If, TokenType::Else, TokenType::While, TokenType::For, - TokenType::Break, TokenType::Continue, TokenType::Comma + TokenType::Break, TokenType::Continue, TokenType::Return, TokenType::Comma }; for (size_t i = 0; i < inputs.size(); i++) {