From 85a97053e937621e09c362e5c51c112021036bad Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Fri, 12 Apr 2024 20:14:43 +0800 Subject: [PATCH] Improve things (#1) fix: Handle negative numbers --- examples/example.csv | 4 + grammar.js | 4 +- package.json | 13 +- queries/highlights.scm | 3 +- src/grammar.json | 39 +- src/node-types.json | 4 + src/parser.c | 791 +++++++++++++++++++++++------------------ 7 files changed, 494 insertions(+), 364 deletions(-) create mode 100644 examples/example.csv diff --git a/examples/example.csv b/examples/example.csv new file mode 100644 index 0000000..976de2d --- /dev/null +++ b/examples/example.csv @@ -0,0 +1,4 @@ +name,city,state,zip,"latitude","longitude",signed +Mcdonalds,"Los Angeles",CA,90001,33.973951,-118.248405,true +Dennys,"New York",NY,10001,40.750634,-73.997177,true +"Burger King",Chicago,IL,60601,41.884151,-87.622848,false diff --git a/grammar.js b/grammar.js index bcf679f..cc3eea6 100644 --- a/grammar.js +++ b/grammar.js @@ -30,9 +30,9 @@ module.exports = grammar({ $.float, $.integer, ), - integer: $ => /\d+/, + integer: $ => /-?\d+/, hex: $ => /0[xX][\da-fA-F]+/, - float: $ => /(0|[1-9]\d*)\.\d+/, + float: $ => /-?(0|[1-9]\d*)\.\d+/, string: $ => choice( seq($.quote, $.quote), seq($.quote, $.escaped, $.quote), diff --git a/package.json b/package.json index af22771..ce65158 100644 --- a/package.json +++ b/package.json @@ -3,16 +3,13 @@ "version": "0.1.0", "description": "CSV grammar for tree-sitter", "main": "bindings/node", - "keywords": [ - "parser", - "tree-sitter", - "csv" - ], + "keywords": ["parser", "tree-sitter", "csv"], "author": "Arnau Siches", "license": "MIT", "scripts": { "build": "tree-sitter generate && node-gyp build", - "test": "tree-sitter test" + "test": "tree-sitter test", + "dev": "npm run build && tree-sitter highlight examples/*.csv" }, "dependencies": { "nan": "^2.17.0", @@ -24,9 +21,7 @@ "tree-sitter": [ { "scope": "source.csv", - "file-types": [ - "csv" - ] + "file-types": ["csv"] } ] } diff --git a/queries/highlights.scm b/queries/highlights.scm index 8497639..e8e9515 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -9,12 +9,11 @@ (null) (na) ] @constant.builtin + (string) @string (escape_sequence) @constant.character.escape - ; Punctuation (delimiter) @punctuation.delimiter (quote) @punctuation.bracket - diff --git a/src/grammar.json b/src/grammar.json index b50bfd1..cb80588 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -120,25 +120,42 @@ "value": "true|TRUE|false|FALSE" }, "_number": { - "type": "CHOICE", + "type": "SEQ", "members": [ { - "type": "SYMBOL", - "name": "hex" - }, - { - "type": "SYMBOL", - "name": "float" + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "-" + }, + { + "type": "BLANK" + } + ] }, { - "type": "SYMBOL", - "name": "integer" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "hex" + }, + { + "type": "SYMBOL", + "name": "float" + }, + { + "type": "SYMBOL", + "name": "integer" + } + ] } ] }, "integer": { "type": "PATTERN", - "value": "\\d+" + "value": "-?\\d+" }, "hex": { "type": "PATTERN", @@ -146,7 +163,7 @@ }, "float": { "type": "PATTERN", - "value": "(0|[1-9]\\d*)\\.\\d+" + "value": "-?(0|[1-9]\\d*)\\.\\d+" }, "string": { "type": "CHOICE", diff --git a/src/node-types.json b/src/node-types.json index 3dac4c5..2ad206f 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -114,6 +114,10 @@ "type": "\r\n", "named": false }, + { + "type": "-", + "named": false + }, { "type": "boolean", "named": true diff --git a/src/parser.c b/src/parser.c index d432450..bc703d5 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,11 +6,11 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 23 +#define STATE_COUNT 25 #define LARGE_STATE_COUNT 5 -#define SYMBOL_COUNT 25 +#define SYMBOL_COUNT 26 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 14 +#define TOKEN_COUNT 15 #define EXTERNAL_TOKEN_COUNT 0 #define FIELD_COUNT 1 #define MAX_ALIAS_SEQUENCE_LENGTH 3 @@ -23,24 +23,25 @@ enum { sym_null = 4, sym_na = 5, sym_boolean = 6, - sym_integer = 7, - sym_hex = 8, - sym_float = 9, - sym_quote = 10, - sym_non_escaped = 11, - sym_text = 12, - sym_escape_sequence = 13, - sym_source_file = 14, - sym_record = 15, - sym__eor = 16, - sym__pair = 17, - sym__field = 18, - sym__number = 19, - sym_string = 20, - sym_escaped = 21, - aux_sym_source_file_repeat1 = 22, - aux_sym_record_repeat1 = 23, - aux_sym_escaped_repeat1 = 24, + anon_sym_DASH = 7, + sym_integer = 8, + sym_hex = 9, + sym_float = 10, + sym_quote = 11, + sym_non_escaped = 12, + sym_text = 13, + sym_escape_sequence = 14, + sym_source_file = 15, + sym_record = 16, + sym__eor = 17, + sym__pair = 18, + sym__field = 19, + sym__number = 20, + sym_string = 21, + sym_escaped = 22, + aux_sym_source_file_repeat1 = 23, + aux_sym_record_repeat1 = 24, + aux_sym_escaped_repeat1 = 25, }; static const char * const ts_symbol_names[] = { @@ -51,6 +52,7 @@ static const char * const ts_symbol_names[] = { [sym_null] = "null", [sym_na] = "na", [sym_boolean] = "boolean", + [anon_sym_DASH] = "-", [sym_integer] = "integer", [sym_hex] = "hex", [sym_float] = "float", @@ -79,6 +81,7 @@ static const TSSymbol ts_symbol_map[] = { [sym_null] = sym_null, [sym_na] = sym_na, [sym_boolean] = sym_boolean, + [anon_sym_DASH] = anon_sym_DASH, [sym_integer] = sym_integer, [sym_hex] = sym_hex, [sym_float] = sym_float, @@ -128,6 +131,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [anon_sym_DASH] = { + .visible = true, + .named = false, + }, [sym_integer] = { .visible = true, .named = true, @@ -262,6 +269,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [20] = 20, [21] = 21, [22] = 22, + [23] = 23, + [24] = 24, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -269,101 +278,118 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(7); + if (eof) ADVANCE(10); if (lookahead == '\t') SKIP(0) - if (lookahead == '\n') ADVANCE(8); + if (lookahead == '\n') ADVANCE(11); if (lookahead == '\r') ADVANCE(1); - if (lookahead == ' ') ADVANCE(21); - if (lookahead == '"') ADVANCE(19); - if (lookahead == ',') ADVANCE(10); - if (lookahead == '0') ADVANCE(14); - if (lookahead == 'F') ADVANCE(22); - if (lookahead == 'N') ADVANCE(23); - if (lookahead == 'T') ADVANCE(28); - if (lookahead == 'f') ADVANCE(32); - if (lookahead == 'n') ADVANCE(31); - if (lookahead == 't') ADVANCE(37); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(15); + if (lookahead == ' ') ADVANCE(32); + if (lookahead == '"') ADVANCE(30); + if (lookahead == ',') ADVANCE(13); + if (lookahead == '-') ADVANCE(17); + if (lookahead == '0') ADVANCE(18); + if (lookahead == 'F') ADVANCE(33); + if (lookahead == 'N') ADVANCE(34); + if (lookahead == 'T') ADVANCE(39); + if (lookahead == 'f') ADVANCE(43); + if (lookahead == 'n') ADVANCE(42); + if (lookahead == 't') ADVANCE(48); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(19); if (lookahead != 0 && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); case 1: if (lookahead == '\t') SKIP(1) - if (lookahead == '\n') ADVANCE(8); + if (lookahead == '\n') ADVANCE(11); if (lookahead == '\r') ADVANCE(1); - if (lookahead == ' ') ADVANCE(21); - if (lookahead == '"') ADVANCE(19); - if (lookahead == ',') ADVANCE(10); - if (lookahead == '0') ADVANCE(14); - if (lookahead == 'F') ADVANCE(22); - if (lookahead == 'N') ADVANCE(23); - if (lookahead == 'T') ADVANCE(28); - if (lookahead == 'f') ADVANCE(32); - if (lookahead == 'n') ADVANCE(31); - if (lookahead == 't') ADVANCE(37); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(15); + if (lookahead == ' ') ADVANCE(32); + if (lookahead == '"') ADVANCE(30); + if (lookahead == ',') ADVANCE(13); + if (lookahead == '-') ADVANCE(17); + if (lookahead == '0') ADVANCE(18); + if (lookahead == 'F') ADVANCE(33); + if (lookahead == 'N') ADVANCE(34); + if (lookahead == 'T') ADVANCE(39); + if (lookahead == 'f') ADVANCE(43); + if (lookahead == 'n') ADVANCE(42); + if (lookahead == 't') ADVANCE(48); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(19); if (lookahead != 0 && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); case 2: - if (lookahead == '\n') ADVANCE(9); + if (lookahead == '\n') ADVANCE(12); if (lookahead == '\r') ADVANCE(2); - if (lookahead == ',') ADVANCE(10); + if (lookahead == ',') ADVANCE(13); if (lookahead == '\t' || lookahead == ' ') SKIP(2) END_STATE(); case 3: - if (lookahead == '\n') ADVANCE(45); + if (lookahead == '\n') ADVANCE(56); if (lookahead == '\r') ADVANCE(4); - if (lookahead == '"') ADVANCE(20); + if (lookahead == '"') ADVANCE(31); if (lookahead == '\t' || - lookahead == ' ') ADVANCE(43); + lookahead == ' ') ADVANCE(54); if (lookahead != 0 && - lookahead != '\\') ADVANCE(44); + lookahead != '\\') ADVANCE(55); END_STATE(); case 4: - if (lookahead == '\n') ADVANCE(45); - if (lookahead == '\r') SKIP(5) - if (lookahead == '"') ADVANCE(19); + if (lookahead == '\n') ADVANCE(56); + if (lookahead == '\r') SKIP(6) + if (lookahead == '"') ADVANCE(30); if (lookahead == '\t' || - lookahead == ' ') ADVANCE(43); + lookahead == ' ') ADVANCE(54); if (lookahead != 0 && - lookahead != '\\') ADVANCE(44); + lookahead != '\\') ADVANCE(55); END_STATE(); case 5: - if (lookahead == '"') ADVANCE(19); + if (lookahead == '"') ADVANCE(30); + if (lookahead == '-') ADVANCE(7); + if (lookahead == '0') ADVANCE(21); if (lookahead == '\t' || - lookahead == ' ') ADVANCE(43); - if (lookahead == '\n' || - lookahead == '\r') SKIP(5) - if (lookahead != 0 && - lookahead != '\\') ADVANCE(44); + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(5) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(22); END_STATE(); case 6: - if (lookahead == '"') ADVANCE(19); + if (lookahead == '"') ADVANCE(30); if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(6) + lookahead == ' ') ADVANCE(54); + if (lookahead == '\n' || + lookahead == '\r') SKIP(6) + if (lookahead != 0 && + lookahead != '\\') ADVANCE(55); END_STATE(); case 7: - ACCEPT_TOKEN(ts_builtin_sym_end); + if (lookahead == '0') ADVANCE(23); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(22); END_STATE(); case 8: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + END_STATE(); + case 9: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27); + END_STATE(); + case 10: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 11: ACCEPT_TOKEN(anon_sym_LF); - if (lookahead == '\n') ADVANCE(8); + if (lookahead == '\n') ADVANCE(11); if (lookahead == '\r') ADVANCE(1); - if (lookahead == ' ') ADVANCE(21); + if (lookahead == ' ') ADVANCE(32); END_STATE(); - case 9: + case 12: ACCEPT_TOKEN(anon_sym_LF); - if (lookahead == '\n') ADVANCE(9); + if (lookahead == '\n') ADVANCE(12); if (lookahead == '\r') ADVANCE(2); END_STATE(); - case 10: + case 13: ACCEPT_TOKEN(sym_delimiter); END_STATE(); - case 11: + case 14: ACCEPT_TOKEN(sym_null); if (lookahead != 0 && lookahead != '\t' && @@ -371,9 +397,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 12: + case 15: ACCEPT_TOKEN(sym_na); if (lookahead != 0 && lookahead != '\t' && @@ -381,9 +407,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 13: + case 16: ACCEPT_TOKEN(sym_boolean); if (lookahead != 0 && lookahead != '\t' && @@ -391,320 +417,376 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 14: + case 17: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '0') ADVANCE(20); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(19); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != '"' && + lookahead != ',' && + lookahead != '\\') ADVANCE(53); + END_STATE(); + case 18: ACCEPT_TOKEN(sym_integer); - if (lookahead == '.') ADVANCE(40); + if (lookahead == '.') ADVANCE(51); if (lookahead == 'X' || - lookahead == 'x') ADVANCE(41); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(16); + lookahead == 'x') ADVANCE(52); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(24); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 15: + case 19: ACCEPT_TOKEN(sym_integer); - if (lookahead == '.') ADVANCE(40); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(15); + if (lookahead == '.') ADVANCE(51); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(19); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 16: + case 20: ACCEPT_TOKEN(sym_integer); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(16); + if (lookahead == '.') ADVANCE(51); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(24); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 17: + case 21: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '.') ADVANCE(8); + if (lookahead == 'X' || + lookahead == 'x') ADVANCE(9); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(25); + END_STATE(); + case 22: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '.') ADVANCE(8); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(22); + END_STATE(); + case 23: + ACCEPT_TOKEN(sym_integer); + if (lookahead == '.') ADVANCE(8); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(25); + END_STATE(); + case 24: + ACCEPT_TOKEN(sym_integer); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(24); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != '"' && + lookahead != ',' && + lookahead != '\\') ADVANCE(53); + END_STATE(); + case 25: + ACCEPT_TOKEN(sym_integer); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(25); + END_STATE(); + case 26: ACCEPT_TOKEN(sym_hex); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(17); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(26); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 18: + case 27: + ACCEPT_TOKEN(sym_hex); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27); + END_STATE(); + case 28: ACCEPT_TOKEN(sym_float); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 19: + case 29: + ACCEPT_TOKEN(sym_float); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + END_STATE(); + case 30: ACCEPT_TOKEN(sym_quote); END_STATE(); - case 20: + case 31: ACCEPT_TOKEN(sym_quote); - if (lookahead == '"') ADVANCE(45); + if (lookahead == '"') ADVANCE(56); END_STATE(); - case 21: + case 32: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == '\n') ADVANCE(8); + if (lookahead == '\n') ADVANCE(11); if (lookahead == '\r') ADVANCE(1); - if (lookahead == ' ') ADVANCE(21); - if (lookahead == '0') ADVANCE(14); - if (lookahead == 'F') ADVANCE(22); - if (lookahead == 'N') ADVANCE(23); - if (lookahead == 'T') ADVANCE(28); - if (lookahead == 'f') ADVANCE(32); - if (lookahead == 'n') ADVANCE(31); - if (lookahead == 't') ADVANCE(37); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(15); + if (lookahead == ' ') ADVANCE(32); + if (lookahead == '-') ADVANCE(17); + if (lookahead == '0') ADVANCE(18); + if (lookahead == 'F') ADVANCE(33); + if (lookahead == 'N') ADVANCE(34); + if (lookahead == 'T') ADVANCE(39); + if (lookahead == 'f') ADVANCE(43); + if (lookahead == 'n') ADVANCE(42); + if (lookahead == 't') ADVANCE(48); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(19); if (lookahead != 0 && lookahead != '\t' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 22: + case 33: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'A') ADVANCE(25); + if (lookahead == 'A') ADVANCE(36); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 23: + case 34: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'A') ADVANCE(12); - if (lookahead == 'U') ADVANCE(27); + if (lookahead == 'A') ADVANCE(15); + if (lookahead == 'U') ADVANCE(38); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 24: + case 35: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'E') ADVANCE(13); + if (lookahead == 'E') ADVANCE(16); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 25: + case 36: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'L') ADVANCE(29); + if (lookahead == 'L') ADVANCE(40); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 26: + case 37: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'L') ADVANCE(11); + if (lookahead == 'L') ADVANCE(14); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 27: + case 38: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'L') ADVANCE(26); + if (lookahead == 'L') ADVANCE(37); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 28: + case 39: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'R') ADVANCE(30); + if (lookahead == 'R') ADVANCE(41); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 29: + case 40: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'S') ADVANCE(24); + if (lookahead == 'S') ADVANCE(35); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 30: + case 41: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'U') ADVANCE(24); + if (lookahead == 'U') ADVANCE(35); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 31: + case 42: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'a') ADVANCE(12); - if (lookahead == 'u') ADVANCE(36); + if (lookahead == 'a') ADVANCE(15); + if (lookahead == 'u') ADVANCE(47); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 32: + case 43: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'a') ADVANCE(34); + if (lookahead == 'a') ADVANCE(45); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 33: + case 44: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'e') ADVANCE(13); + if (lookahead == 'e') ADVANCE(16); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 34: + case 45: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'l') ADVANCE(38); + if (lookahead == 'l') ADVANCE(49); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 35: + case 46: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'l') ADVANCE(11); + if (lookahead == 'l') ADVANCE(14); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 36: + case 47: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'l') ADVANCE(35); + if (lookahead == 'l') ADVANCE(46); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 37: + case 48: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'r') ADVANCE(39); + if (lookahead == 'r') ADVANCE(50); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 38: + case 49: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 's') ADVANCE(33); + if (lookahead == 's') ADVANCE(44); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 39: + case 50: ACCEPT_TOKEN(sym_non_escaped); - if (lookahead == 'u') ADVANCE(33); + if (lookahead == 'u') ADVANCE(44); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 40: + case 51: ACCEPT_TOKEN(sym_non_escaped); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 41: + case 52: ACCEPT_TOKEN(sym_non_escaped); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(17); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(26); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 42: + case 53: ACCEPT_TOKEN(sym_non_escaped); if (lookahead != 0 && lookahead != '\t' && @@ -712,27 +794,27 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead != '\r' && lookahead != '"' && lookahead != ',' && - lookahead != '\\') ADVANCE(42); + lookahead != '\\') ADVANCE(53); END_STATE(); - case 43: + case 54: ACCEPT_TOKEN(sym_text); if (lookahead == '\t' || - lookahead == ' ') ADVANCE(43); + lookahead == ' ') ADVANCE(54); if (lookahead != 0 && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && - lookahead != '\\') ADVANCE(44); + lookahead != '\\') ADVANCE(55); END_STATE(); - case 44: + case 55: ACCEPT_TOKEN(sym_text); if (lookahead != 0 && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && - lookahead != '\\') ADVANCE(44); + lookahead != '\\') ADVANCE(55); END_STATE(); - case 45: + case 56: ACCEPT_TOKEN(sym_escape_sequence); END_STATE(); default: @@ -759,11 +841,13 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [15] = {.lex_state = 3}, [16] = {.lex_state = 2}, [17] = {.lex_state = 2}, - [18] = {.lex_state = 2}, + [18] = {.lex_state = 5}, [19] = {.lex_state = 2}, [20] = {.lex_state = 2}, - [21] = {.lex_state = 6}, - [22] = {.lex_state = 0}, + [21] = {.lex_state = 2}, + [22] = {.lex_state = 2}, + [23] = {.lex_state = 5}, + [24] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -775,6 +859,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_null] = ACTIONS(1), [sym_na] = ACTIONS(1), [sym_boolean] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), [sym_integer] = ACTIONS(1), [sym_hex] = ACTIONS(1), [sym_float] = ACTIONS(1), @@ -782,15 +867,15 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_non_escaped] = ACTIONS(1), }, [1] = { - [sym_source_file] = STATE(22), + [sym_source_file] = STATE(24), [sym_record] = STATE(2), - [sym__eor] = STATE(7), - [sym__pair] = STATE(18), + [sym__eor] = STATE(6), + [sym__pair] = STATE(20), [sym__field] = STATE(10), [sym__number] = STATE(10), [sym_string] = STATE(10), [aux_sym_source_file_repeat1] = STATE(2), - [aux_sym_record_repeat1] = STATE(9), + [aux_sym_record_repeat1] = STATE(11), [ts_builtin_sym_end] = ACTIONS(3), [anon_sym_LF] = ACTIONS(5), [anon_sym_CR_LF] = ACTIONS(5), @@ -798,311 +883,337 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_null] = ACTIONS(9), [sym_na] = ACTIONS(9), [sym_boolean] = ACTIONS(9), + [anon_sym_DASH] = ACTIONS(11), [sym_integer] = ACTIONS(9), [sym_hex] = ACTIONS(9), [sym_float] = ACTIONS(9), - [sym_quote] = ACTIONS(11), - [sym_non_escaped] = ACTIONS(13), + [sym_quote] = ACTIONS(13), + [sym_non_escaped] = ACTIONS(15), }, [2] = { [sym_record] = STATE(3), - [sym__eor] = STATE(7), - [sym__pair] = STATE(18), + [sym__eor] = STATE(6), + [sym__pair] = STATE(20), [sym__field] = STATE(10), [sym__number] = STATE(10), [sym_string] = STATE(10), [aux_sym_source_file_repeat1] = STATE(3), - [aux_sym_record_repeat1] = STATE(9), - [ts_builtin_sym_end] = ACTIONS(15), + [aux_sym_record_repeat1] = STATE(11), + [ts_builtin_sym_end] = ACTIONS(17), [anon_sym_LF] = ACTIONS(5), [anon_sym_CR_LF] = ACTIONS(5), [sym_delimiter] = ACTIONS(7), [sym_null] = ACTIONS(9), [sym_na] = ACTIONS(9), [sym_boolean] = ACTIONS(9), + [anon_sym_DASH] = ACTIONS(11), [sym_integer] = ACTIONS(9), [sym_hex] = ACTIONS(9), [sym_float] = ACTIONS(9), - [sym_quote] = ACTIONS(11), - [sym_non_escaped] = ACTIONS(13), + [sym_quote] = ACTIONS(13), + [sym_non_escaped] = ACTIONS(15), }, [3] = { [sym_record] = STATE(3), - [sym__eor] = STATE(7), - [sym__pair] = STATE(18), + [sym__eor] = STATE(6), + [sym__pair] = STATE(20), [sym__field] = STATE(10), [sym__number] = STATE(10), [sym_string] = STATE(10), [aux_sym_source_file_repeat1] = STATE(3), - [aux_sym_record_repeat1] = STATE(9), - [ts_builtin_sym_end] = ACTIONS(17), - [anon_sym_LF] = ACTIONS(19), - [anon_sym_CR_LF] = ACTIONS(19), - [sym_delimiter] = ACTIONS(22), - [sym_null] = ACTIONS(25), - [sym_na] = ACTIONS(25), - [sym_boolean] = ACTIONS(25), - [sym_integer] = ACTIONS(25), - [sym_hex] = ACTIONS(25), - [sym_float] = ACTIONS(25), - [sym_quote] = ACTIONS(28), - [sym_non_escaped] = ACTIONS(31), + [aux_sym_record_repeat1] = STATE(11), + [ts_builtin_sym_end] = ACTIONS(19), + [anon_sym_LF] = ACTIONS(21), + [anon_sym_CR_LF] = ACTIONS(21), + [sym_delimiter] = ACTIONS(24), + [sym_null] = ACTIONS(27), + [sym_na] = ACTIONS(27), + [sym_boolean] = ACTIONS(27), + [anon_sym_DASH] = ACTIONS(30), + [sym_integer] = ACTIONS(27), + [sym_hex] = ACTIONS(27), + [sym_float] = ACTIONS(27), + [sym_quote] = ACTIONS(33), + [sym_non_escaped] = ACTIONS(36), }, [4] = { [sym__field] = STATE(16), [sym__number] = STATE(16), [sym_string] = STATE(16), - [anon_sym_LF] = ACTIONS(34), - [anon_sym_CR_LF] = ACTIONS(34), - [sym_delimiter] = ACTIONS(34), - [sym_null] = ACTIONS(36), - [sym_na] = ACTIONS(36), - [sym_boolean] = ACTIONS(36), - [sym_integer] = ACTIONS(36), - [sym_hex] = ACTIONS(36), - [sym_float] = ACTIONS(36), - [sym_quote] = ACTIONS(11), - [sym_non_escaped] = ACTIONS(13), + [anon_sym_LF] = ACTIONS(39), + [anon_sym_CR_LF] = ACTIONS(39), + [sym_delimiter] = ACTIONS(39), + [sym_null] = ACTIONS(41), + [sym_na] = ACTIONS(41), + [sym_boolean] = ACTIONS(41), + [anon_sym_DASH] = ACTIONS(11), + [sym_integer] = ACTIONS(41), + [sym_hex] = ACTIONS(41), + [sym_float] = ACTIONS(41), + [sym_quote] = ACTIONS(13), + [sym_non_escaped] = ACTIONS(15), }, }; static const uint16_t ts_small_parse_table[] = { [0] = 2, - ACTIONS(38), 1, + ACTIONS(43), 1, ts_builtin_sym_end, - ACTIONS(40), 11, + ACTIONS(45), 12, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, sym_null, sym_na, sym_boolean, + anon_sym_DASH, sym_integer, sym_hex, sym_float, sym_quote, sym_non_escaped, - [17] = 2, - ACTIONS(42), 1, + [18] = 2, + ACTIONS(47), 1, ts_builtin_sym_end, - ACTIONS(44), 11, + ACTIONS(49), 12, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, sym_null, sym_na, sym_boolean, + anon_sym_DASH, sym_integer, sym_hex, sym_float, sym_quote, sym_non_escaped, - [34] = 2, - ACTIONS(46), 1, + [36] = 2, + ACTIONS(51), 1, ts_builtin_sym_end, - ACTIONS(48), 11, + ACTIONS(53), 12, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, sym_null, sym_na, sym_boolean, + anon_sym_DASH, sym_integer, sym_hex, sym_float, sym_quote, sym_non_escaped, - [51] = 2, - ACTIONS(50), 1, + [54] = 2, + ACTIONS(55), 1, ts_builtin_sym_end, - ACTIONS(52), 11, + ACTIONS(57), 12, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, sym_null, sym_na, sym_boolean, + anon_sym_DASH, sym_integer, sym_hex, sym_float, sym_quote, sym_non_escaped, - [68] = 5, + [72] = 5, ACTIONS(7), 1, sym_delimiter, - STATE(6), 1, + STATE(5), 1, sym__eor, STATE(13), 1, aux_sym_record_repeat1, - STATE(18), 1, + STATE(20), 1, sym__pair, - ACTIONS(54), 2, + ACTIONS(59), 2, anon_sym_LF, anon_sym_CR_LF, - [85] = 5, + [89] = 5, ACTIONS(7), 1, sym_delimiter, STATE(8), 1, sym__eor, - STATE(11), 1, + STATE(9), 1, aux_sym_record_repeat1, - STATE(18), 1, + STATE(20), 1, sym__pair, - ACTIONS(56), 2, + ACTIONS(61), 2, anon_sym_LF, anon_sym_CR_LF, - [102] = 5, + [106] = 5, ACTIONS(7), 1, sym_delimiter, - STATE(5), 1, + STATE(7), 1, sym__eor, STATE(13), 1, aux_sym_record_repeat1, - STATE(18), 1, + STATE(20), 1, sym__pair, - ACTIONS(58), 2, + ACTIONS(63), 2, anon_sym_LF, anon_sym_CR_LF, - [119] = 5, - ACTIONS(60), 1, + [123] = 5, + ACTIONS(65), 1, sym_quote, - ACTIONS(62), 1, + ACTIONS(67), 1, sym_text, - ACTIONS(64), 1, + ACTIONS(69), 1, sym_escape_sequence, - STATE(14), 1, + STATE(15), 1, aux_sym_escaped_repeat1, - STATE(21), 1, + STATE(23), 1, sym_escaped, - [135] = 4, - ACTIONS(68), 1, + [139] = 4, + ACTIONS(73), 1, sym_delimiter, STATE(13), 1, aux_sym_record_repeat1, - STATE(18), 1, + STATE(20), 1, sym__pair, - ACTIONS(66), 2, + ACTIONS(71), 2, anon_sym_LF, anon_sym_CR_LF, - [149] = 4, - ACTIONS(71), 1, + [153] = 4, + ACTIONS(76), 1, sym_quote, - ACTIONS(73), 1, + ACTIONS(78), 1, sym_text, - ACTIONS(75), 1, + ACTIONS(81), 1, sym_escape_sequence, - STATE(15), 1, + STATE(14), 1, aux_sym_escaped_repeat1, - [162] = 4, - ACTIONS(77), 1, + [166] = 4, + ACTIONS(84), 1, sym_quote, - ACTIONS(79), 1, + ACTIONS(86), 1, sym_text, - ACTIONS(82), 1, + ACTIONS(88), 1, sym_escape_sequence, - STATE(15), 1, + STATE(14), 1, aux_sym_escaped_repeat1, - [175] = 1, - ACTIONS(85), 3, + [179] = 1, + ACTIONS(90), 3, + anon_sym_LF, + anon_sym_CR_LF, + sym_delimiter, + [185] = 1, + ACTIONS(92), 3, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, - [181] = 1, - ACTIONS(87), 3, + [191] = 2, + ACTIONS(94), 1, + sym_integer, + ACTIONS(96), 2, + sym_hex, + sym_float, + [199] = 1, + ACTIONS(98), 3, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, - [187] = 1, - ACTIONS(89), 3, + [205] = 1, + ACTIONS(100), 3, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, - [193] = 1, - ACTIONS(91), 3, + [211] = 1, + ACTIONS(102), 3, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, - [199] = 1, - ACTIONS(93), 3, + [217] = 1, + ACTIONS(104), 3, anon_sym_LF, anon_sym_CR_LF, sym_delimiter, - [205] = 1, - ACTIONS(95), 1, + [223] = 1, + ACTIONS(106), 1, sym_quote, - [209] = 1, - ACTIONS(97), 1, + [227] = 1, + ACTIONS(108), 1, ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(5)] = 0, - [SMALL_STATE(6)] = 17, - [SMALL_STATE(7)] = 34, - [SMALL_STATE(8)] = 51, - [SMALL_STATE(9)] = 68, - [SMALL_STATE(10)] = 85, - [SMALL_STATE(11)] = 102, - [SMALL_STATE(12)] = 119, - [SMALL_STATE(13)] = 135, - [SMALL_STATE(14)] = 149, - [SMALL_STATE(15)] = 162, - [SMALL_STATE(16)] = 175, - [SMALL_STATE(17)] = 181, - [SMALL_STATE(18)] = 187, - [SMALL_STATE(19)] = 193, - [SMALL_STATE(20)] = 199, - [SMALL_STATE(21)] = 205, - [SMALL_STATE(22)] = 209, + [SMALL_STATE(6)] = 18, + [SMALL_STATE(7)] = 36, + [SMALL_STATE(8)] = 54, + [SMALL_STATE(9)] = 72, + [SMALL_STATE(10)] = 89, + [SMALL_STATE(11)] = 106, + [SMALL_STATE(12)] = 123, + [SMALL_STATE(13)] = 139, + [SMALL_STATE(14)] = 153, + [SMALL_STATE(15)] = 166, + [SMALL_STATE(16)] = 179, + [SMALL_STATE(17)] = 185, + [SMALL_STATE(18)] = 191, + [SMALL_STATE(19)] = 199, + [SMALL_STATE(20)] = 205, + [SMALL_STATE(21)] = 211, + [SMALL_STATE(22)] = 217, + [SMALL_STATE(23)] = 223, + [SMALL_STATE(24)] = 227, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), - [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), + [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(4), [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), - [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), - [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), - [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), - [19] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(7), - [22] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(4), - [25] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(10), - [28] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(12), - [31] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(20), - [34] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__pair, 1, .production_id = 1), - [36] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), - [38] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 3, .production_id = 4), - [40] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 3, .production_id = 4), - [42] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 2, .production_id = 2), - [44] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 2, .production_id = 2), - [46] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 1), - [48] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 1), - [50] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 2), - [52] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 2), - [54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), - [56] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), - [58] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5), - [60] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17), - [62] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), - [64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [66] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_record_repeat1, 2, .production_id = 3), - [68] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_record_repeat1, 2, .production_id = 3), SHIFT_REPEAT(4), - [71] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_escaped, 1), - [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), - [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [77] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_escaped_repeat1, 2), - [79] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_escaped_repeat1, 2), SHIFT_REPEAT(15), - [82] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_escaped_repeat1, 2), SHIFT_REPEAT(15), - [85] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__pair, 2, .production_id = 1), - [87] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2), - [89] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_record_repeat1, 1, .production_id = 2), - [91] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3), - [93] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1), - [95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [97] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), + [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [19] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [21] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(6), + [24] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(4), + [27] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(10), + [30] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(18), + [33] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(12), + [36] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(22), + [39] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__pair, 1, .production_id = 1), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 3, .production_id = 4), + [45] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 3, .production_id = 4), + [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 1), + [49] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 1), + [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 2, .production_id = 2), + [53] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 2, .production_id = 2), + [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record, 2), + [57] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record, 2), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [69] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [71] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_record_repeat1, 2, .production_id = 3), + [73] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_record_repeat1, 2, .production_id = 3), SHIFT_REPEAT(4), + [76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_escaped_repeat1, 2), + [78] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_escaped_repeat1, 2), SHIFT_REPEAT(14), + [81] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_escaped_repeat1, 2), SHIFT_REPEAT(14), + [84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_escaped, 1), + [86] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), + [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [90] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__pair, 2, .production_id = 1), + [92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2), + [94] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [98] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__number, 2), + [100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_record_repeat1, 1, .production_id = 2), + [102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3), + [104] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1), + [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [108] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), }; #ifdef __cplusplus