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
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
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
();
42
Token
scanToken
();
43
Token
identifier
();
44
Token
number
();
45
Token
string
();
46
Token
complexString
();
47
};
48
}
// namespace Phasor
AST.hpp
Phasor::Lexer::number
Token number()
Definition
Lexer.cpp:190
Phasor::Lexer::lastError
std::optional< Error > lastError
Definition
Lexer.hpp:35
Phasor::Lexer::isAtEnd
bool isAtEnd()
Definition
Lexer.cpp:60
Phasor::Lexer::skipShebang
void skipShebang()
Definition
Lexer.cpp:15
Phasor::Lexer::skipWhitespace
void skipWhitespace()
Definition
Lexer.cpp:65
Phasor::Lexer::complexString
Token complexString()
Definition
Lexer.cpp:310
Phasor::Lexer::source
std::string source
Definition
Lexer.hpp:30
Phasor::Lexer::identifier
Token identifier()
Definition
Lexer.cpp:168
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:48
Phasor::Lexer::tokenize
std::vector< Token > tokenize()
Definition
Lexer.cpp:26
Phasor::Lexer::getError
std::optional< Error > getError() const
Definition
Lexer.hpp:25
Phasor::Lexer::Lexer
Lexer(const std::string &source)
Definition
Lexer.cpp:10
Phasor::Lexer::string
Token string()
Definition
Lexer.cpp:216
Phasor::Lexer::scanToken
Token scanToken()
Definition
Lexer.cpp:89
Phasor::Lexer::line
size_t line
Definition
Lexer.hpp:32
Phasor::Lexer::peek
char peek()
Definition
Lexer.cpp:41
Phasor
The Phasor Programming Language and Runtime.
Definition
AST.hpp:11
Phasor::Lexer::Error
Definition
Lexer.hpp:20
Phasor::Lexer::Error::column
size_t column
Definition
Lexer.hpp:23
Phasor::Lexer::Error::line
size_t line
Definition
Lexer.hpp:22
Phasor::Lexer::Error::message
std::string message
Definition
Lexer.hpp:21
Phasor::Token
Token structure.
Definition
AST.hpp:25
src
Language
Phasor
Lexer
Lexer.hpp
Generated by
1.16.1