pub fn grammar_for(syntax: &str) -> &'static [(&'static [&'static str], &'static str)] { match syntax { "rs" => &[ ( &[ "fn", "pub", "async", "return", "if", "else", "let", "for", "while", "loop", "impl", "for", "trait", "struct", "enum", ], "keyword", ), ( &[ "[A-Z][a-z]*", "bool", "usize", "u8", "u16", "u32", "u64", "u128", "i8", "i16", "i32", "i64", "i128", "isize", "f32", "f64", ], "type", ), (&["(?m)(//.*)$"], "comment"), (&["([a-z_][A-Za-z0-9_]*!)\\s*"], "macro"), (&["([a-z_][A-Za-z0-9_]*)\\s*\\("], "identifier"), (&["\".*?\"", "\\d", "true", "false"], "literal"), ], _ => &[], } }