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
14#include "sen/core/meta/var.h"
15
16// std
17#include <string>
18#include <vector>
19
20namespace sen::lang
21{
22
25
96
98{
99 SEN_COPY_CONSTRUCT(StlToken) = default;
100 SEN_COPY_ASSIGN(StlToken) = default;
101 SEN_MOVE_CONSTRUCT(StlToken) = default;
102 SEN_MOVE_ASSIGN(StlToken) = default;
103
104 StlToken() = default;
106 : type(std::move(type)), lexeme(std::move(lexeme)), value(std::move(value)), loc(std::move(loc))
107 {
108 }
109 ~StlToken() = default;
110
111 StlTokenType type = {}; // NOLINT(misc-non-private-member-variables-in-classes)
112 std::string lexeme = {}; // NOLINT(misc-non-private-member-variables-in-classes)
113 Var value = {}; // NOLINT(misc-non-private-member-variables-in-classes)
114 CodeLocation loc = {}; // NOLINT(misc-non-private-member-variables-in-classes)
115};
116
117std::string toString(const StlToken& token);
118
119std::string toString(StlTokenType type);
120
121using StlTokenList = std::vector<StlToken>;
122
124
125} // namespace sen::lang
126
127#endif // SEN_CORE_LANG_STL_TOKEN_H
Here we define a set of template meta-programming helpers to let the compiler take some decisions bas...
std::string toString(const StlToken &token)
std::vector< StlToken > StlTokenList
Definition stl_token.h:121
StlTokenType
Supported tokens.
Definition stl_token.h:28
@ rightBrace
Definition stl_token.h:33
@ comment
Definition stl_token.h:93
@ endOfFile
Definition stl_token.h:94
@ keywordClass
Definition stl_token.h:65
@ keywordExtends
Definition stl_token.h:67
@ rightParen
Definition stl_token.h:31
@ equalEqual
Definition stl_token.h:50
@ keywordAbstract
Definition stl_token.h:63
@ keywordQuantity
Definition stl_token.h:84
@ keywordFunction
Definition stl_token.h:72
@ keywordVar
Definition stl_token.h:74
@ keywordEnum
Definition stl_token.h:81
@ integral
Definition stl_token.h:60
@ keywordSelect
Definition stl_token.h:86
@ keywordNot
Definition stl_token.h:76
@ keywordStruct
Definition stl_token.h:69
@ keywordAlias
Definition stl_token.h:85
@ equal
Definition stl_token.h:49
@ keywordWhere
Definition stl_token.h:87
@ real
Definition stl_token.h:59
@ bangEqual
Definition stl_token.h:48
@ keywordPackage
Definition stl_token.h:80
@ keywordArray
Definition stl_token.h:83
@ keywordVariant
Definition stl_token.h:70
@ keywordImplements
Definition stl_token.h:68
@ dot
Definition stl_token.h:37
@ keywordFrom
Definition stl_token.h:88
@ keywordTrue
Definition stl_token.h:77
@ semicolon
Definition stl_token.h:41
@ bang
Definition stl_token.h:47
@ greater
Definition stl_token.h:51
@ at
Definition stl_token.h:44
@ leftParen
Definition stl_token.h:30
@ star
Definition stl_token.h:43
@ leftBrace
Definition stl_token.h:32
@ greaterEqual
Definition stl_token.h:52
@ keywordEvent
Definition stl_token.h:73
@ keywordAnd
Definition stl_token.h:64
@ slash
Definition stl_token.h:42
@ keywordBetween
Definition stl_token.h:90
@ keywordOptional
Definition stl_token.h:79
@ lessEqual
Definition stl_token.h:54
@ string
Definition stl_token.h:58
@ comma
Definition stl_token.h:36
@ keywordImport
Definition stl_token.h:78
@ keywordSequence
Definition stl_token.h:82
@ keywordFalse
Definition stl_token.h:71
@ rightBracket
Definition stl_token.h:35
@ colon
Definition stl_token.h:40
@ leftBracket
Definition stl_token.h:34
@ plus
Definition stl_token.h:39
@ minus
Definition stl_token.h:38
@ keywordIn
Definition stl_token.h:89
@ less
Definition stl_token.h:53
@ keywordInterface
Definition stl_token.h:66
@ identifier
Definition stl_token.h:57
@ keywordOr
Definition stl_token.h:75
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
Definition stl_token.h:98
CodeLocation loc
Definition stl_token.h:114
std::string lexeme
Definition stl_token.h:112
StlTokenType type
Definition stl_token.h:111
StlToken(StlTokenType type, std::string lexeme, Var value, CodeLocation loc)
Definition stl_token.h:105
Var value
Definition stl_token.h:113