Webserv
Loading...
Searching...
No Matches
Lexer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
5
6namespace config {
7
8typedef std::vector<Token> TokenArray;
9
18class Lexer {
19public:
20 static void tokenize(std::string const &content, TokenArray &res);
21 static TokenArray tokenize(std::string const &content);
22 static void printTokens(TokenArray const &tokens);
23
24private:
25 Lexer(std::string const &content, std::vector<Token> &res);
26
27 std::string const &content_;
29 size_t pos_;
30 char ch_;
31
32 void run();
33
34 void pushToken(TokenType type, std::string const &literal);
35 void pushToken(TokenType type, char);
36 void readChar();
37 void eatWhitespaces();
38 void identifyLastToken();
39
40 bool isPunctuation();
41 bool handleValue();
42 void handleComment();
43 void handleUnknown();
44 void handlePunctuation();
45};
46
47} // namespace config
void handleUnknown()
Definition Lexer.cpp:46
void pushToken(TokenType type, std::string const &literal)
Definition Lexer.cpp:109
TokenArray & tokens_
Definition Lexer.hpp:28
void identifyLastToken()
Definition Lexer.cpp:89
static void tokenize(std::string const &content, TokenArray &res)
Definition Lexer.cpp:12
bool handleValue()
Definition Lexer.cpp:68
void eatWhitespaces()
Definition Lexer.cpp:84
void handleComment()
Definition Lexer.cpp:41
size_t pos_
Definition Lexer.hpp:29
bool isPunctuation()
Definition Lexer.cpp:64
void run()
Definition Lexer.cpp:24
void handlePunctuation()
Definition Lexer.cpp:50
char ch_
Definition Lexer.hpp:30
Lexer(std::string const &content, std::vector< Token > &res)
Definition Lexer.cpp:7
static void printTokens(TokenArray const &tokens)
Definition Lexer.cpp:116
std::string const & content_
Definition Lexer.hpp:27
void readChar()
Definition Lexer.cpp:79
Definition ConfigException.hpp:6
std::vector< Token > TokenArray
Definition Lexer.hpp:8
TokenType
Represents the type of a lexical token.
Definition Token.hpp:12