From 2fee80843d58d75c817b490412a9656437a87257 Mon Sep 17 00:00:00 2001 From: Jeff Date: Sun, 31 Dec 2023 11:03:33 -0500 Subject: [PATCH] Improve identifier regex --- tree-sitter-dust/corpus/identifiers.txt | 4 + tree-sitter-dust/grammar.js | 2 +- tree-sitter-dust/src/grammar.json | 2 +- tree-sitter-dust/src/parser.c | 335 ++++++++++++------------ 4 files changed, 172 insertions(+), 171 deletions(-) diff --git a/tree-sitter-dust/corpus/identifiers.txt b/tree-sitter-dust/corpus/identifiers.txt index 1fa0e8c..cc0a3e5 100644 --- a/tree-sitter-dust/corpus/identifiers.txt +++ b/tree-sitter-dust/corpus/identifiers.txt @@ -5,6 +5,7 @@ Simple Identifiers x _y __xyz__ +x123x -------------------------------------------------------------------------------- @@ -15,6 +16,9 @@ __xyz__ (statement (expression (identifier))) + (statement + (expression + (identifier))) (statement (expression (identifier)))) diff --git a/tree-sitter-dust/grammar.js b/tree-sitter-dust/grammar.js index a676627..ecb1a48 100644 --- a/tree-sitter-dust/grammar.js +++ b/tree-sitter-dust/grammar.js @@ -77,7 +77,7 @@ module.exports = grammar({ ), _identifier_pattern: $ => - /[_a-zA-Z]+[_a-zA-Z0-9]?/, + /[_a-zA-Z]+[_a-zA-Z0-9]*[_a-zA-Z]?/, value: $ => choice( diff --git a/tree-sitter-dust/src/grammar.json b/tree-sitter-dust/src/grammar.json index a096e2b..ac400de 100644 --- a/tree-sitter-dust/src/grammar.json +++ b/tree-sitter-dust/src/grammar.json @@ -217,7 +217,7 @@ }, "_identifier_pattern": { "type": "PATTERN", - "value": "[_a-zA-Z]+[_a-zA-Z0-9]?" + "value": "[_a-zA-Z]+[_a-zA-Z0-9]*[_a-zA-Z]?" }, "value": { "type": "CHOICE", diff --git a/tree-sitter-dust/src/parser.c b/tree-sitter-dust/src/parser.c index ff184b7..5199da7 100644 --- a/tree-sitter-dust/src/parser.c +++ b/tree-sitter-dust/src/parser.c @@ -1252,28 +1252,28 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '!') ADVANCE(11); if (lookahead == '"') ADVANCE(6); if (lookahead == '#') ADVANCE(21); - if (lookahead == '%') ADVANCE(62); + if (lookahead == '%') ADVANCE(61); if (lookahead == '&') ADVANCE(8); if (lookahead == '\'') ADVANCE(9); if (lookahead == '(') ADVANCE(32); if (lookahead == ')') ADVANCE(33); - if (lookahead == '*') ADVANCE(60); - if (lookahead == '+') ADVANCE(56); + if (lookahead == '*') ADVANCE(59); + if (lookahead == '+') ADVANCE(55); if (lookahead == ',') ADVANCE(34); - if (lookahead == '-') ADVANCE(59); + if (lookahead == '-') ADVANCE(58); if (lookahead == '.') ADVANCE(10); - if (lookahead == '/') ADVANCE(61); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); - if (lookahead == ':') ADVANCE(53); + if (lookahead == '/') ADVANCE(60); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + if (lookahead == ':') ADVANCE(52); if (lookahead == ';') ADVANCE(31); - if (lookahead == '<') ADVANCE(69); - if (lookahead == '=') ADVANCE(52); - if (lookahead == '>') ADVANCE(68); - if (lookahead == '[') ADVANCE(49); - if (lookahead == ']') ADVANCE(50); + if (lookahead == '<') ADVANCE(68); + if (lookahead == '=') ADVANCE(51); + if (lookahead == '>') ADVANCE(67); + if (lookahead == '[') ADVANCE(48); + if (lookahead == ']') ADVANCE(49); if (lookahead == '`') ADVANCE(15); - if (lookahead == 'a') ADVANCE(42); - if (lookahead == 'e') ADVANCE(40); + if (lookahead == 'a') ADVANCE(41); + if (lookahead == 'e') ADVANCE(39); if (lookahead == '{') ADVANCE(29); if (lookahead == '|') ADVANCE(22); if (lookahead == '}') ADVANCE(30); @@ -1282,31 +1282,31 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\r' || lookahead == ' ') SKIP(0) if (('A' <= lookahead && lookahead <= 'Z') || - ('_' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 1: if (lookahead == '!') ADVANCE(11); if (lookahead == '"') ADVANCE(6); if (lookahead == '#') ADVANCE(21); - if (lookahead == '%') ADVANCE(62); + if (lookahead == '%') ADVANCE(61); if (lookahead == '&') ADVANCE(8); if (lookahead == '\'') ADVANCE(9); if (lookahead == '(') ADVANCE(32); if (lookahead == ')') ADVANCE(33); - if (lookahead == '*') ADVANCE(60); - if (lookahead == '+') ADVANCE(56); + if (lookahead == '*') ADVANCE(59); + if (lookahead == '+') ADVANCE(55); if (lookahead == ',') ADVANCE(34); - if (lookahead == '-') ADVANCE(59); + if (lookahead == '-') ADVANCE(58); if (lookahead == '.') ADVANCE(10); - if (lookahead == '/') ADVANCE(61); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); - if (lookahead == ':') ADVANCE(53); + if (lookahead == '/') ADVANCE(60); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + if (lookahead == ':') ADVANCE(52); if (lookahead == ';') ADVANCE(31); - if (lookahead == '<') ADVANCE(69); - if (lookahead == '=') ADVANCE(51); - if (lookahead == '>') ADVANCE(68); - if (lookahead == '[') ADVANCE(49); - if (lookahead == ']') ADVANCE(50); + if (lookahead == '<') ADVANCE(68); + if (lookahead == '=') ADVANCE(50); + if (lookahead == '>') ADVANCE(67); + if (lookahead == '[') ADVANCE(48); + if (lookahead == ']') ADVANCE(49); if (lookahead == '`') ADVANCE(15); if (lookahead == '{') ADVANCE(29); if (lookahead == '|') ADVANCE(22); @@ -1316,26 +1316,26 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\r' || lookahead == ' ') SKIP(1) if (('A' <= lookahead && lookahead <= 'Z') || - ('_' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 2: if (lookahead == '!') ADVANCE(11); if (lookahead == '#') ADVANCE(21); - if (lookahead == '%') ADVANCE(62); + if (lookahead == '%') ADVANCE(61); if (lookahead == '&') ADVANCE(8); if (lookahead == '(') ADVANCE(32); if (lookahead == ')') ADVANCE(33); - if (lookahead == '*') ADVANCE(60); - if (lookahead == '+') ADVANCE(56); + if (lookahead == '*') ADVANCE(59); + if (lookahead == '+') ADVANCE(55); if (lookahead == ',') ADVANCE(34); - if (lookahead == '-') ADVANCE(57); + if (lookahead == '-') ADVANCE(56); if (lookahead == '.') ADVANCE(10); - if (lookahead == '/') ADVANCE(61); - if (lookahead == ':') ADVANCE(53); + if (lookahead == '/') ADVANCE(60); + if (lookahead == ':') ADVANCE(52); if (lookahead == ';') ADVANCE(31); - if (lookahead == '<') ADVANCE(69); - if (lookahead == '=') ADVANCE(52); - if (lookahead == '>') ADVANCE(68); + if (lookahead == '<') ADVANCE(68); + if (lookahead == '=') ADVANCE(51); + if (lookahead == '>') ADVANCE(67); if (lookahead == '{') ADVANCE(29); if (lookahead == '|') ADVANCE(22); if (lookahead == '}') ADVANCE(30); @@ -1345,24 +1345,24 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ') SKIP(2) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 3: if (lookahead == '!') ADVANCE(11); if (lookahead == '#') ADVANCE(21); - if (lookahead == '%') ADVANCE(62); + if (lookahead == '%') ADVANCE(61); if (lookahead == '&') ADVANCE(8); if (lookahead == '(') ADVANCE(32); - if (lookahead == '*') ADVANCE(60); - if (lookahead == '+') ADVANCE(56); + if (lookahead == '*') ADVANCE(59); + if (lookahead == '+') ADVANCE(55); if (lookahead == ',') ADVANCE(34); - if (lookahead == '-') ADVANCE(57); - if (lookahead == '/') ADVANCE(61); - if (lookahead == ':') ADVANCE(53); + if (lookahead == '-') ADVANCE(56); + if (lookahead == '/') ADVANCE(60); + if (lookahead == ':') ADVANCE(52); if (lookahead == ';') ADVANCE(31); - if (lookahead == '<') ADVANCE(69); - if (lookahead == '=') ADVANCE(51); - if (lookahead == '>') ADVANCE(68); + if (lookahead == '<') ADVANCE(68); + if (lookahead == '=') ADVANCE(50); + if (lookahead == '>') ADVANCE(67); if (lookahead == '|') ADVANCE(22); if (lookahead == '}') ADVANCE(30); if (lookahead == '\t' || @@ -1371,21 +1371,21 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ') SKIP(3) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 4: if (lookahead == '!') ADVANCE(11); if (lookahead == '#') ADVANCE(21); - if (lookahead == '%') ADVANCE(62); + if (lookahead == '%') ADVANCE(61); if (lookahead == '&') ADVANCE(8); - if (lookahead == '*') ADVANCE(60); - if (lookahead == '+') ADVANCE(55); - if (lookahead == '-') ADVANCE(58); - if (lookahead == '/') ADVANCE(61); - if (lookahead == ':') ADVANCE(53); - if (lookahead == '<') ADVANCE(69); + if (lookahead == '*') ADVANCE(59); + if (lookahead == '+') ADVANCE(54); + if (lookahead == '-') ADVANCE(57); + if (lookahead == '/') ADVANCE(60); + if (lookahead == ':') ADVANCE(52); + if (lookahead == '<') ADVANCE(68); if (lookahead == '=') ADVANCE(12); - if (lookahead == '>') ADVANCE(68); + if (lookahead == '>') ADVANCE(67); if (lookahead == '|') ADVANCE(22); if (lookahead == '\t' || lookahead == '\n' || @@ -1397,16 +1397,16 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '#') ADVANCE(21); if (lookahead == '\'') ADVANCE(9); if (lookahead == '(') ADVANCE(32); - if (lookahead == '*') ADVANCE(60); + if (lookahead == '*') ADVANCE(59); if (lookahead == ',') ADVANCE(34); if (lookahead == '-') ADVANCE(23); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); if (lookahead == ';') ADVANCE(31); if (lookahead == '=') ADVANCE(14); - if (lookahead == '>') ADVANCE(67); - if (lookahead == '[') ADVANCE(49); + if (lookahead == '>') ADVANCE(66); + if (lookahead == '[') ADVANCE(48); if (lookahead == '`') ADVANCE(15); - if (lookahead == 'e') ADVANCE(40); + if (lookahead == 'e') ADVANCE(39); if (lookahead == '{') ADVANCE(29); if (lookahead == '}') ADVANCE(30); if (lookahead == '\t' || @@ -1414,10 +1414,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\r' || lookahead == ' ') SKIP(5) if (('A' <= lookahead && lookahead <= 'Z') || - ('_' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 6: - if (lookahead == '"') ADVANCE(48); + if (lookahead == '"') ADVANCE(47); if (lookahead != 0) ADVANCE(6); END_STATE(); case 7: @@ -1426,49 +1426,49 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == ')') ADVANCE(33); if (lookahead == ',') ADVANCE(34); if (lookahead == '-') ADVANCE(13); - if (lookahead == '>') ADVANCE(67); - if (lookahead == '[') ADVANCE(49); - if (lookahead == ']') ADVANCE(50); + if (lookahead == '>') ADVANCE(66); + if (lookahead == '[') ADVANCE(48); + if (lookahead == ']') ADVANCE(49); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(7) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 8: - if (lookahead == '&') ADVANCE(65); + if (lookahead == '&') ADVANCE(64); END_STATE(); case 9: - if (lookahead == '\'') ADVANCE(48); + if (lookahead == '\'') ADVANCE(47); if (lookahead != 0) ADVANCE(9); END_STATE(); case 10: - if (lookahead == '.') ADVANCE(54); + if (lookahead == '.') ADVANCE(53); END_STATE(); case 11: - if (lookahead == '=') ADVANCE(64); + if (lookahead == '=') ADVANCE(63); END_STATE(); case 12: - if (lookahead == '=') ADVANCE(63); - if (lookahead == '>') ADVANCE(75); + if (lookahead == '=') ADVANCE(62); + if (lookahead == '>') ADVANCE(74); END_STATE(); case 13: - if (lookahead == '>') ADVANCE(77); + if (lookahead == '>') ADVANCE(76); END_STATE(); case 14: - if (lookahead == '>') ADVANCE(75); + if (lookahead == '>') ADVANCE(74); END_STATE(); case 15: - if (lookahead == '`') ADVANCE(48); + if (lookahead == '`') ADVANCE(47); if (lookahead != 0) ADVANCE(15); END_STATE(); case 16: if (lookahead == 'f') ADVANCE(19); END_STATE(); case 17: - if (lookahead == 'f') ADVANCE(74); + if (lookahead == 'f') ADVANCE(73); END_STATE(); case 18: if (lookahead == 'i') ADVANCE(17); @@ -1477,7 +1477,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'o') ADVANCE(20); END_STATE(); case 20: - if (lookahead == 'r') ADVANCE(76); + if (lookahead == 'r') ADVANCE(75); END_STATE(); case 21: if (lookahead == '|') ADVANCE(28); @@ -1486,37 +1486,37 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead != 0) ADVANCE(21); END_STATE(); case 22: - if (lookahead == '|') ADVANCE(66); + if (lookahead == '|') ADVANCE(65); END_STATE(); case 23: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); END_STATE(); case 24: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(47); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); END_STATE(); case 25: if (eof) ADVANCE(26); if (lookahead == '!') ADVANCE(11); if (lookahead == '"') ADVANCE(6); if (lookahead == '#') ADVANCE(21); - if (lookahead == '%') ADVANCE(62); + if (lookahead == '%') ADVANCE(61); if (lookahead == '&') ADVANCE(8); if (lookahead == '\'') ADVANCE(9); if (lookahead == '(') ADVANCE(32); - if (lookahead == '*') ADVANCE(60); - if (lookahead == '+') ADVANCE(56); - if (lookahead == '-') ADVANCE(59); + if (lookahead == '*') ADVANCE(59); + if (lookahead == '+') ADVANCE(55); + if (lookahead == '-') ADVANCE(58); if (lookahead == '.') ADVANCE(10); - if (lookahead == '/') ADVANCE(61); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); - if (lookahead == ':') ADVANCE(53); + if (lookahead == '/') ADVANCE(60); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + if (lookahead == ':') ADVANCE(52); if (lookahead == ';') ADVANCE(31); - if (lookahead == '<') ADVANCE(69); - if (lookahead == '=') ADVANCE(51); - if (lookahead == '>') ADVANCE(68); - if (lookahead == '[') ADVANCE(49); + if (lookahead == '<') ADVANCE(68); + if (lookahead == '=') ADVANCE(50); + if (lookahead == '>') ADVANCE(67); + if (lookahead == '[') ADVANCE(48); if (lookahead == '`') ADVANCE(15); - if (lookahead == 'a') ADVANCE(42); + if (lookahead == 'a') ADVANCE(41); if (lookahead == '{') ADVANCE(29); if (lookahead == '|') ADVANCE(22); if (lookahead == '}') ADVANCE(30); @@ -1525,7 +1525,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\r' || lookahead == ' ') SKIP(25) if (('A' <= lookahead && lookahead <= 'Z') || - ('_' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 26: ACCEPT_TOKEN(ts_builtin_sym_end); @@ -1560,195 +1560,192 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { END_STATE(); case 35: ACCEPT_TOKEN(sym__identifier_pattern); + if (lookahead == ' ') ADVANCE(18); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 36: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == ' ') ADVANCE(18); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == ' ') ADVANCE(16); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 37: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == ' ') ADVANCE(16); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 'c') ADVANCE(36); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 38: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 'c') ADVANCE(37); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 'e') ADVANCE(35); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 39: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 'e') ADVANCE(36); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 'l') ADVANCE(42); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 40: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 'l') ADVANCE(43); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 'n') ADVANCE(37); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 41: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 'n') ADVANCE(38); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 's') ADVANCE(43); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 42: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 's') ADVANCE(44); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 's') ADVANCE(38); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 43: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 's') ADVANCE(39); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (lookahead == 'y') ADVANCE(40); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 44: ACCEPT_TOKEN(sym__identifier_pattern); - if (lookahead == 'y') ADVANCE(41); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(44); END_STATE(); case 45: - ACCEPT_TOKEN(sym__identifier_pattern); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(45); - END_STATE(); - case 46: ACCEPT_TOKEN(sym_integer); if (lookahead == '.') ADVANCE(24); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + END_STATE(); + case 46: + ACCEPT_TOKEN(sym_float); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); END_STATE(); case 47: - ACCEPT_TOKEN(sym_float); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(47); - END_STATE(); - case 48: ACCEPT_TOKEN(sym_string); END_STATE(); - case 49: + case 48: ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); - case 50: + case 49: ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); + case 50: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(62); + END_STATE(); case 51: ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(63); + if (lookahead == '=') ADVANCE(62); + if (lookahead == '>') ADVANCE(74); END_STATE(); case 52: - ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(63); - if (lookahead == '>') ADVANCE(75); - END_STATE(); - case 53: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 54: + case 53: ACCEPT_TOKEN(anon_sym_DOT_DOT); END_STATE(); + case 54: + ACCEPT_TOKEN(anon_sym_PLUS); + END_STATE(); case 55: ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '=') ADVANCE(71); END_STATE(); case 56: - ACCEPT_TOKEN(anon_sym_PLUS); + ACCEPT_TOKEN(anon_sym_DASH); if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(76); END_STATE(); case 57: ACCEPT_TOKEN(anon_sym_DASH); - if (lookahead == '=') ADVANCE(73); - if (lookahead == '>') ADVANCE(77); + if (lookahead == '>') ADVANCE(76); END_STATE(); case 58: ACCEPT_TOKEN(anon_sym_DASH); - if (lookahead == '>') ADVANCE(77); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + if (lookahead == '=') ADVANCE(72); + if (lookahead == '>') ADVANCE(76); END_STATE(); case 59: - ACCEPT_TOKEN(anon_sym_DASH); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); - if (lookahead == '=') ADVANCE(73); - if (lookahead == '>') ADVANCE(77); - END_STATE(); - case 60: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 61: + case 60: ACCEPT_TOKEN(anon_sym_SLASH); END_STATE(); - case 62: + case 61: ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); - case 63: + case 62: ACCEPT_TOKEN(anon_sym_EQ_EQ); END_STATE(); - case 64: + case 63: ACCEPT_TOKEN(anon_sym_BANG_EQ); END_STATE(); - case 65: + case 64: ACCEPT_TOKEN(anon_sym_AMP_AMP); END_STATE(); - case 66: + case 65: ACCEPT_TOKEN(anon_sym_PIPE_PIPE); END_STATE(); + case 66: + ACCEPT_TOKEN(anon_sym_GT); + END_STATE(); case 67: ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(69); END_STATE(); case 68: - ACCEPT_TOKEN(anon_sym_GT); + ACCEPT_TOKEN(anon_sym_LT); if (lookahead == '=') ADVANCE(70); END_STATE(); case 69: - ACCEPT_TOKEN(anon_sym_LT); - if (lookahead == '=') ADVANCE(71); - END_STATE(); - case 70: ACCEPT_TOKEN(anon_sym_GT_EQ); END_STATE(); - case 71: + case 70: ACCEPT_TOKEN(anon_sym_LT_EQ); END_STATE(); - case 72: + case 71: ACCEPT_TOKEN(anon_sym_PLUS_EQ); END_STATE(); - case 73: + case 72: ACCEPT_TOKEN(anon_sym_DASH_EQ); END_STATE(); - case 74: + case 73: ACCEPT_TOKEN(anon_sym_elseif); END_STATE(); - case 75: + case 74: ACCEPT_TOKEN(anon_sym_EQ_GT); END_STATE(); - case 76: + case 75: ACCEPT_TOKEN(anon_sym_asyncfor); END_STATE(); - case 77: + case 76: ACCEPT_TOKEN(anon_sym_DASH_GT); END_STATE(); default: