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 #[doc = r" Also acts as __LAST_TOKEN"]182 #[error]183 LEXING_ERROR,184 SOURCE_FILE,185 EXPR,186 SUFFIX_INDEX,187 NAME,188 SUFFIX_INDEX_EXPR,189 SUFFIX_SLICE,190 SLICE_DESC,191 SUFFIX_APPLY,192 ARGS_DESC,193 STMT_LOCAL,194 STMT_ASSERT,195 ASSERTION,196 EXPR_BINARY,197 EXPR_UNARY,198 EXPR_OBJ_EXTEND,199 EXPR_PARENED,200 EXPR_LITERAL,201 EXPR_STRING,202 EXPR_NUMBER,203 EXPR_ARRAY,204 EXPR_OBJECT,205 EXPR_ARRAY_COMP,206 EXPR_IMPORT,207 EXPR_VAR,208 EXPR_IF_THEN_ELSE,209 TRUE_EXPR,210 FALSE_EXPR,211 EXPR_FUNCTION,212 PARAMS_DESC,213 EXPR_ERROR,214 SLICE_DESC_END,215 SLICE_DESC_STEP,216 ARG,217 OBJ_BODY_COMP,218 OBJ_BODY_MEMBER_LIST,219 MEMBER_BIND_STMT,220 OBJ_LOCAL,221 MEMBER_ASSERT_STMT,222 MEMBER_FIELD_NORMAL,223 MEMBER_FIELD_METHOD,224 FIELD_NAME_FIXED,225 FIELD_NAME_DYNAMIC,226 FOR_SPEC,227 IF_SPEC,228 BIND_DESTRUCT,229 BIND_FUNCTION,230 PARAM,231 DESTRUCT_FULL,232 DESTRUCT_SKIP,233 DESTRUCT_ARRAY,234 DESTRUCT_OBJECT,235 DESTRUCT_OBJECT_FIELD,236 DESTRUCT_REST,237 DESTRUCT_ARRAY_ELEMENT,238 SUFFIX,239 BIND,240 STMT,241 OBJ_BODY,242 COMP_SPEC,243 EXPR_BASE,244 MEMBER_COMP,245 MEMBER,246 FIELD_NAME,247 DESTRUCT,248 DESTRUCT_ARRAY_PART,249 BINARY_OPERATOR,250 UNARY_OPERATOR,251 LITERAL,252 TEXT,253 NUMBER,254 IMPORT_KIND,255 VISIBILITY,256 TRIVIA,257 CUSTOM_ERROR,258 #[doc(hidden)]259 __LAST,260}261use self::SyntaxKind::*;262impl SyntaxKind {263 pub fn is_keyword(self) -> bool {264 match self {265 OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE266 | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK267 | L_PAREN | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON268 | SEMI | DOT | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW269 | LOCAL_KW | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW270 | FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW271 | SUPER_KW | FOR_KW | ASSERT_KW => true,272 _ => false,273 }274 }275 pub fn is_enum(self) -> bool {276 match self {277 SUFFIX | BIND | STMT | OBJ_BODY | COMP_SPEC | EXPR_BASE | MEMBER_COMP | MEMBER278 | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR279 | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,280 _ => false,281 }282 }283 pub fn from_raw(r: u16) -> Self {284 assert!(r < Self::__LAST as u16);285 unsafe { std::mem::transmute(r) }286 }287 pub fn into_raw(self) -> u16 {288 self as u16289 }290}291#[macro_export]292macro_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 } }293#[allow(unused_imports)]294pub use T;