From 6983091d6d255bcfd17c4f8c14015d8abc77928d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 30 Jul 2018 14:06:22 +0300 Subject: Cleanup tools --- src/syntax_kinds/generated.rs.tera | 59 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/syntax_kinds/generated.rs.tera (limited to 'src/syntax_kinds/generated.rs.tera') diff --git a/src/syntax_kinds/generated.rs.tera b/src/syntax_kinds/generated.rs.tera new file mode 100644 index 000000000..aa672d89a --- /dev/null +++ b/src/syntax_kinds/generated.rs.tera @@ -0,0 +1,59 @@ +#![allow(bad_style, missing_docs, unreachable_pub)] +#![cfg_attr(rustfmt, rustfmt_skip)] +use super::SyntaxInfo; + +/// The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT_DEF`. +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SyntaxKind { +{%- for t in tokens %} + {{t}}, +{%- endfor -%} +{% for kw in keywords %} + {{kw | upper}}_KW, +{%- endfor -%} +{% for kw in contextual_keywords %} + {{kw | upper}}_KW, +{%- endfor -%} +{% for node in nodes %} + {{node}}, +{%- endfor %} + // Technical SyntaxKinds: they appear temporally during parsing, + // but never end up in the final tree + #[doc(hidden)] + TOMBSTONE, + #[doc(hidden)] + EOF, +} +use self::SyntaxKind::*; + +impl SyntaxKind { + pub(crate) fn info(self) -> &'static SyntaxInfo { + match self { +{%- for t in tokens %} + {{t}} => &SyntaxInfo { name: "{{t}}" }, +{%- endfor -%} +{% for kw in keywords %} + {{kw | upper}}_KW => &SyntaxInfo { name: "{{kw | upper}}_KW" }, +{%- endfor -%} +{% for kw in contextual_keywords %} + {{kw | upper}}_KW => &SyntaxInfo { name: "{{kw | upper}}_KW" }, +{%- endfor -%} +{% for node in nodes %} + {{node}} => &SyntaxInfo { name: "{{node}}" }, +{%- endfor %} + + TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" }, + EOF => &SyntaxInfo { name: "EOF" }, + } + } + pub(crate) fn from_keyword(ident: &str) -> Option { + let kw = match ident { +{%- for kw in keywords %} + "{{kw}}" => {{kw | upper}}_KW, +{%- endfor %} + _ => return None, + }; + Some(kw) + } +} + -- cgit v1.2.3