diff options
Diffstat (limited to 'src/include/tokenizer.hpp')
-rw-r--r-- | src/include/tokenizer.hpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/include/tokenizer.hpp b/src/include/tokenizer.hpp index a3f9998..7d00055 100644 --- a/src/include/tokenizer.hpp +++ b/src/include/tokenizer.hpp @@ -1,7 +1,7 @@ #pragma once #include <regex> #include <string> -#include <array> +#define TOKENS_ARRAY_LEN 16 enum Type { operand, @@ -11,7 +11,8 @@ enum Type { division, left_parens, right_parens, - equals + equals, + nil }; struct Token { @@ -22,14 +23,14 @@ struct Token { class Tokenizer { private: // Private attributes - std::array<Token *, 16> tokens; + Token *tokens[17]; const std::string *to_tokenize; size_t current_char_index; short tokens_head; // Regexes - std::regex operand_regex = std::regex("^0{1}|\\d+"); - std::regex operation_regex = std::regex("\\+|-|/|\\*"); - std::regex parens_regex = std::regex("(|)"); + std::regex operand_regex = std::regex("^0{1}|^\\d+"); + std::regex operation_regex = std::regex("^\\+|^-|/|^\\*"); + std::regex parens_regex = std::regex("^\\(|^\\)"); // End of private attributes // Private methods void clearTokens(); @@ -42,6 +43,6 @@ private: public: Tokenizer(); ~Tokenizer(); - const std::array<Token *, 16> &tokenize(const std::string &operation); - const std::array<Token *, 16> &getTokens(); + Token **tokenize(const std::string &operation); + Token **getTokens(); }; |