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"],
128 "RECORD_PAT_FIELD_LIST",
159 "RECORD_EXPR_FIELD_LIST",
174 "RANGE_EXPR", // just weird
187 "META_ITEM", // not an item actually
202 "GENERIC_PARAM_LIST",
225 #[derive(Default, Debug)]
226 pub(crate) struct AstSrc {
227 pub(crate) tokens: Vec<String>,
228 pub(crate) nodes: Vec<AstNodeSrc>,
229 pub(crate) enums: Vec<AstEnumSrc>,
233 pub(crate) struct AstNodeSrc {
234 pub(crate) doc: Vec<String>,
235 pub(crate) name: String,
236 pub(crate) traits: Vec<String>,
237 pub(crate) fields: Vec<Field>,
240 #[derive(Debug, Eq, PartialEq)]
241 pub(crate) enum Field {
243 Node { name: String, ty: String, cardinality: Cardinality },
246 #[derive(Debug, Eq, PartialEq)]
247 pub(crate) enum Cardinality {
253 pub(crate) struct AstEnumSrc {
254 pub(crate) doc: Vec<String>,
255 pub(crate) name: String,
256 pub(crate) traits: Vec<String>,
257 pub(crate) variants: Vec<String>,