1 //! Defines input for code generation process.
3 pub(crate) struct KindsSrc<'a> {
4 pub(crate) punct: &'a [(&'a str, &'a str)],
5 pub(crate) keywords: &'a [&'a str],
6 pub(crate) contextual_keywords: &'a [&'a str],
7 pub(crate) literals: &'a [&'a str],
8 pub(crate) tokens: &'a [&'a str],
9 pub(crate) nodes: &'a [&'a str],
12 pub(crate) const KINDS_SRC: KindsSrc = KindsSrc {
68 "as", "async", "await", "box", "break", "const", "continue", "crate", "dyn", "else",
69 "enum", "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop", "macro",
70 "match", "mod", "move", "mut", "pub", "ref", "return", "self", "static", "struct", "super",
71 "trait", "true", "try", "type", "unsafe", "use", "where", "while", "yield",
73 contextual_keywords: &["auto", "default", "existential", "union", "raw", "macro_rules"],
74 literals: &["INT_NUMBER", "FLOAT_NUMBER", "CHAR", "BYTE", "STRING", "BYTE_STRING"],
75 tokens: &["ERROR", "IDENT", "WHITESPACE", "LIFETIME_IDENT", "COMMENT", "SHEBANG"],
119 "RECORD_PAT_FIELD_LIST",
151 "RECORD_EXPR_FIELD_LIST",
165 "RANGE_EXPR", // just weird
194 "GENERIC_PARAM_LIST",
217 #[derive(Default, Debug)]
218 pub(crate) struct AstSrc {
219 pub(crate) tokens: Vec<String>,
220 pub(crate) nodes: Vec<AstNodeSrc>,
221 pub(crate) enums: Vec<AstEnumSrc>,
225 pub(crate) struct AstNodeSrc {
226 pub(crate) doc: Vec<String>,
227 pub(crate) name: String,
228 pub(crate) traits: Vec<String>,
229 pub(crate) fields: Vec<Field>,
232 #[derive(Debug, Eq, PartialEq)]
233 pub(crate) enum Field {
235 Node { name: String, ty: String, cardinality: Cardinality },
238 #[derive(Debug, Eq, PartialEq)]
239 pub(crate) enum Cardinality {
245 pub(crate) struct AstEnumSrc {
246 pub(crate) doc: Vec<String>,
247 pub(crate) name: String,
248 pub(crate) traits: Vec<String>,
249 pub(crate) variants: Vec<String>,