Phasor 3.3.0
Stack VM based Programming Language
Loading...
Searching...
No Matches
Lexer.hpp
Go to the documentation of this file.
1#pragma once
3#include <string>
4#include <vector>
5#include <memory>
6#include <optional>
7#include <iostream>
9namespace Phasor
10{
12class Lexer
13{
14 public:
15 Lexer(std::string source);
16 std::vector<Token> tokenize();
17
18 struct Error
19 {
20 std::string message;
21 size_t line;
22 size_t column;
23 };
24 [[nodiscard]] std::optional<Error> getError() const
25 {
26 return lastError;
27 }
28
29 private:
30 std::string source;
31 size_t position = 0;
32 size_t line = 1;
33 size_t column = 1;
34
35 std::optional<Error> lastError;
36
37 char peek();
38 char advance();
39 bool isAtEnd();
40 void skipWhitespace();
41 void skipShebang();
44 Token number();
45 Token string();
47};
48} // namespace Phasor
Lexer(std::string source)
Definition Lexer.cpp:11
Token number()
Definition Lexer.cpp:205
std::optional< Error > lastError
Definition Lexer.hpp:35
bool isAtEnd()
Definition Lexer.cpp:65
void skipShebang()
Definition Lexer.cpp:16
void skipWhitespace()
Definition Lexer.cpp:70
Token complexString()
Definition Lexer.cpp:342
std::string source
Definition Lexer.hpp:30
Token identifier()
Definition Lexer.cpp:181
size_t position
Definition Lexer.hpp:31
size_t column
Definition Lexer.hpp:33
char advance()
Definition Lexer.cpp:53
std::vector< Token > tokenize()
Definition Lexer.cpp:27
std::optional< Error > getError() const
Definition Lexer.hpp:24
Token string()
Definition Lexer.cpp:241
Token scanToken()
Definition Lexer.cpp:94
size_t line
Definition Lexer.hpp:32
char peek()
Definition Lexer.cpp:44
The Phasor Programming Language and Runtime.
Definition AST.hpp:12
std::string message
Definition Lexer.hpp:20
Token structure.
Definition AST.hpp:26