mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Token.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <cstdint>
6
#include <cstdlib>
7
#include <string>
8
#include <variant>
9
#include <vector>
10
11
#include "
mini-llvm/utils/BigInteger.h
"
12
13
namespace
mini_llvm::ir
{
14
15
struct
Token
{
16
enum class
Kind
{
17
#define X(name) k##name,
18
#include "mini-llvm/ir_reader/TokenKind.def"
19
#undef X
20
};
21
22
Kind
kind
;
23
std::variant<std::monostate, BigInteger, std::string, std::vector<int8_t>>
value
;
24
const
char
*
location
;
25
};
26
27
inline
bool
operator==
(
const
Token
&lhs,
const
Token
&rhs) {
28
return
lhs.
kind
== rhs.
kind
&& lhs.
value
== rhs.
value
&& lhs.
location
== rhs.
location
;
29
}
30
31
inline
constexpr
const
char
*
name
(
Token::Kind
kind) {
32
switch
(kind) {
33
#define X(name) case Token::Kind::k##name: return #name;
34
#include "mini-llvm/ir_reader/TokenKind.def"
35
#undef X
36
default
:
37
abort();
38
}
39
}
40
41
}
// namespace mini_llvm::ir
BigInteger.h
mini_llvm::ir
Definition
Argument.h:13
mini_llvm::ir::operator==
bool operator==(const Constant &lhs, const Constant &rhs)
Definition
Constant.h:28
mini_llvm::ir::name
constexpr const char * name(Token::Kind kind)
Definition
Token.h:31
mini_llvm::ir::Token
Definition
Token.h:15
mini_llvm::ir::Token::location
const char * location
Definition
Token.h:24
mini_llvm::ir::Token::value
std::variant< std::monostate, BigInteger, std::string, std::vector< int8_t > > value
Definition
Token.h:23
mini_llvm::ir::Token::kind
Kind kind
Definition
Token.h:22
mini_llvm::ir::Token::Kind
Kind
Definition
Token.h:16
include
mini-llvm
ir_reader
Token.h
Generated by
1.17.0