nixd
Toggle main menu visibility
Loading...
Searching...
No Matches
libnixf
src
Parse
Tokens.h.py
Go to the documentation of this file.
1
import
tokens
2
3
4
def
tok_id
(tok: tokens.Token):
5
prefix =
"tok"
6
if
isinstance(tok,
tokens.KwToken
):
7
return
f
"{prefix}_kw_{tok.name}"
8
if
isinstance(tok,
tokens.OpToken
):
9
return
f
"{prefix}_op_{tok.name}"
10
return
f
"{prefix}_{tok.name}"
11
12
13
def
generate_tokens_h
() -> str:
14
header =
"""#pragma once
15
16
#include <string_view>
17
18
namespace nixf::tok {
19
20
enum TokenKind {
21
"""
22
for
token
in
tokens.tokens:
23
header += f
" {tok_id(token)},\n"
24
25
header +=
"};\n\n"
26
27
header +=
"""constexpr std::string_view spelling(int Kind) {
28
using namespace std::literals;
29
switch (Kind) {
30
"""
31
32
for
token
in
tokens.tokens:
33
header += f
' case {tok_id(token)}: return R"({token.spelling})"sv;\n'
34
35
header +=
""" default: return ""sv;
36
}
37
}
38
"""
39
40
header +=
"} // namespace nixf::tok"
41
42
return
header
43
44
45
if
__name__ ==
"__main__"
:
46
import
sys
47
48
with
open(sys.argv[1],
"w"
)
as
f:
49
f.write(
generate_tokens_h
())
tokens.KwToken
Definition
tokens.py:11
tokens.OpToken
Definition
tokens.py:31
Tokens.generate_tokens_h
str generate_tokens_h()
Definition
Tokens.h.py:13
Tokens.tok_id
tok_id(tokens.Token tok)
Definition
Tokens.h.py:4
Generated by
1.17.0