Webserv
Loading...
Searching...
No Matches
Lexer.hpp
Go to the documentation of this file.
1#pragma once
2
4#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() const;
41 bool handleValue();
42 void handleComment();
43 void handleUnknown();
44 void handlePunctuation();
45};
46
47} // namespace config
void handleUnknown()
Definition Lexer.cpp:45
void pushToken(TokenType type, std::string const &literal)
Definition Lexer.cpp:117
TokenArray & tokens_
Definition Lexer.hpp:28
void identifyLastToken()
Definition Lexer.cpp:97
bool isPunctuation() const
Definition Lexer.cpp:61
static void tokenize(std::string const &content, TokenArray &res)
Definition Lexer.cpp:11
bool handleValue()
Definition Lexer.cpp:63
void eatWhitespaces()
Definition Lexer.cpp:92
void handleComment()
Definition Lexer.cpp:40
size_t pos_
Definition Lexer.hpp:29
void run()
Definition Lexer.cpp:23
void handlePunctuation()
Definition Lexer.cpp:47
char ch_
Definition Lexer.hpp:30
Lexer(std::string const &content, std::vector< Token > &res)
Definition Lexer.cpp:6
static void printTokens(TokenArray const &tokens)
Definition Lexer.cpp:124
std::string const & content_
Definition Lexer.hpp:27
void readChar()
Definition Lexer.cpp:87
Definition ArgumentFactory.hpp:5
std::vector< Token > TokenArray
Definition Lexer.hpp:8
TokenType
Represents the type of a lexical token.
Definition Token.hpp:12