diff options
author | Aleksey Kladov <[email protected]> | 2017-12-29 17:47:54 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2017-12-29 17:47:54 +0000 |
commit | 15af7ad36c507b17093ba86c393272819ff4b3cd (patch) | |
tree | 68ac87789899e211bcaf86d3693e11b88e06399a /src/bin | |
parent | 5276a7d3be01687e3ea7054ec103711587c9d36e (diff) |
Use array for infos
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/gen.rs | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/bin/gen.rs b/src/bin/gen.rs index d3539321e..4acf381e3 100644 --- a/src/bin/gen.rs +++ b/src/bin/gen.rs | |||
@@ -40,28 +40,20 @@ impl Grammar { | |||
40 | ).unwrap(); | 40 | ).unwrap(); |
41 | } | 41 | } |
42 | acc.push_str("\n"); | 42 | acc.push_str("\n"); |
43 | write!(acc, "static INFOS: [SyntaxInfo; {}] = [\n", self.syntax_kinds.len()).unwrap(); | ||
43 | for kind in self.syntax_kinds.iter() { | 44 | for kind in self.syntax_kinds.iter() { |
44 | let sname = scream(kind); | 45 | let sname = scream(kind); |
45 | write!( | 46 | write!( |
46 | acc, | 47 | acc, |
47 | "static {sname}_INFO: SyntaxInfo = SyntaxInfo {{\n name: \"{sname}\",\n}};\n", | 48 | " SyntaxInfo {{ name: \"{sname}\" }},\n", |
48 | sname = sname | 49 | sname = sname |
49 | ).unwrap(); | 50 | ).unwrap(); |
50 | } | 51 | } |
52 | acc.push_str("];\n"); | ||
51 | acc.push_str("\n"); | 53 | acc.push_str("\n"); |
52 | 54 | ||
53 | acc.push_str("pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo {\n"); | 55 | acc.push_str("pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo {\n"); |
54 | acc.push_str(" match kind {\n"); | 56 | acc.push_str(" &INFOS[kind.0 as usize]\n"); |
55 | for kind in self.syntax_kinds.iter() { | ||
56 | let sname = scream(kind); | ||
57 | write!( | ||
58 | acc, | ||
59 | " {sname} => &{sname}_INFO,\n", | ||
60 | sname = sname | ||
61 | ).unwrap(); | ||
62 | } | ||
63 | acc.push_str(" _ => unreachable!()\n"); | ||
64 | acc.push_str(" }\n"); | ||
65 | acc.push_str("}\n"); | 57 | acc.push_str("}\n"); |
66 | acc | 58 | acc |
67 | } | 59 | } |