diff options
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/gen.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/bin/gen.rs b/src/bin/gen.rs index 4acf381e3..f5a66d9f2 100644 --- a/src/bin/gen.rs +++ b/src/bin/gen.rs | |||
@@ -17,7 +17,8 @@ fn main() { | |||
17 | 17 | ||
18 | #[derive(Deserialize)] | 18 | #[derive(Deserialize)] |
19 | struct Grammar { | 19 | struct Grammar { |
20 | syntax_kinds: Vec<String>, | 20 | tokens: Vec<String>, |
21 | nodes: Vec<String>, | ||
21 | } | 22 | } |
22 | 23 | ||
23 | impl Grammar { | 24 | impl Grammar { |
@@ -31,7 +32,12 @@ impl Grammar { | |||
31 | acc.push_str("// Generated from grammar.ron\n"); | 32 | acc.push_str("// Generated from grammar.ron\n"); |
32 | acc.push_str("use tree::{SyntaxKind, SyntaxInfo};\n"); | 33 | acc.push_str("use tree::{SyntaxKind, SyntaxInfo};\n"); |
33 | acc.push_str("\n"); | 34 | acc.push_str("\n"); |
34 | for (idx, kind) in self.syntax_kinds.iter().enumerate() { | 35 | |
36 | let syntax_kinds: Vec<&String> = | ||
37 | self.tokens.iter().chain(self.nodes.iter()) | ||
38 | .collect(); | ||
39 | |||
40 | for (idx, kind) in syntax_kinds.iter().enumerate() { | ||
35 | let sname = scream(kind); | 41 | let sname = scream(kind); |
36 | write!( | 42 | write!( |
37 | acc, | 43 | acc, |
@@ -40,8 +46,8 @@ impl Grammar { | |||
40 | ).unwrap(); | 46 | ).unwrap(); |
41 | } | 47 | } |
42 | acc.push_str("\n"); | 48 | acc.push_str("\n"); |
43 | write!(acc, "static INFOS: [SyntaxInfo; {}] = [\n", self.syntax_kinds.len()).unwrap(); | 49 | write!(acc, "static INFOS: [SyntaxInfo; {}] = [\n", syntax_kinds.len()).unwrap(); |
44 | for kind in self.syntax_kinds.iter() { | 50 | for kind in syntax_kinds.iter() { |
45 | let sname = scream(kind); | 51 | let sname = scream(kind); |
46 | write!( | 52 | write!( |
47 | acc, | 53 | acc, |