1234#![allow(5 bad_style,6 missing_docs,7 unreachable_pub,8 clippy::manual_non_exhaustive,9 clippy::match_like_matches_macro10)]11use logos::Logos;12#[doc = r" The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT`."]13#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Logos)]14#[repr(u16)]15pub enum SyntaxKind {16 #[doc(hidden)]17 TOMBSTONE,18 #[doc(hidden)]19 EOF,20 #[token("||")]21 OR,22 #[token("??")]23 NULL_COAELSE,24 #[token("&&")]25 AND,26 #[token("|")]27 BIT_OR,28 #[token("^")]29 BIT_XOR,30 #[token("&")]31 BIT_AND,32 #[token("==")]33 EQ,34 #[token("!=")]35 NE,36 #[token("<")]37 LT,38 #[token(">")]39 GT,40 #[token("<=")]41 LE,42 #[token(">=")]43 GE,44 #[token("<<")]45 LHS,46 #[token(">>")]47 RHS,48 #[token("+")]49 PLUS,50 #[token("-")]51 MINUS,52 #[token("*")]53 MUL,54 #[token("/")]55 DIV,56 #[token("%")]57 MODULO,58 #[token("!")]59 NOT,60 #[token("~")]61 BIT_NOT,62 #[token("[")]63 L_BRACK,64 #[token("]")]65 R_BRACK,66 #[token("(")]67 L_PAREN,68 #[token(")")]69 R_PAREN,70 #[token("{")]71 L_BRACE,72 #[token("}")]73 R_BRACE,74 #[token(":")]75 COLON,76 #[token("::")]77 COLONCOLON,78 #[token(":::")]79 COLONCOLONCOLON,80 #[token(";")]81 SEMI,82 #[token(".")]83 DOT,84 #[token("...")]85 DOTDOTDOT,86 #[token(",")]87 COMMA,88 #[token("$")]89 DOLLAR,90 #[token("=")]91 ASSIGN,92 #[token("?")]93 QUESTION_MARK,94 #[regex("(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?")]95 FLOAT,96 #[regex("(?:0|[1-9][0-9]*)\\.[^0-9]")]97 ERROR_FLOAT_JUNK_AFTER_POINT,98 #[regex("(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?[eE][^+\\-0-9]")]99 ERROR_FLOAT_JUNK_AFTER_EXPONENT,100 #[regex("(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?[eE][+-][^0-9]")]101 ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN,102 #[regex("\"(?s:[^\"\\\\]|\\\\.)*\"")]103 STRING_DOUBLE,104 #[regex("\"(?s:[^\"\\\\]|\\\\.)*")]105 ERROR_STRING_DOUBLE_UNTERMINATED,106 #[regex("'(?s:[^'\\\\]|\\\\.)*'")]107 STRING_SINGLE,108 #[regex("'(?s:[^'\\\\]|\\\\.)*")]109 ERROR_STRING_SINGLE_UNTERMINATED,110 #[regex("@\"(?:[^\"]|\"\")*\"")]111 STRING_DOUBLE_VERBATIM,112 #[regex("@\"(?:[^\"]|\"\")*")]113 ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED,114 #[regex("@'(?:[^']|'')*'")]115 STRING_SINGLE_VERBATIM,116 #[regex("@'(?:[^']|'')*")]117 ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED,118 #[regex("@[^\"'\\s]\\S+")]119 ERROR_STRING_VERBATIM_MISSING_QUOTES,120 #[regex("\\|\\|\\|", crate::string_block::lex_str_block_test)]121 STRING_BLOCK,122 ERROR_STRING_BLOCK_UNEXPECTED_END,123 ERROR_STRING_BLOCK_MISSING_NEW_LINE,124 ERROR_STRING_BLOCK_MISSING_TERMINATION,125 ERROR_STRING_BLOCK_MISSING_INDENT,126 #[regex("[_a-zA-Z][_a-zA-Z0-9]*")]127 IDENT,128 #[regex("[ \\t\\n\\r]+")]129 WHITESPACE,130 #[regex("//[^\\r\\n]*?(\\r\\n|\\n)?")]131 SINGLE_LINE_SLASH_COMMENT,132 #[regex("#[^\\r\\n]*?(\\r\\n|\\n)?")]133 SINGLE_LINE_HASH_COMMENT,134 #[regex("/\\*([^*]|\\*[^/])*\\*/")]135 MULTI_LINE_COMMENT,136 #[regex("/\\*/")]137 ERROR_COMMENT_TOO_SHORT,138 #[regex("/\\*([^*/]|\\*[^/])+")]139 ERROR_COMMENT_UNTERMINATED,140 #[token("tailstrict")]141 TAILSTRICT_KW,142 #[token("local")]143 LOCAL_KW,144 #[token("importstr")]145 IMPORTSTR_KW,146 #[token("importbin")]147 IMPORTBIN_KW,148 #[token("import")]149 IMPORT_KW,150 #[token("if")]151 IF_KW,152 #[token("then")]153 THEN_KW,154 #[token("else")]155 ELSE_KW,156 #[token("function")]157 FUNCTION_KW,158 #[token("error")]159 ERROR_KW,160 #[token("in")]161 IN_KW,162 META_OBJECT_APPLY,163 ERROR_NO_OPERATOR,164 #[token("null")]165 NULL_KW,166 #[token("true")]167 TRUE_KW,168 #[token("false")]169 FALSE_KW,170 #[token("self")]171 SELF_KW,172 #[token("super")]173 SUPER_KW,174 #[token("for")]175 FOR_KW,176 #[token("assert")]177 ASSERT_KW,178 ERROR_MISSING_TOKEN,179 ERROR_UNEXPECTED_TOKEN,180 ERROR_CUSTOM,181 LEXING_ERROR,182 __LAST_TOKEN,183 SOURCE_FILE,184 EXPR,185 SUFFIX_INDEX,186 NAME,187 SUFFIX_INDEX_EXPR,188 SUFFIX_SLICE,189 SLICE_DESC,190 SUFFIX_APPLY,191 ARGS_DESC,192 STMT_LOCAL,193 STMT_ASSERT,194 ASSERTION,195 EXPR_BINARY,196 EXPR_UNARY,197 EXPR_OBJ_EXTEND,198 EXPR_PARENED,199 EXPR_LITERAL,200 EXPR_STRING,201 EXPR_NUMBER,202 EXPR_ARRAY,203 EXPR_OBJECT,204 EXPR_ARRAY_COMP,205 EXPR_IMPORT,206 EXPR_VAR,207 EXPR_IF_THEN_ELSE,208 TRUE_EXPR,209 FALSE_EXPR,210 EXPR_FUNCTION,211 PARAMS_DESC,212 EXPR_ERROR,213 SLICE_DESC_END,214 SLICE_DESC_STEP,215 ARG,216 OBJ_BODY_COMP,217 OBJ_BODY_MEMBER_LIST,218 MEMBER_BIND_STMT,219 OBJ_LOCAL,220 MEMBER_ASSERT_STMT,221 MEMBER_FIELD_NORMAL,222 MEMBER_FIELD_METHOD,223 FIELD_NAME_FIXED,224 FIELD_NAME_DYNAMIC,225 FOR_SPEC,226 IF_SPEC,227 BIND_DESTRUCT,228 BIND_FUNCTION,229 PARAM,230 DESTRUCT_FULL,231 DESTRUCT_SKIP,232 DESTRUCT_ARRAY,233 DESTRUCT_OBJECT,234 DESTRUCT_OBJECT_FIELD,235 DESTRUCT_REST,236 DESTRUCT_ARRAY_ELEMENT,237 SUFFIX,238 BIND,239 STMT,240 OBJ_BODY,241 COMP_SPEC,242 EXPR_BASE,243 MEMBER_COMP,244 MEMBER,245 FIELD_NAME,246 DESTRUCT,247 DESTRUCT_ARRAY_PART,248 BINARY_OPERATOR,249 UNARY_OPERATOR,250 LITERAL,251 TEXT,252 NUMBER,253 IMPORT_KIND,254 VISIBILITY,255 TRIVIA,256 CUSTOM_ERROR,257 #[doc(hidden)]258 __LAST,259}260use self::SyntaxKind::*;261impl SyntaxKind {262 pub fn is_keyword(self) -> bool {263 match self {264 OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE265 | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK266 | L_PAREN | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON267 | SEMI | DOT | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW268 | LOCAL_KW | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW269 | FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW270 | SUPER_KW | FOR_KW | ASSERT_KW => true,271 _ => false,272 }273 }274 pub fn is_enum(self) -> bool {275 match self {276 SUFFIX | BIND | STMT | OBJ_BODY | COMP_SPEC | EXPR_BASE | MEMBER_COMP | MEMBER277 | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR278 | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,279 _ => false,280 }281 }282 pub fn from_raw(r: u16) -> Self {283 assert!(r < Self::__LAST as u16);284 unsafe { std::mem::transmute(r) }285 }286 pub fn into_raw(self) -> u16 {287 self as u16288 }289}290#[macro_export]291macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [??] => { $ crate :: SyntaxKind :: NULL_COAELSE } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }292#[allow(unused_imports)]293pub use T;