Phasor 3.1.1
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
16 Lexer(const std::string &source);
17 std::vector<Token> tokenize();
18
19 struct Error
20 {
21 std::string message;
22 size_t line;
23 size_t column;
24 };
25 std::optional<Error> getError() const
26 {
27 return lastError;
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
Token number()
Definition Lexer.cpp:190
std::optional< Error > lastError
Definition Lexer.hpp:35
bool isAtEnd()
Definition Lexer.cpp:60
void skipShebang()
Definition Lexer.cpp:15
void skipWhitespace()
Definition Lexer.cpp:65
Token complexString()
Definition Lexer.cpp:310
std::string source
Definition Lexer.hpp:30
Token identifier()
Definition Lexer.cpp:168
size_t position
Definition Lexer.hpp:31
size_t column
Definition Lexer.hpp:33
char advance()
Definition Lexer.cpp:48
std::vector< Token > tokenize()
Definition Lexer.cpp:26
std::optional< Error > getError() const
Definition Lexer.hpp:25
Lexer(const std::string &source)
Definition Lexer.cpp:10
Token string()
Definition Lexer.cpp:216
Token scanToken()
Definition Lexer.cpp:89
size_t line
Definition Lexer.hpp:32
char peek()
Definition Lexer.cpp:41
The Phasor Programming Language and Runtime.
Definition AST.hpp:11
std::string message
Definition Lexer.hpp:21
Token structure.
Definition AST.hpp:25