39 lines
593 B
C++
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
|