diff --git a/.editorconfig b/.editorconfig
index d3a8b5b..f363cc5 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -2,9 +2,6 @@ root = true
[*]
charset = utf-8
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
[*.{json,toml,yml,gyp}]
indent_style = space
@@ -14,11 +11,11 @@ indent_size = 2
indent_style = space
indent_size = 2
-[*.rs]
+[*.{c,cc,h}]
indent_style = space
indent_size = 4
-[*.{c,cc,h}]
+[*.rs]
indent_style = space
indent_size = 4
@@ -37,3 +34,6 @@ indent_size = 8
[Makefile]
indent_style = tab
indent_size = 8
+
+[parser.c]
+indent_size = 2
diff --git a/.gitattributes b/.gitattributes
index ffb52ab..4cb1058 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,4 +1,4 @@
-* text eol=lf
+* text=auto eol=lf
src/*.json linguist-generated
src/parser.c linguist-generated
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 28bf207..d699644 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -30,10 +30,18 @@ jobs:
matrix:
os: [ubuntu-latest, windows-latest, macos-14]
steps:
- - name: Set up repository
- uses: tree-sitter/parser-setup-action@v1.1
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install tree-sitter CLI
+ uses: tree-sitter/setup-action/cli@v1
+ - name: Run tests
+ uses: tree-sitter/parser-test-action@v2
with:
- node-version: ${{vars.NODE_VERSION}}
+ test-rust: ${{runner.os == 'Linux'}}
+ test-node: true
+ test-python: true
+ test-go: true
+ test-swift: ${{runner.os == 'macOS'}}
- name: Clone apisix corpus
uses: actions/checkout@v4
with:
@@ -73,11 +81,10 @@ jobs:
with:
path: examples/xmake
repository: xmake-io/xmake
- - name: Run tests
- uses: tree-sitter/parser-test-action@v1.2
+ - name: Parse examples
+ uses: tree-sitter/parse-action@v4
with:
- test-library: ${{runner.os == 'Linux'}}
- corpus-files: |-
+ files: |-
examples/apisix/**/*.lua
examples/kong/**/*.lua
examples/lua/**/*.lua
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index f929217..8f1fa02 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -15,3 +15,7 @@ jobs:
uses: tree-sitter/workflows/.github/workflows/package-crates.yml@main
secrets:
CARGO_REGISTRY_TOKEN: ${{secrets.CARGO_TOKEN}}
+ pypi:
+ uses: tree-sitter/workflows/.github/workflows/package-pypi.yml@main
+ secrets:
+ PYPI_API_TOKEN: ${{secrets.PYPI_TOKEN}}
diff --git a/.gitignore b/.gitignore
index 70bef74..2fd9dac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,17 @@
# Rust artifacts
-Cargo.lock
target/
# Node artifacts
build/
+prebuilds/
node_modules/
*.tgz
# Swift artifacts
.build/
+Package.resolved
# Go artifacts
-go.sum
_obj/
# Python artifacts
@@ -32,7 +32,6 @@ dist/
/examples/*/
# Grammar volatiles
-dsl.d.ts
*.wasm
*.obj
*.o
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..b4d69ab
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,89 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "cc"
+version = "1.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "regex"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "tree-sitter"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20f4cd3642c47a85052a887d86704f4eac272969f61b686bdd3f772122aabaff"
+dependencies = [
+ "cc",
+ "regex",
+ "regex-syntax",
+ "tree-sitter-language",
+]
+
+[[package]]
+name = "tree-sitter-language"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2545046bd1473dac6c626659cc2567c6c0ff302fc8b84a56c4243378276f7f57"
+
+[[package]]
+name = "tree-sitter-lua"
+version = "0.2.0"
+dependencies = [
+ "cc",
+ "tree-sitter",
+ "tree-sitter-language",
+]
diff --git a/Cargo.toml b/Cargo.toml
index 01d7b9a..f502436 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "tree-sitter-lua"
description = "Lua grammar for tree-sitter"
-version = "0.1.0"
+version = "0.2.0"
license = "MIT"
readme = "README.md"
keywords = ["incremental", "parsing", "tree-sitter", "lua"]
@@ -18,7 +18,10 @@ include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"]
path = "bindings/rust/lib.rs"
[dependencies]
-tree-sitter = ">=0.21.0"
+tree-sitter-language = "0.1.0"
[build-dependencies]
-cc = "^1.0.89"
+cc = "1.1.18"
+
+[dev-dependencies]
+tree-sitter = "0.23"
diff --git a/Makefile b/Makefile
index 639c926..00b7952 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,8 @@
-VERSION := 0.1.0
+ifeq ($(OS),Windows_NT)
+$(error Windows is not supported)
+endif
+
+VERSION := 0.2.0
LANGUAGE_NAME := tree-sitter-lua
@@ -17,44 +21,44 @@ endif
TS ?= tree-sitter
-# ABI versioning
-SONAME_MAJOR := $(word 1,$(subst ., ,$(VERSION)))
-SONAME_MINOR := $(word 2,$(subst ., ,$(VERSION)))
-
# install directory layout
PREFIX ?= /usr/local
INCLUDEDIR ?= $(PREFIX)/include
LIBDIR ?= $(PREFIX)/lib
PCLIBDIR ?= $(LIBDIR)/pkgconfig
-# object files
-OBJS := $(patsubst %.c,%.o,$(wildcard $(SRC_DIR)/*.c))
+# source/object files
+PARSER := $(SRC_DIR)/parser.c
+EXTRAS := $(filter-out $(PARSER),$(wildcard $(SRC_DIR)/*.c))
+OBJS := $(patsubst %.c,%.o,$(PARSER) $(EXTRAS))
# flags
-ARFLAGS := rcs
+ARFLAGS ?= rcs
override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC
+# ABI versioning
+SONAME_MAJOR := $(word 1,$(subst ., ,$(VERSION)))
+SONAME_MINOR := $(shell sed -n 's/#define LANGUAGE_VERSION //p' $(PARSER))
+
# OS-specific bits
-ifeq ($(OS),Windows_NT)
- $(error "Windows is not supported")
-else ifeq ($(shell uname),Darwin)
+ifeq ($(shell uname),Darwin)
SOEXT = dylib
- SOEXTVER_MAJOR = $(SONAME_MAJOR).dylib
- SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).dylib
+ SOEXTVER_MAJOR = $(SONAME_MAJOR).$(SOEXT)
+ SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).$(SOEXT)
LINKSHARED := $(LINKSHARED)-dynamiclib -Wl,
ifneq ($(ADDITIONAL_LIBS),)
LINKSHARED := $(LINKSHARED)$(ADDITIONAL_LIBS),
endif
- LINKSHARED := $(LINKSHARED)-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SONAME_MAJOR).dylib,-rpath,@executable_path/../Frameworks
+ LINKSHARED := $(LINKSHARED)-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SOEXTVER),-rpath,@executable_path/../Frameworks
else
SOEXT = so
- SOEXTVER_MAJOR = so.$(SONAME_MAJOR)
- SOEXTVER = so.$(SONAME_MAJOR).$(SONAME_MINOR)
+ SOEXTVER_MAJOR = $(SOEXT).$(SONAME_MAJOR)
+ SOEXTVER = $(SOEXT).$(SONAME_MAJOR).$(SONAME_MINOR)
LINKSHARED := $(LINKSHARED)-shared -Wl,
ifneq ($(ADDITIONAL_LIBS),)
LINKSHARED := $(LINKSHARED)$(ADDITIONAL_LIBS)
endif
- LINKSHARED := $(LINKSHARED)-soname,lib$(LANGUAGE_NAME).so.$(SONAME_MAJOR)
+ LINKSHARED := $(LINKSHARED)-soname,lib$(LANGUAGE_NAME).$(SOEXTVER)
endif
ifneq ($(filter $(shell uname),FreeBSD NetBSD DragonFly),)
PCLIBDIR := $(PREFIX)/libdata/pkgconfig
@@ -81,13 +85,14 @@ $(LANGUAGE_NAME).pc: bindings/c/$(LANGUAGE_NAME).pc.in
-e 's|=$(PREFIX)|=$${prefix}|' \
-e 's|@PREFIX@|$(PREFIX)|' $< > $@
-$(SRC_DIR)/parser.c: grammar.js
- $(TS) generate --no-bindings
+$(PARSER): $(SRC_DIR)/grammar.json
+ $(TS) generate --no-bindings $^
install: all
- install -Dm644 bindings/c/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h
- install -Dm644 $(LANGUAGE_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
- install -Dm755 lib$(LANGUAGE_NAME).a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a
+ install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)'
+ install -m644 bindings/c/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h
+ install -m644 $(LANGUAGE_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
+ install -m644 lib$(LANGUAGE_NAME).a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a
install -m755 lib$(LANGUAGE_NAME).$(SOEXT) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER)
ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR)
ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXT)
diff --git a/Package.swift b/Package.swift
index 7022307..f8f602e 100644
--- a/Package.swift
+++ b/Package.swift
@@ -3,47 +3,58 @@ import PackageDescription
let package = Package(
name: "TreeSitterLua",
- platforms: [.macOS(.v10_13), .iOS(.v11)],
products: [
.library(name: "TreeSitterLua", targets: ["TreeSitterLua"]),
],
- dependencies: [],
+ dependencies: [
+ .package(url: "https://github.com/ChimeHQ/SwiftTreeSitter", from: "0.8.0"),
+ ],
targets: [
- .target(name: "TreeSitterLua",
- path: ".",
- exclude: [
- "Cargo.toml",
- "Makefile",
- "binding.gyp",
- "bindings/c",
- "bindings/go",
- "bindings/node",
- "bindings/python",
- "bindings/rust",
- "prebuilds",
- "node_modules",
- "grammar.js",
- "package.json",
- "package-lock.json",
- "pyproject.toml",
- "setup.py",
- "test",
- "types",
- "examples",
- ".editorconfig",
- ".github",
- ".gitignore",
- ".gitattributes",
- ],
- sources: [
- "src/parser.c",
- "src/scanner.c",
- ],
- resources: [
- .copy("queries")
- ],
- publicHeadersPath: "bindings/swift",
- cSettings: [.headerSearchPath("src")])
+ .target(
+ name: "TreeSitterLua",
+ dependencies: [],
+ path: ".",
+ exclude: [
+ "Cargo.toml",
+ "Makefile",
+ "binding.gyp",
+ "bindings/c",
+ "bindings/go",
+ "bindings/node",
+ "bindings/python",
+ "bindings/rust",
+ "prebuilds",
+ "grammar.js",
+ "package.json",
+ "package-lock.json",
+ "pyproject.toml",
+ "setup.py",
+ "test",
+ "examples",
+ ".editorconfig",
+ ".github",
+ ".gitignore",
+ ".gitattributes",
+ ".gitmodules",
+ ],
+ sources: [
+ "src/parser.c",
+ "src/scanner.c",
+ ],
+ resources: [
+ .copy("queries")
+ ],
+ publicHeadersPath: "bindings/swift",
+ cSettings: [.headerSearchPath("src")]
+ ),
+ .testTarget(
+ name: "TreeSitterLuaTests",
+ dependencies: [
+ "SwiftTreeSitter",
+ "TreeSitterLua",
+ ],
+ path: "bindings/swift/TreeSitterLuaTests"
+ )
],
cLanguageStandard: .c11
)
diff --git a/binding.gyp b/binding.gyp
index b8142ff..5c83586 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -13,8 +13,17 @@
"src/parser.c",
"src/scanner.c",
],
- "cflags_c": [
- "-std=c11",
+ "conditions": [
+ ["OS!='win'", {
+ "cflags_c": [
+ "-std=c11",
+ ],
+ }, { # OS == "win"
+ "cflags_c": [
+ "/std:c11",
+ "/utf-8",
+ ],
+ }],
],
}
]
diff --git a/bindings/go/binding_test.go b/bindings/go/binding_test.go
index 52d4bd5..75089a7 100644
--- a/bindings/go/binding_test.go
+++ b/bindings/go/binding_test.go
@@ -3,8 +3,8 @@ package tree_sitter_lua_test
import (
"testing"
- tree_sitter "github.com/smacker/go-tree-sitter"
- "github.com/tree-sitter/tree-sitter-lua"
+ tree_sitter_lua "github.com/tree-sitter-grammars/tree-sitter-lua/bindings/go"
+ tree_sitter "github.com/tree-sitter/go-tree-sitter"
)
func TestCanLoadGrammar(t *testing.T) {
diff --git a/bindings/go/go.mod b/bindings/go/go.mod
deleted file mode 100644
index 497ac88..0000000
--- a/bindings/go/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module github.com/tree-sitter-grammars/tree-sitter-lua
-
-go 1.22
-
-require github.com/smacker/go-tree-sitter v0.0.0-20230720070738-0d0a9f78d8f8
diff --git a/bindings/node/binding.cc b/bindings/node/binding.cc
index 10b452d..896ea30 100644
--- a/bindings/node/binding.cc
+++ b/bindings/node/binding.cc
@@ -6,7 +6,7 @@ extern "C" TSLanguage *tree_sitter_lua();
// "tree-sitter", "language" hashed with BLAKE2
const napi_type_tag LANGUAGE_TYPE_TAG = {
- 0x8AF2E5212AD58ABF, 0xD5006CAD83ABBA16
+ 0x8AF2E5212AD58ABF, 0xD5006CAD83ABBA16
};
Napi::Object Init(Napi::Env env, Napi::Object exports) {
diff --git a/bindings/node/binding_test.js b/bindings/node/binding_test.js
new file mode 100644
index 0000000..afede30
--- /dev/null
+++ b/bindings/node/binding_test.js
@@ -0,0 +1,9 @@
+///
+
+const assert = require("node:assert");
+const { test } = require("node:test");
+
+test("can load grammar", () => {
+ const parser = new (require("tree-sitter"))();
+ assert.doesNotThrow(() => parser.setLanguage(require(".")));
+});
diff --git a/bindings/python/tests/test_binding.py b/bindings/python/tests/test_binding.py
new file mode 100644
index 0000000..fbe60cc
--- /dev/null
+++ b/bindings/python/tests/test_binding.py
@@ -0,0 +1,11 @@
+from unittest import TestCase
+
+import tree_sitter, tree_sitter_lua
+
+
+class TestLanguage(TestCase):
+ def test_can_load_grammar(self):
+ try:
+ tree_sitter.Language(tree_sitter_lua.language())
+ except Exception:
+ self.fail("Error loading Lua grammar")
diff --git a/bindings/python/tree_sitter_lua/__init__.py b/bindings/python/tree_sitter_lua/__init__.py
index 1ccaaef..3f96411 100644
--- a/bindings/python/tree_sitter_lua/__init__.py
+++ b/bindings/python/tree_sitter_lua/__init__.py
@@ -1,3 +1,40 @@
-"Lua grammar for tree-sitter"
+"""Lua grammar for tree-sitter"""
+
+from importlib.resources import files as _files
from ._binding import language
+
+
+def _get_query(name, file):
+ query = _files(f"{__package__}.queries") / file
+ globals()[name] = query.read_text()
+ return globals()[name]
+
+
+def __getattr__(name):
+ if name == "HIGHLIGHTS_QUERY":
+ return _get_query("HIGHLIGHTS_QUERY", "highlights.scm")
+ if name == "INJECTIONS_QUERY":
+ return _get_query("INJECTIONS_QUERY", "injections.scm")
+ if name == "LOCALS_QUERY":
+ return _get_query("LOCALS_QUERY", "locals.scm")
+ if name == "TAGS_QUERY":
+ return _get_query("TAGS_QUERY", "tags.scm")
+
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
+
+
+__all__ = [
+ "language",
+ "HIGHLIGHTS_QUERY",
+ "INJECTIONS_QUERY",
+ "LOCALS_QUERY",
+ "TAGS_QUERY",
+]
+
+
+def __dir__():
+ return sorted(__all__ + [
+ "__all__", "__builtins__", "__cached__", "__doc__", "__file__",
+ "__loader__", "__name__", "__package__", "__path__", "__spec__",
+ ])
diff --git a/bindings/python/tree_sitter_lua/__init__.pyi b/bindings/python/tree_sitter_lua/__init__.pyi
index 5416666..991b926 100644
--- a/bindings/python/tree_sitter_lua/__init__.pyi
+++ b/bindings/python/tree_sitter_lua/__init__.pyi
@@ -1 +1,8 @@
-def language() -> int: ...
+from typing import Final
+
+HIGHLIGHTS_QUERY: Final[str]
+INJECTIONS_QUERY: Final[str]
+LOCALS_QUERY: Final[str]
+TAGS_QUERY: Final[str]
+
+def language() -> object: ...
diff --git a/bindings/python/tree_sitter_lua/binding.c b/bindings/python/tree_sitter_lua/binding.c
index 4ac029d..ee742c6 100644
--- a/bindings/python/tree_sitter_lua/binding.c
+++ b/bindings/python/tree_sitter_lua/binding.c
@@ -4,8 +4,8 @@ typedef struct TSLanguage TSLanguage;
TSLanguage *tree_sitter_lua(void);
-static PyObject* _binding_language(PyObject *self, PyObject *args) {
- return PyLong_FromVoidPtr(tree_sitter_lua());
+static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(args)) {
+ return PyCapsule_New(tree_sitter_lua(), "tree_sitter.Language", NULL);
}
static PyMethodDef methods[] = {
diff --git a/bindings/rust/build.rs b/bindings/rust/build.rs
index bfe252b..7ac371e 100644
--- a/bindings/rust/build.rs
+++ b/bindings/rust/build.rs
@@ -2,11 +2,11 @@ fn 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")
- .flag_if_supported("-Wno-trigraphs");
+ c_config.std("c11").include(src_dir);
+
+ #[cfg(target_env = "msvc")]
+ c_config.flag("-utf-8");
+
let parser_path = src_dir.join("parser.c");
c_config.file(&parser_path);
println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap());
diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs
index 7a64e74..adbb219 100644
--- a/bindings/rust/lib.rs
+++ b/bindings/rust/lib.rs
@@ -4,11 +4,16 @@
//! tree-sitter [Parser][], and then use the parser to parse some code:
//!
//! ```
+//! use tree_sitter::Parser;
+//!
//! let code = r#"
//! return 42
//! "#;
-//! let mut parser = tree_sitter::Parser::new();
-//! parser.set_language(&tree_sitter_lua::language()).expect("Error loading lua grammar");
+//! let mut parser = Parser::new();
+//! let language = tree_sitter_lua::LANGUAGE;
+//! parser
+//! .set_language(&language.into())
+//! .expect("Error loading Lua parser");
//! let tree = parser.parse(code, None).unwrap();
//! assert!(!tree.root_node().has_error());
//! ```
@@ -18,27 +23,30 @@
//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
//! [tree-sitter]: https://tree-sitter.github.io/
-use tree_sitter::Language;
+use tree_sitter_language::LanguageFn;
extern "C" {
- fn tree_sitter_lua() -> Language;
+ fn tree_sitter_lua() -> *const ();
}
-/// 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_lua() }
-}
+/// The tree-sitter [`LanguageFn`] for this grammar.
+pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_lua) };
/// 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");
+/// The syntax highlighting query for this language.
pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
+
+/// The injection query for this language.
pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
+
+/// The local-variable syntax highlighting query for this language.
pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm");
+
+/// The symbol tagging query for this language.
pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm");
#[cfg(test)]
@@ -47,7 +55,7 @@ mod tests {
fn test_can_load_grammar() {
let mut parser = tree_sitter::Parser::new();
parser
- .set_language(&super::language())
- .expect("Error loading Lua language");
+ .set_language(&super::LANGUAGE.into())
+ .expect("Error loading Lua parser");
}
}
diff --git a/bindings/swift/TreeSitterLuaTests/TreeSitterLuaTests.swift b/bindings/swift/TreeSitterLuaTests/TreeSitterLuaTests.swift
new file mode 100644
index 0000000..d46f08d
--- /dev/null
+++ b/bindings/swift/TreeSitterLuaTests/TreeSitterLuaTests.swift
@@ -0,0 +1,12 @@
+import XCTest
+import SwiftTreeSitter
+import TreeSitterLua
+
+final class TreeSitterLuaTests: XCTestCase {
+ func testCanLoadGrammar() throws {
+ let parser = Parser()
+ let language = Language(language: tree_sitter_lua())
+ XCTAssertNoThrow(try parser.setLanguage(language),
+ "Error loading Lua grammar")
+ }
+}
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..234a677
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,7 @@
+module github.com/tree-sitter-grammars/tree-sitter-lua
+
+go 1.23
+
+require github.com/tree-sitter/go-tree-sitter v0.23.1
+
+require github.com/mattn/go-pointer v0.0.1 // indirect
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..d775361
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,36 @@
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0=
+github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tree-sitter/go-tree-sitter v0.23.1 h1:HCfaE19sKfG7q190xfM1loUZf6wEHa4TDqDEW46s9Lg=
+github.com/tree-sitter/go-tree-sitter v0.23.1/go.mod h1:EvIVhMvvPNvhu9x+ddSPxSnUEU5AnsSwi1LMqXIVE3A=
+github.com/tree-sitter/tree-sitter-c v0.21.5-0.20240818205408-927da1f210eb h1:A8425heRM8mylnv4H58FPUiH+aYivyitre0PzxrfmWs=
+github.com/tree-sitter/tree-sitter-c v0.21.5-0.20240818205408-927da1f210eb/go.mod h1:dOF6gtQiF9UwNh995T5OphYmtIypkjsp3ap7r9AN/iA=
+github.com/tree-sitter/tree-sitter-cpp v0.22.4-0.20240818224355-b1a4e2b25148 h1:AfFPZwtwGN01BW1jDdqBVqscTwetvMpydqYZz57RSlc=
+github.com/tree-sitter/tree-sitter-cpp v0.22.4-0.20240818224355-b1a4e2b25148/go.mod h1:Bh6U3viD57rFXRYIQ+kmiYtr+1Bx0AceypDLJJSyi9s=
+github.com/tree-sitter/tree-sitter-embedded-template v0.21.1-0.20240819044651-ffbf64942c33 h1:TwqSV3qLp3tKSqirGLRHnjFk9Tc2oy57LIl+FQ4GjI4=
+github.com/tree-sitter/tree-sitter-embedded-template v0.21.1-0.20240819044651-ffbf64942c33/go.mod h1:CvCKCt3v04Ufos1zZnNCelBDeCGRpPucaN8QczoUsN4=
+github.com/tree-sitter/tree-sitter-go v0.21.3-0.20240818010209-8c0f0e7a6012 h1:Xvxck3tE5FW7F7bTS97iNM2ADMyCMJztVqn5HYKdJGo=
+github.com/tree-sitter/tree-sitter-go v0.21.3-0.20240818010209-8c0f0e7a6012/go.mod h1:T40D0O1cPvUU/+AmiXVXy1cncYQT6wem4Z0g4SfAYvY=
+github.com/tree-sitter/tree-sitter-html v0.20.5-0.20240818004741-d11201a263d0 h1:c46K6uh5Dz00zJeU9BfjXdb8I+E4RkUdfnWJpQADXFo=
+github.com/tree-sitter/tree-sitter-html v0.20.5-0.20240818004741-d11201a263d0/go.mod h1:hcNt/kOJHcIcuMvouE7LJcYdeFUFbVpBJ6d4wmOA+tU=
+github.com/tree-sitter/tree-sitter-java v0.21.1-0.20240824015150-576d8097e495 h1:jrt4qbJVEFs4H93/ITxygHc6u0TGqAkkate7TQ4wFSA=
+github.com/tree-sitter/tree-sitter-java v0.21.1-0.20240824015150-576d8097e495/go.mod h1:oyaR7fLnRV0hT9z6qwE9GkaeTom/hTDwK3H2idcOJFc=
+github.com/tree-sitter/tree-sitter-javascript v0.21.5-0.20240818005344-15887341e5b5 h1:om4X9AVg3asL8gxNJDcz4e/Wp+VpQj1PY3uJXKr6EOg=
+github.com/tree-sitter/tree-sitter-javascript v0.21.5-0.20240818005344-15887341e5b5/go.mod h1:nNqgPoV/h9uYWk6kYEFdEAhNVOacpfpRW5SFmdaP4tU=
+github.com/tree-sitter/tree-sitter-json v0.21.1-0.20240818005659-bdd69eb8c8a5 h1:pfV3G3k7NCKqKk8THBmyuh2zA33lgYHS3GVrzRR8ry4=
+github.com/tree-sitter/tree-sitter-json v0.21.1-0.20240818005659-bdd69eb8c8a5/go.mod h1:GbMKRjLfk0H+PI7nLi1Sx5lHf5wCpLz9al8tQYSxpEk=
+github.com/tree-sitter/tree-sitter-php v0.22.9-0.20240819002312-a552625b56c1 h1:ZXZMDwE+IhUtGug4Brv6NjJWUU3rfkZBKpemf6RY8/g=
+github.com/tree-sitter/tree-sitter-php v0.22.9-0.20240819002312-a552625b56c1/go.mod h1:UKCLuYnJ312Mei+3cyTmGOHzn0YAnaPRECgJmHtzrqs=
+github.com/tree-sitter/tree-sitter-python v0.21.1-0.20240818005537-55a9b8a4fbfb h1:EXEM82lFM7JjJb6qiKZXkpIDaCcbV2obNn82ghwj9lw=
+github.com/tree-sitter/tree-sitter-python v0.21.1-0.20240818005537-55a9b8a4fbfb/go.mod h1:lXCF1nGG5Dr4J3BTS0ObN4xJCCICiSu/b+Xe/VqMV7g=
+github.com/tree-sitter/tree-sitter-ruby v0.21.1-0.20240818211811-7dbc1e2d0e2d h1:fcYCvoXdcP1uRQYXqJHRy6Hec+uKScQdKVtMwK9JeCI=
+github.com/tree-sitter/tree-sitter-ruby v0.21.1-0.20240818211811-7dbc1e2d0e2d/go.mod h1:T1nShQ4v5AJtozZ8YyAS4uzUtDAJj/iv4YfwXSbUHzg=
+github.com/tree-sitter/tree-sitter-rust v0.21.3-0.20240818005432-2b43eafe6447 h1:o9alBu1J/WjrcTKEthYtXmdkDc5OVXD+PqlvnEZ0Lzc=
+github.com/tree-sitter/tree-sitter-rust v0.21.3-0.20240818005432-2b43eafe6447/go.mod h1:1Oh95COkkTn6Ezp0vcMbvfhRP5gLeqqljR0BYnBzWvc=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/package-lock.json b/package-lock.json
index b2b846f..0ad7093 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,24 +1,24 @@
{
"name": "@tree-sitter-grammars/tree-sitter-lua",
- "version": "0.1.0",
+ "version": "0.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@tree-sitter-grammars/tree-sitter-lua",
- "version": "0.1.0",
+ "version": "0.2.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "node-addon-api": "^7.1.0",
- "node-gyp-build": "^4.8.0"
+ "node-addon-api": "^8.0.0",
+ "node-gyp-build": "^4.8.1"
},
"devDependencies": {
- "prebuildify": "^6.0.0",
- "tree-sitter-cli": "^0.21.0"
+ "prebuildify": "^6.0.1",
+ "tree-sitter-cli": "^0.23.0"
},
"peerDependencies": {
- "tree-sitter": "^0.21.0"
+ "tree-sitter": "^0.21.1"
},
"peerDependenciesMeta": {
"tree_sitter": {
@@ -96,15 +96,6 @@
"once": "^1.4.0"
}
},
- "node_modules/execspawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz",
- "integrity": "sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg==",
- "dev": true,
- "dependencies": {
- "util-extend": "^1.0.1"
- }
- },
"node_modules/fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -177,17 +168,17 @@
}
},
"node_modules/node-addon-api": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz",
- "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.1.0.tgz",
+ "integrity": "sha512-yBY+qqWSv3dWKGODD6OGE6GnTX7Q2r+4+DfpqxHSHh8x0B4EKP9+wVGLS6U/AM1vxSNNmUEuIV5EGhYwPpfOwQ==",
"engines": {
- "node": "^16 || ^18 || >= 20"
+ "node": "^18 || ^20 || >= 21"
}
},
"node_modules/node-gyp-build": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz",
- "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==",
+ "version": "4.8.2",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz",
+ "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@@ -225,12 +216,11 @@
}
},
"node_modules/prebuildify": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/prebuildify/-/prebuildify-6.0.0.tgz",
- "integrity": "sha512-DEvK4C3tcimIp7Pzqbs036n9i6CTKGp1XVEpMnr4wV3enKU5sBogPP+lP3KZw7993i42bXnsd5eIxAXQ566Cqw==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/prebuildify/-/prebuildify-6.0.1.tgz",
+ "integrity": "sha512-8Y2oOOateom/s8dNBsGIcnm6AxPmLH4/nanQzL5lQMU+sC0CMhzARZHizwr36pUPLdvBnOkCNQzxg4djuFSgIw==",
"dev": true,
"dependencies": {
- "execspawn": "^1.0.1",
"minimist": "^1.2.5",
"mkdirp-classic": "^0.5.3",
"node-abi": "^3.3.0",
@@ -339,24 +329,28 @@
}
},
"node_modules/tree-sitter": {
- "version": "0.21.0",
- "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.21.0.tgz",
- "integrity": "sha512-WDhpLxQdW7wsmmnBsf4NGqnEKs+Kxljk/CfbJJxgzZiinfA1gAWnhi/GirQjClw+woXhYsNq930BlskFulMMBQ==",
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.21.1.tgz",
+ "integrity": "sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ==",
"hasInstallScript": true,
"peer": true,
"dependencies": {
- "node-addon-api": "^7.1.0",
+ "node-addon-api": "^8.0.0",
"node-gyp-build": "^4.8.0"
}
},
"node_modules/tree-sitter-cli": {
- "version": "0.21.0",
- "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.21.0.tgz",
- "integrity": "sha512-wA7wT5724fNQW82XDH6zT6ZcYonjrAKLCHHuhLsPcAKULrhp3rNuMvlgBdB5FUBvmjHNhtTZF/qpHenMoRJPBw==",
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.23.0.tgz",
+ "integrity": "sha512-/DdQaPCCOrOYGp9FxGdhFUnHIrjhfbYatQXgNIcmaAOpPunpnDj2vsO/H+svsfQLaFsQ1C+BjgPhpbV28zka1w==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"tree-sitter": "cli.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
"node_modules/util-deprecate": {
@@ -365,12 +359,6 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "node_modules/util-extend": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
- "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
- "dev": true
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/package.json b/package.json
index ce23fe1..472984c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@tree-sitter-grammars/tree-sitter-lua",
- "version": "0.1.0",
+ "version": "0.2.0",
"description": "Lua grammar for tree-sitter",
"repository": "tree-sitter-grammars/tree-sitter-lua",
"author": "Munif Tanjim (https://muniftanjim.dev)",
@@ -19,18 +19,19 @@
"prebuilds/**",
"bindings/node/*",
"queries/**",
- "src/**"
+ "src/**",
+ "*.wasm"
],
"dependencies": {
- "node-addon-api": "^7.1.0",
- "node-gyp-build": "^4.8.0"
+ "node-addon-api": "^8.0.0",
+ "node-gyp-build": "^4.8.1"
},
"devDependencies": {
- "tree-sitter-cli": "^0.21.0",
- "prebuildify": "^6.0.0"
+ "tree-sitter-cli": "^0.23.0",
+ "prebuildify": "^6.0.1"
},
"peerDependencies": {
- "tree-sitter": "^0.21.0"
+ "tree-sitter": "^0.21.1"
},
"peerDependenciesMeta": {
"tree_sitter": {
@@ -38,10 +39,10 @@
}
},
"scripts": {
- "build": "tree-sitter generate --no-bindings",
- "test": "tree-sitter test",
"install": "node-gyp-build",
- "prebuildify": "prebuildify --napi --strip"
+ "prestart": "tree-sitter build --wasm",
+ "start": "tree-sitter playground",
+ "test": "node --test bindings/node/*_test.js"
},
"publishConfig": {
"access": "public"
diff --git a/pyproject.toml b/pyproject.toml
index 7b3f8cc..be78c58 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,19 +5,17 @@ build-backend = "setuptools.build_meta"
[project]
name = "tree-sitter-lua"
description = "Lua grammar for tree-sitter"
-version = "0.1.0"
+version = "0.2.0"
keywords = ["incremental", "parsing", "tree-sitter", "lua"]
classifiers = [
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Topic :: Software Development :: Compilers",
"Topic :: Text Processing :: Linguistic",
- "Typing :: Typed"
+ "Typing :: Typed",
]
-authors = [
- {name = "Munif Tanjim", email = "hello@muniftanjim.dev"}
-]
-requires-python = ">=3.8"
+authors = [{ name = "Munif Tanjim", email = "hello@muniftanjim.dev" }]
+requires-python = ">=3.9"
license.text = "MIT"
readme = "README.md"
@@ -25,8 +23,8 @@ readme = "README.md"
Homepage = "https://github.com/tree-sitter-grammars/tree-sitter-lua"
[project.optional-dependencies]
-core = ["tree-sitter~=0.21"]
+core = ["tree-sitter~=0.23"]
[tool.cibuildwheel]
-build = "cp38-*"
+build = "cp39-*"
build-frontend = "build"
diff --git a/setup.py b/setup.py
index c1d124c..481dcc8 100644
--- a/setup.py
+++ b/setup.py
@@ -18,7 +18,7 @@ class BdistWheel(bdist_wheel):
def get_tag(self):
python, abi, platform = super().get_tag()
if python.startswith("cp"):
- python, abi = "cp38", "abi3"
+ python, abi = "cp39", "abi3"
return python, abi, platform
@@ -38,12 +38,17 @@ def get_tag(self):
"src/parser.c",
"src/scanner.c",
],
- extra_compile_args=(
- ["-std=c11"] if system() != 'Windows' else []
- ),
+ extra_compile_args=[
+ "-std=c11",
+ "-fvisibility=hidden",
+ ] if system() != "Windows" else [
+ "/std:c11",
+ "/utf-8",
+ ],
define_macros=[
- ("Py_LIMITED_API", "0x03080000"),
- ("PY_SSIZE_T_CLEAN", None)
+ ("Py_LIMITED_API", "0x03090000"),
+ ("PY_SSIZE_T_CLEAN", None),
+ ("TREE_SITTER_HIDE_SYMBOLS", None),
],
include_dirs=["src"],
py_limited_api=True,
diff --git a/src/parser.c b/src/parser.c
index 7b7b06b..a9aefd9 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1560,19 +1560,10 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
[261] = 261,
};
-static inline bool sym_escape_sequence_character_set_1(int32_t c) {
- return (c < 'a'
- ? (c < '\''
- ? (c < '"'
- ? c == '\n'
- : c <= '"')
- : (c <= '\'' || c == '\\'))
- : (c <= 'b' || (c < 'r'
- ? (c < 'n'
- ? c == 'f'
- : c <= 'n')
- : (c <= 'r' || (c >= 't' && c <= 'v')))));
-}
+static TSCharacterRange sym_escape_sequence_character_set_1[] = {
+ {'\n', '\n'}, {'"', '"'}, {'\'', '\''}, {'0', '9'}, {'\\', '\\'}, {'a', 'b'}, {'f', 'f'}, {'n', 'n'},
+ {'r', 'r'}, {'t', 'v'}, {'x', 'x'}, {'z', 'z'},
+};
static bool ts_lex(TSLexer *lexer, TSStateId state) {
START_LEXER();
@@ -1580,39 +1571,40 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
switch (state) {
case 0:
if (eof) ADVANCE(20);
- if (lookahead == '"') ADVANCE(39);
- if (lookahead == '#') ADVANCE(76);
- if (lookahead == '%') ADVANCE(73);
- if (lookahead == '&') ADVANCE(65);
- if (lookahead == '\'') ADVANCE(40);
- if (lookahead == '(') ADVANCE(52);
- if (lookahead == ')') ADVANCE(53);
- if (lookahead == '*') ADVANCE(70);
- if (lookahead == '+') ADVANCE(68);
- if (lookahead == ',') ADVANCE(24);
- if (lookahead == '-') ADVANCE(69);
- if (lookahead == '.') ADVANCE(27);
- if (lookahead == '/') ADVANCE(71);
- if (lookahead == '0') ADVANCE(34);
- if (lookahead == ':') ADVANCE(28);
- if (lookahead == ';') ADVANCE(22);
- if (lookahead == '<') ADVANCE(29);
- if (lookahead == '=') ADVANCE(23);
- if (lookahead == '>') ADVANCE(31);
- if (lookahead == '[') ADVANCE(54);
- if (lookahead == '\\') ADVANCE(6);
- if (lookahead == ']') ADVANCE(55);
- if (lookahead == '^') ADVANCE(75);
- if (lookahead == '{') ADVANCE(56);
- if (lookahead == '|') ADVANCE(62);
- if (lookahead == '}') ADVANCE(57);
- if (lookahead == '~') ADVANCE(64);
+ ADVANCE_MAP(
+ '"', 39,
+ '#', 76,
+ '%', 73,
+ '&', 65,
+ '\'', 40,
+ '(', 52,
+ ')', 53,
+ '*', 70,
+ '+', 68,
+ ',', 24,
+ '-', 69,
+ '.', 27,
+ '/', 71,
+ '0', 33,
+ ':', 28,
+ ';', 22,
+ '<', 29,
+ '=', 23,
+ '>', 31,
+ '[', 54,
+ '\\', 6,
+ ']', 55,
+ '^', 75,
+ '{', 56,
+ '|', 62,
+ '}', 57,
+ '~', 64,
+ );
if (('\t' <= lookahead && lookahead <= '\r') ||
- lookahead == ' ') SKIP(17)
- if (('1' <= lookahead && lookahead <= '9')) ADVANCE(33);
- if (lookahead != 0 &&
- lookahead > 31 &&
- (lookahead < 127 || 159 < lookahead)) ADVANCE(77);
+ lookahead == ' ') SKIP(17);
+ if (('1' <= lookahead && lookahead <= '9')) ADVANCE(34);
+ if (lookahead > ' ' &&
+ (lookahead < '{' || 0x9f < lookahead)) ADVANCE(77);
END_STATE();
case 1:
if (lookahead == '"') ADVANCE(39);
@@ -1648,7 +1640,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
if (lookahead == 'x') ADVANCE(16);
if (lookahead == 'z') ADVANCE(48);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(50);
- if (sym_escape_sequence_character_set_1(lookahead)) ADVANCE(47);
+ if (set_contains(sym_escape_sequence_character_set_1, 12, lookahead)) ADVANCE(47);
END_STATE();
case 7:
if (lookahead == '{') ADVANCE(15);
@@ -1697,99 +1689,102 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 17:
if (eof) ADVANCE(20);
- if (lookahead == '"') ADVANCE(39);
- if (lookahead == '#') ADVANCE(76);
- if (lookahead == '%') ADVANCE(73);
- if (lookahead == '&') ADVANCE(65);
- if (lookahead == '\'') ADVANCE(40);
- if (lookahead == '(') ADVANCE(52);
- if (lookahead == ')') ADVANCE(53);
- if (lookahead == '*') ADVANCE(70);
- if (lookahead == '+') ADVANCE(68);
- if (lookahead == ',') ADVANCE(24);
- if (lookahead == '-') ADVANCE(69);
- if (lookahead == '.') ADVANCE(27);
- if (lookahead == '/') ADVANCE(71);
- if (lookahead == '0') ADVANCE(34);
- if (lookahead == ':') ADVANCE(28);
- if (lookahead == ';') ADVANCE(22);
- if (lookahead == '<') ADVANCE(29);
- if (lookahead == '=') ADVANCE(23);
- if (lookahead == '>') ADVANCE(31);
- if (lookahead == '[') ADVANCE(54);
- if (lookahead == ']') ADVANCE(55);
- if (lookahead == '^') ADVANCE(75);
- if (lookahead == '{') ADVANCE(56);
- if (lookahead == '|') ADVANCE(62);
- if (lookahead == '}') ADVANCE(57);
- if (lookahead == '~') ADVANCE(64);
+ ADVANCE_MAP(
+ '"', 39,
+ '#', 76,
+ '%', 73,
+ '&', 65,
+ '\'', 40,
+ '(', 52,
+ ')', 53,
+ '*', 70,
+ '+', 68,
+ ',', 24,
+ '-', 69,
+ '.', 27,
+ '/', 71,
+ '0', 33,
+ ':', 28,
+ ';', 22,
+ '<', 29,
+ '=', 23,
+ '>', 31,
+ '[', 54,
+ ']', 55,
+ '^', 75,
+ '{', 56,
+ '|', 62,
+ '}', 57,
+ '~', 64,
+ );
if (('\t' <= lookahead && lookahead <= '\r') ||
- lookahead == ' ') SKIP(17)
- if (('1' <= lookahead && lookahead <= '9')) ADVANCE(33);
- if (lookahead != 0 &&
- lookahead > 31 &&
- lookahead != '\\' &&
- (lookahead < 127 || 159 < lookahead)) ADVANCE(77);
+ lookahead == ' ') SKIP(17);
+ if (('1' <= lookahead && lookahead <= '9')) ADVANCE(34);
+ if (lookahead > ' ' &&
+ (lookahead < '[' || '^' < lookahead) &&
+ (lookahead < '{' || 0x9f < lookahead)) ADVANCE(77);
END_STATE();
case 18:
if (eof) ADVANCE(20);
- if (lookahead == '"') ADVANCE(39);
- if (lookahead == '#') ADVANCE(76);
- if (lookahead == '\'') ADVANCE(40);
- if (lookahead == '(') ADVANCE(52);
- if (lookahead == ')') ADVANCE(53);
- if (lookahead == '-') ADVANCE(69);
- if (lookahead == '.') ADVANCE(3);
- if (lookahead == '0') ADVANCE(34);
- if (lookahead == ';') ADVANCE(22);
- if (lookahead == '>') ADVANCE(30);
- if (lookahead == '[') ADVANCE(54);
- if (lookahead == '{') ADVANCE(56);
- if (lookahead == '}') ADVANCE(57);
- if (lookahead == '~') ADVANCE(63);
+ ADVANCE_MAP(
+ '"', 39,
+ '#', 76,
+ '\'', 40,
+ '(', 52,
+ ')', 53,
+ '-', 69,
+ '.', 3,
+ '0', 33,
+ ';', 22,
+ '>', 30,
+ '[', 54,
+ '{', 56,
+ '}', 57,
+ '~', 63,
+ );
if (('\t' <= lookahead && lookahead <= '\r') ||
- lookahead == ' ') SKIP(18)
- if (('1' <= lookahead && lookahead <= '9')) ADVANCE(33);
- if (lookahead != 0 &&
- lookahead > 31 &&
- (lookahead < '%' || '=' < lookahead) &&
- (lookahead < '\\' || '^' < lookahead) &&
- (lookahead < '|' || 159 < lookahead)) ADVANCE(77);
+ lookahead == ' ') SKIP(18);
+ if (('1' <= lookahead && lookahead <= '9')) ADVANCE(34);
+ if (lookahead > ' ' &&
+ (lookahead < '%' || '>' < lookahead) &&
+ (lookahead < '[' || '^' < lookahead) &&
+ (lookahead < '{' || 0x9f < lookahead)) ADVANCE(77);
END_STATE();
case 19:
if (eof) ADVANCE(20);
- if (lookahead == '"') ADVANCE(39);
- if (lookahead == '#') ADVANCE(21);
- if (lookahead == '%') ADVANCE(73);
- if (lookahead == '&') ADVANCE(65);
- if (lookahead == '\'') ADVANCE(40);
- if (lookahead == '(') ADVANCE(52);
- if (lookahead == ')') ADVANCE(53);
- if (lookahead == '*') ADVANCE(70);
- if (lookahead == '+') ADVANCE(68);
- if (lookahead == ',') ADVANCE(24);
- if (lookahead == '-') ADVANCE(69);
- if (lookahead == '.') ADVANCE(26);
- if (lookahead == '/') ADVANCE(71);
- if (lookahead == ':') ADVANCE(28);
- if (lookahead == ';') ADVANCE(22);
- if (lookahead == '<') ADVANCE(29);
- if (lookahead == '=') ADVANCE(23);
- if (lookahead == '>') ADVANCE(31);
- if (lookahead == '[') ADVANCE(54);
- if (lookahead == ']') ADVANCE(55);
- if (lookahead == '^') ADVANCE(75);
- if (lookahead == '{') ADVANCE(56);
- if (lookahead == '|') ADVANCE(62);
- if (lookahead == '}') ADVANCE(57);
- if (lookahead == '~') ADVANCE(64);
+ ADVANCE_MAP(
+ '"', 39,
+ '#', 21,
+ '%', 73,
+ '&', 65,
+ '\'', 40,
+ '(', 52,
+ ')', 53,
+ '*', 70,
+ '+', 68,
+ ',', 24,
+ '-', 69,
+ '.', 26,
+ '/', 71,
+ ':', 28,
+ ';', 22,
+ '<', 29,
+ '=', 23,
+ '>', 31,
+ '[', 54,
+ ']', 55,
+ '^', 75,
+ '{', 56,
+ '|', 62,
+ '}', 57,
+ '~', 64,
+ );
if (('\t' <= lookahead && lookahead <= '\r') ||
- lookahead == ' ') SKIP(19)
- if (lookahead != 0 &&
- lookahead > 31 &&
- (lookahead < '0' || '9' < lookahead) &&
- lookahead != '\\' &&
- (lookahead < 127 || 159 < lookahead)) ADVANCE(77);
+ lookahead == ' ') SKIP(19);
+ if (lookahead > ' ' &&
+ (lookahead < '%' || '>' < lookahead) &&
+ (lookahead < '[' || '^' < lookahead) &&
+ (lookahead < '{' || 0x9f < lookahead)) ADVANCE(77);
END_STATE();
case 20:
ACCEPT_TOKEN(ts_builtin_sym_end);
@@ -1843,43 +1838,49 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 33:
ACCEPT_TOKEN(sym_number);
- if (lookahead == '.') ADVANCE(36);
- if (lookahead == 'E' ||
- lookahead == 'e') ADVANCE(9);
- if (lookahead == 'I' ||
- lookahead == 'i') ADVANCE(32);
- if (lookahead == 'L' ||
- lookahead == 'l') ADVANCE(10);
- if (lookahead == 'U' ||
- lookahead == 'u') ADVANCE(11);
- if (('0' <= lookahead && lookahead <= '9')) ADVANCE(33);
+ ADVANCE_MAP(
+ '.', 36,
+ 'E', 9,
+ 'e', 9,
+ 'I', 32,
+ 'i', 32,
+ 'L', 10,
+ 'l', 10,
+ 'U', 11,
+ 'u', 11,
+ 'X', 5,
+ 'x', 5,
+ );
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34);
END_STATE();
case 34:
ACCEPT_TOKEN(sym_number);
- if (lookahead == '.') ADVANCE(36);
- if (lookahead == 'E' ||
- lookahead == 'e') ADVANCE(9);
- if (lookahead == 'I' ||
- lookahead == 'i') ADVANCE(32);
- if (lookahead == 'X' ||
- lookahead == 'x') ADVANCE(5);
- if (lookahead == 'L' ||
- lookahead == 'l') ADVANCE(10);
- if (lookahead == 'U' ||
- lookahead == 'u') ADVANCE(11);
- if (('0' <= lookahead && lookahead <= '9')) ADVANCE(33);
+ ADVANCE_MAP(
+ '.', 36,
+ 'E', 9,
+ 'e', 9,
+ 'I', 32,
+ 'i', 32,
+ 'L', 10,
+ 'l', 10,
+ 'U', 11,
+ 'u', 11,
+ );
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34);
END_STATE();
case 35:
ACCEPT_TOKEN(sym_number);
- if (lookahead == '.') ADVANCE(37);
- if (lookahead == 'I' ||
- lookahead == 'i') ADVANCE(32);
- if (lookahead == 'P' ||
- lookahead == 'p') ADVANCE(9);
- if (lookahead == 'L' ||
- lookahead == 'l') ADVANCE(10);
- if (lookahead == 'U' ||
- lookahead == 'u') ADVANCE(11);
+ ADVANCE_MAP(
+ '.', 37,
+ 'I', 32,
+ 'i', 32,
+ 'L', 10,
+ 'l', 10,
+ 'P', 9,
+ 'p', 9,
+ 'U', 11,
+ 'u', 11,
+ );
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(35);
@@ -2057,14 +2058,13 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 77:
ACCEPT_TOKEN(sym_identifier);
- if (lookahead != 0 &&
- lookahead > ' ' &&
+ if (lookahead > ' ' &&
lookahead != '"' &&
lookahead != '#' &&
(lookahead < '%' || '/' < lookahead) &&
(lookahead < ':' || '>' < lookahead) &&
(lookahead < '[' || '^' < lookahead) &&
- (lookahead < '{' || 159 < lookahead)) ADVANCE(77);
+ (lookahead < '{' || 0x9f < lookahead)) ADVANCE(77);
END_STATE();
case 78:
ACCEPT_TOKEN(anon_sym_DASH_DASH);
@@ -2079,11 +2079,11 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
ACCEPT_TOKEN(aux_sym_comment_token1);
if (lookahead == '-') ADVANCE(81);
if (lookahead == '\t' ||
- lookahead == 11 ||
+ lookahead == 0x0b ||
lookahead == '\f' ||
lookahead == ' ') ADVANCE(80);
if (lookahead != 0 &&
- (lookahead < '\n' || '\r' < lookahead)) ADVANCE(82);
+ (lookahead < '\t' || '\r' < lookahead)) ADVANCE(82);
END_STATE();
case 81:
ACCEPT_TOKEN(aux_sym_comment_token1);
@@ -2108,22 +2108,24 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) {
eof = lexer->eof(lexer);
switch (state) {
case 0:
- if (lookahead == 'a') ADVANCE(1);
- if (lookahead == 'b') ADVANCE(2);
- if (lookahead == 'd') ADVANCE(3);
- if (lookahead == 'e') ADVANCE(4);
- if (lookahead == 'f') ADVANCE(5);
- if (lookahead == 'g') ADVANCE(6);
- if (lookahead == 'i') ADVANCE(7);
- if (lookahead == 'l') ADVANCE(8);
- if (lookahead == 'n') ADVANCE(9);
- if (lookahead == 'o') ADVANCE(10);
- if (lookahead == 'r') ADVANCE(11);
- if (lookahead == 't') ADVANCE(12);
- if (lookahead == 'u') ADVANCE(13);
- if (lookahead == 'w') ADVANCE(14);
+ ADVANCE_MAP(
+ 'a', 1,
+ 'b', 2,
+ 'd', 3,
+ 'e', 4,
+ 'f', 5,
+ 'g', 6,
+ 'i', 7,
+ 'l', 8,
+ 'n', 9,
+ 'o', 10,
+ 'r', 11,
+ 't', 12,
+ 'u', 13,
+ 'w', 14,
+ );
if (('\t' <= lookahead && lookahead <= '\r') ||
- lookahead == ' ') SKIP(0)
+ lookahead == ' ') SKIP(0);
END_STATE();
case 1:
if (lookahead == 'n') ADVANCE(15);
@@ -12154,7 +12156,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
[1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
[3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259),
[5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219),
- [7] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 0),
+ [7] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 0, 0, 0),
[9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(4),
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57),
[13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(63),
@@ -12170,45 +12172,45 @@ static const TSParseActionEntry ts_parse_actions[] = {
[33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(170),
[35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(185),
[37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94),
- [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bracket_index_expression, 4, .production_id = 23),
- [41] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bracket_index_expression, 4, .production_id = 23),
- [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dot_index_expression, 3, .production_id = 23),
- [45] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dot_index_expression, 3, .production_id = 23),
- [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 1),
- [49] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 1),
- [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__quote_string, 3, .production_id = 28),
- [53] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__quote_string, 3, .production_id = 28),
- [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 4),
- [57] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 4),
- [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 2, .production_id = 10),
- [61] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 2, .production_id = 10),
- [63] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 1),
- [65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 1),
- [67] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1),
- [69] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1),
- [71] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__prefix_expression, 1),
- [73] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__prefix_expression, 1),
- [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3),
- [77] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3),
- [79] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 3),
- [81] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 3),
- [83] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, .production_id = 6),
- [85] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1, .production_id = 6),
- [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 2),
- [89] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 2),
- [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__quote_string, 2, .production_id = 14),
- [93] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__quote_string, 2, .production_id = 14),
- [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_table_constructor, 2),
- [97] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_table_constructor, 2),
- [99] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block_string, 3, .production_id = 12),
- [101] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block_string, 3, .production_id = 12),
- [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_table_constructor, 3),
- [105] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_table_constructor, 3),
- [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, .production_id = 16),
- [109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_expression, 2, .production_id = 16),
+ [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bracket_index_expression, 4, 0, 23),
+ [41] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bracket_index_expression, 4, 0, 23),
+ [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dot_index_expression, 3, 0, 23),
+ [45] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dot_index_expression, 3, 0, 23),
+ [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 1, 0, 0),
+ [49] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 1, 0, 0),
+ [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__quote_string, 3, 0, 28),
+ [53] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__quote_string, 3, 0, 28),
+ [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 4, 0, 0),
+ [57] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 4, 0, 0),
+ [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 2, 0, 10),
+ [61] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 2, 0, 10),
+ [63] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 1, 0, 0),
+ [65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 1, 0, 0),
+ [67] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0),
+ [69] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1, 0, 0),
+ [71] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__prefix_expression, 1, 0, 0),
+ [73] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__prefix_expression, 1, 0, 0),
+ [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 0),
+ [77] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, 0, 0),
+ [79] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 3, 0, 0),
+ [81] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 3, 0, 0),
+ [83] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 6),
+ [85] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1, 0, 6),
+ [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arguments, 2, 0, 0),
+ [89] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arguments, 2, 0, 0),
+ [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__quote_string, 2, 0, 14),
+ [93] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__quote_string, 2, 0, 14),
+ [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_table_constructor, 2, 0, 0),
+ [97] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_table_constructor, 2, 0, 0),
+ [99] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block_string, 3, 0, 12),
+ [101] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block_string, 3, 0, 12),
+ [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_table_constructor, 3, 0, 0),
+ [105] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_table_constructor, 3, 0, 0),
+ [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, 0, 16),
+ [109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_expression, 2, 0, 16),
[111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79),
- [113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, .production_id = 29),
- [115] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, .production_id = 29),
+ [113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, 0, 29),
+ [115] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, 0, 29),
[117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81),
[119] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81),
[121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72),
@@ -12221,53 +12223,53 @@ static const TSParseActionEntry ts_parse_actions[] = {
[135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89),
[137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84),
[139] = {.entry = {.count = 1, .reusable = false}}, SHIFT(87),
- [141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_body, 3, .production_id = 41),
- [143] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__function_body, 3, .production_id = 41),
- [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_body, 2, .production_id = 27),
- [147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__function_body, 2, .production_id = 27),
- [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 2, .production_id = 13),
- [151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 2, .production_id = 13),
+ [141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_body, 3, 0, 41),
+ [143] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__function_body, 3, 0, 41),
+ [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_body, 2, 0, 27),
+ [147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__function_body, 2, 0, 27),
+ [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 2, 0, 13),
+ [151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 2, 0, 13),
[153] = {.entry = {.count = 1, .reusable = false}}, SHIFT(59),
[155] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145),
[157] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92),
[159] = {.entry = {.count = 1, .reusable = false}}, SHIFT(51),
- [161] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 1),
- [163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2),
- [165] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(4),
- [168] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2),
- [170] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(129),
- [173] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(258),
- [176] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(131),
- [179] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(256),
- [182] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(53),
- [185] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(90),
- [188] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(48),
- [191] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(93),
- [194] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(184),
- [197] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(170),
- [200] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(185),
- [203] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2), SHIFT_REPEAT(94),
- [206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_explist, 1, .production_id = 15),
- [208] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__variable_assignment_explist, 1, .production_id = 15),
+ [161] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 1, 0, 0),
+ [163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0),
+ [165] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(4),
+ [168] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0),
+ [170] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(129),
+ [173] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(258),
+ [176] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(131),
+ [179] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(256),
+ [182] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(53),
+ [185] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(90),
+ [188] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(48),
+ [191] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(93),
+ [194] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(184),
+ [197] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(170),
+ [200] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(185),
+ [203] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 2, 0, 0), SHIFT_REPEAT(94),
+ [206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_explist, 1, 0, 15),
+ [208] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__variable_assignment_explist, 1, 0, 15),
[210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78),
[212] = {.entry = {.count = 1, .reusable = false}}, SHIFT(88),
- [214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_statement, 3, .production_id = 30),
- [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, .production_id = 50),
- [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, .production_id = 50),
+ [214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_statement, 3, 0, 30),
+ [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, 0, 50),
+ [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, 0, 50),
[220] = {.entry = {.count = 1, .reusable = false}}, SHIFT(73),
- [222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 3, .production_id = 18),
- [224] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 3, .production_id = 18),
+ [222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 3, 0, 18),
+ [224] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 3, 0, 18),
[226] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146),
- [228] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_statement, 1),
- [230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 4, .production_id = 31),
- [232] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 4, .production_id = 31),
+ [228] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_statement, 1, 0, 0),
+ [230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 4, 0, 31),
+ [232] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 4, 0, 31),
[234] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134),
[236] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31),
[238] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143),
- [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 2),
- [242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 1),
+ [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 2, 0, 0),
+ [242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 1, 0, 0),
[244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172),
- [246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 1),
+ [246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 1, 0, 0),
[248] = {.entry = {.count = 1, .reusable = false}}, SHIFT(199),
[250] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40),
[252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40),
@@ -12281,121 +12283,121 @@ static const TSParseActionEntry ts_parse_actions[] = {
[268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95),
[270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
[272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33),
- [274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_list, 3),
- [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1),
- [278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_list, 2),
+ [274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_list, 3, 0, 0),
+ [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1, 0, 0),
+ [278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_list, 2, 0, 0),
[280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(96),
[282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
- [284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_list, 1),
+ [284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_list, 1, 0, 0),
[286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91),
- [288] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression_list, 1),
+ [288] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression_list, 1, 0, 0),
[290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88),
[292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87),
- [294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expression_list_repeat1, 2),
- [296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__expression_list_repeat1, 2),
- [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_statement, 1),
- [300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_statement, 1),
- [302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 5, .production_id = 56),
- [304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 1, .production_id = 15),
- [306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 1, .production_id = 4),
- [308] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 1, .production_id = 4),
+ [294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expression_list_repeat1, 2, 0, 0),
+ [296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__expression_list_repeat1, 2, 0, 0),
+ [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_statement, 1, 0, 0),
+ [300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_statement, 1, 0, 0),
+ [302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 5, 0, 56),
+ [304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 1, 0, 15),
+ [306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 1, 0, 4),
+ [308] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 1, 0, 4),
[310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217),
[312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241),
[314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
- [316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 3, .production_id = 42),
+ [316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 3, 0, 42),
[318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97),
- [320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_numeric_clause, 5, .production_id = 55),
- [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 2, .production_id = 25),
- [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__att_name_list_repeat1, 2, .production_id = 25),
+ [320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_numeric_clause, 5, 0, 55),
+ [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 2, 0, 25),
+ [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__att_name_list_repeat1, 2, 0, 25),
[326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46),
- [328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 2, .production_id = 21),
- [330] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 2, .production_id = 21),
- [332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 2, .production_id = 20),
- [334] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 2, .production_id = 20),
+ [328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 2, 0, 21),
+ [330] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 2, 0, 21),
+ [332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 2, 0, 20),
+ [334] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 2, 0, 20),
[336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228),
- [338] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 3, .production_id = 36),
- [340] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 3, .production_id = 36),
- [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 2, .production_id = 37),
- [344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__att_name_list_repeat1, 2, .production_id = 37),
- [346] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 2, .production_id = 37), SHIFT_REPEAT(217),
+ [338] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__att_name_list, 3, 0, 36),
+ [340] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__att_name_list, 3, 0, 36),
+ [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 2, 0, 37),
+ [344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__att_name_list_repeat1, 2, 0, 37),
+ [346] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 2, 0, 37), SHIFT_REPEAT(217),
[349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2),
[351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
[353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76),
[355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50),
- [357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_numeric_clause, 7, .production_id = 58),
+ [357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_numeric_clause, 7, 0, 58),
[359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42),
- [361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, .production_id = 51),
- [363] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, .production_id = 51),
- [365] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, .production_id = 51), SHIFT_REPEAT(78),
- [368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 3, .production_id = 49),
- [370] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__att_name_list_repeat1, 3, .production_id = 49),
- [372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_explist, 2, .production_id = 39),
- [374] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__variable_assignment_explist, 2, .production_id = 39),
- [376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attrib, 3),
- [378] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__attrib, 3),
- [380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 2, .production_id = 9),
- [382] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 2, .production_id = 9),
+ [361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, 0, 51),
+ [363] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, 0, 51),
+ [365] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__variable_assignment_explist_repeat1, 2, 0, 51), SHIFT_REPEAT(78),
+ [368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__att_name_list_repeat1, 3, 0, 49),
+ [370] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__att_name_list_repeat1, 3, 0, 49),
+ [372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_explist, 2, 0, 39),
+ [374] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__variable_assignment_explist, 2, 0, 39),
+ [376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attrib, 3, 0, 0),
+ [378] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__attrib, 3, 0, 0),
+ [380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 2, 0, 9),
+ [382] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 2, 0, 9),
[384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68),
- [386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 45),
- [388] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 45),
- [390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 1, .production_id = 2),
- [392] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_declaration, 1, .production_id = 2),
- [394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 3, .production_id = 19),
- [396] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 3, .production_id = 19),
- [398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, .production_id = 57),
- [400] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, .production_id = 57),
- [402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_empty_statement, 1),
- [404] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_empty_statement, 1),
- [406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 44),
- [408] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 44),
- [410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 54),
- [412] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 54),
- [414] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_goto_statement, 2),
- [416] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_goto_statement, 2),
- [418] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_statement, 2),
- [420] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_statement, 2),
- [422] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 53),
- [424] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 53),
- [426] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment_statement, 3, .production_id = 22),
- [428] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment_statement, 3, .production_id = 22),
- [430] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__local_variable_assignment, 3, .production_id = 38),
- [432] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__local_variable_assignment, 3, .production_id = 38),
- [434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 52),
- [436] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 52),
- [438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 2),
- [440] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 2),
- [442] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__local_function_declaration, 4, .production_id = 35),
- [444] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__local_function_declaration, 4, .production_id = 35),
- [446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_statement, 3, .production_id = 17),
- [448] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_statement, 3, .production_id = 17),
- [450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label_statement, 3),
- [452] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_label_statement, 3),
- [454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 4, .production_id = 33),
- [456] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 4, .production_id = 33),
- [458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 5, .production_id = 48),
- [460] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 5, .production_id = 48),
- [462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, .production_id = 30),
- [464] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, .production_id = 30),
- [466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, .production_id = 30),
- [468] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, .production_id = 30),
- [470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 43),
- [472] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 43),
- [474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 1),
- [476] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 1),
- [478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_statement, 1, .production_id = 1),
- [480] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_statement, 1, .production_id = 1),
- [482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 1),
- [484] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_declaration, 1),
- [486] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 46),
- [488] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 46),
- [490] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 1, .production_id = 3),
- [492] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_declaration, 1, .production_id = 3),
- [494] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__field_sep, 1),
- [496] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_sep, 1),
- [498] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 3, .production_id = 40),
- [500] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, .production_id = 40),
- [502] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 2),
- [504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2),
+ [386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 45),
+ [388] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 45),
+ [390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 1, 0, 2),
+ [392] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_declaration, 1, 0, 2),
+ [394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 3, 0, 19),
+ [396] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 3, 0, 19),
+ [398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, 0, 57),
+ [400] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, 0, 57),
+ [402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_empty_statement, 1, 0, 0),
+ [404] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_empty_statement, 1, 0, 0),
+ [406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 44),
+ [408] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 44),
+ [410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 54),
+ [412] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 54),
+ [414] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_goto_statement, 2, 0, 0),
+ [416] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_goto_statement, 2, 0, 0),
+ [418] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_statement, 2, 0, 0),
+ [420] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_statement, 2, 0, 0),
+ [422] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 53),
+ [424] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 53),
+ [426] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment_statement, 3, 0, 22),
+ [428] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment_statement, 3, 0, 22),
+ [430] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__local_variable_assignment, 3, 0, 38),
+ [432] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__local_variable_assignment, 3, 0, 38),
+ [434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 52),
+ [436] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 52),
+ [438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_declaration, 2, 0, 0),
+ [440] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_declaration, 2, 0, 0),
+ [442] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__local_function_declaration, 4, 0, 35),
+ [444] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__local_function_declaration, 4, 0, 35),
+ [446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_statement, 3, 0, 17),
+ [448] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_statement, 3, 0, 17),
+ [450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label_statement, 3, 0, 0),
+ [452] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_label_statement, 3, 0, 0),
+ [454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 4, 0, 33),
+ [456] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 4, 0, 33),
+ [458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 5, 0, 48),
+ [460] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 5, 0, 48),
+ [462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, 0, 30),
+ [464] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, 0, 30),
+ [466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, 0, 30),
+ [468] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, 0, 30),
+ [470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 43),
+ [472] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 43),
+ [474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_chunk_repeat1, 1, 0, 0),
+ [476] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_chunk_repeat1, 1, 0, 0),
+ [478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_statement, 1, 0, 1),
+ [480] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_statement, 1, 0, 1),
+ [482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 1, 0, 0),
+ [484] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_declaration, 1, 0, 0),
+ [486] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 46),
+ [488] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 46),
+ [490] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 1, 0, 3),
+ [492] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_declaration, 1, 0, 3),
+ [494] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__field_sep, 1, 0, 0),
+ [496] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_sep, 1, 0, 0),
+ [498] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 3, 0, 40),
+ [500] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, 0, 40),
+ [502] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameters, 2, 0, 0),
+ [504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2, 0, 0),
[506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234),
[508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233),
[510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188),
@@ -12404,87 +12406,87 @@ static const TSParseActionEntry ts_parse_actions[] = {
[516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86),
[518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60),
[520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229),
- [522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_varlist, 1, .production_id = 4),
+ [522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_varlist, 1, 0, 4),
[524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161),
- [526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_varlist_repeat1, 2, .production_id = 25),
- [528] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expression_list_repeat1, 2), SHIFT_REPEAT(91),
+ [526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_varlist_repeat1, 2, 0, 25),
+ [528] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expression_list_repeat1, 2, 0, 0), SHIFT_REPEAT(91),
[531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4),
- [533] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_list, 2),
- [535] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression_list, 2),
+ [533] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_list, 2, 0, 0),
+ [535] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression_list, 2, 0, 0),
[537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151),
[539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92),
[541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130),
[543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135),
- [545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2),
+ [545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2, 0, 0),
[547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174),
- [549] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 2),
- [551] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__field_list_repeat1, 2), SHIFT_REPEAT(153),
- [554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__field_list_repeat1, 2),
- [556] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_index_expression, 3, .production_id = 24),
+ [549] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 2, 0, 0),
+ [551] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__field_list_repeat1, 2, 0, 0), SHIFT_REPEAT(153),
+ [554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__field_list_repeat1, 2, 0, 0),
+ [556] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_index_expression, 3, 0, 24),
[558] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201),
[560] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153),
- [562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 47),
- [564] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 47), SHIFT_REPEAT(92),
- [567] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 47),
- [569] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 3),
- [571] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 3),
- [573] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_list, 1),
+ [562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 47),
+ [564] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 47), SHIFT_REPEAT(92),
+ [567] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 47),
+ [569] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 3, 0, 0),
+ [571] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 3, 0, 0),
+ [573] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_list, 1, 0, 0),
[575] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30),
[577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206),
[579] = {.entry = {.count = 1, .reusable = false}}, SHIFT(259),
- [581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__name_list_repeat1, 2, .production_id = 26), SHIFT_REPEAT(223),
- [584] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__name_list_repeat1, 2, .production_id = 26),
+ [581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__name_list_repeat1, 2, 0, 26), SHIFT_REPEAT(223),
+ [584] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__name_list_repeat1, 2, 0, 26),
[586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205),
[588] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232),
[590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155),
[592] = {.entry = {.count = 1, .reusable = false}}, SHIFT(36),
[594] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5),
[596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207),
- [598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 2),
- [600] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 2),
+ [598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 2, 0, 0),
+ [600] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 2, 0, 0),
[602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187),
[604] = {.entry = {.count = 1, .reusable = false}}, SHIFT(103),
[606] = {.entry = {.count = 1, .reusable = false}}, SHIFT(235),
[608] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15),
[610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74),
[612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223),
- [614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__name_list, 1, .production_id = 4),
- [616] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__doublequote_string_content, 2),
- [618] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__doublequote_string_content, 2), SHIFT_REPEAT(206),
- [621] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 1),
- [623] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__singlequote_string_content, 2),
- [625] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__singlequote_string_content, 2), SHIFT_REPEAT(207),
+ [614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__name_list, 1, 0, 4),
+ [616] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__doublequote_string_content, 2, 0, 0),
+ [618] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__doublequote_string_content, 2, 0, 0), SHIFT_REPEAT(206),
+ [621] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 1, 0, 0),
+ [623] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__singlequote_string_content, 2, 0, 0),
+ [625] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__singlequote_string_content, 2, 0, 0), SHIFT_REPEAT(207),
[628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221),
[630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220),
- [632] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name, 1),
+ [632] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name, 1, 0, 0),
[634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178),
- [636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 32),
- [638] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 32),
- [640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__name_list_repeat1, 2, .production_id = 25),
+ [636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 32),
+ [638] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 32),
+ [640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__name_list_repeat1, 2, 0, 25),
[642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6),
[644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213),
- [646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 2, .production_id = 11),
- [648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseif_statement, 4, .production_id = 44),
- [650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_statement, 4, .production_id = 44),
- [652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_prefix_expression, 1),
- [654] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_prefix_expression, 1, .production_id = 7),
- [656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_varlist, 2, .production_id = 11),
+ [646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 2, 0, 11),
+ [648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elseif_statement, 4, 0, 44),
+ [650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elseif_statement, 4, 0, 44),
+ [652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_prefix_expression, 1, 0, 0),
+ [654] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_prefix_expression, 1, 0, 7),
+ [656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_assignment_varlist, 2, 0, 11),
[658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212),
- [660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 1, .production_id = 4),
- [662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__doublequote_string_content, 1),
- [664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__doublequote_string_content, 1),
- [666] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__singlequote_string_content, 1),
- [668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__singlequote_string_content, 1),
- [670] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_dot_index_expression, 3, .production_id = 23),
- [672] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__name_list, 2, .production_id = 11),
- [674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_varlist_repeat1, 2, .production_id = 26),
- [676] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__variable_assignment_varlist_repeat1, 2, .production_id = 26), SHIFT_REPEAT(161),
+ [660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 1, 0, 4),
+ [662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__doublequote_string_content, 1, 0, 0),
+ [664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__doublequote_string_content, 1, 0, 0),
+ [666] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__singlequote_string_content, 1, 0, 0),
+ [668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__singlequote_string_content, 1, 0, 0),
+ [670] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_dot_index_expression, 3, 0, 23),
+ [672] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__name_list, 2, 0, 11),
+ [674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__variable_assignment_varlist_repeat1, 2, 0, 26),
+ [676] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__variable_assignment_varlist_repeat1, 2, 0, 26), SHIFT_REPEAT(161),
[679] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196),
[681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230),
[683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240),
- [685] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 3),
+ [685] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chunk, 3, 0, 0),
[687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128),
- [689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_statement, 2, .production_id = 17),
+ [689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_statement, 2, 0, 17),
[691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107),
[693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138),
[695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252),
@@ -12493,21 +12495,21 @@ static const TSParseActionEntry ts_parse_actions[] = {
[701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132),
[703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29),
[705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123),
- [707] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_generic_clause, 3, .production_id = 34),
+ [707] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_generic_clause, 3, 0, 34),
[709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19),
[711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85),
[713] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257),
- [715] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 3, .production_id = 4),
+ [715] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 3, 0, 4),
[717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144),
- [719] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 1),
+ [719] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 1, 0, 0),
[721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169),
[723] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
[725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194),
- [727] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name, 1, .production_id = 8),
- [729] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_method_index_expression, 3, .production_id = 24),
+ [727] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name, 1, 0, 8),
+ [729] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_name_method_index_expression, 3, 0, 24),
[731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28),
[733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147),
- [735] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 4, .production_id = 11),
+ [735] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_list, 4, 0, 11),
[737] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225),
[739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125),
[741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67),
@@ -12525,8 +12527,8 @@ static const TSParseActionEntry ts_parse_actions[] = {
[765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
[767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247),
[769] = {.entry = {.count = 1, .reusable = false}}, SHIFT(260),
- [771] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 2, .production_id = 5),
- [773] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, .production_id = 12),
+ [771] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 2, 0, 5),
+ [773] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 12),
};
enum ts_external_scanner_symbol_identifiers {
@@ -12590,13 +12592,15 @@ bool tree_sitter_lua_external_scanner_scan(void *, TSLexer *, const bool *);
unsigned tree_sitter_lua_external_scanner_serialize(void *, char *);
void tree_sitter_lua_external_scanner_deserialize(void *, const char *, unsigned);
-#ifdef _WIN32
+#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_lua() {
+TS_PUBLIC const TSLanguage *tree_sitter_lua(void) {
static const TSLanguage language = {
.version = LANGUAGE_VERSION,
.symbol_count = SYMBOL_COUNT,
diff --git a/src/scanner.c b/src/scanner.c
index d2bf68d..58db18b 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -1,5 +1,5 @@
#include
-#include
+#include "tree_sitter/parser.h"
#include
enum TokenType {
diff --git a/src/tree_sitter/array.h b/src/tree_sitter/array.h
index 186ba67..15a3b23 100644
--- a/src/tree_sitter/array.h
+++ b/src/tree_sitter/array.h
@@ -66,9 +66,12 @@ extern "C" {
/// Increase the array's size by `count` elements.
/// New elements are zero-initialized.
#define array_grow_by(self, count) \
- (_array__grow((Array *)(self), count, array_elem_size(self)), \
- memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)), \
- (self)->size += (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) \
diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h
index 17b4fde..799f599 100644
--- a/src/tree_sitter/parser.h
+++ b/src/tree_sitter/parser.h
@@ -47,6 +47,7 @@ struct TSLexer {
uint32_t (*get_column)(TSLexer *);
bool (*is_at_included_range_start)(const TSLexer *);
bool (*eof)(const TSLexer *);
+ void (*log)(const TSLexer *, const char *, ...);
};
typedef enum {
@@ -86,6 +87,11 @@ typedef union {
} entry;
} TSParseActionEntry;
+typedef struct {
+ int32_t start;
+ int32_t end;
+} TSCharacterRange;
+
struct TSLanguage {
uint32_t version;
uint32_t symbol_count;
@@ -125,6 +131,24 @@ struct TSLanguage {
const TSStateId *primary_state_ids;
};
+static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) {
+ uint32_t index = 0;
+ uint32_t size = len - index;
+ while (size > 1) {
+ uint32_t half_size = size / 2;
+ uint32_t mid_index = index + half_size;
+ TSCharacterRange *range = &ranges[mid_index];
+ if (lookahead >= range->start && lookahead <= range->end) {
+ return true;
+ } else if (lookahead > range->end) {
+ index = mid_index;
+ }
+ size -= half_size;
+ }
+ TSCharacterRange *range = &ranges[index];
+ return (lookahead >= range->start && lookahead <= range->end);
+}
+
/*
* Lexer Macros
*/
@@ -154,6 +178,17 @@ struct TSLanguage {
goto next_state; \
}
+#define ADVANCE_MAP(...) \
+ { \
+ static const uint16_t map[] = { __VA_ARGS__ }; \
+ for (uint32_t i = 0; i < sizeof(map) / sizeof(map[0]); i += 2) { \
+ if (map[i] == lookahead) { \
+ state = map[i + 1]; \
+ goto next_state; \
+ } \
+ } \
+ }
+
#define SKIP(state_value) \
{ \
skip = true; \
@@ -203,14 +238,15 @@ struct TSLanguage {
} \
}}
-#define REDUCE(symbol_val, child_count_val, ...) \
- {{ \
- .reduce = { \
- .type = TSParseActionTypeReduce, \
- .symbol = symbol_val, \
- .child_count = child_count_val, \
- __VA_ARGS__ \
- }, \
+#define REDUCE(symbol_name, children, precedence, prod_id) \
+ {{ \
+ .reduce = { \
+ .type = TSParseActionTypeReduce, \
+ .symbol = symbol_name, \
+ .child_count = children, \
+ .dynamic_precedence = precedence, \
+ .production_id = prod_id \
+ }, \
}}
#define RECOVER() \