From b78b5c1b82d4a972edc958ae751fd9a5541e467d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 24 Oct 2026 09:20:34 +0000 Subject: [PATCH 1/2] chore(deps): update tree-sitter to v14 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- bun.lock | 6 +++--- package.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 42d8d8e..8108ddf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -188,9 +188,9 @@ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" [[package]] name = "willbooster-tree-sitter" -version = "13.0.0" +version = "14.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e058201e5b8623309a0d9c155485d5fc366dec4109825427a4983f056f0bbc2" +checksum = "9c99f9a776126a35733a8a089cdcf8d809bcdd76bb1bb4bb429de15318fc81f0" dependencies = [ "cc", "regex", diff --git a/Cargo.toml b/Cargo.toml index 505bcdd..e2456af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,4 +25,4 @@ tree-sitter-language = "0.1" cc = "1.2" [dev-dependencies] -tree-sitter = { package = "willbooster-tree-sitter", version = "13.0.0" } +tree-sitter = { package = "willbooster-tree-sitter", version = "14.0.0" } diff --git a/bun.lock b/bun.lock index 64aa23d..12777d4 100644 --- a/bun.lock +++ b/bun.lock @@ -10,7 +10,7 @@ "@vitest/browser-playwright": "5.0.5", "@willbooster/oxlint-config": "1.4.9", "@willbooster/wb": "22.29.3", - "@willbooster/web-tree-sitter": "13.0.0", + "@willbooster/web-tree-sitter": "14.0.2", "conventional-changelog-conventionalcommits": "10.4.1", "lefthook": "2.2.2", "oxlint": "1.88.0", @@ -21,7 +21,7 @@ "wrangler": "4.151.1", }, "peerDependencies": { - "@willbooster/web-tree-sitter": "^13.0.0", + "@willbooster/web-tree-sitter": "^13.0.0 || ^14.0.0", }, "optionalPeers": [ "@willbooster/web-tree-sitter", @@ -389,7 +389,7 @@ "@willbooster/wb": ["@willbooster/wb@22.29.3", "", { "dependencies": { "@textlint-rule/textlint-rule-no-invalid-control-character": "3.0.0", "@textlint/kernel": "15.8.0", "@textlint/module-interop": "15.8.0", "@textlint/textlint-plugin-markdown": "15.8.0", "chalk": "6.0.1", "code-gauge": "10.2.4", "dotenv": "18.0.8", "dotenv-expand": "13.0.0", "fast-glob": "3.3.3", "fastest-levenshtein": "1.0.16", "globby": "16.2.4", "jsonc-parser": "3.3.1", "minimal-promise-pool": "6.0.4", "semver": "7.8.5", "smol-toml": "1.9.1", "textlint-filter-rule-node-types": "1.1.0", "textlint-rule-ja-space-between-half-and-full-width": "3.0.4", "textlint-rule-no-zero-width-spaces": "1.0.1", "yargs": "18.2.0", "zod": "4.6.7" }, "bin": { "wb": "bin/index.js" } }, "sha512-S5LXu3YvEzggR2ybmvUyXKU2AT4EunqNgLnjNOQiSU/lEopEyljklI4pFeWqZt9YieHq7tn5zh38hpWi+hD4Vg=="], - "@willbooster/web-tree-sitter": ["@willbooster/web-tree-sitter@13.0.0", "", { "dependencies": { "@types/emscripten": "^1.41.5" } }, "sha512-e8kPidDFFNQc6IylA4lInOtsS9ANe66nr3ch6k+cSmpnd6+n5/eV845WCCbzherCyLMrlQjxRgt2WipULDmTYw=="], + "@willbooster/web-tree-sitter": ["@willbooster/web-tree-sitter@14.0.2", "", { "dependencies": { "@types/emscripten": "^1.41.5" } }, "sha512-lNCGxPlYbtF9X6XHdEnaj/Ti+EzYBy8MRouQHYMXxwLljVMYxBbOpNYAfZhMyn39ndL3q1v0omh6T+I2PSRraQ=="], "agent-base": ["agent-base@9.0.0", "", {}, "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA=="], diff --git a/package.json b/package.json index 1d71ad7..2c14bcb 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@vitest/browser-playwright": "5.0.5", "@willbooster/oxlint-config": "1.4.9", "@willbooster/wb": "22.29.3", - "@willbooster/web-tree-sitter": "13.0.0", + "@willbooster/web-tree-sitter": "14.0.2", "conventional-changelog-conventionalcommits": "10.4.1", "lefthook": "2.2.2", "oxlint": "1.88.0", @@ -61,7 +61,7 @@ "wrangler": "4.151.1" }, "peerDependencies": { - "@willbooster/web-tree-sitter": "^13.0.0" + "@willbooster/web-tree-sitter": "^13.0.0 || ^14.0.0" }, "peerDependenciesMeta": { "@willbooster/web-tree-sitter": { From 4100276864ccaceb891c1524b35f4b279bb6001e Mon Sep 17 00:00:00 2001 From: "Sakamoto, Kazunori" Date: Sat, 24 Oct 2026 22:44:53 +0900 Subject: [PATCH 2/2] fix!: regenerate the Java parser for runtime 14 Runtime 14 accepts only ABI 0x5742000a, so the parser is regenerated with the v14 CLI and the peer dependency requires major version 14. Co-authored-by: WillBooster (Claude Code) --- README.md | 8 +- bindings/rust/lib.rs | 8 +- bun.lock | 2 +- package.json | 2 +- src/parser.c | 426 +++++++++++++++++++-------------------- src/tree_sitter/parser.h | 14 +- 6 files changed, 235 insertions(+), 225 deletions(-) diff --git a/README.md b/README.md index ddecb1c..3e70055 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,13 @@ Annotation interface declarations expose separate `@` and `interface` tokens. Postfix updates appear inside surrounding cast or unary nodes. An `update_expression` has a primary expression as its operand. The parser ships as compact tables under the [WillBooster/tree-sitter](https://github.com/WillBooster/tree-sitter) -fork's ABI (`0x57420009`). This package is tested with runtime 13.0.0. Runtimes with a different ABI, including +fork's ABI (`0x5742000a`). This package is tested with runtime 14.0.2. Runtimes with a different ABI, including upstream's tree-sitter, reject the parser. ## Usage The npm package ships `tree-sitter-java.wasm` for -[@willbooster/web-tree-sitter](https://www.npmjs.com/package/@willbooster/web-tree-sitter) version 13.0.0 or later within major version 13, which runs in Node.js, Bun, browsers, and Cloudflare Workers. In Node.js and Bun, load the grammar from its path: +[@willbooster/web-tree-sitter](https://www.npmjs.com/package/@willbooster/web-tree-sitter) version 14.0.0 or later within major version 14, which runs in Node.js, Bun, browsers, and Cloudflare Workers. In Node.js and Bun, load the grammar from its path: ```js import { fileURLToPath } from 'node:url'; @@ -144,8 +144,8 @@ fuzzed with: ```toml [dependencies] -tree-sitter = { package = "willbooster-tree-sitter", version = "13.0.0" } -tree-sitter-java = { package = "willbooster-tree-sitter-java", version = "11" } +tree-sitter = { package = "willbooster-tree-sitter", version = "14.0.0" } +tree-sitter-java = { package = "willbooster-tree-sitter-java", version = "12" } ``` ```rust diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs index b3b00a2..0feac4a 100644 --- a/bindings/rust/lib.rs +++ b/bindings/rust/lib.rs @@ -1,8 +1,8 @@ //! This crate provides Java language support for the [tree-sitter] parsing library. //! -//! The parser carries the ABI number of the WillBooster fork (`0x57420009`) and is tested with the -//! [`willbooster-tree-sitter`] runtime 13.0.0 (depend on it as -//! `tree-sitter = { package = "willbooster-tree-sitter", version = "13.0.0" }`). Runtimes with a different ABI, +//! The parser carries the ABI number of the WillBooster fork (`0x5742000a`) and is tested with the +//! [`willbooster-tree-sitter`] runtime 14.0.2 (depend on it as +//! `tree-sitter = { package = "willbooster-tree-sitter", version = "14.0.0" }`). Runtimes with a different ABI, //! including upstream's `tree-sitter` crate, reject it with a `LanguageError`. //! //! Typically, you will use the [`LANGUAGE`] constant to add this language to a @@ -19,7 +19,7 @@ //! assert!(!tree.root_node().has_error()); //! ``` //! -//! [`Parser`]: https://docs.rs/willbooster-tree-sitter/13/tree_sitter/struct.Parser.html +//! [`Parser`]: https://docs.rs/willbooster-tree-sitter/14/tree_sitter/struct.Parser.html //! [tree-sitter]: https://tree-sitter.github.io/ //! [`willbooster-tree-sitter`]: https://crates.io/crates/willbooster-tree-sitter diff --git a/bun.lock b/bun.lock index 12777d4..7323a45 100644 --- a/bun.lock +++ b/bun.lock @@ -21,7 +21,7 @@ "wrangler": "4.151.1", }, "peerDependencies": { - "@willbooster/web-tree-sitter": "^13.0.0 || ^14.0.0", + "@willbooster/web-tree-sitter": "^14.0.0", }, "optionalPeers": [ "@willbooster/web-tree-sitter", diff --git a/package.json b/package.json index 2c14bcb..35594c5 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "wrangler": "4.151.1" }, "peerDependencies": { - "@willbooster/web-tree-sitter": "^13.0.0 || ^14.0.0" + "@willbooster/web-tree-sitter": "^14.0.0" }, "peerDependenciesMeta": { "@willbooster/web-tree-sitter": { diff --git a/src/parser.c b/src/parser.c index 75ee78c..2570a7c 100644 --- a/src/parser.c +++ b/src/parser.c @@ -7,7 +7,7 @@ #endif #define TS_GENERATION_PROFILED 1 -#define LANGUAGE_VERSION 0x57420009 +#define LANGUAGE_VERSION 0x5742000a #define STATE_COUNT 1627 #define LARGE_STATE_COUNT 128 #define LEX_STATE_COUNT 221 @@ -5790,254 +5790,254 @@ static const TSCharacterRange ts_lex_sym_identifier_character_set_2[] = { }; static bool ts_lex(TSLexer *lexer, TSStateId state) { - UNUSED TSLexerPosition start_tags[2]; + UNUSED TSLexerCheckpoint start_tags[2]; START_LEXER(); eof = lookahead == 0 && lexer->eof(lexer); switch (state) { case 0: if (eof) ADVANCE(91); - if (lookahead == '!') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(200); } - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(112); } - if (lookahead == '%') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(188); } - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(146); } - if (lookahead == '\'') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(50); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == '*') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(179); } - if (lookahead == '+') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(174); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '-') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(175); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(207); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(181); } - if (lookahead == '0') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(93); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(164); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(148); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(161); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == '\\') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(9); } - if (lookahead == ']') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(204); } - if (lookahead == '^') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(186); } - if (lookahead == 'n') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(217); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(183); } - if (lookahead == '}') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(133); } - if (lookahead == '~') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(199); } + if (lookahead == '!') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(200); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(112); } + if (lookahead == '%') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(188); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(146); } + if (lookahead == '\'') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(50); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == '*') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(179); } + if (lookahead == '+') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(174); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '-') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(175); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(207); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(181); } + if (lookahead == '0') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(93); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(164); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(148); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(161); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == '\\') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(9); } + if (lookahead == ']') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(204); } + if (lookahead == '^') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(186); } + if (lookahead == 'n') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(217); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(183); } + if (lookahead == '}') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(133); } + if (lookahead == '~') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(199); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') SKIP(8); - if (('1' <= lookahead && lookahead <= '9')) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(94); } - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (('1' <= lookahead && lookahead <= '9')) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(94); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 1: ts_lex_state_1: - if (lookahead == '!') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(200); } - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(112); } - if (lookahead == '%') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(188); } - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(146); } - if (lookahead == '\'') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(50); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == '*') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(179); } - if (lookahead == '+') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(174); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '-') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(175); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(207); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(181); } - if (lookahead == '0') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(93); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(164); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(148); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(161); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == ']') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(204); } - if (lookahead == '^') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(186); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(183); } - if (lookahead == '}') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(133); } - if (lookahead == '~') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(199); } + if (lookahead == '!') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(200); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(112); } + if (lookahead == '%') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(188); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(146); } + if (lookahead == '\'') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(50); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == '*') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(179); } + if (lookahead == '+') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(174); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '-') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(175); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(207); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(181); } + if (lookahead == '0') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(93); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(164); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(148); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(161); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == ']') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(204); } + if (lookahead == '^') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(186); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(183); } + if (lookahead == '}') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(133); } + if (lookahead == '~') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(199); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_1); - if (('1' <= lookahead && lookahead <= '9')) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(94); } - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (('1' <= lookahead && lookahead <= '9')) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(94); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 2: ts_lex_state_2: - if (lookahead == '!') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(48); } - if (lookahead == '%') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(187); } - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(145); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == '*') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(178); } - if (lookahead == '+') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(173); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '-') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(176); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(205); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(180); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(165); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(49); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(162); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == ']') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(204); } - if (lookahead == '^') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(185); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(184); } - if (lookahead == '}') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(133); } + if (lookahead == '!') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(48); } + if (lookahead == '%') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(187); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(145); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == '*') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(178); } + if (lookahead == '+') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(173); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '-') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(176); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(205); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(180); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(165); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(49); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(162); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == ']') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(204); } + if (lookahead == '^') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(185); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(184); } + if (lookahead == '}') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(133); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_2); - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 3: ts_lex_state_3: - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(144); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(206); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(29); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(163); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(147); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(160); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(182); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(144); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(206); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(29); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(163); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(147); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(160); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(182); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_3); - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 4: ts_lex_state_4: - if (lookahead == '!') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(48); } - if (lookahead == '%') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(187); } - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(145); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == '*') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(178); } - if (lookahead == '+') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(172); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '-') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(177); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(205); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(180); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(165); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(49); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(162); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == ']') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(204); } - if (lookahead == '^') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(185); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(184); } - if (lookahead == '}') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(133); } + if (lookahead == '!') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(48); } + if (lookahead == '%') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(187); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(145); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == '*') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(178); } + if (lookahead == '+') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(172); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '-') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(177); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(205); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(180); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(165); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(49); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(162); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == ']') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(204); } + if (lookahead == '^') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(185); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(184); } + if (lookahead == '}') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(133); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_4); - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 5: ts_lex_state_5: if (eof) ADVANCE(91); - if (lookahead == '!') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(200); } - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(112); } - if (lookahead == '%') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(187); } - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(145); } - if (lookahead == '\'') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(50); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == '*') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(178); } - if (lookahead == '+') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(173); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '-') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(176); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(208); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(180); } - if (lookahead == '0') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(93); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(165); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(49); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(162); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == ']') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(204); } - if (lookahead == '^') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(185); } - if (lookahead == 'n') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(217); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(184); } - if (lookahead == '}') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(133); } - if (lookahead == '~') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(199); } + if (lookahead == '!') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(200); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(112); } + if (lookahead == '%') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(187); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(145); } + if (lookahead == '\'') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(50); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == '*') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(178); } + if (lookahead == '+') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(173); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '-') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(176); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(208); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(180); } + if (lookahead == '0') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(93); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(165); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(49); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(162); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == ']') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(204); } + if (lookahead == '^') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(185); } + if (lookahead == 'n') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(217); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(184); } + if (lookahead == '}') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(133); } + if (lookahead == '~') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(199); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_5); - if (('1' <= lookahead && lookahead <= '9')) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(94); } - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (('1' <= lookahead && lookahead <= '9')) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(94); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 6: - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(111); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(115); } - if (lookahead == '\\') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(9); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(111); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(115); } + if (lookahead == '\\') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(9); } if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(118); } - if (!eof) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(119); } + lookahead == ' ') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(118); } + if (!eof) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(119); } END_STATE(); case 7: - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(130); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(122); } - if (lookahead == '\\') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(9); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(130); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(122); } + if (lookahead == '\\') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(9); } if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(128); } - if (!eof) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(129); } + lookahead == ' ') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(128); } + if (!eof) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(129); } END_STATE(); case 8: ts_lex_state_8: if (eof) ADVANCE(91); - if (lookahead == '!') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(200); } - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(112); } - if (lookahead == '%') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(188); } - if (lookahead == '&') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(146); } - if (lookahead == '\'') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(50); } - if (lookahead == '(') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(142); } - if (lookahead == ')') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(143); } - if (lookahead == '*') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(179); } - if (lookahead == '+') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(174); } - if (lookahead == ',') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(196); } - if (lookahead == '-') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(175); } - if (lookahead == '.') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(207); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(181); } - if (lookahead == '0') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(93); } - if (lookahead == ':') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(198); } - if (lookahead == ';') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(211); } - if (lookahead == '<') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(164); } - if (lookahead == '=') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(148); } - if (lookahead == '>') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(161); } - if (lookahead == '?') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(197); } - if (lookahead == '@') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(212); } - if (lookahead == '[') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(203); } - if (lookahead == '\\') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(74); } - if (lookahead == ']') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(204); } - if (lookahead == '^') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(186); } - if (lookahead == 'n') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(217); } - if (lookahead == '{') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(210); } - if (lookahead == '|') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(183); } - if (lookahead == '}') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(133); } - if (lookahead == '~') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(199); } + if (lookahead == '!') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(200); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(112); } + if (lookahead == '%') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(188); } + if (lookahead == '&') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(146); } + if (lookahead == '\'') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(50); } + if (lookahead == '(') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(142); } + if (lookahead == ')') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(143); } + if (lookahead == '*') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(179); } + if (lookahead == '+') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(174); } + if (lookahead == ',') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(196); } + if (lookahead == '-') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(175); } + if (lookahead == '.') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(207); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(181); } + if (lookahead == '0') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(93); } + if (lookahead == ':') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(198); } + if (lookahead == ';') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(211); } + if (lookahead == '<') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(164); } + if (lookahead == '=') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(148); } + if (lookahead == '>') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(161); } + if (lookahead == '?') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(197); } + if (lookahead == '@') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(212); } + if (lookahead == '[') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(203); } + if (lookahead == '\\') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(74); } + if (lookahead == ']') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(204); } + if (lookahead == '^') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(186); } + if (lookahead == 'n') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(217); } + if (lookahead == '{') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(210); } + if (lookahead == '|') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(183); } + if (lookahead == '}') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(133); } + if (lookahead == '~') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(199); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_8); - if (('1' <= lookahead && lookahead <= '9')) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(94); } - if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(218); } + if (('1' <= lookahead && lookahead <= '9')) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(94); } + if (ts_lex_pages8_contains(ts_lex_sym_identifier_character_set_1_ascii, ts_lex_sym_identifier_character_set_1_page_ids, ts_lex_sym_identifier_character_set_1_pages, 0, 821, lookahead)) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(218); } END_STATE(); case 9: if (lookahead == '\r') ADVANCE(135); @@ -6052,18 +6052,18 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '"') ADVANCE(113); END_STATE(); case 11: - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(130); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(122); } - if (lookahead == '\\') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(74); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(130); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(122); } + if (lookahead == '\\') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(74); } if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(128); } - if (!eof) { lexer->get_position(lexer, &start_tags[0]); ADVANCE(129); } + lookahead == ' ') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(128); } + if (!eof) { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(129); } END_STATE(); case 12: ts_lex_state_12: - if (lookahead == '"') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(111); } - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(29); } - if (lookahead == '\\') { lexer->get_position(lexer, &start_tags[0]); ADVANCE(74); } + if (lookahead == '"') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(111); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(29); } + if (lookahead == '\\') { lexer->get_checkpoint(lexer, &start_tags[0]); ADVANCE(74); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(true, ts_lex_state_12); END_STATE(); @@ -6786,7 +6786,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { ts_lex_state_128: lexer->mark_start(lexer, &start_tags[0]); ACCEPT_TOKEN(aux_sym__multiline_string_fragment_token1); - if (lookahead == '/') { lexer->get_position(lexer, &start_tags[1]); ADVANCE(125); } + if (lookahead == '/') { lexer->get_checkpoint(lexer, &start_tags[1]); ADVANCE(125); } if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') TS_LEX_REPEAT(false, ts_lex_state_128); if (!eof && diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h index 98aa16b..bb0b916 100644 --- a/src/tree_sitter/parser.h +++ b/src/tree_sitter/parser.h @@ -52,6 +52,14 @@ typedef struct { uint32_t column; } TSLexerPosition; +/** + * Checkpoints may only restore marks during the lex invocation that captured them. + * Their contents must not be inspected or serialized as scanner state. + */ +typedef struct { + uint32_t _opaque[3]; +} TSLexerCheckpoint; + struct TSLexer { int32_t lookahead; TSSymbol result_symbol; @@ -62,10 +70,12 @@ struct TSLexer { bool (*eof)(const TSLexer *); void (*log)(const TSLexer *, const char *, ...); void (*get_position)(const TSLexer *, TSLexerPosition *); - void (*mark_start)(TSLexer *, const TSLexerPosition *); - void (*mark_end_at)(TSLexer *, const TSLexerPosition *); + void (*mark_start)(TSLexer *, const TSLexerCheckpoint *); + void (*mark_end_at)(TSLexer *, const TSLexerCheckpoint *); void (*get_mark_end)(const TSLexer *, TSLexerPosition *); uint32_t (*get_display_column)(TSLexer *, uint32_t tab_width); + void (*get_checkpoint)(const TSLexer *, TSLexerCheckpoint *); + void (*get_mark_end_checkpoint)(const TSLexer *, TSLexerCheckpoint *); }; typedef enum {