Sen API
Sen Libraries
Loading...
Searching...
No Matches
stl_token.h
Go to the documentation of this file.
1// === stl_token.h =====================================================================================================
2// Sen Infrastructure
3// Released under the Apache License v2.0 (SPDX-License-Identifier Apache-2.0).
4// See the LICENSE.txt file for more information.
5// © Airbus SAS, Airbus Helicopters, and Airbus Defence and Space SAU/GmbH/SAS.
6// =====================================================================================================================
7
8#ifndef SEN_CORE_LANG_STL_TOKEN_H
9#define SEN_CORE_LANG_STL_TOKEN_H
10
11// sen
13#include "sen/core/meta/var.h"
14
15// std
16#include <cstdint>
17#include <string>
18#include <utility>
19#include <vector>
20
21namespace sen::lang
22{
23
26
100
102{
103public:
104 StlToken() = default;
106 : type_ {type}, lexeme_ {std::move(lexeme)}, value_ {std::move(value)}, codeLocation_ {std::move(codeLocation)}
107 {
108 }
109
110public:
111 [[nodiscard]] StlTokenType type() const { return type_; }
112
113 [[nodiscard]] std::string lexeme() const { return lexeme_; }
114
115 [[nodiscard]] Var value() const { return value_; }
116
117 [[nodiscard]] CodeLocation codeLocation() const { return codeLocation_; }
118
119private:
121 std::string lexeme_;
122 Var value_;
123 CodeLocation codeLocation_ {};
124};
125
126std::string toString(const StlToken& token);
127
128std::string toString(StlTokenType type);
129
130StlTokenType fromString(const std::string& stlTokenType);
131
132using StlTokenList = std::vector<StlToken>;
133
135
136} // namespace sen::lang
137
138#endif // SEN_CORE_LANG_STL_TOKEN_H
Definition stl_token.h:102
CodeLocation codeLocation() const
Definition stl_token.h:117
std::string lexeme() const
Definition stl_token.h:113
StlTokenType type() const
Definition stl_token.h:111
StlToken(const StlTokenType type, std::string lexeme, Var value, CodeLocation codeLocation)
Definition stl_token.h:105
Var value() const
Definition stl_token.h:115
std::string toString(const StlToken &token)
StlTokenType fromString(const std::string &stlTokenType)
std::vector< StlToken > StlTokenList
Definition stl_token.h:132
StlTokenType
Supported tokens.
Definition stl_token.h:29
@ rightBrace
Definition stl_token.h:34
@ comment
Definition stl_token.h:94
@ endOfFile
Definition stl_token.h:95
@ keywordClass
Definition stl_token.h:66
@ keywordExtends
Definition stl_token.h:68
@ rightParen
Definition stl_token.h:32
@ equalEqual
Definition stl_token.h:51
@ keywordAbstract
Definition stl_token.h:64
@ keywordQuantity
Definition stl_token.h:85
@ keywordFunction
Definition stl_token.h:73
@ keywordVar
Definition stl_token.h:75
@ keywordEnum
Definition stl_token.h:82
@ integral
Definition stl_token.h:61
@ keywordSelect
Definition stl_token.h:87
@ keywordNot
Definition stl_token.h:77
@ keywordStruct
Definition stl_token.h:70
@ keywordAlias
Definition stl_token.h:86
@ equal
Definition stl_token.h:50
@ keywordWhere
Definition stl_token.h:88
@ real
Definition stl_token.h:60
@ bangEqual
Definition stl_token.h:49
@ keywordPackage
Definition stl_token.h:81
@ keywordArray
Definition stl_token.h:84
@ keywordVariant
Definition stl_token.h:71
@ keywordImplements
Definition stl_token.h:69
@ dot
Definition stl_token.h:38
@ keywordFrom
Definition stl_token.h:89
@ keywordTrue
Definition stl_token.h:78
@ semicolon
Definition stl_token.h:42
@ bang
Definition stl_token.h:48
@ greater
Definition stl_token.h:52
@ at
Definition stl_token.h:45
@ leftParen
Definition stl_token.h:31
@ star
Definition stl_token.h:44
@ leftBrace
Definition stl_token.h:33
@ greaterEqual
Definition stl_token.h:53
@ keywordEvent
Definition stl_token.h:74
@ keywordAnd
Definition stl_token.h:65
@ slash
Definition stl_token.h:43
@ keywordBetween
Definition stl_token.h:91
@ unknown
Definition stl_token.h:98
@ keywordOptional
Definition stl_token.h:80
@ lessEqual
Definition stl_token.h:55
@ string
Definition stl_token.h:59
@ comma
Definition stl_token.h:37
@ keywordImport
Definition stl_token.h:79
@ keywordSequence
Definition stl_token.h:83
@ keywordFalse
Definition stl_token.h:72
@ rightBracket
Definition stl_token.h:36
@ colon
Definition stl_token.h:41
@ leftBracket
Definition stl_token.h:35
@ plus
Definition stl_token.h:40
@ minus
Definition stl_token.h:39
@ keywordIn
Definition stl_token.h:90
@ less
Definition stl_token.h:54
@ keywordInterface
Definition stl_token.h:67
@ identifier
Definition stl_token.h:58
@ keywordOr
Definition stl_token.h:76
Location of a character in a program.
Definition code_location.h:21
Definition code_location.h:14
STL namespace.
Can hold any supported value type. Wraps std::variant to allow recursion and implements some helpers.
Definition var.h:119