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
2
#include "
../../../AST/AST.hpp
"
3
#include <string>
4
#include <vector>
5
#include <memory>
6
#include <optional>
7
#include <iostream>
9
namespace
Phasor
10
{
12
class
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
();
42
Token
scanToken
();
43
Token
identifier
();
44
Token
number
();
45
Token
string
();
46
Token
complexString
();
47
};
48
}
// namespace Phasor
AST.hpp
Phasor::Lexer::Lexer
Lexer(std::string source)
Definition
Lexer.cpp:11
Phasor::Lexer::number
Token number()
Definition
Lexer.cpp:205
Phasor::Lexer::lastError
std::optional< Error > lastError
Definition
Lexer.hpp:35
Phasor::Lexer::isAtEnd
bool isAtEnd()
Definition
Lexer.cpp:65
Phasor::Lexer::skipShebang
void skipShebang()
Definition
Lexer.cpp:16
Phasor::Lexer::skipWhitespace
void skipWhitespace()
Definition
Lexer.cpp:70
Phasor::Lexer::complexString
Token complexString()
Definition
Lexer.cpp:342
Phasor::Lexer::source
std::string source
Definition
Lexer.hpp:30
Phasor::Lexer::identifier
Token identifier()
Definition
Lexer.cpp:181
Phasor::Lexer::position
size_t position
Definition
Lexer.hpp:31
Phasor::Lexer::column
size_t column
Definition
Lexer.hpp:33
Phasor::Lexer::advance
char advance()
Definition
Lexer.cpp:53
Phasor::Lexer::tokenize
std::vector< Token > tokenize()
Definition
Lexer.cpp:27
Phasor::Lexer::getError
std::optional< Error > getError() const
Definition
Lexer.hpp:24
Phasor::Lexer::string
Token string()
Definition
Lexer.cpp:241
Phasor::Lexer::scanToken
Token scanToken()
Definition
Lexer.cpp:94
Phasor::Lexer::line
size_t line
Definition
Lexer.hpp:32
Phasor::Lexer::peek
char peek()
Definition
Lexer.cpp:44
Phasor
The Phasor Programming Language and Runtime.
Definition
AST.hpp:12
Phasor::Lexer::Error
Definition
Lexer.hpp:19
Phasor::Lexer::Error::column
size_t column
Definition
Lexer.hpp:22
Phasor::Lexer::Error::line
size_t line
Definition
Lexer.hpp:21
Phasor::Lexer::Error::message
std::string message
Definition
Lexer.hpp:20
Phasor::Token
Token structure.
Definition
AST.hpp:26
src
Language
Phasor
Lexer
Lexer.hpp
Generated by
1.16.1