From d8b2a5efc0e5de3b0d72f29ccc86185f0827c9d3 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 9 Aug 2018 17:43:39 +0300 Subject: Generate AST --- src/ast/generated.rs.tera | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/ast/generated.rs.tera (limited to 'src/ast/generated.rs.tera') diff --git a/src/ast/generated.rs.tera b/src/ast/generated.rs.tera new file mode 100644 index 000000000..f2559383a --- /dev/null +++ b/src/ast/generated.rs.tera @@ -0,0 +1,22 @@ +use std::sync::Arc; +use { + SyntaxNode, SyntaxRoot, TreeRoot, AstNode, + SyntaxKind::*, +}; +{% for node in ast %} +{% set Name = node.kind | camel %} +#[derive(Debug)] +pub struct {{ Name }}> { + syntax: SyntaxNode, +} + +impl AstNode for {{ Name }} { + fn cast(syntax: SyntaxNode) -> Option { + match syntax.kind() { + {{ node.kind }} => Some({{ Name }} { syntax }), + _ => None, + } + } + fn syntax(&self) -> &SyntaxNode { &self.syntax } +} +{% endfor %} -- cgit v1.2.3