summaryrefslogtreecommitdiff
path: root/src/include/tokenizer.hpp
diff options
context:
space:
mode:
authorHombreLaser <buran@silosneeded.com>2024-06-22 16:45:04 -0600
committerHombreLaser <buran@silosneeded.com>2024-06-22 16:45:04 -0600
commit404826e78a56e15e20d3938aed80945295921745 (patch)
treed607769fccfc4e3c77a9465a9800004421c500cb /src/include/tokenizer.hpp
parent10ecf4d95194a273cc6aab89c3a1bcf739a194cd (diff)
Add parser
Diffstat (limited to 'src/include/tokenizer.hpp')
-rw-r--r--src/include/tokenizer.hpp17
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();
};