Phasor 2.2.0
Stack VM based Programming Language
Loading...
Searching...
No Matches
Lexer.hpp
Go to the documentation of this file.
1#pragma once
2#include <string>
3#include <vector>
4#include <iostream>
5
6namespace Phasor
7{
8
19
20struct Token
21{
23 std::string lexeme;
24 size_t line;
25 size_t column;
26};
27
29class Lexer
30{
31 public:
32 Lexer(const std::string &source);
33 std::vector<Token> tokenize();
34
35 private:
36 std::string source;
37 size_t position = 0;
38 size_t line = 1;
39 size_t column = 1;
40
41 char peek();
42 char advance();
43 bool isAtEnd();
44 void skipWhitespace();
45 void skipShebang();
48 Token number();
49 Token string();
51};
52} // namespace Phasor
Token scanToken()
Definition Lexer.cpp:88
Lexer(const std::string &source)
Definition Lexer.cpp:9
Token complexString()
Definition Lexer.cpp:312
Token number()
Definition Lexer.cpp:192
Token string()
Definition Lexer.cpp:218
std::string source
Definition Lexer.hpp:36
std::vector< Token > tokenize()
Definition Lexer.cpp:25
size_t position
Definition Lexer.hpp:37
size_t column
Definition Lexer.hpp:39
void skipWhitespace()
Definition Lexer.cpp:64
char peek()
Definition Lexer.cpp:40
void skipShebang()
Definition Lexer.cpp:13
Token identifier()
Definition Lexer.cpp:167
bool isAtEnd()
Definition Lexer.cpp:59
char advance()
Definition Lexer.cpp:47
size_t line
Definition Lexer.hpp:38
The Phasor Programming Language and Runtime.
Definition AST.hpp:8
TokenType
Definition Lexer.hpp:10
size_t line
Definition Lexer.hpp:24
std::string lexeme
Definition Lexer.hpp:23
TokenType type
Definition Lexer.hpp:22
size_t column
Definition Lexer.hpp:25