nixd
Loading...
Searching...
No Matches
TokenKinds.inc.py
Go to the documentation of this file.
1from tokens import bin_op_tokens, keyword_tokens, tokens
2
3
4def generate_token_section(section_name: str, tokens: list) -> str:
5 if not tokens:
6 return ""
7
8 section = [f"#ifdef {section_name}"]
9 section.extend(f"{section_name}({token.name})" for token in tokens)
10 section.append(f"#endif // {section_name}\n")
11
12 return "\n".join(section)
13
14
16 sections = [
17 generate_token_section("TOK_KEYWORD", keyword_tokens),
18 generate_token_section("TOK", tokens),
19 generate_token_section("TOK_BIN_OP", bin_op_tokens),
20 ]
21
22 return "\n".join(filter(None, sections)).strip()
23
24
25if __name__ == "__main__":
26 import sys
27
28 with open(sys.argv[1], "w") as f:
str generate_token_kinds_inc()
str generate_token_section(str section_name, list tokens)