diff options
author | Amaan Qureshi <amaanq12@gmail.com> | 2023-10-04 21:19:11 -0400 |
---|---|---|
committer | Amaan Qureshi <amaanq12@gmail.com> | 2023-10-04 21:19:11 -0400 |
commit | 1c5435cb0d85deb68f0eeb46f1ba6f4176ff4a3b (patch) | |
tree | 86553abc1501a9c08edcbf39f1bfe9a69be83996 | |
parent | aebbb7f16792d38aa3b7f5f8087e4abefae175de (diff) |
chore: generate
-rw-r--r-- | src/grammar.json | 366 | ||||
-rw-r--r-- | src/parser.c | 273 | ||||
-rw-r--r-- | src/tree_sitter/parser.h | 12 |
3 files changed, 210 insertions, 441 deletions
diff --git a/src/grammar.json b/src/grammar.json index e9f60450e..8bb832992 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -250,106 +250,88 @@ "type": "SEQ", "members": [ { - "type": "CHOICE", + "type": "SEQ", "members": [ { - "type": "STRING", - "value": "0x" + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "-" + }, + { + "type": "BLANK" + } + ] }, { - "type": "STRING", - "value": "0X" - } - ] - }, - { - "type": "PATTERN", - "value": "[\\da-fA-F]+" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SEQ", + "type": "CHOICE", "members": [ { - "type": "CHOICE", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "-" - }, - { - "type": "STRING", - "value": "+" - } - ] - }, - { - "type": "BLANK" - } - ] + "type": "STRING", + "value": "0" }, { - "type": "CHOICE", + "type": "SEQ", "members": [ { - "type": "STRING", - "value": "0" + "type": "PATTERN", + "value": "[1-9]" }, { - "type": "SEQ", + "type": "CHOICE", "members": [ { "type": "PATTERN", - "value": "[1-9]" + "value": "\\d+" }, { - "type": "CHOICE", - "members": [ - { - "type": "PATTERN", - "value": "\\d+" - }, - { - "type": "BLANK" - } - ] + "type": "BLANK" } ] } ] } ] - }, + } + ] + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "CHOICE", + "members": [ { - "type": "STRING", - "value": "." + "type": "PATTERN", + "value": "\\d+" }, { - "type": "CHOICE", + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", "members": [ { - "type": "PATTERN", - "value": "\\d+" + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "e" + }, + { + "type": "STRING", + "value": "E" + } + ] }, { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { "type": "SEQ", "members": [ { @@ -357,124 +339,80 @@ "members": [ { "type": "STRING", - "value": "e" + "value": "-" }, { - "type": "STRING", - "value": "E" + "type": "BLANK" } ] }, { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "-" - }, - { - "type": "STRING", - "value": "+" - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "PATTERN", - "value": "\\d+" - } - ] + "type": "PATTERN", + "value": "\\d+" } ] - }, - { - "type": "BLANK" } ] + }, + { + "type": "BLANK" } ] - }, + } + ] + }, + { + "type": "SEQ", + "members": [ { "type": "SEQ", "members": [ { - "type": "STRING", - "value": "." - }, - { - "type": "PATTERN", - "value": "\\d+" + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "-" + }, + { + "type": "BLANK" + } + ] }, { "type": "CHOICE", "members": [ { + "type": "STRING", + "value": "0" + }, + { "type": "SEQ", "members": [ { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "e" - }, - { - "type": "STRING", - "value": "E" - } - ] + "type": "PATTERN", + "value": "[1-9]" }, { - "type": "SEQ", + "type": "CHOICE", "members": [ { - "type": "CHOICE", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "-" - }, - { - "type": "STRING", - "value": "+" - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { "type": "PATTERN", "value": "\\d+" + }, + { + "type": "BLANK" } ] } ] - }, - { - "type": "BLANK" } ] } ] }, { - "type": "SEQ", + "type": "CHOICE", "members": [ { "type": "SEQ", @@ -483,58 +421,15 @@ "type": "CHOICE", "members": [ { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "-" - }, - { - "type": "STRING", - "value": "+" - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { "type": "STRING", - "value": "0" + "value": "e" }, { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[1-9]" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "PATTERN", - "value": "\\d+" - }, - { - "type": "BLANK" - } - ] - } - ] + "type": "STRING", + "value": "E" } ] - } - ] - }, - { - "type": "CHOICE", - "members": [ + }, { "type": "SEQ", "members": [ @@ -543,96 +438,25 @@ "members": [ { "type": "STRING", - "value": "e" + "value": "-" }, { - "type": "STRING", - "value": "E" + "type": "BLANK" } ] }, { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "-" - }, - { - "type": "STRING", - "value": "+" - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "PATTERN", - "value": "\\d+" - } - ] + "type": "PATTERN", + "value": "\\d+" } ] - }, - { - "type": "BLANK" } ] - } - ] - } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "0b" - }, - { - "type": "STRING", - "value": "0B" - } - ] - }, - { - "type": "PATTERN", - "value": "[0-1]+" - } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "0o" }, { - "type": "STRING", - "value": "0O" + "type": "BLANK" } ] - }, - { - "type": "PATTERN", - "value": "[0-7]+" } ] } diff --git a/src/parser.c b/src/parser.c index 6c168f8b3..1c036f05a 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,4 +1,4 @@ -#include <tree_sitter/parser.h> +#include "tree_sitter/parser.h" #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic push @@ -16,7 +16,7 @@ #define MAX_ALIAS_SEQUENCE_LENGTH 4 #define PRODUCTION_ID_COUNT 2 -enum { +enum ts_symbol_identifiers { anon_sym_LBRACE = 1, anon_sym_COMMA = 2, anon_sym_RBRACE = 3, @@ -210,7 +210,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { }, }; -enum { +enum ts_field_identifiers { field_key = 1, field_value = 2, }; @@ -277,57 +277,49 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { static bool ts_lex(TSLexer *lexer, TSStateId state) { START_LEXER(); - eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(25); - if (lookahead == '"') ADVANCE(32); - if (lookahead == '+' || - lookahead == '-') ADVANCE(6); - if (lookahead == ',') ADVANCE(27); - if (lookahead == '.') ADVANCE(21); + if (eof) ADVANCE(21); + if (lookahead == '"') ADVANCE(28); + if (lookahead == ',') ADVANCE(23); + if (lookahead == '-') ADVANCE(7); if (lookahead == '/') ADVANCE(3); - if (lookahead == '0') ADVANCE(39); - if (lookahead == ':') ADVANCE(29); - if (lookahead == '[') ADVANCE(30); - if (lookahead == '\\') ADVANCE(20); - if (lookahead == ']') ADVANCE(31); - if (lookahead == 'f') ADVANCE(7); - if (lookahead == 'n') ADVANCE(16); - if (lookahead == 't') ADVANCE(13); - if (lookahead == '{') ADVANCE(26); - if (lookahead == '}') ADVANCE(28); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(24) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(41); + if (lookahead == '0') ADVANCE(35); + if (lookahead == ':') ADVANCE(25); + if (lookahead == '[') ADVANCE(26); + if (lookahead == '\\') ADVANCE(18); + if (lookahead == ']') ADVANCE(27); + if (lookahead == 'f') ADVANCE(8); + if (lookahead == 'n') ADVANCE(17); + if (lookahead == 't') ADVANCE(14); + if (lookahead == '{') ADVANCE(22); + if (lookahead == '}') ADVANCE(24); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(20) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); case 1: if (lookahead == '\n') SKIP(2) - if (lookahead == '"') ADVANCE(32); - if (lookahead == '/') ADVANCE(33); - if (lookahead == '\\') ADVANCE(20); - if (lookahead == '\t' || - lookahead == '\r' || - lookahead == ' ') ADVANCE(36); - if (lookahead != 0) ADVANCE(37); + if (lookahead == '"') ADVANCE(28); + if (lookahead == '/') ADVANCE(29); + if (lookahead == '\\') ADVANCE(18); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(32); + if (lookahead != 0) ADVANCE(33); END_STATE(); case 2: - if (lookahead == '"') ADVANCE(32); + if (lookahead == '"') ADVANCE(28); if (lookahead == '/') ADVANCE(3); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || + if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') SKIP(2) END_STATE(); case 3: if (lookahead == '*') ADVANCE(5); - if (lookahead == '/') ADVANCE(51); + if (lookahead == '/') ADVANCE(43); END_STATE(); case 4: if (lookahead == '*') ADVANCE(4); - if (lookahead == '/') ADVANCE(50); + if (lookahead == '/') ADVANCE(42); if (lookahead != 0) ADVANCE(5); END_STATE(); case 5: @@ -335,52 +327,44 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead != 0) ADVANCE(5); END_STATE(); case 6: - if (lookahead == '0') ADVANCE(40); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(41); + if (lookahead == '-') ADVANCE(19); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); END_STATE(); case 7: - if (lookahead == 'a') ADVANCE(10); + if (lookahead == '0') ADVANCE(35); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); case 8: - if (lookahead == 'e') ADVANCE(47); + if (lookahead == 'a') ADVANCE(11); END_STATE(); case 9: - if (lookahead == 'e') ADVANCE(48); + if (lookahead == 'e') ADVANCE(39); END_STATE(); case 10: - if (lookahead == 'l') ADVANCE(14); + if (lookahead == 'e') ADVANCE(40); END_STATE(); case 11: - if (lookahead == 'l') ADVANCE(49); + if (lookahead == 'l') ADVANCE(15); END_STATE(); case 12: - if (lookahead == 'l') ADVANCE(11); + if (lookahead == 'l') ADVANCE(41); END_STATE(); case 13: - if (lookahead == 'r') ADVANCE(15); + if (lookahead == 'l') ADVANCE(12); END_STATE(); case 14: - if (lookahead == 's') ADVANCE(9); + if (lookahead == 'r') ADVANCE(16); END_STATE(); case 15: - if (lookahead == 'u') ADVANCE(8); + if (lookahead == 's') ADVANCE(10); END_STATE(); case 16: - if (lookahead == 'u') ADVANCE(12); + if (lookahead == 'u') ADVANCE(9); END_STATE(); case 17: - if (lookahead == '+' || - lookahead == '-') ADVANCE(22); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + if (lookahead == 'u') ADVANCE(13); END_STATE(); case 18: - if (lookahead == '0' || - lookahead == '1') ADVANCE(43); - END_STATE(); - case 19: - if (('0' <= lookahead && lookahead <= '7')) ADVANCE(44); - END_STATE(); - case 20: if (lookahead == '"' || lookahead == '/' || lookahead == '\\' || @@ -389,179 +373,140 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 'n' || lookahead == 'r' || lookahead == 't' || - lookahead == 'u') ADVANCE(38); - END_STATE(); - case 21: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(42); - END_STATE(); - case 22: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + lookahead == 'u') ADVANCE(34); END_STATE(); - case 23: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(46); + case 19: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); END_STATE(); - case 24: - if (eof) ADVANCE(25); - if (lookahead == '"') ADVANCE(32); - if (lookahead == '+' || - lookahead == '-') ADVANCE(6); - if (lookahead == ',') ADVANCE(27); - if (lookahead == '.') ADVANCE(21); + case 20: + if (eof) ADVANCE(21); + if (lookahead == '"') ADVANCE(28); + if (lookahead == ',') ADVANCE(23); + if (lookahead == '-') ADVANCE(7); if (lookahead == '/') ADVANCE(3); - if (lookahead == '0') ADVANCE(39); - if (lookahead == ':') ADVANCE(29); - if (lookahead == '[') ADVANCE(30); - if (lookahead == ']') ADVANCE(31); - if (lookahead == 'f') ADVANCE(7); - if (lookahead == 'n') ADVANCE(16); - if (lookahead == 't') ADVANCE(13); - if (lookahead == '{') ADVANCE(26); - if (lookahead == '}') ADVANCE(28); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(24) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(41); + if (lookahead == '0') ADVANCE(35); + if (lookahead == ':') ADVANCE(25); + if (lookahead == '[') ADVANCE(26); + if (lookahead == ']') ADVANCE(27); + if (lookahead == 'f') ADVANCE(8); + if (lookahead == 'n') ADVANCE(17); + if (lookahead == 't') ADVANCE(14); + if (lookahead == '{') ADVANCE(22); + if (lookahead == '}') ADVANCE(24); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(20) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); - case 25: + case 21: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 26: + case 22: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); - case 27: + case 23: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 28: + case 24: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); - case 29: + case 25: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 30: + case 26: ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); - case 31: + case 27: ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); - case 32: + case 28: ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); - case 33: + case 29: ACCEPT_TOKEN(aux_sym_string_content_token1); - if (lookahead == '*') ADVANCE(35); - if (lookahead == '/') ADVANCE(37); + if (lookahead == '*') ADVANCE(31); + if (lookahead == '/') ADVANCE(33); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(37); + lookahead != '\\') ADVANCE(33); END_STATE(); - case 34: + case 30: ACCEPT_TOKEN(aux_sym_string_content_token1); - if (lookahead == '*') ADVANCE(34); - if (lookahead == '/') ADVANCE(37); + if (lookahead == '*') ADVANCE(30); + if (lookahead == '/') ADVANCE(33); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(35); + lookahead != '\\') ADVANCE(31); END_STATE(); - case 35: + case 31: ACCEPT_TOKEN(aux_sym_string_content_token1); - if (lookahead == '*') ADVANCE(34); + if (lookahead == '*') ADVANCE(30); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(35); + lookahead != '\\') ADVANCE(31); END_STATE(); - case 36: + case 32: ACCEPT_TOKEN(aux_sym_string_content_token1); - if (lookahead == '/') ADVANCE(33); + if (lookahead == '/') ADVANCE(29); if (lookahead == '\t' || - lookahead == '\r' || - lookahead == ' ') ADVANCE(36); + (11 <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(32); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(37); + lookahead != '\\') ADVANCE(33); END_STATE(); - case 37: + case 33: ACCEPT_TOKEN(aux_sym_string_content_token1); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(37); + lookahead != '\\') ADVANCE(33); END_STATE(); - case 38: + case 34: ACCEPT_TOKEN(sym_escape_sequence); END_STATE(); - case 39: - ACCEPT_TOKEN(sym_number); - if (lookahead == '.') ADVANCE(42); - if (lookahead == 'B' || - lookahead == 'b') ADVANCE(18); - if (lookahead == 'E' || - lookahead == 'e') ADVANCE(17); - if (lookahead == 'O' || - lookahead == 'o') ADVANCE(19); - if (lookahead == 'X' || - lookahead == 'x') ADVANCE(23); - END_STATE(); - case 40: + case 35: ACCEPT_TOKEN(sym_number); - if (lookahead == '.') ADVANCE(42); + if (lookahead == '.') ADVANCE(37); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(17); + lookahead == 'e') ADVANCE(6); END_STATE(); - case 41: + case 36: ACCEPT_TOKEN(sym_number); - if (lookahead == '.') ADVANCE(42); + if (lookahead == '.') ADVANCE(37); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(17); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(41); + lookahead == 'e') ADVANCE(6); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); - case 42: + case 37: ACCEPT_TOKEN(sym_number); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(17); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(42); - END_STATE(); - case 43: - ACCEPT_TOKEN(sym_number); - if (lookahead == '0' || - lookahead == '1') ADVANCE(43); - END_STATE(); - case 44: - ACCEPT_TOKEN(sym_number); - if (('0' <= lookahead && lookahead <= '7')) ADVANCE(44); + lookahead == 'e') ADVANCE(6); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37); END_STATE(); - case 45: - ACCEPT_TOKEN(sym_number); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); - END_STATE(); - case 46: + case 38: ACCEPT_TOKEN(sym_number); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(46); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); END_STATE(); - case 47: + case 39: ACCEPT_TOKEN(sym_true); END_STATE(); - case 48: + case 40: ACCEPT_TOKEN(sym_false); END_STATE(); - case 49: + case 41: ACCEPT_TOKEN(sym_null); END_STATE(); - case 50: + case 42: ACCEPT_TOKEN(sym_comment); END_STATE(); - case 51: + case 43: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(51); + lookahead != '\n') ADVANCE(43); END_STATE(); default: return false; diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h index 2b14ac104..d21032599 100644 --- a/src/tree_sitter/parser.h +++ b/src/tree_sitter/parser.h @@ -13,9 +13,8 @@ extern "C" { #define ts_builtin_sym_end 0 #define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 -typedef uint16_t TSStateId; - #ifndef TREE_SITTER_API_H_ +typedef uint16_t TSStateId; typedef uint16_t TSSymbol; typedef uint16_t TSFieldId; typedef struct TSLanguage TSLanguage; @@ -140,7 +139,8 @@ struct TSLanguage { lexer->advance(lexer, skip); \ start: \ skip = false; \ - lookahead = lexer->lookahead; + lookahead = lexer->lookahead; \ + eof = lexer->eof(lexer); #define ADVANCE(state_value) \ { \ @@ -166,7 +166,7 @@ struct TSLanguage { * Parse Table Macros */ -#define SMALL_STATE(id) id - LARGE_STATE_COUNT +#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT) #define STATE(id) id @@ -176,7 +176,7 @@ struct TSLanguage { {{ \ .shift = { \ .type = TSParseActionTypeShift, \ - .state = state_value \ + .state = (state_value) \ } \ }} @@ -184,7 +184,7 @@ struct TSLanguage { {{ \ .shift = { \ .type = TSParseActionTypeShift, \ - .state = state_value, \ + .state = (state_value), \ .repetition = true \ } \ }} |