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
6
namespace
Phasor
7
{
8
9
enum class
TokenType
10
{
11
Identifier
,
12
Number
,
13
String
,
14
Keyword
,
15
Symbol
,
16
EndOfFile
,
17
Unknown
18
};
19
20
struct
Token
21
{
22
TokenType
type
;
23
std::string
lexeme
;
24
size_t
line
;
25
size_t
column
;
26
};
27
29
class
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
();
46
Token
scanToken
();
47
Token
identifier
();
48
Token
number
();
49
Token
string
();
50
Token
complexString
();
51
};
52
}
// namespace Phasor
Phasor::Lexer::scanToken
Token scanToken()
Definition
Lexer.cpp:88
Phasor::Lexer::Lexer
Lexer(const std::string &source)
Definition
Lexer.cpp:9
Phasor::Lexer::complexString
Token complexString()
Definition
Lexer.cpp:312
Phasor::Lexer::number
Token number()
Definition
Lexer.cpp:192
Phasor::Lexer::string
Token string()
Definition
Lexer.cpp:218
Phasor::Lexer::source
std::string source
Definition
Lexer.hpp:36
Phasor::Lexer::tokenize
std::vector< Token > tokenize()
Definition
Lexer.cpp:25
Phasor::Lexer::position
size_t position
Definition
Lexer.hpp:37
Phasor::Lexer::column
size_t column
Definition
Lexer.hpp:39
Phasor::Lexer::skipWhitespace
void skipWhitespace()
Definition
Lexer.cpp:64
Phasor::Lexer::peek
char peek()
Definition
Lexer.cpp:40
Phasor::Lexer::skipShebang
void skipShebang()
Definition
Lexer.cpp:13
Phasor::Lexer::identifier
Token identifier()
Definition
Lexer.cpp:167
Phasor::Lexer::isAtEnd
bool isAtEnd()
Definition
Lexer.cpp:59
Phasor::Lexer::advance
char advance()
Definition
Lexer.cpp:47
Phasor::Lexer::line
size_t line
Definition
Lexer.hpp:38
Phasor
The Phasor Programming Language and Runtime.
Definition
AST.hpp:8
Phasor::TokenType
TokenType
Definition
Lexer.hpp:10
Phasor::TokenType::Symbol
@ Symbol
Definition
Lexer.hpp:15
Phasor::TokenType::Keyword
@ Keyword
Definition
Lexer.hpp:14
Phasor::TokenType::String
@ String
Definition
Lexer.hpp:13
Phasor::TokenType::Identifier
@ Identifier
Definition
Lexer.hpp:11
Phasor::TokenType::Unknown
@ Unknown
Definition
Lexer.hpp:17
Phasor::TokenType::EndOfFile
@ EndOfFile
Definition
Lexer.hpp:16
Phasor::TokenType::Number
@ Number
Definition
Lexer.hpp:12
Phasor::Token
Definition
Lexer.hpp:21
Phasor::Token::line
size_t line
Definition
Lexer.hpp:24
Phasor::Token::lexeme
std::string lexeme
Definition
Lexer.hpp:23
Phasor::Token::type
TokenType type
Definition
Lexer.hpp:22
Phasor::Token::column
size_t column
Definition
Lexer.hpp:25
src
Backend
Lexer
Lexer.hpp
Generated by
1.16.1