File tree-sitter-vue-0+20240326.22bdfa6.obscpio of Package tree-sitter-vue
07070100000000000081A40000000000000000000000016602C55D0000028A000000000000000000000000000000000000003000000000tree-sitter-vue-0+20240326.22bdfa6/.eslintrc.jsmodule.exports = {
'env': {
'commonjs': true,
'es2021': true,
'node': true,
},
'extends': 'google',
'overrides': [
{
'env': {
'node': true,
},
'files': [
'.eslintrc.{js,cjs}',
],
'parserOptions': {
'sourceType': 'script',
},
},
],
'parserOptions': {
'ecmaVersion': 'latest',
'sourceType': 'module',
},
'rules': {
'indent': ['error', 2, {'SwitchCase': 1}],
'max-len': [
'error',
{'code': 120, 'ignoreComments': true, 'ignoreUrls': true, 'ignoreStrings': true},
],
'arrow-parens': 'off',
'camelcase': 'off',
},
};
07070100000001000081A40000000000000000000000016602C55D000000E9000000000000000000000000000000000000003200000000tree-sitter-vue-0+20240326.22bdfa6/.gitattributes/src/** linguist-vendored
/examples/* linguist-vendored
src/grammar.json linguist-generated
src/node-types.json linguist-generated
src/parser.c linguist-generated
src/grammar.json -diff
src/node-types.json -diff
src/parser.c -diff
07070100000002000081A40000000000000000000000016602C55D00000040000000000000000000000000000000000000002E00000000tree-sitter-vue-0+20240326.22bdfa6/.gitignoreCargo.lock
node_modules
build
package-lock.json
/target/
.build/07070100000003000081A40000000000000000000000016602C55D00000027000000000000000000000000000000000000002E00000000tree-sitter-vue-0+20240326.22bdfa6/.npmignore/test
/examples
/build
/script
/target
07070100000004000081A40000000000000000000000016602C55D000007C2000000000000000000000000000000000000002E00000000tree-sitter-vue-0+20240326.22bdfa6/Cargo.lock# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
dependencies = [
"memchr",
]
[[package]]
name = "cc"
version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
dependencies = [
"libc",
]
[[package]]
name = "libc"
version = "0.2.153"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
[[package]]
name = "memchr"
version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
[[package]]
name = "regex"
version = "1.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "tree-sitter"
version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d"
dependencies = [
"cc",
"regex",
]
[[package]]
name = "tree-sitter-vue"
version = "0.1.0"
dependencies = [
"cc",
"tree-sitter",
]
07070100000005000081A40000000000000000000000016602C55D00000242000000000000000000000000000000000000002E00000000tree-sitter-vue-0+20240326.22bdfa6/Cargo.toml[package]
name = "tree-sitter-vue"
description = "vue grammar for the tree-sitter parsing library"
version = "0.1.0"
keywords = ["incremental", "parsing", "vue"]
categories = ["parsing", "text-editors"]
repository = "https://github.com/tree-sitter-grammars/tree-sitter-vue"
authors = ["Amaan Qureshi <amaanq12@gmail.com>"]
edition = "2021"
license = "MIT"
build = "bindings/rust/build.rs"
include = [
"bindings/rust/*",
"grammar.js",
"queries/*",
"src/*"
]
[lib]
path = "bindings/rust/lib.rs"
[dependencies]
tree-sitter = "~0.20.10"
[build-dependencies]
cc = "^1.0"
07070100000006000081A40000000000000000000000016602C55D00000436000000000000000000000000000000000000002B00000000tree-sitter-vue-0+20240326.22bdfa6/LICENSECopyright (c) 2024 Amaan Qureshi <amaanq12@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
07070100000007000081A40000000000000000000000016602C55D000003D4000000000000000000000000000000000000002D00000000tree-sitter-vue-0+20240326.22bdfa6/README.md# tree-sitter-vue
[![CI][ci]](https://github.com/tree-sitter-grammars/tree-sitter-vue/actions/workflows/ci.yml)
[![discord][discord]](https://discord.gg/w7nTvsVJhm)
[![matrix][matrix]](https://matrix.to/#/#tree-sitter-chat:matrix.org)
<!-- NOTE: uncomment these if you're publishing packages: -->
<!-- [![npm][npm]](https://www.npmjs.com/package/tree-sitter-vue) -->
<!-- [![crates][crates]](https://crates.io/crates/tree-sitter-vue) -->
A tree-sitter parser for vue files.
## References
<!-- NOTE: add the grammar's references here -->
[ci]: https://img.shields.io/github/actions/workflow/status/tree-sitter-grammars/tree-sitter-vue/ci.yml?logo=github&label=CI
[discord]: https://img.shields.io/discord/1063097320771698699?logo=discord&label=discord
[matrix]: https://img.shields.io/matrix/tree-sitter-chat%3Amatrix.org?logo=matrix&label=matrix
[npm]: https://img.shields.io/npm/v/tree-sitter-vue?logo=npm
[crates]: https://img.shields.io/crates/v/tree-sitter-vue?logo=rust
07070100000008000081A40000000000000000000000016602C55D000001FA000000000000000000000000000000000000002F00000000tree-sitter-vue-0+20240326.22bdfa6/binding.gyp{
"targets": [
{
"target_name": "tree_sitter_vue_binding",
"include_dirs": [
"<!(node -e \"require('nan')\")",
"src"
],
"sources": [
"bindings/node/binding.cc",
"src/parser.c",
# NOTE: uncomment this line if you have an external scanner:
# "src/scanner.c"
],
"cflags_c": [
"-std=c99",
"-Wno-unused-but-set-variable"
],
"cflags_cc": [
"-Wno-cast-function-type"
]
}
]
}
07070100000009000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000002C00000000tree-sitter-vue-0+20240326.22bdfa6/bindings0707010000000A000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000003100000000tree-sitter-vue-0+20240326.22bdfa6/bindings/node0707010000000B000081A40000000000000000000000016602C55D00000359000000000000000000000000000000000000003C00000000tree-sitter-vue-0+20240326.22bdfa6/bindings/node/binding.cc#include "nan.h"
#include "tree_sitter/parser.h"
#include <node.h>
using namespace v8;
extern "C" TSLanguage * tree_sitter_vue();
namespace {
NAN_METHOD(New) {}
void Init(Local<Object> exports, Local<Object> module) {
Local<FunctionTemplate> tpl = Nan::New<FunctionTemplate>(New);
tpl->SetClassName(Nan::New("Language").ToLocalChecked());
tpl->InstanceTemplate()->SetInternalFieldCount(1);
Local<Function> constructor = Nan::GetFunction(tpl).ToLocalChecked();
Local<Object> instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked();
Nan::SetInternalFieldPointer(instance, 0, tree_sitter_vue());
Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("vue").ToLocalChecked());
Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance);
}
NODE_MODULE(tree_sitter_vue_binding, Init)
} // namespace
0707010000000C000081A40000000000000000000000016602C55D000001C9000000000000000000000000000000000000003A00000000tree-sitter-vue-0+20240326.22bdfa6/bindings/node/index.jstry {
module.exports = require('../../build/Release/tree_sitter_vue_binding');
} catch (error1) {
if (error1.code !== 'MODULE_NOT_FOUND') {
throw error1;
}
try {
module.exports = require('../../build/Debug/tree_sitter_vue_binding');
} catch (error2) {
if (error2.code !== 'MODULE_NOT_FOUND') {
throw error2;
}
throw error1
}
}
try {
module.exports.nodeTypeInfo = require('../../src/node-types.json');
} catch (_) {}
0707010000000D000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000003100000000tree-sitter-vue-0+20240326.22bdfa6/bindings/rust0707010000000E000081A40000000000000000000000016602C55D000002BA000000000000000000000000000000000000003A00000000tree-sitter-vue-0+20240326.22bdfa6/bindings/rust/build.rsfn main() {
let src_dir = std::path::Path::new("src");
let mut c_config = cc::Build::new();
c_config.include(src_dir);
c_config
.flag_if_supported("-Wno-unused-parameter")
.flag_if_supported("-Wno-unused-but-set-variable");
let parser_path = src_dir.join("parser.c");
c_config.file(&parser_path);
// NOTE: uncomment this block if your language uses an external scanner:
/*
let scanner_path = src_dir.join("scanner.c");
c_config.file(&scanner_path);
println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap());
*/
c_config.compile("parser");
println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap());
}
0707010000000F000081A40000000000000000000000016602C55D0000079E000000000000000000000000000000000000003800000000tree-sitter-vue-0+20240326.22bdfa6/bindings/rust/lib.rs//! This crate provides vue language support for the [tree-sitter][] parsing library.
//!
//! Typically, you will use the [language][language func] function to add this language to a
//! tree-sitter [Parser][], and then use the parser to parse some code:
//!
//! ```
//! let code = r#"
//! "#;
//! let mut parser = tree_sitter::Parser::new();
//! parser.set_language(tree_sitter_vue::language()).expect("Error loading vue grammar");
//! let tree = parser.parse(code, None).unwrap();
//! assert!(!tree.root_node().has_error());
//! ```
//!
//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
//! [language func]: fn.language.html
//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
//! [tree-sitter]: https://tree-sitter.github.io/
use tree_sitter::Language;
extern "C" {
fn tree_sitter_vue() -> Language;
}
/// Get the tree-sitter [Language][] for this grammar.
///
/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
pub fn language() -> Language {
unsafe { tree_sitter_vue() }
}
/// The content of the [`node-types.json`][] file for this grammar.
///
/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types
pub const NODE_TYPES: &str = include_str!("../../src/node-types.json");
// NOTE: uncomment these to include any queries that this grammar contains:
// pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
// pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
// pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm");
// pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm");
#[cfg(test)]
mod tests {
#[test]
fn test_can_load_grammar() {
let mut parser = tree_sitter::Parser::new();
parser
.set_language(super::language())
.expect("Error loading vue language");
}
}
07070100000010000081A40000000000000000000000016602C55D00000CEA000000000000000000000000000000000000002E00000000tree-sitter-vue-0+20240326.22bdfa6/grammar.js/**
* @file Tree-sitter grammar definition
* @author Amaan Qureshi <amaanq12@gmail.com>
* @license MIT
* @see {@link https://tree-sitter.github.io/tree-sitter/creating-parsers}
*/
const HTML = require('tree-sitter-html/grammar');
module.exports = grammar(HTML, {
name: 'vue',
externals: ($, original) => original.concat([
$._template_start_tag_name,
$._text_fragment,
$._interpolation_text,
]),
rules: {
_node: ($, original) => choice(
original,
$.template_element,
$.interpolation,
),
template_element: $ => seq(
alias($.template_start_tag, $.start_tag),
repeat($._node),
$.end_tag,
),
start_tag: $ => seq(
'<',
alias($._start_tag_name, $.tag_name),
repeat($._attribute),
'>',
),
script_start_tag: $ => seq(
'<',
alias($._script_start_tag_name, $.tag_name),
repeat($._attribute),
'>',
),
style_start_tag: $ => seq(
'<',
alias($._style_start_tag_name, $.tag_name),
repeat($._attribute),
'>',
),
template_start_tag: $ => seq(
'<',
alias($._template_start_tag_name, $.tag_name),
repeat($._attribute),
'>',
),
self_closing_tag: $ => seq(
'<',
alias(choice($._start_tag_name, $._template_start_tag_name), $.tag_name),
repeat($._attribute),
'/>',
),
text: $ => $._text_fragment,
interpolation: $ => seq(
'{{',
optional(alias($._interpolation_text, $.raw_text)),
'}}',
),
_attribute: $ => choice(
$.attribute,
$.directive_attribute,
),
directive_attribute: $ => prec.right(seq(
choice(
seq(
$.directive_name,
optional(seq(
immediateLiterals(1, ':'),
choice($.directive_value, $.dynamic_directive_value),
)),
),
repeat1(seq(
tokenLiterals(1, ':', '.', '@', '#'),
choice($.directive_value, $.dynamic_directive_value),
)),
),
optional($.directive_modifiers),
optional(seq(
'=',
choice($.attribute_value, $.quoted_attribute_value),
)),
)),
directive_name: _ => token(prec(1, /v-[^<>'"=/\s:.]+/)),
directive_value: _ => /[^<>"'/=\s:.]+/,
dynamic_directive_value: $ => seq(
token.immediate(prec(1, '[')),
optional($.dynamic_directive_inner_value),
token.immediate(']'),
),
dynamic_directive_inner_value: _ => token.immediate(/[^<>"'/=\s\]]+/),
directive_modifiers: $ => repeat1(seq(token.immediate(prec(1, '.')), $.directive_modifier)),
directive_modifier: _ => token.immediate(/[^<>"'/=\s.]+/),
},
});
/**
*
* Turns a list of rules into a choice of immediate rule
*
* @param {number} precedence
*
* @param {(RegExp|String)[]} literals
*
* @return {ChoiceRule}
*/
function immediateLiterals(precedence, ...literals) {
return choice(...literals.map(l => token.immediate(prec(precedence, l))));
}
/**
*
* Turns a list of rules into a choice of aliased token rules
*
* @param {number} precedence
*
* @param {(RegExp|String)[]} literals
*
* @return {ChoiceRule}
*/
function tokenLiterals(precedence, ...literals) {
return choice(...literals.map(l => token(prec(precedence, l))));
}
07070100000011000081A40000000000000000000000016602C55D000000AB000000000000000000000000000000000000003100000000tree-sitter-vue-0+20240326.22bdfa6/jsconfig.json{
"files": ["grammar.js"],
"exclude": ["node_modules"],
"compilerOptions": {
"checkJs": true,
"module": "Node16",
"types": ["tree-sitter-cli/dsl"]
}
}
07070100000012000081A40000000000000000000000016602C55D0000032A000000000000000000000000000000000000003000000000tree-sitter-vue-0+20240326.22bdfa6/package.json{
"name": "tree-sitter-vue",
"version": "0.1.0",
"license": "MIT",
"description": "vue grammar for tree-sitter",
"repository": "tree-sitter-grammars/tree-sitter-vue",
"author": "Amaan Qureshi <amaanq12@gmail.com>",
"keywords": [
"tree-sitter",
"parser",
"lexer",
"vue"
],
"scripts": {
"build": "tree-sitter generate",
"parse": "tree-sitter parse",
"test": "tree-sitter test",
"wasm": "tree-sitter build-wasm",
"web": "tree-sitter web-ui"
},
"main": "bindings/node",
"dependencies": {
"nan": "^2.18.0",
"tree-sitter-html": "^0.20.1"
},
"devDependencies": {
"eslint": ">=5.16.0",
"eslint-config-google": "^0.14.0",
"tree-sitter-cli": "~0.21.0-pre-release-1"
},
"tree-sitter": [
{
"scope": "source.vue"
}
]
}
07070100000013000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000002B00000000tree-sitter-vue-0+20240326.22bdfa6/queries07070100000014000081A40000000000000000000000016602C55D00000050000000000000000000000000000000000000003500000000tree-sitter-vue-0+20240326.22bdfa6/queries/folds.scm[
(element)
(template_element)
(script_element)
(style_element)
] @fold
07070100000015000081A40000000000000000000000016602C55D000001A8000000000000000000000000000000000000003A00000000tree-sitter-vue-0+20240326.22bdfa6/queries/highlights.scm; inherits: html_tags
[
(dynamic_directive_inner_value)
] @tag
[
"["
"]"
] @punctuation.bracket
(interpolation) @punctuation.special
(interpolation
(raw_text) @none)
(directive_name) @tag.attribute
(directive_attribute
(quoted_attribute_value) @punctuation.special)
(directive_attribute
(quoted_attribute_value
(attribute_value) @none))
[
(directive_modifier)
(directive_value)
] @function.method
07070100000016000081A40000000000000000000000016602C55D0000007A000000000000000000000000000000000000003700000000tree-sitter-vue-0+20240326.22bdfa6/queries/indents.scm; inherits: html_tags
(template_element) @indent.begin
(template_element
(end_tag
">" @indent.end) @indent.branch)
07070100000017000081A40000000000000000000000016602C55D000007BC000000000000000000000000000000000000003A00000000tree-sitter-vue-0+20240326.22bdfa6/queries/injections.scm; inherits html_tags
; <script lang="css">
((style_element
(start_tag
(attribute
(attribute_name) @_lang
(quoted_attribute_value
(attribute_value) @injection.language)))
(raw_text) @injection.content)
(#eq? @_lang "lang")
(#any-of? @injection.language "css" "scss"))
; TODO: When nvim-treesitter has postcss and less parsers, use @injection.language and @injection.content instead
; <script lang="scss">
(style_element
(start_tag
(attribute
(attribute_name) @_lang
(quoted_attribute_value
(attribute_value) @_scss)))
(raw_text) @injection.content
(#eq? @_lang "lang")
(#any-of? @_scss "less" "postcss")
(#set! injection.language "scss"))
; <script lang="js">
((script_element
(start_tag
(attribute
(attribute_name) @_lang
(quoted_attribute_value
(attribute_value) @_js)))
(raw_text) @injection.content)
(#eq? @_lang "lang")
(#eq? @_js "js")
(#set! injection.language "javascript"))
; <script lang="ts">
((script_element
(start_tag
(attribute
(attribute_name) @_lang
(quoted_attribute_value
(attribute_value) @_ts)))
(raw_text) @injection.content)
(#eq? @_lang "lang")
(#eq? @_ts "ts")
(#set! injection.language "typescript"))
; <script lang="tsx">
; <script lang="jsx">
(script_element
(start_tag
(attribute
(attribute_name) @_attr
(quoted_attribute_value
(attribute_value) @injection.language)))
(#eq? @_attr "lang")
(#any-of? @injection.language "tsx" "jsx")
(raw_text) @injection.content)
((interpolation
(raw_text) @injection.content)
(#set! injection.language "typescript"))
(directive_attribute
(quoted_attribute_value
(attribute_value) @injection.content
(#set! injection.language "typescript")))
(template_element
(start_tag
(attribute
(quoted_attribute_value
(attribute_value) @injection.language)))
(text) @injection.content
(#eq? @injection.language "pug"))
07070100000018000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000002A00000000tree-sitter-vue-0+20240326.22bdfa6/script07070100000019000081A40000000000000000000000016602C55D00000000000000000000000000000000000000000000003D00000000tree-sitter-vue-0+20240326.22bdfa6/script/known_failures.txt0707010000001A000081ED0000000000000000000000016602C55D00000495000000000000000000000000000000000000003900000000tree-sitter-vue-0+20240326.22bdfa6/script/parse-examples#!/usr/bin/env bash
set -eu
cd "$(dirname "$0")/.."
function clone_repo {
owner=$1
name=$2
sha=$3
path=examples/$name
if [ ! -d "$path" ]; then
echo "Cloning $owner/$name"
git clone "https://github.com/$owner/$name" "$path"
fi
pushd "$path" >/dev/null
actual_sha=$(git rev-parse HEAD)
if [ "$actual_sha" != "$sha" ]; then
echo "Updating $owner/$name to $sha"
git fetch
git reset --hard "$sha"
fi
popd >/dev/null
}
clone_repo vuejs core ca9920c7d708c9da48ef0bd116610f1ecb6b56a9
clone_repo vuetifyjs vuetify 136dd51e5cceed9699cbd3b752bb4b5fc03164b6
clone_repo element-plus element-plus 48a056b051c8d571657900aae02ec8cbeff83077
known_failures=$(cat script/known_failures.txt)
# shellcheck disable=2046
tree-sitter parse -q -s \
'examples/**/*.vue' \
$(for file in $known_failures; do echo "!${file}"; done)
example_count=$(find examples -name '*.vue' | wc -l)
failure_count=$(wc -w <<<"$known_failures")
success_count=$((example_count - failure_count))
success_percent=$(bc -l <<<"100*${success_count}/${example_count}")
printf \
"Successfully parsed %d of %d example files (%.1f%%)\n" \
"$success_count" "$example_count" "$success_percent"
0707010000001B000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000002700000000tree-sitter-vue-0+20240326.22bdfa6/src0707010000001C000081A40000000000000000000000016602C55D00004F45000000000000000000000000000000000000003400000000tree-sitter-vue-0+20240326.22bdfa6/src/grammar.json{
"name": "vue",
"rules": {
"document": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
"doctype": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<!"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_doctype"
},
"named": false,
"value": "doctype"
},
{
"type": "PATTERN",
"value": "[^>]+"
},
{
"type": "STRING",
"value": ">"
}
]
},
"_doctype": {
"type": "PATTERN",
"value": "[Dd][Oo][Cc][Tt][Yy][Pp][Ee]"
},
"_node": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "doctype"
},
{
"type": "SYMBOL",
"name": "entity"
},
{
"type": "SYMBOL",
"name": "text"
},
{
"type": "SYMBOL",
"name": "element"
},
{
"type": "SYMBOL",
"name": "script_element"
},
{
"type": "SYMBOL",
"name": "style_element"
},
{
"type": "SYMBOL",
"name": "erroneous_end_tag"
}
]
},
{
"type": "SYMBOL",
"name": "template_element"
},
{
"type": "SYMBOL",
"name": "interpolation"
}
]
},
"element": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "start_tag"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "end_tag"
},
{
"type": "SYMBOL",
"name": "_implicit_end_tag"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "self_closing_tag"
}
]
},
"script_element": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "script_start_tag"
},
"named": true,
"value": "start_tag"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "raw_text"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "end_tag"
}
]
},
"style_element": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "style_start_tag"
},
"named": true,
"value": "start_tag"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "raw_text"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "end_tag"
}
]
},
"start_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_start_tag_name"
},
"named": true,
"value": "tag_name"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"script_start_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_script_start_tag_name"
},
"named": true,
"value": "tag_name"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"style_start_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_style_start_tag_name"
},
"named": true,
"value": "tag_name"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"self_closing_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_start_tag_name"
},
{
"type": "SYMBOL",
"name": "_template_start_tag_name"
}
]
},
"named": true,
"value": "tag_name"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute"
}
},
{
"type": "STRING",
"value": "/>"
}
]
},
"end_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "</"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_end_tag_name"
},
"named": true,
"value": "tag_name"
},
{
"type": "STRING",
"value": ">"
}
]
},
"erroneous_end_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "</"
},
{
"type": "SYMBOL",
"name": "erroneous_end_tag_name"
},
{
"type": "STRING",
"value": ">"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_value"
},
{
"type": "SYMBOL",
"name": "quoted_attribute_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"attribute_name": {
"type": "PATTERN",
"value": "[^<>\"'/=\\s]+"
},
"attribute_value": {
"type": "PATTERN",
"value": "[^<>\"'=\\s]+"
},
"entity": {
"type": "PATTERN",
"value": "&(#([xX][0-9a-fA-F]{1,6}|[0-9]{1,5})|[A-Za-z]{1,30});?"
},
"quoted_attribute_value": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^']+"
},
"named": true,
"value": "attribute_value"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\"]+"
},
"named": true,
"value": "attribute_value"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
"text": {
"type": "SYMBOL",
"name": "_text_fragment"
},
"template_element": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "template_start_tag"
},
"named": true,
"value": "start_tag"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "end_tag"
}
]
},
"template_start_tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_template_start_tag_name"
},
"named": true,
"value": "tag_name"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"interpolation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{{"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_interpolation_text"
},
"named": true,
"value": "raw_text"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}}"
}
]
},
"_attribute": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "SYMBOL",
"name": "directive_attribute"
}
]
},
"directive_attribute": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "directive_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": ":"
}
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "directive_value"
},
{
"type": "SYMBOL",
"name": "dynamic_directive_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": ":"
}
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "."
}
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "@"
}
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "#"
}
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "directive_value"
},
{
"type": "SYMBOL",
"name": "dynamic_directive_value"
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "directive_modifiers"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_value"
},
{
"type": "SYMBOL",
"name": "quoted_attribute_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"directive_name": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "v-[^<>'\"=/\\s:.]+"
}
}
},
"directive_value": {
"type": "PATTERN",
"value": "[^<>\"'/=\\s:.]+"
},
"dynamic_directive_value": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "["
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "dynamic_directive_inner_value"
},
{
"type": "BLANK"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "]"
}
}
]
},
"dynamic_directive_inner_value": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[^<>\"'/=\\s\\]]+"
}
},
"directive_modifiers": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "."
}
}
},
{
"type": "SYMBOL",
"name": "directive_modifier"
}
]
}
},
"directive_modifier": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[^<>\"'/=\\s.]+"
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s+"
}
],
"conflicts": [],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_start_tag_name"
},
{
"type": "SYMBOL",
"name": "_script_start_tag_name"
},
{
"type": "SYMBOL",
"name": "_style_start_tag_name"
},
{
"type": "SYMBOL",
"name": "_end_tag_name"
},
{
"type": "SYMBOL",
"name": "erroneous_end_tag_name"
},
{
"type": "STRING",
"value": "/>"
},
{
"type": "SYMBOL",
"name": "_implicit_end_tag"
},
{
"type": "SYMBOL",
"name": "raw_text"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "_template_start_tag_name"
},
{
"type": "SYMBOL",
"name": "_text_fragment"
},
{
"type": "SYMBOL",
"name": "_interpolation_text"
}
],
"inline": [],
"supertypes": []
}
0707010000001D000081A40000000000000000000000016602C55D00002263000000000000000000000000000000000000003700000000tree-sitter-vue-0+20240326.22bdfa6/src/node-types.json[
{
"type": "attribute",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute_name",
"named": true
},
{
"type": "attribute_value",
"named": true
},
{
"type": "quoted_attribute_value",
"named": true
}
]
}
},
{
"type": "directive_attribute",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute_value",
"named": true
},
{
"type": "directive_modifiers",
"named": true
},
{
"type": "directive_name",
"named": true
},
{
"type": "directive_value",
"named": true
},
{
"type": "dynamic_directive_value",
"named": true
},
{
"type": "quoted_attribute_value",
"named": true
}
]
}
},
{
"type": "directive_modifiers",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "directive_modifier",
"named": true
}
]
}
},
{
"type": "doctype",
"named": true,
"fields": {}
},
{
"type": "document",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "doctype",
"named": true
},
{
"type": "element",
"named": true
},
{
"type": "entity",
"named": true
},
{
"type": "erroneous_end_tag",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "script_element",
"named": true
},
{
"type": "style_element",
"named": true
},
{
"type": "template_element",
"named": true
},
{
"type": "text",
"named": true
}
]
}
},
{
"type": "dynamic_directive_value",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "dynamic_directive_inner_value",
"named": true
}
]
}
},
{
"type": "element",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "doctype",
"named": true
},
{
"type": "element",
"named": true
},
{
"type": "end_tag",
"named": true
},
{
"type": "entity",
"named": true
},
{
"type": "erroneous_end_tag",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "script_element",
"named": true
},
{
"type": "self_closing_tag",
"named": true
},
{
"type": "start_tag",
"named": true
},
{
"type": "style_element",
"named": true
},
{
"type": "template_element",
"named": true
},
{
"type": "text",
"named": true
}
]
}
},
{
"type": "end_tag",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "tag_name",
"named": true
}
]
}
},
{
"type": "erroneous_end_tag",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "erroneous_end_tag_name",
"named": true
}
]
}
},
{
"type": "interpolation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "raw_text",
"named": true
}
]
}
},
{
"type": "quoted_attribute_value",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "attribute_value",
"named": true
}
]
}
},
{
"type": "script_element",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "end_tag",
"named": true
},
{
"type": "raw_text",
"named": true
},
{
"type": "start_tag",
"named": true
}
]
}
},
{
"type": "self_closing_tag",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "directive_attribute",
"named": true
},
{
"type": "tag_name",
"named": true
}
]
}
},
{
"type": "start_tag",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "directive_attribute",
"named": true
},
{
"type": "tag_name",
"named": true
}
]
}
},
{
"type": "style_element",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "end_tag",
"named": true
},
{
"type": "raw_text",
"named": true
},
{
"type": "start_tag",
"named": true
}
]
}
},
{
"type": "template_element",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "doctype",
"named": true
},
{
"type": "element",
"named": true
},
{
"type": "end_tag",
"named": true
},
{
"type": "entity",
"named": true
},
{
"type": "erroneous_end_tag",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "script_element",
"named": true
},
{
"type": "start_tag",
"named": true
},
{
"type": "style_element",
"named": true
},
{
"type": "template_element",
"named": true
},
{
"type": "text",
"named": true
}
]
}
},
{
"type": "text",
"named": true,
"fields": {}
},
{
"type": "\"",
"named": false
},
{
"type": "#",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "/>",
"named": false
},
{
"type": ":",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<!",
"named": false
},
{
"type": "</",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": "@",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "attribute_name",
"named": true
},
{
"type": "attribute_value",
"named": true
},
{
"type": "comment",
"named": true
},
{
"type": "directive_modifier",
"named": true
},
{
"type": "directive_name",
"named": true
},
{
"type": "directive_value",
"named": true
},
{
"type": "doctype",
"named": false
},
{
"type": "dynamic_directive_inner_value",
"named": true
},
{
"type": "entity",
"named": true
},
{
"type": "erroneous_end_tag_name",
"named": true
},
{
"type": "raw_text",
"named": true
},
{
"type": "tag_name",
"named": true
},
{
"type": "{{",
"named": false
},
{
"type": "}}",
"named": false
}
]0707010000001E000081A40000000000000000000000016602C55D0001EC87000000000000000000000000000000000000003000000000tree-sitter-vue-0+20240326.22bdfa6/src/parser.c#include "tree_sitter/parser.h"
#if defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#endif
#define LANGUAGE_VERSION 14
#define STATE_COUNT 170
#define LARGE_STATE_COUNT 2
#define SYMBOL_COUNT 67
#define ALIAS_COUNT 0
#define TOKEN_COUNT 41
#define EXTERNAL_TOKEN_COUNT 12
#define FIELD_COUNT 0
#define MAX_ALIAS_SEQUENCE_LENGTH 6
#define PRODUCTION_ID_COUNT 1
enum ts_symbol_identifiers {
anon_sym_LT_BANG = 1,
aux_sym_doctype_token1 = 2,
anon_sym_GT = 3,
sym__doctype = 4,
anon_sym_LT = 5,
anon_sym_SLASH_GT = 6,
anon_sym_LT_SLASH = 7,
anon_sym_EQ = 8,
sym_attribute_name = 9,
sym_attribute_value = 10,
sym_entity = 11,
anon_sym_SQUOTE = 12,
aux_sym_quoted_attribute_value_token1 = 13,
anon_sym_DQUOTE = 14,
aux_sym_quoted_attribute_value_token2 = 15,
anon_sym_LBRACE_LBRACE = 16,
anon_sym_RBRACE_RBRACE = 17,
anon_sym_COLON = 18,
anon_sym_COLON2 = 19,
anon_sym_DOT = 20,
anon_sym_AT = 21,
anon_sym_POUND = 22,
sym_directive_name = 23,
sym_directive_value = 24,
anon_sym_LBRACK = 25,
anon_sym_RBRACK = 26,
sym_dynamic_directive_inner_value = 27,
anon_sym_DOT2 = 28,
sym_directive_modifier = 29,
sym__start_tag_name = 30,
sym__script_start_tag_name = 31,
sym__style_start_tag_name = 32,
sym__end_tag_name = 33,
sym_erroneous_end_tag_name = 34,
sym__implicit_end_tag = 35,
sym_raw_text = 36,
sym_comment = 37,
sym__template_start_tag_name = 38,
sym__text_fragment = 39,
sym__interpolation_text = 40,
sym_document = 41,
sym_doctype = 42,
sym__node = 43,
sym_element = 44,
sym_script_element = 45,
sym_style_element = 46,
sym_start_tag = 47,
sym_script_start_tag = 48,
sym_style_start_tag = 49,
sym_self_closing_tag = 50,
sym_end_tag = 51,
sym_erroneous_end_tag = 52,
sym_attribute = 53,
sym_quoted_attribute_value = 54,
sym_text = 55,
sym_template_element = 56,
sym_template_start_tag = 57,
sym_interpolation = 58,
sym__attribute = 59,
sym_directive_attribute = 60,
sym_dynamic_directive_value = 61,
sym_directive_modifiers = 62,
aux_sym_document_repeat1 = 63,
aux_sym_start_tag_repeat1 = 64,
aux_sym_directive_attribute_repeat1 = 65,
aux_sym_directive_modifiers_repeat1 = 66,
};
static const char * const ts_symbol_names[] = {
[ts_builtin_sym_end] = "end",
[anon_sym_LT_BANG] = "<!",
[aux_sym_doctype_token1] = "doctype_token1",
[anon_sym_GT] = ">",
[sym__doctype] = "doctype",
[anon_sym_LT] = "<",
[anon_sym_SLASH_GT] = "/>",
[anon_sym_LT_SLASH] = "</",
[anon_sym_EQ] = "=",
[sym_attribute_name] = "attribute_name",
[sym_attribute_value] = "attribute_value",
[sym_entity] = "entity",
[anon_sym_SQUOTE] = "'",
[aux_sym_quoted_attribute_value_token1] = "attribute_value",
[anon_sym_DQUOTE] = "\"",
[aux_sym_quoted_attribute_value_token2] = "attribute_value",
[anon_sym_LBRACE_LBRACE] = "{{",
[anon_sym_RBRACE_RBRACE] = "}}",
[anon_sym_COLON] = ":",
[anon_sym_COLON2] = ":",
[anon_sym_DOT] = ".",
[anon_sym_AT] = "@",
[anon_sym_POUND] = "#",
[sym_directive_name] = "directive_name",
[sym_directive_value] = "directive_value",
[anon_sym_LBRACK] = "[",
[anon_sym_RBRACK] = "]",
[sym_dynamic_directive_inner_value] = "dynamic_directive_inner_value",
[anon_sym_DOT2] = ".",
[sym_directive_modifier] = "directive_modifier",
[sym__start_tag_name] = "tag_name",
[sym__script_start_tag_name] = "tag_name",
[sym__style_start_tag_name] = "tag_name",
[sym__end_tag_name] = "tag_name",
[sym_erroneous_end_tag_name] = "erroneous_end_tag_name",
[sym__implicit_end_tag] = "_implicit_end_tag",
[sym_raw_text] = "raw_text",
[sym_comment] = "comment",
[sym__template_start_tag_name] = "tag_name",
[sym__text_fragment] = "_text_fragment",
[sym__interpolation_text] = "raw_text",
[sym_document] = "document",
[sym_doctype] = "doctype",
[sym__node] = "_node",
[sym_element] = "element",
[sym_script_element] = "script_element",
[sym_style_element] = "style_element",
[sym_start_tag] = "start_tag",
[sym_script_start_tag] = "start_tag",
[sym_style_start_tag] = "start_tag",
[sym_self_closing_tag] = "self_closing_tag",
[sym_end_tag] = "end_tag",
[sym_erroneous_end_tag] = "erroneous_end_tag",
[sym_attribute] = "attribute",
[sym_quoted_attribute_value] = "quoted_attribute_value",
[sym_text] = "text",
[sym_template_element] = "template_element",
[sym_template_start_tag] = "start_tag",
[sym_interpolation] = "interpolation",
[sym__attribute] = "_attribute",
[sym_directive_attribute] = "directive_attribute",
[sym_dynamic_directive_value] = "dynamic_directive_value",
[sym_directive_modifiers] = "directive_modifiers",
[aux_sym_document_repeat1] = "document_repeat1",
[aux_sym_start_tag_repeat1] = "start_tag_repeat1",
[aux_sym_directive_attribute_repeat1] = "directive_attribute_repeat1",
[aux_sym_directive_modifiers_repeat1] = "directive_modifiers_repeat1",
};
static const TSSymbol ts_symbol_map[] = {
[ts_builtin_sym_end] = ts_builtin_sym_end,
[anon_sym_LT_BANG] = anon_sym_LT_BANG,
[aux_sym_doctype_token1] = aux_sym_doctype_token1,
[anon_sym_GT] = anon_sym_GT,
[sym__doctype] = sym__doctype,
[anon_sym_LT] = anon_sym_LT,
[anon_sym_SLASH_GT] = anon_sym_SLASH_GT,
[anon_sym_LT_SLASH] = anon_sym_LT_SLASH,
[anon_sym_EQ] = anon_sym_EQ,
[sym_attribute_name] = sym_attribute_name,
[sym_attribute_value] = sym_attribute_value,
[sym_entity] = sym_entity,
[anon_sym_SQUOTE] = anon_sym_SQUOTE,
[aux_sym_quoted_attribute_value_token1] = sym_attribute_value,
[anon_sym_DQUOTE] = anon_sym_DQUOTE,
[aux_sym_quoted_attribute_value_token2] = sym_attribute_value,
[anon_sym_LBRACE_LBRACE] = anon_sym_LBRACE_LBRACE,
[anon_sym_RBRACE_RBRACE] = anon_sym_RBRACE_RBRACE,
[anon_sym_COLON] = anon_sym_COLON,
[anon_sym_COLON2] = anon_sym_COLON,
[anon_sym_DOT] = anon_sym_DOT,
[anon_sym_AT] = anon_sym_AT,
[anon_sym_POUND] = anon_sym_POUND,
[sym_directive_name] = sym_directive_name,
[sym_directive_value] = sym_directive_value,
[anon_sym_LBRACK] = anon_sym_LBRACK,
[anon_sym_RBRACK] = anon_sym_RBRACK,
[sym_dynamic_directive_inner_value] = sym_dynamic_directive_inner_value,
[anon_sym_DOT2] = anon_sym_DOT,
[sym_directive_modifier] = sym_directive_modifier,
[sym__start_tag_name] = sym__start_tag_name,
[sym__script_start_tag_name] = sym__start_tag_name,
[sym__style_start_tag_name] = sym__start_tag_name,
[sym__end_tag_name] = sym__start_tag_name,
[sym_erroneous_end_tag_name] = sym_erroneous_end_tag_name,
[sym__implicit_end_tag] = sym__implicit_end_tag,
[sym_raw_text] = sym_raw_text,
[sym_comment] = sym_comment,
[sym__template_start_tag_name] = sym__start_tag_name,
[sym__text_fragment] = sym__text_fragment,
[sym__interpolation_text] = sym_raw_text,
[sym_document] = sym_document,
[sym_doctype] = sym_doctype,
[sym__node] = sym__node,
[sym_element] = sym_element,
[sym_script_element] = sym_script_element,
[sym_style_element] = sym_style_element,
[sym_start_tag] = sym_start_tag,
[sym_script_start_tag] = sym_start_tag,
[sym_style_start_tag] = sym_start_tag,
[sym_self_closing_tag] = sym_self_closing_tag,
[sym_end_tag] = sym_end_tag,
[sym_erroneous_end_tag] = sym_erroneous_end_tag,
[sym_attribute] = sym_attribute,
[sym_quoted_attribute_value] = sym_quoted_attribute_value,
[sym_text] = sym_text,
[sym_template_element] = sym_template_element,
[sym_template_start_tag] = sym_start_tag,
[sym_interpolation] = sym_interpolation,
[sym__attribute] = sym__attribute,
[sym_directive_attribute] = sym_directive_attribute,
[sym_dynamic_directive_value] = sym_dynamic_directive_value,
[sym_directive_modifiers] = sym_directive_modifiers,
[aux_sym_document_repeat1] = aux_sym_document_repeat1,
[aux_sym_start_tag_repeat1] = aux_sym_start_tag_repeat1,
[aux_sym_directive_attribute_repeat1] = aux_sym_directive_attribute_repeat1,
[aux_sym_directive_modifiers_repeat1] = aux_sym_directive_modifiers_repeat1,
};
static const TSSymbolMetadata ts_symbol_metadata[] = {
[ts_builtin_sym_end] = {
.visible = false,
.named = true,
},
[anon_sym_LT_BANG] = {
.visible = true,
.named = false,
},
[aux_sym_doctype_token1] = {
.visible = false,
.named = false,
},
[anon_sym_GT] = {
.visible = true,
.named = false,
},
[sym__doctype] = {
.visible = true,
.named = false,
},
[anon_sym_LT] = {
.visible = true,
.named = false,
},
[anon_sym_SLASH_GT] = {
.visible = true,
.named = false,
},
[anon_sym_LT_SLASH] = {
.visible = true,
.named = false,
},
[anon_sym_EQ] = {
.visible = true,
.named = false,
},
[sym_attribute_name] = {
.visible = true,
.named = true,
},
[sym_attribute_value] = {
.visible = true,
.named = true,
},
[sym_entity] = {
.visible = true,
.named = true,
},
[anon_sym_SQUOTE] = {
.visible = true,
.named = false,
},
[aux_sym_quoted_attribute_value_token1] = {
.visible = true,
.named = true,
},
[anon_sym_DQUOTE] = {
.visible = true,
.named = false,
},
[aux_sym_quoted_attribute_value_token2] = {
.visible = true,
.named = true,
},
[anon_sym_LBRACE_LBRACE] = {
.visible = true,
.named = false,
},
[anon_sym_RBRACE_RBRACE] = {
.visible = true,
.named = false,
},
[anon_sym_COLON] = {
.visible = true,
.named = false,
},
[anon_sym_COLON2] = {
.visible = true,
.named = false,
},
[anon_sym_DOT] = {
.visible = true,
.named = false,
},
[anon_sym_AT] = {
.visible = true,
.named = false,
},
[anon_sym_POUND] = {
.visible = true,
.named = false,
},
[sym_directive_name] = {
.visible = true,
.named = true,
},
[sym_directive_value] = {
.visible = true,
.named = true,
},
[anon_sym_LBRACK] = {
.visible = true,
.named = false,
},
[anon_sym_RBRACK] = {
.visible = true,
.named = false,
},
[sym_dynamic_directive_inner_value] = {
.visible = true,
.named = true,
},
[anon_sym_DOT2] = {
.visible = true,
.named = false,
},
[sym_directive_modifier] = {
.visible = true,
.named = true,
},
[sym__start_tag_name] = {
.visible = true,
.named = true,
},
[sym__script_start_tag_name] = {
.visible = true,
.named = true,
},
[sym__style_start_tag_name] = {
.visible = true,
.named = true,
},
[sym__end_tag_name] = {
.visible = true,
.named = true,
},
[sym_erroneous_end_tag_name] = {
.visible = true,
.named = true,
},
[sym__implicit_end_tag] = {
.visible = false,
.named = true,
},
[sym_raw_text] = {
.visible = true,
.named = true,
},
[sym_comment] = {
.visible = true,
.named = true,
},
[sym__template_start_tag_name] = {
.visible = true,
.named = true,
},
[sym__text_fragment] = {
.visible = false,
.named = true,
},
[sym__interpolation_text] = {
.visible = true,
.named = true,
},
[sym_document] = {
.visible = true,
.named = true,
},
[sym_doctype] = {
.visible = true,
.named = true,
},
[sym__node] = {
.visible = false,
.named = true,
},
[sym_element] = {
.visible = true,
.named = true,
},
[sym_script_element] = {
.visible = true,
.named = true,
},
[sym_style_element] = {
.visible = true,
.named = true,
},
[sym_start_tag] = {
.visible = true,
.named = true,
},
[sym_script_start_tag] = {
.visible = true,
.named = true,
},
[sym_style_start_tag] = {
.visible = true,
.named = true,
},
[sym_self_closing_tag] = {
.visible = true,
.named = true,
},
[sym_end_tag] = {
.visible = true,
.named = true,
},
[sym_erroneous_end_tag] = {
.visible = true,
.named = true,
},
[sym_attribute] = {
.visible = true,
.named = true,
},
[sym_quoted_attribute_value] = {
.visible = true,
.named = true,
},
[sym_text] = {
.visible = true,
.named = true,
},
[sym_template_element] = {
.visible = true,
.named = true,
},
[sym_template_start_tag] = {
.visible = true,
.named = true,
},
[sym_interpolation] = {
.visible = true,
.named = true,
},
[sym__attribute] = {
.visible = false,
.named = true,
},
[sym_directive_attribute] = {
.visible = true,
.named = true,
},
[sym_dynamic_directive_value] = {
.visible = true,
.named = true,
},
[sym_directive_modifiers] = {
.visible = true,
.named = true,
},
[aux_sym_document_repeat1] = {
.visible = false,
.named = false,
},
[aux_sym_start_tag_repeat1] = {
.visible = false,
.named = false,
},
[aux_sym_directive_attribute_repeat1] = {
.visible = false,
.named = false,
},
[aux_sym_directive_modifiers_repeat1] = {
.visible = false,
.named = false,
},
};
static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = {
[0] = {0},
};
static const uint16_t ts_non_terminal_alias_map[] = {
0,
};
static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
[0] = 0,
[1] = 1,
[2] = 2,
[3] = 2,
[4] = 4,
[5] = 4,
[6] = 6,
[7] = 7,
[8] = 8,
[9] = 8,
[10] = 7,
[11] = 11,
[12] = 11,
[13] = 13,
[14] = 14,
[15] = 15,
[16] = 16,
[17] = 17,
[18] = 18,
[19] = 14,
[20] = 16,
[21] = 21,
[22] = 18,
[23] = 13,
[24] = 17,
[25] = 21,
[26] = 26,
[27] = 15,
[28] = 28,
[29] = 29,
[30] = 30,
[31] = 31,
[32] = 32,
[33] = 33,
[34] = 34,
[35] = 28,
[36] = 36,
[37] = 37,
[38] = 38,
[39] = 33,
[40] = 40,
[41] = 34,
[42] = 32,
[43] = 43,
[44] = 40,
[45] = 45,
[46] = 46,
[47] = 38,
[48] = 36,
[49] = 37,
[50] = 50,
[51] = 51,
[52] = 43,
[53] = 53,
[54] = 54,
[55] = 45,
[56] = 56,
[57] = 57,
[58] = 58,
[59] = 46,
[60] = 50,
[61] = 61,
[62] = 62,
[63] = 63,
[64] = 64,
[65] = 53,
[66] = 66,
[67] = 64,
[68] = 68,
[69] = 62,
[70] = 66,
[71] = 71,
[72] = 72,
[73] = 73,
[74] = 51,
[75] = 71,
[76] = 76,
[77] = 77,
[78] = 78,
[79] = 79,
[80] = 80,
[81] = 54,
[82] = 82,
[83] = 78,
[84] = 84,
[85] = 68,
[86] = 56,
[87] = 87,
[88] = 72,
[89] = 89,
[90] = 90,
[91] = 87,
[92] = 84,
[93] = 61,
[94] = 82,
[95] = 90,
[96] = 79,
[97] = 57,
[98] = 58,
[99] = 89,
[100] = 77,
[101] = 76,
[102] = 73,
[103] = 103,
[104] = 104,
[105] = 105,
[106] = 106,
[107] = 107,
[108] = 108,
[109] = 105,
[110] = 106,
[111] = 108,
[112] = 112,
[113] = 113,
[114] = 107,
[115] = 112,
[116] = 113,
[117] = 117,
[118] = 118,
[119] = 118,
[120] = 120,
[121] = 117,
[122] = 122,
[123] = 122,
[124] = 120,
[125] = 125,
[126] = 126,
[127] = 127,
[128] = 128,
[129] = 127,
[130] = 130,
[131] = 127,
[132] = 132,
[133] = 133,
[134] = 132,
[135] = 125,
[136] = 136,
[137] = 137,
[138] = 138,
[139] = 126,
[140] = 127,
[141] = 141,
[142] = 130,
[143] = 128,
[144] = 133,
[145] = 145,
[146] = 146,
[147] = 147,
[148] = 148,
[149] = 149,
[150] = 150,
[151] = 151,
[152] = 152,
[153] = 153,
[154] = 150,
[155] = 146,
[156] = 152,
[157] = 149,
[158] = 153,
[159] = 159,
[160] = 160,
[161] = 145,
[162] = 162,
[163] = 163,
[164] = 160,
[165] = 147,
[166] = 151,
[167] = 159,
[168] = 163,
[169] = 162,
};
static bool ts_lex(TSLexer *lexer, TSStateId state) {
START_LEXER();
eof = lexer->eof(lexer);
switch (state) {
case 0:
if (eof) ADVANCE(27);
if (lookahead == '"') ADVANCE(84);
if (lookahead == '#') ADVANCE(93);
if (lookahead == '&') ADVANCE(6);
if (lookahead == '\'') ADVANCE(81);
if (lookahead == '.') ADVANCE(99);
if (lookahead == '/') ADVANCE(9);
if (lookahead == ':') ADVANCE(89);
if (lookahead == '<') ADVANCE(33);
if (lookahead == '=') ADVANCE(36);
if (lookahead == '>') ADVANCE(31);
if (lookahead == '@') ADVANCE(92);
if (lookahead == '[') ADVANCE(96);
if (lookahead == ']') ADVANCE(97);
if (lookahead == 'v') ADVANCE(8);
if (lookahead == '{') ADVANCE(12);
if (lookahead == '}') ADVANCE(13);
if (lookahead == 'D' ||
lookahead == 'd') ADVANCE(16);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(26)
END_STATE();
case 1:
if (lookahead == '"') ADVANCE(84);
if (lookahead == '\'') ADVANCE(81);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(1)
if (lookahead != 0 &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(40);
END_STATE();
case 2:
if (lookahead == '"') ADVANCE(84);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(85);
if (lookahead != 0) ADVANCE(86);
END_STATE();
case 3:
if (lookahead == '#') ADVANCE(93);
if (lookahead == '.') ADVANCE(99);
if (lookahead == '/') ADVANCE(9);
if (lookahead == ':') ADVANCE(89);
if (lookahead == '=') ADVANCE(36);
if (lookahead == '>') ADVANCE(31);
if (lookahead == '@') ADVANCE(92);
if (lookahead == 'v') ADVANCE(37);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(5)
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '<') ADVANCE(39);
END_STATE();
case 4:
if (lookahead == '#') ADVANCE(93);
if (lookahead == '.') ADVANCE(99);
if (lookahead == '/') ADVANCE(9);
if (lookahead == ':') ADVANCE(90);
if (lookahead == '=') ADVANCE(36);
if (lookahead == '>') ADVANCE(31);
if (lookahead == '@') ADVANCE(92);
if (lookahead == 'v') ADVANCE(37);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(5)
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '<') ADVANCE(39);
END_STATE();
case 5:
if (lookahead == '#') ADVANCE(93);
if (lookahead == '.') ADVANCE(91);
if (lookahead == '/') ADVANCE(9);
if (lookahead == ':') ADVANCE(90);
if (lookahead == '=') ADVANCE(36);
if (lookahead == '>') ADVANCE(31);
if (lookahead == '@') ADVANCE(92);
if (lookahead == 'v') ADVANCE(37);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(5)
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '<') ADVANCE(39);
END_STATE();
case 6:
if (lookahead == '#') ADVANCE(19);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(80);
END_STATE();
case 7:
if (lookahead == '\'') ADVANCE(81);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(82);
if (lookahead != 0) ADVANCE(83);
END_STATE();
case 8:
if (lookahead == '-') ADVANCE(24);
END_STATE();
case 9:
if (lookahead == '>') ADVANCE(34);
END_STATE();
case 10:
if (lookahead == '[') ADVANCE(96);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(21)
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
lookahead != ':' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(95);
END_STATE();
case 11:
if (lookahead == ']') ADVANCE(97);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(98);
END_STATE();
case 12:
if (lookahead == '{') ADVANCE(87);
END_STATE();
case 13:
if (lookahead == '}') ADVANCE(88);
END_STATE();
case 14:
if (lookahead == 'C' ||
lookahead == 'c') ADVANCE(18);
END_STATE();
case 15:
if (lookahead == 'E' ||
lookahead == 'e') ADVANCE(32);
END_STATE();
case 16:
if (lookahead == 'O' ||
lookahead == 'o') ADVANCE(14);
END_STATE();
case 17:
if (lookahead == 'P' ||
lookahead == 'p') ADVANCE(15);
END_STATE();
case 18:
if (lookahead == 'T' ||
lookahead == 't') ADVANCE(20);
END_STATE();
case 19:
if (lookahead == 'X' ||
lookahead == 'x') ADVANCE(23);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46);
END_STATE();
case 20:
if (lookahead == 'Y' ||
lookahead == 'y') ADVANCE(17);
END_STATE();
case 21:
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(21)
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
lookahead != ':' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(95);
END_STATE();
case 22:
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(29);
if (lookahead != 0 &&
lookahead != '>') ADVANCE(30);
END_STATE();
case 23:
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(51);
END_STATE();
case 24:
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
lookahead != ':' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(94);
END_STATE();
case 25:
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(100);
END_STATE();
case 26:
if (eof) ADVANCE(27);
if (lookahead == '"') ADVANCE(84);
if (lookahead == '#') ADVANCE(93);
if (lookahead == '&') ADVANCE(6);
if (lookahead == '\'') ADVANCE(81);
if (lookahead == '.') ADVANCE(91);
if (lookahead == '/') ADVANCE(9);
if (lookahead == ':') ADVANCE(90);
if (lookahead == '<') ADVANCE(33);
if (lookahead == '=') ADVANCE(36);
if (lookahead == '>') ADVANCE(31);
if (lookahead == '@') ADVANCE(92);
if (lookahead == 'v') ADVANCE(8);
if (lookahead == '{') ADVANCE(12);
if (lookahead == '}') ADVANCE(13);
if (lookahead == 'D' ||
lookahead == 'd') ADVANCE(16);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(26)
END_STATE();
case 27:
ACCEPT_TOKEN(ts_builtin_sym_end);
END_STATE();
case 28:
ACCEPT_TOKEN(anon_sym_LT_BANG);
END_STATE();
case 29:
ACCEPT_TOKEN(aux_sym_doctype_token1);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(29);
if (lookahead != 0 &&
lookahead != '>') ADVANCE(30);
END_STATE();
case 30:
ACCEPT_TOKEN(aux_sym_doctype_token1);
if (lookahead != 0 &&
lookahead != '>') ADVANCE(30);
END_STATE();
case 31:
ACCEPT_TOKEN(anon_sym_GT);
END_STATE();
case 32:
ACCEPT_TOKEN(sym__doctype);
END_STATE();
case 33:
ACCEPT_TOKEN(anon_sym_LT);
if (lookahead == '!') ADVANCE(28);
if (lookahead == '/') ADVANCE(35);
END_STATE();
case 34:
ACCEPT_TOKEN(anon_sym_SLASH_GT);
END_STATE();
case 35:
ACCEPT_TOKEN(anon_sym_LT_SLASH);
END_STATE();
case 36:
ACCEPT_TOKEN(anon_sym_EQ);
END_STATE();
case 37:
ACCEPT_TOKEN(sym_attribute_name);
if (lookahead == '-') ADVANCE(38);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(39);
END_STATE();
case 38:
ACCEPT_TOKEN(sym_attribute_name);
if (lookahead == '.' ||
lookahead == ':') ADVANCE(39);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(94);
END_STATE();
case 39:
ACCEPT_TOKEN(sym_attribute_name);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(39);
END_STATE();
case 40:
ACCEPT_TOKEN(sym_attribute_value);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(40);
END_STATE();
case 41:
ACCEPT_TOKEN(sym_entity);
END_STATE();
case 42:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
END_STATE();
case 43:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(42);
END_STATE();
case 44:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(43);
END_STATE();
case 45:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44);
END_STATE();
case 46:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45);
END_STATE();
case 47:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(42);
END_STATE();
case 48:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(47);
END_STATE();
case 49:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(48);
END_STATE();
case 50:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(49);
END_STATE();
case 51:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(50);
END_STATE();
case 52:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(42);
END_STATE();
case 53:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(52);
END_STATE();
case 54:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(53);
END_STATE();
case 55:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(54);
END_STATE();
case 56:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(55);
END_STATE();
case 57:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(56);
END_STATE();
case 58:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(57);
END_STATE();
case 59:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(58);
END_STATE();
case 60:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(59);
END_STATE();
case 61:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(60);
END_STATE();
case 62:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(61);
END_STATE();
case 63:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(62);
END_STATE();
case 64:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(63);
END_STATE();
case 65:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(64);
END_STATE();
case 66:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(65);
END_STATE();
case 67:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(66);
END_STATE();
case 68:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(67);
END_STATE();
case 69:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(68);
END_STATE();
case 70:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(69);
END_STATE();
case 71:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(70);
END_STATE();
case 72:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
END_STATE();
case 73:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 74:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(73);
END_STATE();
case 75:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(74);
END_STATE();
case 76:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(75);
END_STATE();
case 77:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(76);
END_STATE();
case 78:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(77);
END_STATE();
case 79:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(78);
END_STATE();
case 80:
ACCEPT_TOKEN(sym_entity);
if (lookahead == ';') ADVANCE(41);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(79);
END_STATE();
case 81:
ACCEPT_TOKEN(anon_sym_SQUOTE);
END_STATE();
case 82:
ACCEPT_TOKEN(aux_sym_quoted_attribute_value_token1);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(82);
if (lookahead != 0 &&
lookahead != '\'') ADVANCE(83);
END_STATE();
case 83:
ACCEPT_TOKEN(aux_sym_quoted_attribute_value_token1);
if (lookahead != 0 &&
lookahead != '\'') ADVANCE(83);
END_STATE();
case 84:
ACCEPT_TOKEN(anon_sym_DQUOTE);
END_STATE();
case 85:
ACCEPT_TOKEN(aux_sym_quoted_attribute_value_token2);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(85);
if (lookahead != 0 &&
lookahead != '"') ADVANCE(86);
END_STATE();
case 86:
ACCEPT_TOKEN(aux_sym_quoted_attribute_value_token2);
if (lookahead != 0 &&
lookahead != '"') ADVANCE(86);
END_STATE();
case 87:
ACCEPT_TOKEN(anon_sym_LBRACE_LBRACE);
END_STATE();
case 88:
ACCEPT_TOKEN(anon_sym_RBRACE_RBRACE);
END_STATE();
case 89:
ACCEPT_TOKEN(anon_sym_COLON);
END_STATE();
case 90:
ACCEPT_TOKEN(anon_sym_COLON2);
END_STATE();
case 91:
ACCEPT_TOKEN(anon_sym_DOT);
END_STATE();
case 92:
ACCEPT_TOKEN(anon_sym_AT);
END_STATE();
case 93:
ACCEPT_TOKEN(anon_sym_POUND);
END_STATE();
case 94:
ACCEPT_TOKEN(sym_directive_name);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
lookahead != ':' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(94);
END_STATE();
case 95:
ACCEPT_TOKEN(sym_directive_value);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
lookahead != ':' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(95);
END_STATE();
case 96:
ACCEPT_TOKEN(anon_sym_LBRACK);
END_STATE();
case 97:
ACCEPT_TOKEN(anon_sym_RBRACK);
END_STATE();
case 98:
ACCEPT_TOKEN(sym_dynamic_directive_inner_value);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead) &&
lookahead != ']') ADVANCE(98);
END_STATE();
case 99:
ACCEPT_TOKEN(anon_sym_DOT2);
END_STATE();
case 100:
ACCEPT_TOKEN(sym_directive_modifier);
if (lookahead != 0 &&
(lookahead < '\t' || '\r' < lookahead) &&
lookahead != ' ' &&
lookahead != '"' &&
lookahead != '\'' &&
lookahead != '.' &&
lookahead != '/' &&
(lookahead < '<' || '>' < lookahead)) ADVANCE(100);
END_STATE();
default:
return false;
}
}
static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[0] = {.lex_state = 0, .external_lex_state = 1},
[1] = {.lex_state = 0, .external_lex_state = 2},
[2] = {.lex_state = 0, .external_lex_state = 3},
[3] = {.lex_state = 0, .external_lex_state = 3},
[4] = {.lex_state = 0, .external_lex_state = 3},
[5] = {.lex_state = 0, .external_lex_state = 3},
[6] = {.lex_state = 0, .external_lex_state = 2},
[7] = {.lex_state = 0, .external_lex_state = 2},
[8] = {.lex_state = 0, .external_lex_state = 2},
[9] = {.lex_state = 0, .external_lex_state = 2},
[10] = {.lex_state = 0, .external_lex_state = 3},
[11] = {.lex_state = 0, .external_lex_state = 2},
[12] = {.lex_state = 0, .external_lex_state = 2},
[13] = {.lex_state = 5, .external_lex_state = 4},
[14] = {.lex_state = 5, .external_lex_state = 4},
[15] = {.lex_state = 4, .external_lex_state = 4},
[16] = {.lex_state = 5, .external_lex_state = 4},
[17] = {.lex_state = 3, .external_lex_state = 4},
[18] = {.lex_state = 5, .external_lex_state = 4},
[19] = {.lex_state = 5, .external_lex_state = 4},
[20] = {.lex_state = 5, .external_lex_state = 4},
[21] = {.lex_state = 5, .external_lex_state = 4},
[22] = {.lex_state = 5, .external_lex_state = 4},
[23] = {.lex_state = 5, .external_lex_state = 4},
[24] = {.lex_state = 3, .external_lex_state = 5},
[25] = {.lex_state = 5, .external_lex_state = 5},
[26] = {.lex_state = 5, .external_lex_state = 5},
[27] = {.lex_state = 4, .external_lex_state = 5},
[28] = {.lex_state = 4, .external_lex_state = 4},
[29] = {.lex_state = 5, .external_lex_state = 5},
[30] = {.lex_state = 5, .external_lex_state = 5},
[31] = {.lex_state = 5, .external_lex_state = 5},
[32] = {.lex_state = 4, .external_lex_state = 4},
[33] = {.lex_state = 4, .external_lex_state = 4},
[34] = {.lex_state = 4, .external_lex_state = 4},
[35] = {.lex_state = 4, .external_lex_state = 5},
[36] = {.lex_state = 4, .external_lex_state = 4},
[37] = {.lex_state = 4, .external_lex_state = 4},
[38] = {.lex_state = 4, .external_lex_state = 4},
[39] = {.lex_state = 4, .external_lex_state = 5},
[40] = {.lex_state = 4, .external_lex_state = 4},
[41] = {.lex_state = 4, .external_lex_state = 5},
[42] = {.lex_state = 4, .external_lex_state = 5},
[43] = {.lex_state = 5, .external_lex_state = 4},
[44] = {.lex_state = 4, .external_lex_state = 5},
[45] = {.lex_state = 5, .external_lex_state = 4},
[46] = {.lex_state = 5, .external_lex_state = 4},
[47] = {.lex_state = 4, .external_lex_state = 5},
[48] = {.lex_state = 4, .external_lex_state = 5},
[49] = {.lex_state = 4, .external_lex_state = 5},
[50] = {.lex_state = 5, .external_lex_state = 4},
[51] = {.lex_state = 5, .external_lex_state = 4},
[52] = {.lex_state = 5, .external_lex_state = 5},
[53] = {.lex_state = 5, .external_lex_state = 4},
[54] = {.lex_state = 5, .external_lex_state = 4},
[55] = {.lex_state = 5, .external_lex_state = 5},
[56] = {.lex_state = 5, .external_lex_state = 4},
[57] = {.lex_state = 5, .external_lex_state = 4},
[58] = {.lex_state = 5, .external_lex_state = 4},
[59] = {.lex_state = 5, .external_lex_state = 5},
[60] = {.lex_state = 5, .external_lex_state = 5},
[61] = {.lex_state = 0, .external_lex_state = 2},
[62] = {.lex_state = 0, .external_lex_state = 2},
[63] = {.lex_state = 0, .external_lex_state = 3},
[64] = {.lex_state = 0, .external_lex_state = 2},
[65] = {.lex_state = 5, .external_lex_state = 5},
[66] = {.lex_state = 0, .external_lex_state = 3},
[67] = {.lex_state = 0, .external_lex_state = 3},
[68] = {.lex_state = 0, .external_lex_state = 2},
[69] = {.lex_state = 0, .external_lex_state = 3},
[70] = {.lex_state = 0, .external_lex_state = 2},
[71] = {.lex_state = 0, .external_lex_state = 2},
[72] = {.lex_state = 0, .external_lex_state = 2},
[73] = {.lex_state = 0, .external_lex_state = 2},
[74] = {.lex_state = 5, .external_lex_state = 5},
[75] = {.lex_state = 0, .external_lex_state = 3},
[76] = {.lex_state = 0, .external_lex_state = 2},
[77] = {.lex_state = 0, .external_lex_state = 2},
[78] = {.lex_state = 0, .external_lex_state = 3},
[79] = {.lex_state = 0, .external_lex_state = 2},
[80] = {.lex_state = 0, .external_lex_state = 3},
[81] = {.lex_state = 5, .external_lex_state = 5},
[82] = {.lex_state = 0, .external_lex_state = 2},
[83] = {.lex_state = 0, .external_lex_state = 2},
[84] = {.lex_state = 0, .external_lex_state = 2},
[85] = {.lex_state = 0, .external_lex_state = 3},
[86] = {.lex_state = 5, .external_lex_state = 5},
[87] = {.lex_state = 0, .external_lex_state = 2},
[88] = {.lex_state = 0, .external_lex_state = 3},
[89] = {.lex_state = 0, .external_lex_state = 3},
[90] = {.lex_state = 0, .external_lex_state = 3},
[91] = {.lex_state = 0, .external_lex_state = 3},
[92] = {.lex_state = 0, .external_lex_state = 3},
[93] = {.lex_state = 0, .external_lex_state = 3},
[94] = {.lex_state = 0, .external_lex_state = 3},
[95] = {.lex_state = 0, .external_lex_state = 2},
[96] = {.lex_state = 0, .external_lex_state = 3},
[97] = {.lex_state = 5, .external_lex_state = 5},
[98] = {.lex_state = 5, .external_lex_state = 5},
[99] = {.lex_state = 0, .external_lex_state = 2},
[100] = {.lex_state = 0, .external_lex_state = 3},
[101] = {.lex_state = 0, .external_lex_state = 3},
[102] = {.lex_state = 0, .external_lex_state = 3},
[103] = {.lex_state = 0, .external_lex_state = 2},
[104] = {.lex_state = 0, .external_lex_state = 2},
[105] = {.lex_state = 1, .external_lex_state = 5},
[106] = {.lex_state = 1, .external_lex_state = 5},
[107] = {.lex_state = 0, .external_lex_state = 6},
[108] = {.lex_state = 1, .external_lex_state = 5},
[109] = {.lex_state = 1, .external_lex_state = 5},
[110] = {.lex_state = 1, .external_lex_state = 5},
[111] = {.lex_state = 1, .external_lex_state = 5},
[112] = {.lex_state = 1, .external_lex_state = 5},
[113] = {.lex_state = 1, .external_lex_state = 5},
[114] = {.lex_state = 0, .external_lex_state = 6},
[115] = {.lex_state = 1, .external_lex_state = 5},
[116] = {.lex_state = 1, .external_lex_state = 5},
[117] = {.lex_state = 0, .external_lex_state = 7},
[118] = {.lex_state = 10, .external_lex_state = 5},
[119] = {.lex_state = 10, .external_lex_state = 5},
[120] = {.lex_state = 10, .external_lex_state = 5},
[121] = {.lex_state = 0, .external_lex_state = 7},
[122] = {.lex_state = 0, .external_lex_state = 7},
[123] = {.lex_state = 0, .external_lex_state = 7},
[124] = {.lex_state = 10, .external_lex_state = 5},
[125] = {.lex_state = 7, .external_lex_state = 5},
[126] = {.lex_state = 11, .external_lex_state = 5},
[127] = {.lex_state = 0, .external_lex_state = 8},
[128] = {.lex_state = 0, .external_lex_state = 5},
[129] = {.lex_state = 0, .external_lex_state = 8},
[130] = {.lex_state = 0, .external_lex_state = 5},
[131] = {.lex_state = 0, .external_lex_state = 8},
[132] = {.lex_state = 2, .external_lex_state = 5},
[133] = {.lex_state = 0, .external_lex_state = 9},
[134] = {.lex_state = 2, .external_lex_state = 5},
[135] = {.lex_state = 7, .external_lex_state = 5},
[136] = {.lex_state = 0, .external_lex_state = 7},
[137] = {.lex_state = 0, .external_lex_state = 7},
[138] = {.lex_state = 0, .external_lex_state = 7},
[139] = {.lex_state = 11, .external_lex_state = 5},
[140] = {.lex_state = 0, .external_lex_state = 8},
[141] = {.lex_state = 0, .external_lex_state = 7},
[142] = {.lex_state = 0, .external_lex_state = 5},
[143] = {.lex_state = 0, .external_lex_state = 5},
[144] = {.lex_state = 0, .external_lex_state = 9},
[145] = {.lex_state = 0, .external_lex_state = 5},
[146] = {.lex_state = 22, .external_lex_state = 5},
[147] = {.lex_state = 0, .external_lex_state = 10},
[148] = {.lex_state = 0, .external_lex_state = 5},
[149] = {.lex_state = 0, .external_lex_state = 5},
[150] = {.lex_state = 25, .external_lex_state = 5},
[151] = {.lex_state = 0, .external_lex_state = 5},
[152] = {.lex_state = 0, .external_lex_state = 5},
[153] = {.lex_state = 0, .external_lex_state = 5},
[154] = {.lex_state = 25, .external_lex_state = 5},
[155] = {.lex_state = 22, .external_lex_state = 5},
[156] = {.lex_state = 0, .external_lex_state = 5},
[157] = {.lex_state = 0, .external_lex_state = 5},
[158] = {.lex_state = 0, .external_lex_state = 5},
[159] = {.lex_state = 0, .external_lex_state = 5},
[160] = {.lex_state = 0, .external_lex_state = 5},
[161] = {.lex_state = 0, .external_lex_state = 5},
[162] = {.lex_state = 0, .external_lex_state = 5},
[163] = {.lex_state = 0, .external_lex_state = 11},
[164] = {.lex_state = 0, .external_lex_state = 5},
[165] = {.lex_state = 0, .external_lex_state = 10},
[166] = {.lex_state = 0, .external_lex_state = 5},
[167] = {.lex_state = 0, .external_lex_state = 5},
[168] = {.lex_state = 0, .external_lex_state = 11},
[169] = {.lex_state = 0, .external_lex_state = 5},
};
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[0] = {
[ts_builtin_sym_end] = ACTIONS(1),
[anon_sym_LT_BANG] = ACTIONS(1),
[anon_sym_GT] = ACTIONS(1),
[sym__doctype] = ACTIONS(1),
[anon_sym_LT] = ACTIONS(1),
[anon_sym_SLASH_GT] = ACTIONS(1),
[anon_sym_LT_SLASH] = ACTIONS(1),
[anon_sym_EQ] = ACTIONS(1),
[sym_entity] = ACTIONS(1),
[anon_sym_SQUOTE] = ACTIONS(1),
[anon_sym_DQUOTE] = ACTIONS(1),
[anon_sym_LBRACE_LBRACE] = ACTIONS(1),
[anon_sym_RBRACE_RBRACE] = ACTIONS(1),
[anon_sym_COLON] = ACTIONS(1),
[anon_sym_COLON2] = ACTIONS(1),
[anon_sym_DOT] = ACTIONS(1),
[anon_sym_AT] = ACTIONS(1),
[anon_sym_POUND] = ACTIONS(1),
[sym_directive_name] = ACTIONS(1),
[anon_sym_LBRACK] = ACTIONS(1),
[anon_sym_RBRACK] = ACTIONS(1),
[anon_sym_DOT2] = ACTIONS(1),
[sym__start_tag_name] = ACTIONS(1),
[sym__script_start_tag_name] = ACTIONS(1),
[sym__style_start_tag_name] = ACTIONS(1),
[sym__end_tag_name] = ACTIONS(1),
[sym_erroneous_end_tag_name] = ACTIONS(1),
[sym__implicit_end_tag] = ACTIONS(1),
[sym_raw_text] = ACTIONS(1),
[sym_comment] = ACTIONS(3),
[sym__template_start_tag_name] = ACTIONS(1),
[sym__text_fragment] = ACTIONS(1),
[sym__interpolation_text] = ACTIONS(1),
},
[1] = {
[sym_document] = STATE(148),
[sym_doctype] = STATE(6),
[sym__node] = STATE(6),
[sym_element] = STATE(6),
[sym_script_element] = STATE(6),
[sym_style_element] = STATE(6),
[sym_start_tag] = STATE(4),
[sym_script_start_tag] = STATE(121),
[sym_style_start_tag] = STATE(122),
[sym_self_closing_tag] = STATE(99),
[sym_erroneous_end_tag] = STATE(6),
[sym_text] = STATE(6),
[sym_template_element] = STATE(6),
[sym_template_start_tag] = STATE(12),
[sym_interpolation] = STATE(6),
[aux_sym_document_repeat1] = STATE(6),
[ts_builtin_sym_end] = ACTIONS(5),
[anon_sym_LT_BANG] = ACTIONS(7),
[anon_sym_LT] = ACTIONS(9),
[anon_sym_LT_SLASH] = ACTIONS(11),
[sym_entity] = ACTIONS(13),
[anon_sym_LBRACE_LBRACE] = ACTIONS(15),
[sym_comment] = ACTIONS(3),
[sym__text_fragment] = ACTIONS(17),
},
};
static const uint16_t ts_small_parse_table[] = {
[0] = 15,
ACTIONS(3), 1,
sym_comment,
ACTIONS(19), 1,
anon_sym_LT_BANG,
ACTIONS(21), 1,
anon_sym_LT,
ACTIONS(23), 1,
anon_sym_LT_SLASH,
ACTIONS(25), 1,
sym_entity,
ACTIONS(27), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(29), 1,
sym__implicit_end_tag,
ACTIONS(31), 1,
sym__text_fragment,
STATE(5), 1,
sym_start_tag,
STATE(11), 1,
sym_template_start_tag,
STATE(89), 1,
sym_self_closing_tag,
STATE(102), 1,
sym_end_tag,
STATE(117), 1,
sym_script_start_tag,
STATE(123), 1,
sym_style_start_tag,
STATE(10), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[55] = 15,
ACTIONS(3), 1,
sym_comment,
ACTIONS(19), 1,
anon_sym_LT_BANG,
ACTIONS(21), 1,
anon_sym_LT,
ACTIONS(25), 1,
sym_entity,
ACTIONS(27), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(31), 1,
sym__text_fragment,
ACTIONS(33), 1,
anon_sym_LT_SLASH,
ACTIONS(35), 1,
sym__implicit_end_tag,
STATE(5), 1,
sym_start_tag,
STATE(11), 1,
sym_template_start_tag,
STATE(73), 1,
sym_end_tag,
STATE(89), 1,
sym_self_closing_tag,
STATE(117), 1,
sym_script_start_tag,
STATE(123), 1,
sym_style_start_tag,
STATE(10), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[110] = 15,
ACTIONS(3), 1,
sym_comment,
ACTIONS(19), 1,
anon_sym_LT_BANG,
ACTIONS(21), 1,
anon_sym_LT,
ACTIONS(27), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(31), 1,
sym__text_fragment,
ACTIONS(33), 1,
anon_sym_LT_SLASH,
ACTIONS(37), 1,
sym_entity,
ACTIONS(39), 1,
sym__implicit_end_tag,
STATE(5), 1,
sym_start_tag,
STATE(11), 1,
sym_template_start_tag,
STATE(87), 1,
sym_end_tag,
STATE(89), 1,
sym_self_closing_tag,
STATE(117), 1,
sym_script_start_tag,
STATE(123), 1,
sym_style_start_tag,
STATE(3), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[165] = 15,
ACTIONS(3), 1,
sym_comment,
ACTIONS(19), 1,
anon_sym_LT_BANG,
ACTIONS(21), 1,
anon_sym_LT,
ACTIONS(23), 1,
anon_sym_LT_SLASH,
ACTIONS(27), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(31), 1,
sym__text_fragment,
ACTIONS(41), 1,
sym_entity,
ACTIONS(43), 1,
sym__implicit_end_tag,
STATE(5), 1,
sym_start_tag,
STATE(11), 1,
sym_template_start_tag,
STATE(89), 1,
sym_self_closing_tag,
STATE(91), 1,
sym_end_tag,
STATE(117), 1,
sym_script_start_tag,
STATE(123), 1,
sym_style_start_tag,
STATE(2), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[220] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(7), 1,
anon_sym_LT_BANG,
ACTIONS(9), 1,
anon_sym_LT,
ACTIONS(11), 1,
anon_sym_LT_SLASH,
ACTIONS(15), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(17), 1,
sym__text_fragment,
ACTIONS(45), 1,
ts_builtin_sym_end,
ACTIONS(47), 1,
sym_entity,
STATE(4), 1,
sym_start_tag,
STATE(12), 1,
sym_template_start_tag,
STATE(99), 1,
sym_self_closing_tag,
STATE(121), 1,
sym_script_start_tag,
STATE(122), 1,
sym_style_start_tag,
STATE(7), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[272] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(49), 1,
ts_builtin_sym_end,
ACTIONS(51), 1,
anon_sym_LT_BANG,
ACTIONS(54), 1,
anon_sym_LT,
ACTIONS(57), 1,
anon_sym_LT_SLASH,
ACTIONS(60), 1,
sym_entity,
ACTIONS(63), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(66), 1,
sym__text_fragment,
STATE(4), 1,
sym_start_tag,
STATE(12), 1,
sym_template_start_tag,
STATE(99), 1,
sym_self_closing_tag,
STATE(121), 1,
sym_script_start_tag,
STATE(122), 1,
sym_style_start_tag,
STATE(7), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[324] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(7), 1,
anon_sym_LT_BANG,
ACTIONS(9), 1,
anon_sym_LT,
ACTIONS(15), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(17), 1,
sym__text_fragment,
ACTIONS(47), 1,
sym_entity,
ACTIONS(69), 1,
anon_sym_LT_SLASH,
STATE(4), 1,
sym_start_tag,
STATE(12), 1,
sym_template_start_tag,
STATE(68), 1,
sym_end_tag,
STATE(99), 1,
sym_self_closing_tag,
STATE(121), 1,
sym_script_start_tag,
STATE(122), 1,
sym_style_start_tag,
STATE(7), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[376] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(7), 1,
anon_sym_LT_BANG,
ACTIONS(9), 1,
anon_sym_LT,
ACTIONS(15), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(17), 1,
sym__text_fragment,
ACTIONS(47), 1,
sym_entity,
ACTIONS(71), 1,
anon_sym_LT_SLASH,
STATE(4), 1,
sym_start_tag,
STATE(12), 1,
sym_template_start_tag,
STATE(85), 1,
sym_end_tag,
STATE(99), 1,
sym_self_closing_tag,
STATE(121), 1,
sym_script_start_tag,
STATE(122), 1,
sym_style_start_tag,
STATE(7), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[428] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(49), 1,
sym__implicit_end_tag,
ACTIONS(73), 1,
anon_sym_LT_BANG,
ACTIONS(76), 1,
anon_sym_LT,
ACTIONS(79), 1,
anon_sym_LT_SLASH,
ACTIONS(82), 1,
sym_entity,
ACTIONS(85), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(88), 1,
sym__text_fragment,
STATE(5), 1,
sym_start_tag,
STATE(11), 1,
sym_template_start_tag,
STATE(89), 1,
sym_self_closing_tag,
STATE(117), 1,
sym_script_start_tag,
STATE(123), 1,
sym_style_start_tag,
STATE(10), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[480] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(7), 1,
anon_sym_LT_BANG,
ACTIONS(9), 1,
anon_sym_LT,
ACTIONS(15), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(17), 1,
sym__text_fragment,
ACTIONS(71), 1,
anon_sym_LT_SLASH,
ACTIONS(91), 1,
sym_entity,
STATE(4), 1,
sym_start_tag,
STATE(12), 1,
sym_template_start_tag,
STATE(94), 1,
sym_end_tag,
STATE(99), 1,
sym_self_closing_tag,
STATE(121), 1,
sym_script_start_tag,
STATE(122), 1,
sym_style_start_tag,
STATE(9), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[532] = 14,
ACTIONS(3), 1,
sym_comment,
ACTIONS(7), 1,
anon_sym_LT_BANG,
ACTIONS(9), 1,
anon_sym_LT,
ACTIONS(15), 1,
anon_sym_LBRACE_LBRACE,
ACTIONS(17), 1,
sym__text_fragment,
ACTIONS(69), 1,
anon_sym_LT_SLASH,
ACTIONS(93), 1,
sym_entity,
STATE(4), 1,
sym_start_tag,
STATE(12), 1,
sym_template_start_tag,
STATE(82), 1,
sym_end_tag,
STATE(99), 1,
sym_self_closing_tag,
STATE(121), 1,
sym_script_start_tag,
STATE(122), 1,
sym_style_start_tag,
STATE(8), 10,
sym_doctype,
sym__node,
sym_element,
sym_script_element,
sym_style_element,
sym_erroneous_end_tag,
sym_text,
sym_template_element,
sym_interpolation,
aux_sym_document_repeat1,
[584] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(95), 1,
anon_sym_GT,
ACTIONS(97), 1,
anon_sym_SLASH_GT,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(16), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[615] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(105), 1,
anon_sym_GT,
ACTIONS(107), 1,
anon_sym_SLASH_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(21), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[646] = 10,
ACTIONS(3), 1,
sym_comment,
ACTIONS(111), 1,
anon_sym_EQ,
ACTIONS(113), 1,
sym_attribute_name,
ACTIONS(115), 1,
anon_sym_DOT,
ACTIONS(117), 1,
anon_sym_DOT2,
STATE(32), 1,
aux_sym_directive_modifiers_repeat1,
STATE(33), 1,
aux_sym_directive_attribute_repeat1,
STATE(43), 1,
sym_directive_modifiers,
ACTIONS(101), 3,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
ACTIONS(109), 3,
anon_sym_GT,
anon_sym_SLASH_GT,
sym_directive_name,
[681] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(107), 1,
anon_sym_SLASH_GT,
ACTIONS(119), 1,
anon_sym_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(21), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[712] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(111), 1,
anon_sym_EQ,
ACTIONS(117), 1,
anon_sym_DOT2,
ACTIONS(121), 1,
anon_sym_COLON,
STATE(32), 1,
aux_sym_directive_modifiers_repeat1,
STATE(43), 1,
sym_directive_modifiers,
ACTIONS(113), 3,
sym_attribute_name,
anon_sym_COLON2,
anon_sym_DOT,
ACTIONS(109), 5,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[743] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(97), 1,
anon_sym_SLASH_GT,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(123), 1,
anon_sym_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(14), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[774] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(105), 1,
anon_sym_GT,
ACTIONS(125), 1,
anon_sym_SLASH_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(21), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[805] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(119), 1,
anon_sym_GT,
ACTIONS(125), 1,
anon_sym_SLASH_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(21), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[836] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(129), 1,
sym_attribute_name,
ACTIONS(135), 1,
sym_directive_name,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(127), 2,
anon_sym_GT,
anon_sym_SLASH_GT,
ACTIONS(132), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(21), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[865] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(123), 1,
anon_sym_GT,
ACTIONS(138), 1,
anon_sym_SLASH_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(19), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[896] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(95), 1,
anon_sym_GT,
ACTIONS(99), 1,
sym_attribute_name,
ACTIONS(103), 1,
sym_directive_name,
ACTIONS(138), 1,
anon_sym_SLASH_GT,
STATE(15), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(101), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(20), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[927] = 8,
ACTIONS(3), 1,
sym_comment,
ACTIONS(140), 1,
anon_sym_EQ,
ACTIONS(142), 1,
anon_sym_COLON,
ACTIONS(144), 1,
anon_sym_DOT2,
STATE(42), 1,
aux_sym_directive_modifiers_repeat1,
STATE(52), 1,
sym_directive_modifiers,
ACTIONS(113), 3,
sym_attribute_name,
anon_sym_COLON2,
anon_sym_DOT,
ACTIONS(109), 4,
anon_sym_GT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[957] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(127), 1,
anon_sym_GT,
ACTIONS(146), 1,
sym_attribute_name,
ACTIONS(152), 1,
sym_directive_name,
STATE(27), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(149), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(25), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[985] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(155), 1,
anon_sym_GT,
ACTIONS(157), 1,
sym_attribute_name,
ACTIONS(161), 1,
sym_directive_name,
STATE(27), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(159), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(25), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[1013] = 10,
ACTIONS(3), 1,
sym_comment,
ACTIONS(113), 1,
sym_attribute_name,
ACTIONS(140), 1,
anon_sym_EQ,
ACTIONS(144), 1,
anon_sym_DOT2,
ACTIONS(163), 1,
anon_sym_DOT,
STATE(39), 1,
aux_sym_directive_attribute_repeat1,
STATE(42), 1,
aux_sym_directive_modifiers_repeat1,
STATE(52), 1,
sym_directive_modifiers,
ACTIONS(109), 2,
anon_sym_GT,
sym_directive_name,
ACTIONS(159), 3,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
[1047] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(117), 1,
anon_sym_DOT2,
ACTIONS(167), 1,
anon_sym_EQ,
STATE(32), 1,
aux_sym_directive_modifiers_repeat1,
STATE(45), 1,
sym_directive_modifiers,
ACTIONS(169), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(165), 6,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1075] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(157), 1,
sym_attribute_name,
ACTIONS(161), 1,
sym_directive_name,
ACTIONS(171), 1,
anon_sym_GT,
STATE(27), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(159), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(26), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[1103] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(157), 1,
sym_attribute_name,
ACTIONS(161), 1,
sym_directive_name,
ACTIONS(173), 1,
anon_sym_GT,
STATE(27), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(159), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(31), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[1131] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(157), 1,
sym_attribute_name,
ACTIONS(161), 1,
sym_directive_name,
ACTIONS(175), 1,
anon_sym_GT,
STATE(27), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(159), 4,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
STATE(25), 4,
sym_attribute,
sym__attribute,
sym_directive_attribute,
aux_sym_start_tag_repeat1,
[1159] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(117), 1,
anon_sym_DOT2,
STATE(34), 1,
aux_sym_directive_modifiers_repeat1,
ACTIONS(179), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(177), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1182] = 6,
ACTIONS(3), 1,
sym_comment,
ACTIONS(183), 1,
sym_attribute_name,
ACTIONS(188), 1,
anon_sym_DOT,
STATE(33), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(185), 3,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
ACTIONS(181), 5,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
sym_directive_name,
anon_sym_DOT2,
[1207] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(195), 1,
anon_sym_DOT2,
STATE(34), 1,
aux_sym_directive_modifiers_repeat1,
ACTIONS(193), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(191), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1230] = 7,
ACTIONS(3), 1,
sym_comment,
ACTIONS(144), 1,
anon_sym_DOT2,
ACTIONS(198), 1,
anon_sym_EQ,
STATE(42), 1,
aux_sym_directive_modifiers_repeat1,
STATE(55), 1,
sym_directive_modifiers,
ACTIONS(169), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(165), 5,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1257] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(183), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(181), 8,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1275] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(202), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(200), 8,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1293] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(206), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(204), 8,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1311] = 6,
ACTIONS(3), 1,
sym_comment,
ACTIONS(183), 1,
sym_attribute_name,
ACTIONS(211), 1,
anon_sym_DOT,
STATE(39), 1,
aux_sym_directive_attribute_repeat1,
ACTIONS(208), 3,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
ACTIONS(181), 4,
anon_sym_GT,
anon_sym_EQ,
sym_directive_name,
anon_sym_DOT2,
[1335] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(193), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(191), 8,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1353] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(214), 1,
anon_sym_DOT2,
STATE(41), 1,
aux_sym_directive_modifiers_repeat1,
ACTIONS(193), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(191), 6,
anon_sym_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1375] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(144), 1,
anon_sym_DOT2,
STATE(41), 1,
aux_sym_directive_modifiers_repeat1,
ACTIONS(179), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(177), 6,
anon_sym_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1397] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(219), 1,
anon_sym_EQ,
ACTIONS(221), 1,
sym_attribute_name,
ACTIONS(217), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1416] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(193), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(191), 7,
anon_sym_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1433] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(225), 1,
anon_sym_EQ,
ACTIONS(227), 1,
sym_attribute_name,
ACTIONS(223), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1452] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(231), 1,
anon_sym_EQ,
ACTIONS(233), 1,
sym_attribute_name,
ACTIONS(229), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1471] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(206), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(204), 7,
anon_sym_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1488] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(183), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(181), 7,
anon_sym_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1505] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(202), 2,
sym_attribute_name,
anon_sym_DOT,
ACTIONS(200), 7,
anon_sym_GT,
anon_sym_EQ,
anon_sym_COLON2,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
anon_sym_DOT2,
[1522] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(227), 1,
sym_attribute_name,
ACTIONS(223), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1538] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(169), 1,
sym_attribute_name,
ACTIONS(165), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1554] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(221), 1,
sym_attribute_name,
ACTIONS(235), 1,
anon_sym_EQ,
ACTIONS(217), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1572] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(239), 1,
sym_attribute_name,
ACTIONS(237), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1588] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(243), 1,
sym_attribute_name,
ACTIONS(241), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1604] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(227), 1,
sym_attribute_name,
ACTIONS(245), 1,
anon_sym_EQ,
ACTIONS(223), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1622] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(249), 1,
sym_attribute_name,
ACTIONS(247), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1638] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(253), 1,
sym_attribute_name,
ACTIONS(251), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1654] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(257), 1,
sym_attribute_name,
ACTIONS(255), 7,
anon_sym_GT,
anon_sym_SLASH_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1670] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(233), 1,
sym_attribute_name,
ACTIONS(259), 1,
anon_sym_EQ,
ACTIONS(229), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1688] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(227), 1,
sym_attribute_name,
ACTIONS(223), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1703] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(263), 1,
anon_sym_LT,
ACTIONS(261), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1718] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(267), 1,
anon_sym_LT,
ACTIONS(265), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1733] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(271), 1,
anon_sym_LT,
ACTIONS(269), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1748] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(275), 1,
anon_sym_LT,
ACTIONS(273), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1763] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(239), 1,
sym_attribute_name,
ACTIONS(237), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1778] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(279), 1,
anon_sym_LT,
ACTIONS(277), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1793] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(275), 1,
anon_sym_LT,
ACTIONS(273), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1808] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(283), 1,
anon_sym_LT,
ACTIONS(281), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1823] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(267), 1,
anon_sym_LT,
ACTIONS(265), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1838] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(279), 1,
anon_sym_LT,
ACTIONS(277), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1853] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(287), 1,
anon_sym_LT,
ACTIONS(285), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1868] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(291), 1,
anon_sym_LT,
ACTIONS(289), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1883] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(295), 1,
anon_sym_LT,
ACTIONS(293), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1898] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(169), 1,
sym_attribute_name,
ACTIONS(165), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[1913] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(287), 1,
anon_sym_LT,
ACTIONS(285), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1928] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(299), 1,
anon_sym_LT,
ACTIONS(297), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1943] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(303), 1,
anon_sym_LT,
ACTIONS(301), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1958] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(307), 1,
anon_sym_LT,
ACTIONS(305), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1973] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(311), 1,
anon_sym_LT,
ACTIONS(309), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[1988] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(315), 1,
anon_sym_LT,
ACTIONS(313), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2003] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(243), 1,
sym_attribute_name,
ACTIONS(241), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[2018] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(319), 1,
anon_sym_LT,
ACTIONS(317), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2033] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(307), 1,
anon_sym_LT,
ACTIONS(305), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2048] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(323), 1,
anon_sym_LT,
ACTIONS(321), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2063] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(283), 1,
anon_sym_LT,
ACTIONS(281), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2078] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(249), 1,
sym_attribute_name,
ACTIONS(247), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[2093] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(327), 1,
anon_sym_LT,
ACTIONS(325), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2108] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(291), 1,
anon_sym_LT,
ACTIONS(289), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2123] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(331), 1,
anon_sym_LT,
ACTIONS(329), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2138] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(335), 1,
anon_sym_LT,
ACTIONS(333), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2153] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(327), 1,
anon_sym_LT,
ACTIONS(325), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2168] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(323), 1,
anon_sym_LT,
ACTIONS(321), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2183] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(263), 1,
anon_sym_LT,
ACTIONS(261), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2198] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(319), 1,
anon_sym_LT,
ACTIONS(317), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2213] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(335), 1,
anon_sym_LT,
ACTIONS(333), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2228] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(311), 1,
anon_sym_LT,
ACTIONS(309), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2243] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(253), 1,
sym_attribute_name,
ACTIONS(251), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[2258] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(257), 1,
sym_attribute_name,
ACTIONS(255), 6,
anon_sym_GT,
anon_sym_COLON2,
anon_sym_DOT,
anon_sym_AT,
anon_sym_POUND,
sym_directive_name,
[2273] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(331), 1,
anon_sym_LT,
ACTIONS(329), 6,
sym__text_fragment,
ts_builtin_sym_end,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2288] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(303), 1,
anon_sym_LT,
ACTIONS(301), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2303] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(299), 1,
anon_sym_LT,
ACTIONS(297), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2318] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(295), 1,
anon_sym_LT,
ACTIONS(293), 6,
sym__implicit_end_tag,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2333] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(339), 1,
anon_sym_LT,
ACTIONS(337), 5,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2347] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(343), 1,
anon_sym_LT,
ACTIONS(341), 5,
sym__text_fragment,
anon_sym_LT_BANG,
anon_sym_LT_SLASH,
sym_entity,
anon_sym_LBRACE_LBRACE,
[2361] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(345), 1,
sym_attribute_value,
ACTIONS(347), 1,
anon_sym_SQUOTE,
ACTIONS(349), 1,
anon_sym_DQUOTE,
STATE(57), 1,
sym_quoted_attribute_value,
[2377] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(347), 1,
anon_sym_SQUOTE,
ACTIONS(349), 1,
anon_sym_DQUOTE,
ACTIONS(351), 1,
sym_attribute_value,
STATE(50), 1,
sym_quoted_attribute_value,
[2393] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(353), 1,
sym__start_tag_name,
ACTIONS(355), 1,
sym__script_start_tag_name,
ACTIONS(357), 1,
sym__style_start_tag_name,
ACTIONS(359), 1,
sym__template_start_tag_name,
[2409] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(361), 1,
sym_attribute_value,
ACTIONS(363), 1,
anon_sym_SQUOTE,
ACTIONS(365), 1,
anon_sym_DQUOTE,
STATE(98), 1,
sym_quoted_attribute_value,
[2425] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(363), 1,
anon_sym_SQUOTE,
ACTIONS(365), 1,
anon_sym_DQUOTE,
ACTIONS(367), 1,
sym_attribute_value,
STATE(97), 1,
sym_quoted_attribute_value,
[2441] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(363), 1,
anon_sym_SQUOTE,
ACTIONS(365), 1,
anon_sym_DQUOTE,
ACTIONS(369), 1,
sym_attribute_value,
STATE(60), 1,
sym_quoted_attribute_value,
[2457] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(347), 1,
anon_sym_SQUOTE,
ACTIONS(349), 1,
anon_sym_DQUOTE,
ACTIONS(371), 1,
sym_attribute_value,
STATE(58), 1,
sym_quoted_attribute_value,
[2473] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(363), 1,
anon_sym_SQUOTE,
ACTIONS(365), 1,
anon_sym_DQUOTE,
ACTIONS(373), 1,
sym_attribute_value,
STATE(74), 1,
sym_quoted_attribute_value,
[2489] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(363), 1,
anon_sym_SQUOTE,
ACTIONS(365), 1,
anon_sym_DQUOTE,
ACTIONS(375), 1,
sym_attribute_value,
STATE(65), 1,
sym_quoted_attribute_value,
[2505] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(355), 1,
sym__script_start_tag_name,
ACTIONS(357), 1,
sym__style_start_tag_name,
ACTIONS(377), 1,
sym__start_tag_name,
ACTIONS(379), 1,
sym__template_start_tag_name,
[2521] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(347), 1,
anon_sym_SQUOTE,
ACTIONS(349), 1,
anon_sym_DQUOTE,
ACTIONS(381), 1,
sym_attribute_value,
STATE(51), 1,
sym_quoted_attribute_value,
[2537] = 5,
ACTIONS(3), 1,
sym_comment,
ACTIONS(347), 1,
anon_sym_SQUOTE,
ACTIONS(349), 1,
anon_sym_DQUOTE,
ACTIONS(383), 1,
sym_attribute_value,
STATE(53), 1,
sym_quoted_attribute_value,
[2553] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(385), 1,
anon_sym_LT_SLASH,
ACTIONS(387), 1,
sym_raw_text,
STATE(92), 1,
sym_end_tag,
[2566] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(389), 1,
sym_directive_value,
ACTIONS(391), 1,
anon_sym_LBRACK,
STATE(35), 1,
sym_dynamic_directive_value,
[2579] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(393), 1,
sym_directive_value,
ACTIONS(395), 1,
anon_sym_LBRACK,
STATE(28), 1,
sym_dynamic_directive_value,
[2592] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(391), 1,
anon_sym_LBRACK,
ACTIONS(397), 1,
sym_directive_value,
STATE(48), 1,
sym_dynamic_directive_value,
[2605] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(399), 1,
anon_sym_LT_SLASH,
ACTIONS(401), 1,
sym_raw_text,
STATE(84), 1,
sym_end_tag,
[2618] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(399), 1,
anon_sym_LT_SLASH,
ACTIONS(403), 1,
sym_raw_text,
STATE(61), 1,
sym_end_tag,
[2631] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(385), 1,
anon_sym_LT_SLASH,
ACTIONS(405), 1,
sym_raw_text,
STATE(93), 1,
sym_end_tag,
[2644] = 4,
ACTIONS(3), 1,
sym_comment,
ACTIONS(395), 1,
anon_sym_LBRACK,
ACTIONS(407), 1,
sym_directive_value,
STATE(36), 1,
sym_dynamic_directive_value,
[2657] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(409), 1,
anon_sym_SQUOTE,
ACTIONS(411), 1,
aux_sym_quoted_attribute_value_token1,
[2667] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(413), 1,
anon_sym_RBRACK,
ACTIONS(415), 1,
sym_dynamic_directive_inner_value,
[2677] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(417), 1,
sym__end_tag_name,
ACTIONS(419), 1,
sym_erroneous_end_tag_name,
[2687] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(399), 1,
anon_sym_LT_SLASH,
STATE(62), 1,
sym_end_tag,
[2697] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(417), 1,
sym__end_tag_name,
ACTIONS(421), 1,
sym_erroneous_end_tag_name,
[2707] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(399), 1,
anon_sym_LT_SLASH,
STATE(83), 1,
sym_end_tag,
[2717] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(419), 1,
sym_erroneous_end_tag_name,
ACTIONS(423), 1,
sym__end_tag_name,
[2727] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(425), 1,
anon_sym_DQUOTE,
ACTIONS(427), 1,
aux_sym_quoted_attribute_value_token2,
[2737] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(429), 1,
anon_sym_RBRACE_RBRACE,
ACTIONS(431), 1,
sym__interpolation_text,
[2747] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(409), 1,
anon_sym_DQUOTE,
ACTIONS(433), 1,
aux_sym_quoted_attribute_value_token2,
[2757] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(425), 1,
anon_sym_SQUOTE,
ACTIONS(435), 1,
aux_sym_quoted_attribute_value_token1,
[2767] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(437), 2,
sym_raw_text,
anon_sym_LT_SLASH,
[2775] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(439), 2,
sym_raw_text,
anon_sym_LT_SLASH,
[2783] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(441), 2,
sym_raw_text,
anon_sym_LT_SLASH,
[2791] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(443), 1,
anon_sym_RBRACK,
ACTIONS(445), 1,
sym_dynamic_directive_inner_value,
[2801] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(421), 1,
sym_erroneous_end_tag_name,
ACTIONS(423), 1,
sym__end_tag_name,
[2811] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(447), 2,
sym_raw_text,
anon_sym_LT_SLASH,
[2819] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(385), 1,
anon_sym_LT_SLASH,
STATE(78), 1,
sym_end_tag,
[2829] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(385), 1,
anon_sym_LT_SLASH,
STATE(69), 1,
sym_end_tag,
[2839] = 3,
ACTIONS(3), 1,
sym_comment,
ACTIONS(449), 1,
anon_sym_RBRACE_RBRACE,
ACTIONS(451), 1,
sym__interpolation_text,
[2849] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(453), 1,
anon_sym_RBRACK,
[2856] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(455), 1,
aux_sym_doctype_token1,
[2863] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(421), 1,
sym_erroneous_end_tag_name,
[2870] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(457), 1,
ts_builtin_sym_end,
[2877] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(459), 1,
anon_sym_GT,
[2884] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(461), 1,
sym_directive_modifier,
[2891] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(463), 1,
anon_sym_RBRACE_RBRACE,
[2898] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(465), 1,
anon_sym_GT,
[2905] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(467), 1,
anon_sym_SQUOTE,
[2912] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(469), 1,
sym_directive_modifier,
[2919] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(471), 1,
aux_sym_doctype_token1,
[2926] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(473), 1,
anon_sym_GT,
[2933] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(475), 1,
anon_sym_GT,
[2940] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(477), 1,
anon_sym_SQUOTE,
[2947] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(479), 1,
anon_sym_GT,
[2954] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(477), 1,
anon_sym_DQUOTE,
[2961] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(481), 1,
anon_sym_RBRACK,
[2968] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(483), 1,
sym__doctype,
[2975] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(423), 1,
sym__end_tag_name,
[2982] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(467), 1,
anon_sym_DQUOTE,
[2989] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(419), 1,
sym_erroneous_end_tag_name,
[2996] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(485), 1,
anon_sym_RBRACE_RBRACE,
[3003] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(487), 1,
anon_sym_GT,
[3010] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(417), 1,
sym__end_tag_name,
[3017] = 2,
ACTIONS(3), 1,
sym_comment,
ACTIONS(489), 1,
sym__doctype,
};
static const uint32_t ts_small_parse_table_map[] = {
[SMALL_STATE(2)] = 0,
[SMALL_STATE(3)] = 55,
[SMALL_STATE(4)] = 110,
[SMALL_STATE(5)] = 165,
[SMALL_STATE(6)] = 220,
[SMALL_STATE(7)] = 272,
[SMALL_STATE(8)] = 324,
[SMALL_STATE(9)] = 376,
[SMALL_STATE(10)] = 428,
[SMALL_STATE(11)] = 480,
[SMALL_STATE(12)] = 532,
[SMALL_STATE(13)] = 584,
[SMALL_STATE(14)] = 615,
[SMALL_STATE(15)] = 646,
[SMALL_STATE(16)] = 681,
[SMALL_STATE(17)] = 712,
[SMALL_STATE(18)] = 743,
[SMALL_STATE(19)] = 774,
[SMALL_STATE(20)] = 805,
[SMALL_STATE(21)] = 836,
[SMALL_STATE(22)] = 865,
[SMALL_STATE(23)] = 896,
[SMALL_STATE(24)] = 927,
[SMALL_STATE(25)] = 957,
[SMALL_STATE(26)] = 985,
[SMALL_STATE(27)] = 1013,
[SMALL_STATE(28)] = 1047,
[SMALL_STATE(29)] = 1075,
[SMALL_STATE(30)] = 1103,
[SMALL_STATE(31)] = 1131,
[SMALL_STATE(32)] = 1159,
[SMALL_STATE(33)] = 1182,
[SMALL_STATE(34)] = 1207,
[SMALL_STATE(35)] = 1230,
[SMALL_STATE(36)] = 1257,
[SMALL_STATE(37)] = 1275,
[SMALL_STATE(38)] = 1293,
[SMALL_STATE(39)] = 1311,
[SMALL_STATE(40)] = 1335,
[SMALL_STATE(41)] = 1353,
[SMALL_STATE(42)] = 1375,
[SMALL_STATE(43)] = 1397,
[SMALL_STATE(44)] = 1416,
[SMALL_STATE(45)] = 1433,
[SMALL_STATE(46)] = 1452,
[SMALL_STATE(47)] = 1471,
[SMALL_STATE(48)] = 1488,
[SMALL_STATE(49)] = 1505,
[SMALL_STATE(50)] = 1522,
[SMALL_STATE(51)] = 1538,
[SMALL_STATE(52)] = 1554,
[SMALL_STATE(53)] = 1572,
[SMALL_STATE(54)] = 1588,
[SMALL_STATE(55)] = 1604,
[SMALL_STATE(56)] = 1622,
[SMALL_STATE(57)] = 1638,
[SMALL_STATE(58)] = 1654,
[SMALL_STATE(59)] = 1670,
[SMALL_STATE(60)] = 1688,
[SMALL_STATE(61)] = 1703,
[SMALL_STATE(62)] = 1718,
[SMALL_STATE(63)] = 1733,
[SMALL_STATE(64)] = 1748,
[SMALL_STATE(65)] = 1763,
[SMALL_STATE(66)] = 1778,
[SMALL_STATE(67)] = 1793,
[SMALL_STATE(68)] = 1808,
[SMALL_STATE(69)] = 1823,
[SMALL_STATE(70)] = 1838,
[SMALL_STATE(71)] = 1853,
[SMALL_STATE(72)] = 1868,
[SMALL_STATE(73)] = 1883,
[SMALL_STATE(74)] = 1898,
[SMALL_STATE(75)] = 1913,
[SMALL_STATE(76)] = 1928,
[SMALL_STATE(77)] = 1943,
[SMALL_STATE(78)] = 1958,
[SMALL_STATE(79)] = 1973,
[SMALL_STATE(80)] = 1988,
[SMALL_STATE(81)] = 2003,
[SMALL_STATE(82)] = 2018,
[SMALL_STATE(83)] = 2033,
[SMALL_STATE(84)] = 2048,
[SMALL_STATE(85)] = 2063,
[SMALL_STATE(86)] = 2078,
[SMALL_STATE(87)] = 2093,
[SMALL_STATE(88)] = 2108,
[SMALL_STATE(89)] = 2123,
[SMALL_STATE(90)] = 2138,
[SMALL_STATE(91)] = 2153,
[SMALL_STATE(92)] = 2168,
[SMALL_STATE(93)] = 2183,
[SMALL_STATE(94)] = 2198,
[SMALL_STATE(95)] = 2213,
[SMALL_STATE(96)] = 2228,
[SMALL_STATE(97)] = 2243,
[SMALL_STATE(98)] = 2258,
[SMALL_STATE(99)] = 2273,
[SMALL_STATE(100)] = 2288,
[SMALL_STATE(101)] = 2303,
[SMALL_STATE(102)] = 2318,
[SMALL_STATE(103)] = 2333,
[SMALL_STATE(104)] = 2347,
[SMALL_STATE(105)] = 2361,
[SMALL_STATE(106)] = 2377,
[SMALL_STATE(107)] = 2393,
[SMALL_STATE(108)] = 2409,
[SMALL_STATE(109)] = 2425,
[SMALL_STATE(110)] = 2441,
[SMALL_STATE(111)] = 2457,
[SMALL_STATE(112)] = 2473,
[SMALL_STATE(113)] = 2489,
[SMALL_STATE(114)] = 2505,
[SMALL_STATE(115)] = 2521,
[SMALL_STATE(116)] = 2537,
[SMALL_STATE(117)] = 2553,
[SMALL_STATE(118)] = 2566,
[SMALL_STATE(119)] = 2579,
[SMALL_STATE(120)] = 2592,
[SMALL_STATE(121)] = 2605,
[SMALL_STATE(122)] = 2618,
[SMALL_STATE(123)] = 2631,
[SMALL_STATE(124)] = 2644,
[SMALL_STATE(125)] = 2657,
[SMALL_STATE(126)] = 2667,
[SMALL_STATE(127)] = 2677,
[SMALL_STATE(128)] = 2687,
[SMALL_STATE(129)] = 2697,
[SMALL_STATE(130)] = 2707,
[SMALL_STATE(131)] = 2717,
[SMALL_STATE(132)] = 2727,
[SMALL_STATE(133)] = 2737,
[SMALL_STATE(134)] = 2747,
[SMALL_STATE(135)] = 2757,
[SMALL_STATE(136)] = 2767,
[SMALL_STATE(137)] = 2775,
[SMALL_STATE(138)] = 2783,
[SMALL_STATE(139)] = 2791,
[SMALL_STATE(140)] = 2801,
[SMALL_STATE(141)] = 2811,
[SMALL_STATE(142)] = 2819,
[SMALL_STATE(143)] = 2829,
[SMALL_STATE(144)] = 2839,
[SMALL_STATE(145)] = 2849,
[SMALL_STATE(146)] = 2856,
[SMALL_STATE(147)] = 2863,
[SMALL_STATE(148)] = 2870,
[SMALL_STATE(149)] = 2877,
[SMALL_STATE(150)] = 2884,
[SMALL_STATE(151)] = 2891,
[SMALL_STATE(152)] = 2898,
[SMALL_STATE(153)] = 2905,
[SMALL_STATE(154)] = 2912,
[SMALL_STATE(155)] = 2919,
[SMALL_STATE(156)] = 2926,
[SMALL_STATE(157)] = 2933,
[SMALL_STATE(158)] = 2940,
[SMALL_STATE(159)] = 2947,
[SMALL_STATE(160)] = 2954,
[SMALL_STATE(161)] = 2961,
[SMALL_STATE(162)] = 2968,
[SMALL_STATE(163)] = 2975,
[SMALL_STATE(164)] = 2982,
[SMALL_STATE(165)] = 2989,
[SMALL_STATE(166)] = 2996,
[SMALL_STATE(167)] = 3003,
[SMALL_STATE(168)] = 3010,
[SMALL_STATE(169)] = 3017,
};
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}}, SHIFT_EXTRA(),
[5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 0),
[7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162),
[9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(114),
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147),
[13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6),
[15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144),
[17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72),
[19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169),
[21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(107),
[23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127),
[25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
[27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133),
[29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102),
[31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88),
[33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131),
[35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73),
[37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
[39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87),
[41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2),
[43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91),
[45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 1),
[47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
[49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2),
[51] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(162),
[54] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(114),
[57] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(147),
[60] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(7),
[63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(144),
[66] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(72),
[69] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140),
[71] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129),
[73] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(169),
[76] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(107),
[79] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(165),
[82] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(10),
[85] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(133),
[88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2), SHIFT_REPEAT(88),
[91] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
[93] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
[95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80),
[97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79),
[99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(46),
[101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124),
[103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
[105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104),
[107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64),
[109] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_attribute, 1),
[111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115),
[113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_attribute, 1),
[115] = {.entry = {.count = 1, .reusable = false}}, SHIFT(124),
[117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150),
[119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63),
[121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119),
[123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103),
[125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67),
[127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_start_tag_repeat1, 2),
[129] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_start_tag_repeat1, 2), SHIFT_REPEAT(46),
[132] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_start_tag_repeat1, 2), SHIFT_REPEAT(124),
[135] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_start_tag_repeat1, 2), SHIFT_REPEAT(17),
[138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96),
[140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112),
[142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118),
[144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154),
[146] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_start_tag_repeat1, 2), SHIFT_REPEAT(59),
[149] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_start_tag_repeat1, 2), SHIFT_REPEAT(120),
[152] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_start_tag_repeat1, 2), SHIFT_REPEAT(24),
[155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136),
[157] = {.entry = {.count = 1, .reusable = false}}, SHIFT(59),
[159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120),
[161] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24),
[163] = {.entry = {.count = 1, .reusable = false}}, SHIFT(120),
[165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_attribute, 3),
[167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105),
[169] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_attribute, 3),
[171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137),
[173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141),
[175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138),
[177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_modifiers, 1),
[179] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_modifiers, 1),
[181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_directive_attribute_repeat1, 2),
[183] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_directive_attribute_repeat1, 2),
[185] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_directive_attribute_repeat1, 2), SHIFT_REPEAT(124),
[188] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_directive_attribute_repeat1, 2), SHIFT_REPEAT(124),
[191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_directive_modifiers_repeat1, 2),
[193] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_directive_modifiers_repeat1, 2),
[195] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_directive_modifiers_repeat1, 2), SHIFT_REPEAT(150),
[198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109),
[200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dynamic_directive_value, 2),
[202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dynamic_directive_value, 2),
[204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dynamic_directive_value, 3),
[206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dynamic_directive_value, 3),
[208] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_directive_attribute_repeat1, 2), SHIFT_REPEAT(120),
[211] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_directive_attribute_repeat1, 2), SHIFT_REPEAT(120),
[214] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_directive_modifiers_repeat1, 2), SHIFT_REPEAT(154),
[217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_attribute, 2),
[219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106),
[221] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_attribute, 2),
[223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_attribute, 4),
[225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111),
[227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_attribute, 4),
[229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1),
[231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116),
[233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 1),
[235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110),
[237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3),
[239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3),
[241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_attribute_value, 2),
[243] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_attribute_value, 2),
[245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108),
[247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_attribute_value, 3),
[249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_attribute_value, 3),
[251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_attribute, 5),
[253] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_attribute, 5),
[255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_directive_attribute, 6),
[257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_directive_attribute, 6),
[259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113),
[261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_style_element, 2),
[263] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_style_element, 2),
[265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_style_element, 3),
[267] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_style_element, 3),
[269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_start_tag, 4),
[271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_start_tag, 4),
[273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_self_closing_tag, 4),
[275] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_self_closing_tag, 4),
[277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_end_tag, 3),
[279] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_end_tag, 3),
[281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_element, 3),
[283] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_element, 3),
[285] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_doctype, 4),
[287] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_doctype, 4),
[289] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_text, 1),
[291] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_text, 1),
[293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_element, 3),
[295] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_element, 3),
[297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3),
[299] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3),
[301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_erroneous_end_tag, 3),
[303] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_erroneous_end_tag, 3),
[305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_script_element, 3),
[307] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_script_element, 3),
[309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_self_closing_tag, 3),
[311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_self_closing_tag, 3),
[313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_start_tag, 3),
[315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_start_tag, 3),
[317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_element, 2),
[319] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_element, 2),
[321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_script_element, 2),
[323] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_script_element, 2),
[325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_element, 2),
[327] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_element, 2),
[329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_element, 1),
[331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_element, 1),
[333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 2),
[335] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 2),
[337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_start_tag, 3),
[339] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_start_tag, 3),
[341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_start_tag, 4),
[343] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_start_tag, 4),
[345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57),
[347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135),
[349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132),
[351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50),
[353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
[355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30),
[357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29),
[359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
[361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98),
[363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125),
[365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134),
[367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97),
[369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60),
[371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58),
[373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74),
[375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65),
[377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
[379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
[381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51),
[383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53),
[385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168),
[387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142),
[389] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35),
[391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139),
[393] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28),
[395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126),
[397] = {.entry = {.count = 1, .reusable = false}}, SHIFT(48),
[399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163),
[401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130),
[403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128),
[405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143),
[407] = {.entry = {.count = 1, .reusable = false}}, SHIFT(36),
[409] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81),
[411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158),
[413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37),
[415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161),
[417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149),
[419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152),
[421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156),
[423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157),
[425] = {.entry = {.count = 1, .reusable = false}}, SHIFT(54),
[427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164),
[429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90),
[431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151),
[433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160),
[435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153),
[437] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_style_start_tag, 4),
[439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_style_start_tag, 3),
[441] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_script_start_tag, 4),
[443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49),
[445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145),
[447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_script_start_tag, 3),
[449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95),
[451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166),
[453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47),
[455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159),
[457] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
[459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66),
[461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40),
[463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101),
[465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100),
[467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56),
[469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44),
[471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167),
[473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77),
[475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70),
[477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86),
[479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75),
[481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38),
[483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155),
[485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76),
[487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71),
[489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146),
};
enum ts_external_scanner_symbol_identifiers {
ts_external_token__start_tag_name = 0,
ts_external_token__script_start_tag_name = 1,
ts_external_token__style_start_tag_name = 2,
ts_external_token__end_tag_name = 3,
ts_external_token_erroneous_end_tag_name = 4,
ts_external_token_SLASH_GT = 5,
ts_external_token__implicit_end_tag = 6,
ts_external_token_raw_text = 7,
ts_external_token_comment = 8,
ts_external_token__template_start_tag_name = 9,
ts_external_token__text_fragment = 10,
ts_external_token__interpolation_text = 11,
};
static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
[ts_external_token__start_tag_name] = sym__start_tag_name,
[ts_external_token__script_start_tag_name] = sym__script_start_tag_name,
[ts_external_token__style_start_tag_name] = sym__style_start_tag_name,
[ts_external_token__end_tag_name] = sym__end_tag_name,
[ts_external_token_erroneous_end_tag_name] = sym_erroneous_end_tag_name,
[ts_external_token_SLASH_GT] = anon_sym_SLASH_GT,
[ts_external_token__implicit_end_tag] = sym__implicit_end_tag,
[ts_external_token_raw_text] = sym_raw_text,
[ts_external_token_comment] = sym_comment,
[ts_external_token__template_start_tag_name] = sym__template_start_tag_name,
[ts_external_token__text_fragment] = sym__text_fragment,
[ts_external_token__interpolation_text] = sym__interpolation_text,
};
static const bool ts_external_scanner_states[12][EXTERNAL_TOKEN_COUNT] = {
[1] = {
[ts_external_token__start_tag_name] = true,
[ts_external_token__script_start_tag_name] = true,
[ts_external_token__style_start_tag_name] = true,
[ts_external_token__end_tag_name] = true,
[ts_external_token_erroneous_end_tag_name] = true,
[ts_external_token_SLASH_GT] = true,
[ts_external_token__implicit_end_tag] = true,
[ts_external_token_raw_text] = true,
[ts_external_token_comment] = true,
[ts_external_token__template_start_tag_name] = true,
[ts_external_token__text_fragment] = true,
[ts_external_token__interpolation_text] = true,
},
[2] = {
[ts_external_token_comment] = true,
[ts_external_token__text_fragment] = true,
},
[3] = {
[ts_external_token__implicit_end_tag] = true,
[ts_external_token_comment] = true,
[ts_external_token__text_fragment] = true,
},
[4] = {
[ts_external_token_SLASH_GT] = true,
[ts_external_token_comment] = true,
},
[5] = {
[ts_external_token_comment] = true,
},
[6] = {
[ts_external_token__start_tag_name] = true,
[ts_external_token__script_start_tag_name] = true,
[ts_external_token__style_start_tag_name] = true,
[ts_external_token_comment] = true,
[ts_external_token__template_start_tag_name] = true,
},
[7] = {
[ts_external_token_raw_text] = true,
[ts_external_token_comment] = true,
},
[8] = {
[ts_external_token__end_tag_name] = true,
[ts_external_token_erroneous_end_tag_name] = true,
[ts_external_token_comment] = true,
},
[9] = {
[ts_external_token_comment] = true,
[ts_external_token__interpolation_text] = true,
},
[10] = {
[ts_external_token_erroneous_end_tag_name] = true,
[ts_external_token_comment] = true,
},
[11] = {
[ts_external_token__end_tag_name] = true,
[ts_external_token_comment] = true,
},
};
#ifdef __cplusplus
extern "C" {
#endif
void *tree_sitter_vue_external_scanner_create(void);
void tree_sitter_vue_external_scanner_destroy(void *);
bool tree_sitter_vue_external_scanner_scan(void *, TSLexer *, const bool *);
unsigned tree_sitter_vue_external_scanner_serialize(void *, char *);
void tree_sitter_vue_external_scanner_deserialize(void *, const char *, unsigned);
#ifdef TREE_SITTER_HIDE_SYMBOLS
#define TS_PUBLIC
#elif defined(_WIN32)
#define TS_PUBLIC __declspec(dllexport)
#else
#define TS_PUBLIC __attribute__((visibility("default")))
#endif
TS_PUBLIC const TSLanguage *tree_sitter_vue() {
static const TSLanguage language = {
.version = LANGUAGE_VERSION,
.symbol_count = SYMBOL_COUNT,
.alias_count = ALIAS_COUNT,
.token_count = TOKEN_COUNT,
.external_token_count = EXTERNAL_TOKEN_COUNT,
.state_count = STATE_COUNT,
.large_state_count = LARGE_STATE_COUNT,
.production_id_count = PRODUCTION_ID_COUNT,
.field_count = FIELD_COUNT,
.max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH,
.parse_table = &ts_parse_table[0][0],
.small_parse_table = ts_small_parse_table,
.small_parse_table_map = ts_small_parse_table_map,
.parse_actions = ts_parse_actions,
.symbol_names = ts_symbol_names,
.symbol_metadata = ts_symbol_metadata,
.public_symbol_map = ts_symbol_map,
.alias_map = ts_non_terminal_alias_map,
.alias_sequences = &ts_alias_sequences[0][0],
.lex_modes = ts_lex_modes,
.lex_fn = ts_lex,
.external_scanner = {
&ts_external_scanner_states[0][0],
ts_external_scanner_symbol_map,
tree_sitter_vue_external_scanner_create,
tree_sitter_vue_external_scanner_destroy,
tree_sitter_vue_external_scanner_scan,
tree_sitter_vue_external_scanner_serialize,
tree_sitter_vue_external_scanner_deserialize,
},
.primary_state_ids = ts_primary_state_ids,
};
return &language;
}
#ifdef __cplusplus
}
#endif
0707010000001F000081A40000000000000000000000016602C55D0000386D000000000000000000000000000000000000003100000000tree-sitter-vue-0+20240326.22bdfa6/src/scanner.c#include "tag.h"
#include "tree_sitter/parser.h"
#include <wctype.h>
enum TokenType {
START_TAG_NAME,
SCRIPT_START_TAG_NAME,
STYLE_START_TAG_NAME,
END_TAG_NAME,
ERRONEOUS_END_TAG_NAME,
SELF_CLOSING_TAG_DELIMITER,
IMPLICIT_END_TAG,
RAW_TEXT,
COMMENT,
TEMPLATE_START_TAG_NAME,
TEXT_FRAGMENT,
INTERPOLATION_TEXT,
};
typedef struct {
Array(Tag) tags;
} Scanner;
#define MAX(a, b) ((a) > (b) ? (a) : (b))
static inline void advance(TSLexer *lexer) { lexer->advance(lexer, false); }
static inline void skip(TSLexer *lexer) { lexer->advance(lexer, true); }
// #define advance(lexer) \
// do { \
// printf("advance %c, line: %d\n", lexer->lookahead, __LINE__); \
// (lexer->advance)(lexer, false); \
// } while (0)
//
// #define skip(lexer) \
// do { \
// printf("skip %c, line: %d\n", lexer->lookahead, __LINE__); \
// (lexer->advance)(lexer, true); \
// } while (0)
static unsigned serialize(Scanner *scanner, char *buffer) {
uint16_t tag_count = scanner->tags.size > UINT16_MAX ? UINT16_MAX : scanner->tags.size;
uint16_t serialized_tag_count = 0;
unsigned size = sizeof(tag_count);
memcpy(&buffer[size], &tag_count, sizeof(tag_count));
size += sizeof(tag_count);
for (; serialized_tag_count < tag_count; serialized_tag_count++) {
Tag tag = scanner->tags.contents[serialized_tag_count];
if (tag.type == CUSTOM) {
unsigned name_length = tag.custom_tag_name.size;
if (name_length > UINT8_MAX) {
name_length = UINT8_MAX;
}
if (size + 2 + name_length >= TREE_SITTER_SERIALIZATION_BUFFER_SIZE) {
break;
}
buffer[size++] = (char)tag.type;
buffer[size++] = (char)name_length;
strncpy(&buffer[size], tag.custom_tag_name.contents, name_length);
size += name_length;
} else {
if (size + 1 >= TREE_SITTER_SERIALIZATION_BUFFER_SIZE) {
break;
}
buffer[size++] = (char)tag.type;
}
}
memcpy(&buffer[0], &serialized_tag_count, sizeof(serialized_tag_count));
return size;
}
static void deserialize(Scanner *scanner, const char *buffer, unsigned length) {
for (unsigned i = 0; i < scanner->tags.size; i++) {
tag_free(&scanner->tags.contents[i]);
}
array_clear(&scanner->tags);
if (length > 0) {
unsigned size = 0;
uint16_t tag_count = 0;
uint16_t serialized_tag_count = 0;
memcpy(&serialized_tag_count, &buffer[size], sizeof(serialized_tag_count));
size += sizeof(serialized_tag_count);
memcpy(&tag_count, &buffer[size], sizeof(tag_count));
size += sizeof(tag_count);
array_reserve(&scanner->tags, tag_count);
if (tag_count > 0) {
unsigned iter = 0;
for (iter = 0; iter < serialized_tag_count; iter++) {
Tag tag = tag_new();
tag.type = (TagType)buffer[size++];
if (tag.type == CUSTOM) {
uint16_t name_length = (uint8_t)buffer[size++];
array_reserve(&tag.custom_tag_name, name_length);
tag.custom_tag_name.size = name_length;
memcpy(tag.custom_tag_name.contents, &buffer[size], name_length);
size += name_length;
}
array_push(&scanner->tags, tag);
}
// add zero tags if we didn't read enough, this is because the
// buffer had no more room but we held more tags.
for (; iter < tag_count; iter++) {
array_push(&scanner->tags, tag_new());
}
}
}
}
static String scan_tag_name(TSLexer *lexer) {
String tag_name = array_new();
while (iswalnum(lexer->lookahead) || lexer->lookahead == '-' || lexer->lookahead == ':') {
array_push(&tag_name, towupper(lexer->lookahead));
advance(lexer);
}
return tag_name;
}
static bool scan_comment(TSLexer *lexer) {
if (lexer->lookahead != '-') {
return false;
}
advance(lexer);
if (lexer->lookahead != '-') {
return false;
}
advance(lexer);
unsigned dashes = 0;
while (lexer->lookahead) {
switch (lexer->lookahead) {
case '-':
++dashes;
break;
case '>':
if (dashes >= 2) {
lexer->result_symbol = COMMENT;
advance(lexer);
lexer->mark_end(lexer);
return true;
}
default:
dashes = 0;
}
advance(lexer);
}
return false;
}
static bool scan_raw_text(Scanner *scanner, TSLexer *lexer) {
if (scanner->tags.size == 0) {
return false;
}
lexer->mark_end(lexer);
const char *end_delimiter = array_back(&scanner->tags)->type == SCRIPT ? "</SCRIPT" : "</STYLE";
unsigned delimiter_index = 0;
while (lexer->lookahead) {
if (towupper(lexer->lookahead) == end_delimiter[delimiter_index]) {
delimiter_index++;
if (delimiter_index == strlen(end_delimiter)) {
break;
}
advance(lexer);
} else {
delimiter_index = 0;
advance(lexer);
lexer->mark_end(lexer);
}
}
lexer->result_symbol = RAW_TEXT;
return true;
}
static inline void pop_tag(Scanner *scanner) {
Tag popped_tag = array_pop(&scanner->tags);
tag_free(&popped_tag);
}
static bool scan_implicit_end_tag(Scanner *scanner, TSLexer *lexer) {
Tag *parent = scanner->tags.size == 0 ? NULL : array_back(&scanner->tags);
bool is_closing_tag = false;
if (lexer->lookahead == '/') {
is_closing_tag = true;
advance(lexer);
} else {
if (parent && tag_is_void(parent)) {
pop_tag(scanner);
lexer->result_symbol = IMPLICIT_END_TAG;
return true;
}
}
String tag_name = scan_tag_name(lexer);
if (tag_name.size == 0 && !lexer->eof(lexer)) {
array_delete(&tag_name);
return false;
}
Tag next_tag = tag_for_name(tag_name);
if (is_closing_tag) {
// The tag correctly closes the topmost element on the stack
if (scanner->tags.size > 0 && tag_eq(array_back(&scanner->tags), &next_tag)) {
tag_free(&next_tag);
return false;
}
// Otherwise, dig deeper and queue implicit end tags (to be nice in
// the case of malformed HTML)
for (unsigned i = scanner->tags.size; i > 0; i--) {
if (scanner->tags.contents[i - 1].type == next_tag.type) {
pop_tag(scanner);
lexer->result_symbol = IMPLICIT_END_TAG;
tag_free(&next_tag);
return true;
}
}
} else if (parent &&
(!tag_can_contain(parent, &next_tag) ||
((parent->type == HTML || parent->type == HEAD || parent->type == BODY) && lexer->eof(lexer)))) {
pop_tag(scanner);
lexer->result_symbol = IMPLICIT_END_TAG;
tag_free(&next_tag);
return true;
}
tag_free(&next_tag);
return false;
}
static bool scan_start_tag_name(Scanner *scanner, TSLexer *lexer) {
String tag_name = scan_tag_name(lexer);
if (tag_name.size == 0) {
array_delete(&tag_name);
return false;
}
Tag tag = tag_for_name(tag_name);
array_push(&scanner->tags, tag);
switch (tag.type) {
case TEMPLATE:
lexer->result_symbol = TEMPLATE_START_TAG_NAME;
break;
case SCRIPT:
lexer->result_symbol = SCRIPT_START_TAG_NAME;
break;
case STYLE:
lexer->result_symbol = STYLE_START_TAG_NAME;
break;
default:
lexer->result_symbol = START_TAG_NAME;
break;
}
return true;
}
static bool scan_end_tag_name(Scanner *scanner, TSLexer *lexer) {
String tag_name = scan_tag_name(lexer);
if (tag_name.size == 0) {
array_delete(&tag_name);
return false;
}
Tag tag = tag_for_name(tag_name);
if (scanner->tags.size > 0 && tag_eq(array_back(&scanner->tags), &tag)) {
pop_tag(scanner);
lexer->result_symbol = END_TAG_NAME;
} else {
lexer->result_symbol = ERRONEOUS_END_TAG_NAME;
}
tag_free(&tag);
return true;
}
static bool scan_self_closing_tag_delimiter(Scanner *scanner, TSLexer *lexer) {
advance(lexer);
if (lexer->lookahead == '>') {
advance(lexer);
if (scanner->tags.size > 0) {
tag_free(&array_pop(&scanner->tags));
lexer->result_symbol = SELF_CLOSING_TAG_DELIMITER;
}
return true;
}
return false;
}
static bool scan(Scanner *scanner, TSLexer *lexer, const bool *valid_symbols) {
bool is_error_recovery = valid_symbols[START_TAG_NAME] && valid_symbols[RAW_TEXT];
if (!is_error_recovery && lexer->lookahead != '<' &&
(valid_symbols[TEXT_FRAGMENT] || valid_symbols[INTERPOLATION_TEXT])) {
bool advanced_once = false;
if (!valid_symbols[COMMENT]) {
while (iswspace(lexer->lookahead)) {
skip(lexer);
}
}
while (!lexer->eof(lexer)) {
switch (lexer->lookahead) {
case '<':
lexer->mark_end(lexer);
advance(lexer);
if (iswalpha(lexer->lookahead) || lexer->lookahead == '!' || lexer->lookahead == '?' ||
lexer->lookahead == '/') {
goto loop_exit;
}
advanced_once = true;
break;
case '{':
lexer->mark_end(lexer);
advance(lexer);
if (lexer->lookahead == '{') {
goto loop_exit;
}
advanced_once = true;
break;
case '}':
if (valid_symbols[INTERPOLATION_TEXT]) {
lexer->mark_end(lexer);
advance(lexer);
if (lexer->lookahead == '}') {
lexer->result_symbol = INTERPOLATION_TEXT;
return advanced_once;
}
break;
}
advance(lexer);
advanced_once = true;
break;
case '\n':
if (valid_symbols[TEXT_FRAGMENT]) {
lexer->mark_end(lexer);
while (iswspace(lexer->lookahead)) {
if (advanced_once) {
advance(lexer);
} else {
skip(lexer);
}
}
if (lexer->lookahead == '<' || lexer->lookahead == '>') {
goto loop_exit;
}
} else {
advance(lexer);
}
break;
default:
advanced_once |= lexer->lookahead != '\n';
advance(lexer);
break;
}
}
if (lexer->eof(lexer)) {
return false;
}
loop_exit:
if (advanced_once) {
lexer->result_symbol = TEXT_FRAGMENT;
return true;
}
}
if (valid_symbols[RAW_TEXT] && !valid_symbols[START_TAG_NAME] && !valid_symbols[END_TAG_NAME]) {
return scan_raw_text(scanner, lexer);
}
while (iswspace(lexer->lookahead)) {
skip(lexer);
}
switch (lexer->lookahead) {
case '<':
lexer->mark_end(lexer);
advance(lexer);
if (lexer->lookahead == '!') {
advance(lexer);
return scan_comment(lexer);
}
if (valid_symbols[IMPLICIT_END_TAG]) {
return scan_implicit_end_tag(scanner, lexer);
}
break;
case '\0':
if (valid_symbols[IMPLICIT_END_TAG]) {
return scan_implicit_end_tag(scanner, lexer);
}
break;
case '/':
if (valid_symbols[SELF_CLOSING_TAG_DELIMITER]) {
return scan_self_closing_tag_delimiter(scanner, lexer);
}
break;
default:
if ((valid_symbols[START_TAG_NAME] || valid_symbols[END_TAG_NAME]) && !valid_symbols[RAW_TEXT]) {
return valid_symbols[START_TAG_NAME] ? scan_start_tag_name(scanner, lexer)
: scan_end_tag_name(scanner, lexer);
}
}
return false;
}
void *tree_sitter_vue_external_scanner_create() {
Scanner *scanner = (Scanner *)ts_calloc(1, sizeof(Scanner));
return scanner;
}
bool tree_sitter_vue_external_scanner_scan(void *payload, TSLexer *lexer, const bool *valid_symbols) {
Scanner *scanner = (Scanner *)payload;
return scan(scanner, lexer, valid_symbols);
}
unsigned tree_sitter_vue_external_scanner_serialize(void *payload, char *buffer) {
Scanner *scanner = (Scanner *)payload;
return serialize(scanner, buffer);
}
void tree_sitter_vue_external_scanner_deserialize(void *payload, const char *buffer, unsigned length) {
Scanner *scanner = (Scanner *)payload;
deserialize(scanner, buffer, length);
}
void tree_sitter_vue_external_scanner_destroy(void *payload) {
Scanner *scanner = (Scanner *)payload;
for (unsigned i = 0; i < scanner->tags.size; i++) {
tag_free(array_get(&scanner->tags, i));
}
array_delete(&scanner->tags);
ts_free(scanner);
}
07070100000020000081A40000000000000000000000016602C55D00002076000000000000000000000000000000000000002D00000000tree-sitter-vue-0+20240326.22bdfa6/src/tag.h#include "tree_sitter/array.h"
#include <string.h>
typedef enum {
AREA,
BASE,
BASEFONT,
BGSOUND,
BR,
COL,
COMMAND,
EMBED,
FRAME,
HR,
IMAGE,
IMG,
INPUT,
ISINDEX,
KEYGEN,
LINK,
MENUITEM,
META,
NEXTID,
PARAM,
SOURCE,
TRACK,
WBR,
END_OF_VOID_TAGS,
A,
ABBR,
ADDRESS,
ARTICLE,
ASIDE,
AUDIO,
B,
BDI,
BDO,
BLOCKQUOTE,
BODY,
BUTTON,
CANVAS,
CAPTION,
CITE,
CODE,
COLGROUP,
DATA,
DATALIST,
DD,
DEL,
DETAILS,
DFN,
DIALOG,
DIV,
DL,
DT,
EM,
FIELDSET,
FIGCAPTION,
FIGURE,
FOOTER,
FORM,
H1,
H2,
H3,
H4,
H5,
H6,
HEAD,
HEADER,
HGROUP,
HTML,
I,
IFRAME,
INS,
KBD,
LABEL,
LEGEND,
LI,
MAIN,
MAP,
MARK,
MATH,
MENU,
METER,
NAV,
NOSCRIPT,
OBJECT,
OL,
OPTGROUP,
OPTION,
OUTPUT,
P,
PICTURE,
PRE,
PROGRESS,
Q,
RB,
RP,
RT,
RTC,
RUBY,
S,
SAMP,
SCRIPT,
SECTION,
SELECT,
SLOT,
SMALL,
SPAN,
STRONG,
STYLE,
SUB,
SUMMARY,
SUP,
SVG,
TABLE,
TBODY,
TD,
TEMPLATE,
TEXTAREA,
TFOOT,
TH,
THEAD,
TIME,
TITLE,
TR,
U,
UL,
VAR,
VIDEO,
CUSTOM,
END_,
} TagType;
typedef Array(char) String;
typedef struct {
char tag_name[16];
TagType tag_type;
} TagMapEntry;
typedef struct {
TagType type;
String custom_tag_name;
} Tag;
static const TagMapEntry TAG_TYPES_BY_TAG_NAME[126] = {
{"AREA", AREA },
{"BASE", BASE },
{"BASEFONT", BASEFONT },
{"BGSOUND", BGSOUND },
{"BR", BR },
{"COL", COL },
{"COMMAND", COMMAND },
{"EMBED", EMBED },
{"FRAME", FRAME },
{"HR", HR },
{"IMAGE", IMAGE },
{"IMG", IMG },
{"INPUT", INPUT },
{"ISINDEX", ISINDEX },
{"KEYGEN", KEYGEN },
{"LINK", LINK },
{"MENUITEM", MENUITEM },
{"META", META },
{"NEXTID", NEXTID },
{"PARAM", PARAM },
{"SOURCE", SOURCE },
{"TRACK", TRACK },
{"WBR", WBR },
{"A", A },
{"ABBR", ABBR },
{"ADDRESS", ADDRESS },
{"ARTICLE", ARTICLE },
{"ASIDE", ASIDE },
{"AUDIO", AUDIO },
{"B", B },
{"BDI", BDI },
{"BDO", BDO },
{"BLOCKQUOTE", BLOCKQUOTE},
{"BODY", BODY },
{"BUTTON", BUTTON },
{"CANVAS", CANVAS },
{"CAPTION", CAPTION },
{"CITE", CITE },
{"CODE", CODE },
{"COLGROUP", COLGROUP },
{"DATA", DATA },
{"DATALIST", DATALIST },
{"DD", DD },
{"DEL", DEL },
{"DETAILS", DETAILS },
{"DFN", DFN },
{"DIALOG", DIALOG },
{"DIV", DIV },
{"DL", DL },
{"DT", DT },
{"EM", EM },
{"FIELDSET", FIELDSET },
{"FIGCAPTION", FIGCAPTION},
{"FIGURE", FIGURE },
{"FOOTER", FOOTER },
{"FORM", FORM },
{"H1", H1 },
{"H2", H2 },
{"H3", H3 },
{"H4", H4 },
{"H5", H5 },
{"H6", H6 },
{"HEAD", HEAD },
{"HEADER", HEADER },
{"HGROUP", HGROUP },
{"HTML", HTML },
{"I", I },
{"IFRAME", IFRAME },
{"INS", INS },
{"KBD", KBD },
{"LABEL", LABEL },
{"LEGEND", LEGEND },
{"LI", LI },
{"MAIN", MAIN },
{"MAP", MAP },
{"MARK", MARK },
{"MATH", MATH },
{"MENU", MENU },
{"METER", METER },
{"NAV", NAV },
{"NOSCRIPT", NOSCRIPT },
{"OBJECT", OBJECT },
{"OL", OL },
{"OPTGROUP", OPTGROUP },
{"OPTION", OPTION },
{"OUTPUT", OUTPUT },
{"P", P },
{"PICTURE", PICTURE },
{"PRE", PRE },
{"PROGRESS", PROGRESS },
{"Q", Q },
{"RB", RB },
{"RP", RP },
{"RT", RT },
{"RTC", RTC },
{"RUBY", RUBY },
{"S", S },
{"SAMP", SAMP },
{"SCRIPT", SCRIPT },
{"SECTION", SECTION },
{"SELECT", SELECT },
{"SLOT", SLOT },
{"SMALL", SMALL },
{"SPAN", SPAN },
{"STRONG", STRONG },
{"STYLE", STYLE },
{"SUB", SUB },
{"SUMMARY", SUMMARY },
{"SUP", SUP },
{"SVG", SVG },
{"TABLE", TABLE },
{"TBODY", TBODY },
{"TD", TD },
{"TEMPLATE", TEMPLATE },
{"TEXTAREA", TEXTAREA },
{"TFOOT", TFOOT },
{"TH", TH },
{"THEAD", THEAD },
{"TIME", TIME },
{"TITLE", TITLE },
{"TR", TR },
{"U", U },
{"UL", UL },
{"VAR", VAR },
{"VIDEO", VIDEO },
{"CUSTOM", CUSTOM },
};
static const TagType TAG_TYPES_NOT_ALLOWED_IN_PARAGRAPHS[] = {
ADDRESS, ARTICLE, ASIDE, BLOCKQUOTE, DETAILS, DIV, DL, FIELDSET, FIGCAPTION, FIGURE, FOOTER, FORM, H1,
H2, H3, H4, H5, H6, HEADER, HR, MAIN, NAV, OL, P, PRE, SECTION,
};
static TagType tag_type_for_name(const String *tag_name) {
for (int i = 0; i < 126; i++) {
const TagMapEntry *entry = &TAG_TYPES_BY_TAG_NAME[i];
if (strlen(entry->tag_name) == tag_name->size &&
memcmp(tag_name->contents, entry->tag_name, tag_name->size) == 0) {
return entry->tag_type;
}
}
return CUSTOM;
}
static inline Tag tag_new() {
Tag tag;
tag.type = END_;
tag.custom_tag_name = (String)array_new();
return tag;
}
static inline Tag tag_for_name(String name) {
Tag tag = tag_new();
tag.type = tag_type_for_name(&name);
if (tag.type == CUSTOM) {
tag.custom_tag_name = name;
} else {
array_delete(&name);
}
return tag;
}
static inline void tag_free(Tag *self) {
if (self->type == CUSTOM) {
array_delete(&self->custom_tag_name);
}
}
static inline bool tag_is_void(const Tag *self) { return self->type < END_OF_VOID_TAGS; }
static inline bool tag_eq(const Tag *self, const Tag *other) {
if (self->type != other->type) {
return false;
}
if (self->type == CUSTOM) {
if (self->custom_tag_name.size != other->custom_tag_name.size) {
return false;
}
if (memcmp(self->custom_tag_name.contents, other->custom_tag_name.contents, self->custom_tag_name.size) != 0) {
return false;
}
}
return true;
}
static bool tag_can_contain(Tag *self, const Tag *other) {
TagType child = other->type;
switch (self->type) {
case LI:
return child != LI;
case DT:
case DD:
return child != DT && child != DD;
case P:
for (int i = 0; i < 26; i++) {
if (child == TAG_TYPES_NOT_ALLOWED_IN_PARAGRAPHS[i]) {
return false;
}
}
return true;
case COLGROUP:
return child == COL;
case RB:
case RT:
case RP:
return child != RB && child != RT && child != RP;
case OPTGROUP:
return child != OPTGROUP;
case TR:
return child != TR;
case TD:
case TH:
return child != TD && child != TH && child != TR;
default:
return true;
}
}
07070100000021000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000003300000000tree-sitter-vue-0+20240326.22bdfa6/src/tree_sitter07070100000022000081A40000000000000000000000016602C55D000003BE000000000000000000000000000000000000003B00000000tree-sitter-vue-0+20240326.22bdfa6/src/tree_sitter/alloc.h#ifndef TREE_SITTER_ALLOC_H_
#define TREE_SITTER_ALLOC_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
// Allow clients to override allocation functions
#ifdef TREE_SITTER_REUSE_ALLOCATOR
extern void *(*ts_current_malloc)(size_t);
extern void *(*ts_current_calloc)(size_t, size_t);
extern void *(*ts_current_realloc)(void *, size_t);
extern void (*ts_current_free)(void *);
#ifndef ts_malloc
#define ts_malloc ts_current_malloc
#endif
#ifndef ts_calloc
#define ts_calloc ts_current_calloc
#endif
#ifndef ts_realloc
#define ts_realloc ts_current_realloc
#endif
#ifndef ts_free
#define ts_free ts_current_free
#endif
#else
#ifndef ts_malloc
#define ts_malloc malloc
#endif
#ifndef ts_calloc
#define ts_calloc calloc
#endif
#ifndef ts_realloc
#define ts_realloc realloc
#endif
#ifndef ts_free
#define ts_free free
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif // TREE_SITTER_ALLOC_H_
07070100000023000081A40000000000000000000000016602C55D000028B4000000000000000000000000000000000000003B00000000tree-sitter-vue-0+20240326.22bdfa6/src/tree_sitter/array.h#ifndef TREE_SITTER_ARRAY_H_
#define TREE_SITTER_ARRAY_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "./alloc.h"
#include <assert.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#ifdef _MSC_VER
#pragma warning(disable : 4101)
#elif defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
#endif
#define Array(T) \
struct { \
T *contents; \
uint32_t size; \
uint32_t capacity; \
}
/// Initialize an array.
#define array_init(self) \
((self)->size = 0, (self)->capacity = 0, (self)->contents = NULL)
/// Create an empty array.
#define array_new() \
{ NULL, 0, 0 }
/// Get a pointer to the element at a given `index` in the array.
#define array_get(self, _index) \
(assert((uint32_t)(_index) < (self)->size), &(self)->contents[_index])
/// Get a pointer to the first element in the array.
#define array_front(self) array_get(self, 0)
/// Get a pointer to the last element in the array.
#define array_back(self) array_get(self, (self)->size - 1)
/// Clear the array, setting its size to zero. Note that this does not free any
/// memory allocated for the array's contents.
#define array_clear(self) ((self)->size = 0)
/// Reserve `new_capacity` elements of space in the array. If `new_capacity` is
/// less than the array's current capacity, this function has no effect.
#define array_reserve(self, new_capacity) \
_array__reserve((Array *)(self), array_elem_size(self), new_capacity)
/// Free any memory allocated for this array. Note that this does not free any
/// memory allocated for the array's contents.
#define array_delete(self) _array__delete((Array *)(self))
/// Push a new `element` onto the end of the array.
#define array_push(self, element) \
(_array__grow((Array *)(self), 1, array_elem_size(self)), \
(self)->contents[(self)->size++] = (element))
/// Increase the array's size by `count` elements.
/// New elements are zero-initialized.
#define array_grow_by(self, count) \
do { \
if ((count) == 0) break; \
_array__grow((Array *)(self), count, array_elem_size(self)); \
memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \
(self)->size += (count); \
} while (0)
/// Append all elements from one array to the end of another.
#define array_push_all(self, other) \
array_extend((self), (other)->size, (other)->contents)
/// Append `count` elements to the end of the array, reading their values from the
/// `contents` pointer.
#define array_extend(self, count, contents) \
_array__splice( \
(Array *)(self), array_elem_size(self), (self)->size, \
0, count, contents \
)
/// Remove `old_count` elements from the array starting at the given `index`. At
/// the same index, insert `new_count` new elements, reading their values from the
/// `new_contents` pointer.
#define array_splice(self, _index, old_count, new_count, new_contents) \
_array__splice( \
(Array *)(self), array_elem_size(self), _index, \
old_count, new_count, new_contents \
)
/// Insert one `element` into the array at the given `index`.
#define array_insert(self, _index, element) \
_array__splice((Array *)(self), array_elem_size(self), _index, 0, 1, &(element))
/// Remove one element from the array at the given `index`.
#define array_erase(self, _index) \
_array__erase((Array *)(self), array_elem_size(self), _index)
/// Pop the last element off the array, returning the element by value.
#define array_pop(self) ((self)->contents[--(self)->size])
/// Assign the contents of one array to another, reallocating if necessary.
#define array_assign(self, other) \
_array__assign((Array *)(self), (const Array *)(other), array_elem_size(self))
/// Swap one array with another
#define array_swap(self, other) \
_array__swap((Array *)(self), (Array *)(other))
/// Get the size of the array contents
#define array_elem_size(self) (sizeof *(self)->contents)
/// Search a sorted array for a given `needle` value, using the given `compare`
/// callback to determine the order.
///
/// If an existing element is found to be equal to `needle`, then the `index`
/// out-parameter is set to the existing value's index, and the `exists`
/// out-parameter is set to true. Otherwise, `index` is set to an index where
/// `needle` should be inserted in order to preserve the sorting, and `exists`
/// is set to false.
#define array_search_sorted_with(self, compare, needle, _index, _exists) \
_array__search_sorted(self, 0, compare, , needle, _index, _exists)
/// Search a sorted array for a given `needle` value, using integer comparisons
/// of a given struct field (specified with a leading dot) to determine the order.
///
/// See also `array_search_sorted_with`.
#define array_search_sorted_by(self, field, needle, _index, _exists) \
_array__search_sorted(self, 0, _compare_int, field, needle, _index, _exists)
/// Insert a given `value` into a sorted array, using the given `compare`
/// callback to determine the order.
#define array_insert_sorted_with(self, compare, value) \
do { \
unsigned _index, _exists; \
array_search_sorted_with(self, compare, &(value), &_index, &_exists); \
if (!_exists) array_insert(self, _index, value); \
} while (0)
/// Insert a given `value` into a sorted array, using integer comparisons of
/// a given struct field (specified with a leading dot) to determine the order.
///
/// See also `array_search_sorted_by`.
#define array_insert_sorted_by(self, field, value) \
do { \
unsigned _index, _exists; \
array_search_sorted_by(self, field, (value) field, &_index, &_exists); \
if (!_exists) array_insert(self, _index, value); \
} while (0)
// Private
typedef Array(void) Array;
/// This is not what you're looking for, see `array_delete`.
static inline void _array__delete(Array *self) {
if (self->contents) {
ts_free(self->contents);
self->contents = NULL;
self->size = 0;
self->capacity = 0;
}
}
/// This is not what you're looking for, see `array_erase`.
static inline void _array__erase(Array *self, size_t element_size,
uint32_t index) {
assert(index < self->size);
char *contents = (char *)self->contents;
memmove(contents + index * element_size, contents + (index + 1) * element_size,
(self->size - index - 1) * element_size);
self->size--;
}
/// This is not what you're looking for, see `array_reserve`.
static inline void _array__reserve(Array *self, size_t element_size, uint32_t new_capacity) {
if (new_capacity > self->capacity) {
if (self->contents) {
self->contents = ts_realloc(self->contents, new_capacity * element_size);
} else {
self->contents = ts_malloc(new_capacity * element_size);
}
self->capacity = new_capacity;
}
}
/// This is not what you're looking for, see `array_assign`.
static inline void _array__assign(Array *self, const Array *other, size_t element_size) {
_array__reserve(self, element_size, other->size);
self->size = other->size;
memcpy(self->contents, other->contents, self->size * element_size);
}
/// This is not what you're looking for, see `array_swap`.
static inline void _array__swap(Array *self, Array *other) {
Array swap = *other;
*other = *self;
*self = swap;
}
/// This is not what you're looking for, see `array_push` or `array_grow_by`.
static inline void _array__grow(Array *self, uint32_t count, size_t element_size) {
uint32_t new_size = self->size + count;
if (new_size > self->capacity) {
uint32_t new_capacity = self->capacity * 2;
if (new_capacity < 8) new_capacity = 8;
if (new_capacity < new_size) new_capacity = new_size;
_array__reserve(self, element_size, new_capacity);
}
}
/// This is not what you're looking for, see `array_splice`.
static inline void _array__splice(Array *self, size_t element_size,
uint32_t index, uint32_t old_count,
uint32_t new_count, const void *elements) {
uint32_t new_size = self->size + new_count - old_count;
uint32_t old_end = index + old_count;
uint32_t new_end = index + new_count;
assert(old_end <= self->size);
_array__reserve(self, element_size, new_size);
char *contents = (char *)self->contents;
if (self->size > old_end) {
memmove(
contents + new_end * element_size,
contents + old_end * element_size,
(self->size - old_end) * element_size
);
}
if (new_count > 0) {
if (elements) {
memcpy(
(contents + index * element_size),
elements,
new_count * element_size
);
} else {
memset(
(contents + index * element_size),
0,
new_count * element_size
);
}
}
self->size += new_count - old_count;
}
/// A binary search routine, based on Rust's `std::slice::binary_search_by`.
/// This is not what you're looking for, see `array_search_sorted_with` or `array_search_sorted_by`.
#define _array__search_sorted(self, start, compare, suffix, needle, _index, _exists) \
do { \
*(_index) = start; \
*(_exists) = false; \
uint32_t size = (self)->size - *(_index); \
if (size == 0) break; \
int comparison; \
while (size > 1) { \
uint32_t half_size = size / 2; \
uint32_t mid_index = *(_index) + half_size; \
comparison = compare(&((self)->contents[mid_index] suffix), (needle)); \
if (comparison <= 0) *(_index) = mid_index; \
size -= half_size; \
} \
comparison = compare(&((self)->contents[*(_index)] suffix), (needle)); \
if (comparison == 0) *(_exists) = true; \
else if (comparison < 0) *(_index) += 1; \
} while (0)
/// Helper macro for the `_sorted_by` routines below. This takes the left (existing)
/// parameter by reference in order to work with the generic sorting function above.
#define _compare_int(a, b) ((int)*(a) - (int)(b))
#ifdef _MSC_VER
#pragma warning(default : 4101)
#elif defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic pop
#endif
#ifdef __cplusplus
}
#endif
#endif // TREE_SITTER_ARRAY_H_
07070100000024000081A40000000000000000000000016602C55D0000159E000000000000000000000000000000000000003C00000000tree-sitter-vue-0+20240326.22bdfa6/src/tree_sitter/parser.h#ifndef TREE_SITTER_PARSER_H_
#define TREE_SITTER_PARSER_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#define ts_builtin_sym_error ((TSSymbol)-1)
#define ts_builtin_sym_end 0
#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
#ifndef TREE_SITTER_API_H_
typedef uint16_t TSStateId;
typedef uint16_t TSSymbol;
typedef uint16_t TSFieldId;
typedef struct TSLanguage TSLanguage;
#endif
typedef struct {
TSFieldId field_id;
uint8_t child_index;
bool inherited;
} TSFieldMapEntry;
typedef struct {
uint16_t index;
uint16_t length;
} TSFieldMapSlice;
typedef struct {
bool visible;
bool named;
bool supertype;
} TSSymbolMetadata;
typedef struct TSLexer TSLexer;
struct TSLexer {
int32_t lookahead;
TSSymbol result_symbol;
void (*advance)(TSLexer *, bool);
void (*mark_end)(TSLexer *);
uint32_t (*get_column)(TSLexer *);
bool (*is_at_included_range_start)(const TSLexer *);
bool (*eof)(const TSLexer *);
};
typedef enum {
TSParseActionTypeShift,
TSParseActionTypeReduce,
TSParseActionTypeAccept,
TSParseActionTypeRecover,
} TSParseActionType;
typedef union {
struct {
uint8_t type;
TSStateId state;
bool extra;
bool repetition;
} shift;
struct {
uint8_t type;
uint8_t child_count;
TSSymbol symbol;
int16_t dynamic_precedence;
uint16_t production_id;
} reduce;
uint8_t type;
} TSParseAction;
typedef struct {
uint16_t lex_state;
uint16_t external_lex_state;
} TSLexMode;
typedef union {
TSParseAction action;
struct {
uint8_t count;
bool reusable;
} entry;
} TSParseActionEntry;
struct TSLanguage {
uint32_t version;
uint32_t symbol_count;
uint32_t alias_count;
uint32_t token_count;
uint32_t external_token_count;
uint32_t state_count;
uint32_t large_state_count;
uint32_t production_id_count;
uint32_t field_count;
uint16_t max_alias_sequence_length;
const uint16_t *parse_table;
const uint16_t *small_parse_table;
const uint32_t *small_parse_table_map;
const TSParseActionEntry *parse_actions;
const char * const *symbol_names;
const char * const *field_names;
const TSFieldMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries;
const TSSymbolMetadata *symbol_metadata;
const TSSymbol *public_symbol_map;
const uint16_t *alias_map;
const TSSymbol *alias_sequences;
const TSLexMode *lex_modes;
bool (*lex_fn)(TSLexer *, TSStateId);
bool (*keyword_lex_fn)(TSLexer *, TSStateId);
TSSymbol keyword_capture_token;
struct {
const bool *states;
const TSSymbol *symbol_map;
void *(*create)(void);
void (*destroy)(void *);
bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist);
unsigned (*serialize)(void *, char *);
void (*deserialize)(void *, const char *, unsigned);
} external_scanner;
const TSStateId *primary_state_ids;
};
/*
* Lexer Macros
*/
#ifdef _MSC_VER
#define UNUSED __pragma(warning(suppress : 4101))
#else
#define UNUSED __attribute__((unused))
#endif
#define START_LEXER() \
bool result = false; \
bool skip = false; \
UNUSED \
bool eof = false; \
int32_t lookahead; \
goto start; \
next_state: \
lexer->advance(lexer, skip); \
start: \
skip = false; \
lookahead = lexer->lookahead;
#define ADVANCE(state_value) \
{ \
state = state_value; \
goto next_state; \
}
#define SKIP(state_value) \
{ \
skip = true; \
state = state_value; \
goto next_state; \
}
#define ACCEPT_TOKEN(symbol_value) \
result = true; \
lexer->result_symbol = symbol_value; \
lexer->mark_end(lexer);
#define END_STATE() return result;
/*
* Parse Table Macros
*/
#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT)
#define STATE(id) id
#define ACTIONS(id) id
#define SHIFT(state_value) \
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
.state = (state_value) \
} \
}}
#define SHIFT_REPEAT(state_value) \
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
.state = (state_value), \
.repetition = true \
} \
}}
#define SHIFT_EXTRA() \
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
.extra = true \
} \
}}
#define REDUCE(symbol_val, child_count_val, ...) \
{{ \
.reduce = { \
.type = TSParseActionTypeReduce, \
.symbol = symbol_val, \
.child_count = child_count_val, \
__VA_ARGS__ \
}, \
}}
#define RECOVER() \
{{ \
.type = TSParseActionTypeRecover \
}}
#define ACCEPT_INPUT() \
{{ \
.type = TSParseActionTypeAccept \
}}
#ifdef __cplusplus
}
#endif
#endif // TREE_SITTER_PARSER_H_
07070100000025000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000002800000000tree-sitter-vue-0+20240326.22bdfa6/test07070100000026000041ED0000000000000000000000026602C55D00000000000000000000000000000000000000000000002F00000000tree-sitter-vue-0+20240326.22bdfa6/test/corpus07070100000027000081A40000000000000000000000016602C55D00002BF6000000000000000000000000000000000000003800000000tree-sitter-vue-0+20240326.22bdfa6/test/corpus/spec.txt================================================================================
Interpolations - Text (https://vuejs.org/v2/guide/syntax.html#Text)
================================================================================
<template>
<span>Message: {{ msg }}</span>
<span v-once>This will never change: {{ msg }}</span>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(element
(start_tag
(tag_name))
(text)
(interpolation
(raw_text))
(end_tag
(tag_name)))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)))
(text)
(interpolation
(raw_text))
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Interpolations - Raw HTML (https://vuejs.org/v2/guide/syntax.html#Raw-HTML)
================================================================================
<template>
<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(element
(start_tag
(tag_name))
(text)
(interpolation
(raw_text))
(end_tag
(tag_name)))
(element
(start_tag
(tag_name))
(text)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(quoted_attribute_value
(attribute_value))))
(end_tag
(tag_name)))
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Interpolations - Attributes (https://vuejs.org/v2/guide/syntax.html#Attributes)
================================================================================
<template>
<div v-bind:id="dynamicId"></div>
<button v-bind:disabled="isButtonDisabled">Button</button>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(end_tag
(tag_name)))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Interpolations - Using JavaScript Expressions (https://vuejs.org/v2/guide/syntax.html#Using-JavaScript-Expressions)
================================================================================
<template>
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>
<!-- this is a statement, not an expression: -->
{{ var a = 1 }}
<!-- flow control won't work either, use ternary expressions -->
{{ if (ok) { return message } }}
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(interpolation
(raw_text))
(interpolation
(raw_text))
(interpolation
(raw_text))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(end_tag
(tag_name)))
(comment)
(interpolation
(raw_text))
(comment)
(interpolation
(raw_text))
(end_tag
(tag_name))))
================================================================================
Directives - Directives (https://vuejs.org/v2/guide/syntax.html#Directives)
================================================================================
<template>
<p v-if="seen">Now you see me</p>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Directives - Arguments (https://vuejs.org/v2/guide/syntax.html#Arguments)
================================================================================
<template>
<a v-bind:href="url"> ... </a>
<a v-on:click="doSomething"> ... </a>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Directives - Dynamic Arguments (https://vuejs.org/v2/guide/syntax.html#Dynamic-Arguments)
================================================================================
<template>
<!--
Note that there are some constraints to the argument expression, as explained
in the "Dynamic Argument Expression Constraints" section below.
-->
<a v-bind:[attributeName]="url"> ... </a>
<a v-on:[eventName]="doSomething"> ... </a>
<!-- This will trigger a compiler warning. -->
<a v-bind:['foo' + bar]="value"> ... </a>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(dynamic_directive_value
(dynamic_directive_inner_value))
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(dynamic_directive_value
(dynamic_directive_inner_value))
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(dynamic_directive_value
(ERROR
(UNEXPECTED 'f')
(UNEXPECTED '+' )))
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Directives - Modifiers (https://vuejs.org/v2/guide/syntax.html#Modifiers)
================================================================================
<template>
<form v-on:submit.prevent="onSubmit"> ... </form>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(directive_modifiers
(directive_modifier))
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Shorthands - v-bind Shorthand (https://vuejs.org/v2/guide/syntax.html#v-bind-Shorthand)
================================================================================
<template>
<!-- full syntax -->
<a v-bind:href="url"> ... </a>
<!-- shorthand -->
<a :href="url"> ... </a>
<!-- shorthand with dynamic argument (2.6.0+) -->
<a :[key]="url"> ... </a>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(dynamic_directive_value
(dynamic_directive_inner_value))
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
================================================================================
Shorthands - v-on Shorthand (https://vuejs.org/v2/guide/syntax.html#v-on-Shorthand)
================================================================================
<template>
<!-- full syntax -->
<a v-on:click="doSomething"> ... </a>
<!-- shorthand -->
<a @click="doSomething"> ... </a>
<!-- shorthand with dynamic argument (2.6.0+) -->
<a @[event]="doSomething"> ... </a>
</template>
--------------------------------------------------------------------------------
(document
(template_element
(start_tag
(tag_name))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_name)
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(directive_value)
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(comment)
(element
(start_tag
(tag_name)
(directive_attribute
(dynamic_directive_value
(dynamic_directive_inner_value))
(quoted_attribute_value
(attribute_value))))
(text)
(end_tag
(tag_name)))
(end_tag
(tag_name))))
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!451 blocks