neopb/tokenizer.hpp
2025-11-18 16:24:59 -06:00

39 lines
593 B
C++

#pragma once
#ifndef TOKENIZER_HPP
#define TOKENIZER_HPP
#include <regex>
#include <unordered_map>
typedef enum {
FUNCTION,
SUB,
END,
AS,
TYPE,
IDENTIFIER,
INTEGER,
STRING,
OPAREN,
CPAREN,
COMMA,
QUOTE,
EQUALS,
TOKEN_TYPE_COUNT
} PBTokenType;
typedef struct {
PBTokenType type;
std::string value;
} PBToken;
class Tokenizer {
std::unordered_map<PBTokenType, std::regex> tokentypes;
std::string code;
public:
Tokenizer(std::string);
std::vector<PBToken> tokenize();
PBToken tokenize_one_token();
};
#endif