diff --git a/.gitattributes b/.gitattributes index 7e2cae0c..996bed37 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,10 +10,14 @@ bindings/c/* linguist-generated CMakeLists.txt linguist-generated Makefile linguist-generated -# Rust bindings -bindings/rust/* linguist-generated -Cargo.toml linguist-generated -Cargo.lock linguist-generated +# Go bindings +bindings/go/* linguist-generated +go.mod linguist-generated +go.sum linguist-generated + +# Java bindings +bindings/java/* linguist-generated +pom.xml linguist-generated # Node.js bindings bindings/node/* linguist-generated @@ -26,12 +30,17 @@ bindings/python/** linguist-generated setup.py linguist-generated pyproject.toml linguist-generated -# Go bindings -bindings/go/* linguist-generated -go.mod linguist-generated -go.sum linguist-generated +# Rust bindings +bindings/rust/* linguist-generated +Cargo.toml linguist-generated +Cargo.lock linguist-generated # Swift bindings bindings/swift/** linguist-generated Package.swift linguist-generated Package.resolved linguist-generated + +# Zig bindings +bindings/zig/* linguist-generated +build.zig linguist-generated +build.zig.zon linguist-generated diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 56887989..e22f338d 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -ko_fi: rubixdev +github: Neptunium931 diff --git a/.github/workflows/ts_tests.yml b/.github/workflows/ts_tests.yml index fec68739..e17920bf 100644 --- a/.github/workflows/ts_tests.yml +++ b/.github/workflows/ts_tests.yml @@ -5,6 +5,9 @@ on: pull_request: branches: [ main ] +permissions: + contents: read + jobs: test: name: Tree-sitter grammar tests diff --git a/.github/workflows/typos.yml b/.github/workflows/typos.yml index 8b9af1d4..d3678096 100644 --- a/.github/workflows/typos.yml +++ b/.github/workflows/typos.yml @@ -4,6 +4,8 @@ on: branches: [ main ] pull_request: branches: [ main ] +permissions: + contents: read jobs: run: name: Spell Check with Typos diff --git a/CMakeLists.txt b/CMakeLists.txt index 52328b3e..3b5ff802 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 3.13) project(tree-sitter-asm - VERSION "0.1.0" + VERSION "0.24.0" DESCRIPTION "assembly grammar for tree-sitter" - HOMEPAGE_URL "https://github.com/RubixDev/tree-sitter-asm" + HOMEPAGE_URL "https://github.com/Neptunium931/tree-sitter-asm" LANGUAGES C) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) diff --git a/Cargo.toml b/Cargo.toml index 6f70460e..5732abbc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,18 +1,21 @@ [package] name = "tree-sitter-asm" description = "assembly grammar for the tree-sitter parsing library" -authors = ["RubixDev"] +authors = [ + "RubixDev", + "Tymothé BILLEREY " +] version = "0.24.0" keywords = ["incremental", "parsing", "tree-sitter", "asm"] categories = ["parsing", "text-editors"] -repository = "https://github.com/RubixDev/tree-sitter-asm" +repository = "https://github.com/Neptunium931/tree-sitter-asm" edition = "2021" license = "MIT" readme = "README.md" autoexamples = false build = "bindings/rust/build.rs" -include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*", "tree-sitter.json"] +include = ["LICENSE", "bindings/rust/*", "grammar.js", "queries/*", "src/*", "tree-sitter.json"] [features] wasm = ["dep:tree-sitter-wasm-build-tool"] diff --git a/LICENSE b/LICENSE index af20f4cc..e172a11a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,5 @@ Copyright (c) 2023 RubixDev +Copyright (c) 2026, Tymothé BILLEREY Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index 9bea71c0..a542bb02 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,8 @@ $(error Windows is not supported) endif LANGUAGE_NAME := tree-sitter-asm -HOMEPAGE_URL := https://github.com/RubixDev/tree-sitter-asm -VERSION := 0.1.0 +HOMEPAGE_URL := https://github.com/Neptunium931/tree-sitter-asm +VERSION := 0.24.0 # repository SRC_DIR := src diff --git a/README.md b/README.md index b7011f4f..93afc029 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,11 @@ Generic assembly grammar for [tree-sitter](https://github.com/tree-sitter/tree-sitter) +# Fork + +This fork is a fork of the original [tree-sitter-asm](https://github.com/RubixDev/tree-sitter-asm) +grammar originally developed by [RubixDev](https://github.com/RubixDev). + ## Usage in Neovim ### Parser Installation diff --git a/binding.gyp b/binding.gyp index d22ce7b0..53f5bc80 100644 --- a/binding.gyp +++ b/binding.gyp @@ -11,9 +11,14 @@ "sources": [ "bindings/node/binding.cc", "src/parser.c", - # NOTE: if your language has an external scanner, add it here. ], + "variables": { + "has_scanner": "The {@linkplain Arena} used in the {@code lookup} + * must not be closed while the language is being used. + */ + public static MemorySegment language(SymbolLookup lookup) { + return call(lookup, "tree_sitter_asm"); + } + + private SymbolLookup findLibrary() { + try { + var library = System.mapLibraryName("tree-sitter-asm"); + return SymbolLookup.libraryLookup(library, arena); + } catch (IllegalArgumentException ex1) { + try { + System.loadLibrary("tree-sitter-asm"); + return SymbolLookup.loaderLookup(); + } catch (UnsatisfiedLinkError ex2) { + ex1.addSuppressed(ex2); + throw ex1; + } + } + } + + private static UnsatisfiedLinkError unresolved(String name) { + return new UnsatisfiedLinkError("Unresolved symbol: %s".formatted(name)); + } + + @SuppressWarnings("SameParameterValue") + private static MemorySegment call(SymbolLookup lookup, String name) throws UnsatisfiedLinkError { + var address = lookup.find(name).orElseThrow(() -> unresolved(name)); + try { + var function = LINKER.downcallHandle(address, FUNC_DESC); + return (MemorySegment) function.invokeExact(); + } catch (Throwable e) { + throw new RuntimeException("Call to %s failed".formatted(name), e); + } + } +} diff --git a/bindings/java/test/TreeSitterAsmTest.java b/bindings/java/test/TreeSitterAsmTest.java new file mode 100644 index 00000000..4d1807b7 --- /dev/null +++ b/bindings/java/test/TreeSitterAsmTest.java @@ -0,0 +1,12 @@ +import io.github.treesitter.jtreesitter.Language; +import io.github.treesitter.jtreesitter.asm.TreeSitterAsm; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + +public class TreeSitterAsmTest { + @Test + public void testCanLoadLanguage() { + assertDoesNotThrow(() -> new Language(TreeSitterAsm.language())); + } +} diff --git a/bindings/node/binding.cc b/bindings/node/binding.cc index a053c898..4c67232e 100644 --- a/bindings/node/binding.cc +++ b/bindings/node/binding.cc @@ -10,7 +10,6 @@ const napi_type_tag LANGUAGE_TYPE_TAG = { }; Napi::Object Init(Napi::Env env, Napi::Object exports) { - exports["name"] = Napi::String::New(env, "asm"); auto language = Napi::External::New(env, tree_sitter_asm()); language.TypeTag(&LANGUAGE_TYPE_TAG); exports["language"] = language; diff --git a/bindings/node/binding_test.js b/bindings/node/binding_test.js index 55becacf..7a91a84d 100644 --- a/bindings/node/binding_test.js +++ b/bindings/node/binding_test.js @@ -1,9 +1,11 @@ -const assert = require("node:assert"); -const { test } = require("node:test"); - -const Parser = require("tree-sitter"); +import assert from "node:assert"; +import { test } from "node:test"; +import Parser from "tree-sitter"; test("can load grammar", () => { const parser = new Parser(); - assert.doesNotThrow(() => parser.setLanguage(require("."))); + assert.doesNotReject(async () => { + const { default: language } = await import("./index.js"); + parser.setLanguage(language); + }); }); diff --git a/bindings/node/index.d.ts b/bindings/node/index.d.ts index efe259ee..2a03b836 100644 --- a/bindings/node/index.d.ts +++ b/bindings/node/index.d.ts @@ -18,11 +18,43 @@ type NodeInfo = children: ChildNode[]; }); -type Language = { - name: string; +/** + * The tree-sitter language object for this grammar. + * + * @see {@linkcode https://tree-sitter.github.io/node-tree-sitter/interfaces/Parser.Language.html Parser.Language} + * + * @example + * import Parser from "tree-sitter"; + * import Asm from "tree-sitter-asm"; + * + * const parser = new Parser(); + * parser.setLanguage(Asm); + */ +declare const binding: { + /** + * The inner language object. + * @private + */ language: unknown; + + /** + * The content of the `node-types.json` file for this grammar. + * + * @see {@linkplain https://tree-sitter.github.io/tree-sitter/using-parsers/6-static-node-types Static Node Types} + */ nodeTypeInfo: NodeInfo[]; + + /** The syntax highlighting query for this grammar. */ + HIGHLIGHTS_QUERY?: string; + + /** The language injection query for this grammar. */ + INJECTIONS_QUERY?: string; + + /** The local variable query for this grammar. */ + LOCALS_QUERY?: string; + + /** The symbol tagging query for this grammar. */ + TAGS_QUERY?: string; }; -declare const language: Language; -export = language; +export default binding; diff --git a/bindings/node/index.js b/bindings/node/index.js index 99c17f5b..50f7ac4b 100644 --- a/bindings/node/index.js +++ b/bindings/node/index.js @@ -1,11 +1,37 @@ -const root = require("path").join(__dirname, "..", ".."); +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; -module.exports = - typeof process.versions.bun === "string" - // Support `bun build --compile` by being statically analyzable enough to find the .node file at build-time - ? require(`../../prebuilds/${process.platform}-${process.arch}/tree-sitter-asm.node`) - : require("node-gyp-build")(root); +const root = fileURLToPath(new URL("../..", import.meta.url)); + +const binding = typeof process.versions.bun === "string" + // Support `bun build --compile` by being statically analyzable enough to find the .node file at build-time + ? await import(`${root}/prebuilds/${process.platform}-${process.arch}/tree-sitter-asm.node`) + : (await import("node-gyp-build")).default(root); try { - module.exports.nodeTypeInfo = require("../../src/node-types.json"); -} catch (_) {} + const nodeTypes = await import(`${root}/src/node-types.json`, { with: { type: "json" } }); + binding.nodeTypeInfo = nodeTypes.default; +} catch { } + +const queries = [ + ["HIGHLIGHTS_QUERY", `${root}/queries/asm/highlights.scm`], + ["INJECTIONS_QUERY", `${root}/queries/asm/injections.scm`], + ["LOCALS_QUERY", `${root}/queries/locals.scm`], + ["TAGS_QUERY", `${root}/queries/tags.scm`], +]; + +for (const [prop, path] of queries) { + Object.defineProperty(binding, prop, { + configurable: true, + enumerable: true, + get() { + delete binding[prop]; + try { + binding[prop] = readFileSync(path, "utf8"); + } catch { } + return binding[prop]; + } + }); +} + +export default binding; diff --git a/bindings/python/tests/test_binding.py b/bindings/python/tests/test_binding.py index 95f13dbc..5d27c0d7 100644 --- a/bindings/python/tests/test_binding.py +++ b/bindings/python/tests/test_binding.py @@ -1,11 +1,12 @@ from unittest import TestCase -import tree_sitter, tree_sitter_asm +from tree_sitter import Language, Parser +import tree_sitter_asm class TestLanguage(TestCase): def test_can_load_grammar(self): try: - tree_sitter.Language(tree_sitter_asm.language()) + Parser(Language(tree_sitter_asm.language())) except Exception: self.fail("Error loading Asm grammar") diff --git a/bindings/python/tree_sitter_asm/__init__.py b/bindings/python/tree_sitter_asm/__init__.py index 4759049e..826252df 100644 --- a/bindings/python/tree_sitter_asm/__init__.py +++ b/bindings/python/tree_sitter_asm/__init__.py @@ -6,32 +6,33 @@ def _get_query(name, file): - query = _files(f"{__package__}.queries") / file - globals()[name] = query.read_text() + try: + query = _files(f"{__package__}") / file + globals()[name] = query.read_text() + except FileNotFoundError: + globals()[name] = None return globals()[name] def __getattr__(name): - # NOTE: uncomment these to include any queries that this grammar contains: - - # 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") + if name == "HIGHLIGHTS_QUERY": + return _get_query("HIGHLIGHTS_QUERY", "queries/asm/highlights.scm") + if name == "INJECTIONS_QUERY": + return _get_query("INJECTIONS_QUERY", "queries/asm/injections.scm") + if name == "LOCALS_QUERY": + return _get_query("LOCALS_QUERY", "queries/locals.scm") + if name == "TAGS_QUERY": + return _get_query("TAGS_QUERY", "queries/tags.scm") raise AttributeError(f"module {__name__!r} has no attribute {name!r}") __all__ = [ "language", - # "HIGHLIGHTS_QUERY", - # "INJECTIONS_QUERY", - # "LOCALS_QUERY", - # "TAGS_QUERY", + "HIGHLIGHTS_QUERY", + "INJECTIONS_QUERY", + "LOCALS_QUERY", + "TAGS_QUERY", ] diff --git a/bindings/python/tree_sitter_asm/__init__.pyi b/bindings/python/tree_sitter_asm/__init__.pyi index abf6633f..5c88ff6c 100644 --- a/bindings/python/tree_sitter_asm/__init__.pyi +++ b/bindings/python/tree_sitter_asm/__init__.pyi @@ -1,10 +1,17 @@ from typing import Final +from typing_extensions import CapsuleType -# NOTE: uncomment these to include any queries that this grammar contains: +HIGHLIGHTS_QUERY: Final[str] | None +"""The syntax highlighting query for this grammar.""" -# HIGHLIGHTS_QUERY: Final[str] -# INJECTIONS_QUERY: Final[str] -# LOCALS_QUERY: Final[str] -# TAGS_QUERY: Final[str] +INJECTIONS_QUERY: Final[str] | None +"""The language injection query for this grammar.""" -def language() -> object: ... +LOCALS_QUERY: Final[str] | None +"""The local variable query for this grammar.""" + +TAGS_QUERY: Final[str] | None +"""The symbol tagging query for this grammar.""" + +def language() -> CapsuleType: + """The tree-sitter language function for this grammar.""" diff --git a/bindings/python/tree_sitter_asm/binding.c b/bindings/python/tree_sitter_asm/binding.c index 226189ac..ca2ddf09 100644 --- a/bindings/python/tree_sitter_asm/binding.c +++ b/bindings/python/tree_sitter_asm/binding.c @@ -8,6 +8,13 @@ static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSE return PyCapsule_New(tree_sitter_asm(), "tree_sitter.Language", NULL); } +static struct PyModuleDef_Slot slots[] = { +#ifdef Py_GIL_DISABLED + {Py_mod_gil, Py_MOD_GIL_NOT_USED}, +#endif + {0, NULL} +}; + static PyMethodDef methods[] = { {"language", _binding_language, METH_NOARGS, "Get the tree-sitter language for this grammar."}, @@ -18,10 +25,11 @@ static struct PyModuleDef module = { .m_base = PyModuleDef_HEAD_INIT, .m_name = "_binding", .m_doc = NULL, - .m_size = -1, - .m_methods = methods + .m_size = 0, + .m_methods = methods, + .m_slots = slots, }; PyMODINIT_FUNC PyInit__binding(void) { - return PyModule_Create(&module); + return PyModuleDef_Init(&module); } diff --git a/bindings/rust/build.rs b/bindings/rust/build.rs index c226608c..eb2c9e7d 100644 --- a/bindings/rust/build.rs +++ b/bindings/rust/build.rs @@ -7,12 +7,50 @@ fn main() { #[cfg(target_env = "msvc")] c_config.flag("-utf-8"); + if std::env::var("TARGET").unwrap() == "wasm32-unknown-unknown" { + let Ok(wasm_headers) = std::env::var("DEP_TREE_SITTER_LANGUAGE_WASM_HEADERS") else { + panic!("Environment variable DEP_TREE_SITTER_LANGUAGE_WASM_HEADERS must be set by the language crate"); + }; + let Ok(wasm_src) = + std::env::var("DEP_TREE_SITTER_LANGUAGE_WASM_SRC").map(std::path::PathBuf::from) + else { + panic!("Environment variable DEP_TREE_SITTER_LANGUAGE_WASM_SRC must be set by the language crate"); + }; + + c_config.include(&wasm_headers); + c_config.files([ + wasm_src.join("stdio.c"), + wasm_src.join("stdlib.c"), + wasm_src.join("string.c"), + ]); + } + let parser_path = src_dir.join("parser.c"); c_config.file(&parser_path); println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); - #[cfg(feature = "wasm")] - tree_sitter_wasm_build_tool::add_wasm_headers(&mut c_config).unwrap(); + let scanner_path = src_dir.join("scanner.c"); + if scanner_path.exists() { + c_config.file(&scanner_path); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + } c_config.compile("tree-sitter-asm"); + + println!("cargo:rustc-check-cfg=cfg(with_highlights_query)"); + if !"queries/asm/highlights.scm".is_empty() && std::path::Path::new("queries/asm/highlights.scm").exists() { + println!("cargo:rustc-cfg=with_highlights_query"); + } + println!("cargo:rustc-check-cfg=cfg(with_injections_query)"); + if !"queries/asm/injections.scm".is_empty() && std::path::Path::new("queries/asm/injections.scm").exists() { + println!("cargo:rustc-cfg=with_injections_query"); + } + println!("cargo:rustc-check-cfg=cfg(with_locals_query)"); + if !"queries/locals.scm".is_empty() && std::path::Path::new("queries/locals.scm").exists() { + println!("cargo:rustc-cfg=with_locals_query"); + } + println!("cargo:rustc-check-cfg=cfg(with_tags_query)"); + if !"queries/tags.scm".is_empty() && std::path::Path::new("queries/tags.scm").exists() { + println!("cargo:rustc-cfg=with_tags_query"); + } } diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs index 2cfe4b24..807f31f6 100644 --- a/bindings/rust/lib.rs +++ b/bindings/rust/lib.rs @@ -1,20 +1,21 @@ -//! This crate provides asm language support for the [tree-sitter][] parsing library. +//! This crate provides Asm language support for the [tree-sitter] parsing library. //! -//! Typically, you will use the [LANGUAGE][] constant to add this language to a -//! tree-sitter [Parser][], and then use the parser to parse some code: +//! Typically, you will use the [`LANGUAGE`] constant to add this language to a +//! tree-sitter [`Parser`], and then use the parser to parse some code: //! //! ``` -//! let code = "pushq %rbp, %rbp"; +//! let code = r#" +//! "#; //! let mut parser = tree_sitter::Parser::new(); //! let language = tree_sitter_asm::LANGUAGE; //! parser //! .set_language(&language.into()) -//! .expect("Error loading asm parser"); +//! .expect("Error loading Asm parser"); //! let tree = parser.parse(code, None).unwrap(); //! assert!(!tree.root_node().has_error()); //! ``` //! -//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html +//! [`Parser`]: https://docs.rs/tree-sitter/0.26.9/tree_sitter/struct.Parser.html //! [tree-sitter]: https://tree-sitter.github.io/ use tree_sitter_language::LanguageFn; @@ -23,20 +24,29 @@ extern "C" { fn tree_sitter_asm() -> *const (); } -/// The tree-sitter [`LanguageFn`][LanguageFn] for this grammar. -/// -/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html +/// The tree-sitter [`LanguageFn`] for this grammar. pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_asm) }; -/// The content of the [`node-types.json`][] file for this grammar. +/// 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 +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers/6-static-node-types pub const NODE_TYPES: &str = include_str!("../../src/node-types.json"); +#[cfg(with_highlights_query)] +/// The syntax highlighting query for this grammar. pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/asm/highlights.scm"); -// pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm"); -// pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm"); -// pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm"); + +#[cfg(with_injections_query)] +/// The language injection query for this grammar. +pub const INJECTIONS_QUERY: &str = include_str!("../../queries/asm/injections.scm"); + +#[cfg(with_locals_query)] +/// The local variable query for this grammar. +pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm"); + +#[cfg(with_tags_query)] +/// The symbol tagging query for this grammar. +pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm"); #[cfg(test)] mod tests { @@ -45,6 +55,6 @@ mod tests { let mut parser = tree_sitter::Parser::new(); parser .set_language(&super::LANGUAGE.into()) - .expect("Error loading asm parser"); + .expect("Error loading Asm parser"); } } diff --git a/bindings/zig/root.zig b/bindings/zig/root.zig new file mode 100644 index 00000000..5ff101bf --- /dev/null +++ b/bindings/zig/root.zig @@ -0,0 +1,5 @@ +extern fn tree_sitter_asm() callconv(.c) *const anyopaque; + +pub fn language() *const anyopaque { + return tree_sitter_asm(); +} diff --git a/bindings/zig/test.zig b/bindings/zig/test.zig new file mode 100644 index 00000000..3f89e73f --- /dev/null +++ b/bindings/zig/test.zig @@ -0,0 +1,17 @@ +const testing = @import("std").testing; + +const ts = @import("tree-sitter"); +const root = @import("tree-sitter-asm"); +const Language = ts.Language; +const Parser = ts.Parser; + +test "can load grammar" { + const parser = Parser.create(); + defer parser.destroy(); + + const lang: *const ts.Language = Language.fromRaw(root.language()); + defer lang.destroy(); + + try testing.expectEqual(void{}, parser.setLanguage(lang)); + try testing.expectEqual(lang, parser.getLanguage()); +} diff --git a/build.zig b/build.zig new file mode 100644 index 00000000..361c7dd8 --- /dev/null +++ b/build.zig @@ -0,0 +1,93 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const shared = b.option(bool, "build-shared", "Build a shared library") orelse true; + const reuse_alloc = b.option(bool, "reuse-allocator", "Reuse the library allocator") orelse false; + + const library_name = "tree-sitter-asm"; + + const lib: *std.Build.Step.Compile = b.addLibrary(.{ + .name = library_name, + .linkage = if (shared) .dynamic else .static, + .root_module = b.createModule(.{ + .target = target, + .optimize = optimize, + .link_libc = true, + .pic = if (shared) true else null, + }), + }); + + lib.addCSourceFile(.{ + .file = b.path("src/parser.c"), + .flags = &.{"-std=c11"}, + }); + if (fileExists(b, "src/scanner.c")) { + lib.addCSourceFile(.{ + .file = b.path("src/scanner.c"), + .flags = &.{"-std=c11"}, + }); + } + + if (reuse_alloc) { + lib.root_module.addCMacro("TREE_SITTER_REUSE_ALLOCATOR", ""); + } + if (optimize == .Debug) { + lib.root_module.addCMacro("TREE_SITTER_DEBUG", ""); + } + + lib.addIncludePath(b.path("src")); + + b.installArtifact(lib); + b.installFile("src/node-types.json", "node-types.json"); + + if (fileExists(b, "queries")) { + b.installDirectory(.{ + .source_dir = b.path("queries"), + .install_dir = .prefix, + .install_subdir = "queries", + .include_extensions = &.{"scm"}, + }); + } + + const module = b.addModule(library_name, .{ + .root_source_file = b.path("bindings/zig/root.zig"), + .target = target, + .optimize = optimize, + }); + module.linkLibrary(lib); + + const tests = b.addTest(.{ + .root_module = b.createModule(.{ + .root_source_file = b.path("bindings/zig/test.zig"), + .target = target, + .optimize = optimize, + }), + }); + tests.root_module.addImport(library_name, module); + + // HACK: fetch tree-sitter dependency only when testing this module + if (b.pkg_hash.len == 0) { + var args = try std.process.argsWithAllocator(b.allocator); + defer args.deinit(); + while (args.next()) |a| { + if (std.mem.eql(u8, a, "test")) { + const ts_dep = b.lazyDependency("tree_sitter", .{}) orelse continue; + tests.root_module.addImport("tree-sitter", ts_dep.module("tree-sitter")); + break; + } + } + } + + const run_tests = b.addRunArtifact(tests); + const test_step = b.step("test", "Run unit tests"); + test_step.dependOn(&run_tests.step); +} + +inline fn fileExists(b: *std.Build, filename: []const u8) bool { + const dir = b.build_root.handle; + dir.access(filename, .{}) catch return false; + return true; +} diff --git a/build.zig.zon b/build.zig.zon new file mode 100644 index 00000000..8dbe6826 --- /dev/null +++ b/build.zig.zon @@ -0,0 +1,21 @@ +.{ + .name = .tree_sitter_asm, + .fingerprint = 0xf35b56342547dca7, + .version = "0.24.0", + .dependencies = .{ + .tree_sitter = .{ + .url = "git+https://github.com/tree-sitter/zig-tree-sitter#b4b72c903e69998fc88e27e154a5e3cc9166551b", + .hash = "tree_sitter-0.25.0-8heIf51vAQConvVIgvm-9mVIbqh7yabZYqPXfOpS3YoG", + .lazy = true, + }, + }, + .paths = .{ + "build.zig", + "build.zig.zon", + "bindings/zig", + "src", + "queries", + "LICENSE", + "README.md", + }, +} diff --git a/go.mod b/go.mod index eecba84f..c8215b83 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/RubixDev/tree-sitter-asm +module github.com/Neptunium931/tree-sitter-asm go 1.22 diff --git a/grammar.js b/grammar.js index 6e4f80d7..6717a4b2 100644 --- a/grammar.js +++ b/grammar.js @@ -10,10 +10,19 @@ module.exports = grammar({ $._expr, $._tc_expr, ], + [ + $._ptr_expr, + $.ptr, + $._ptr_index_scale, + ], + [ + $._ptr_expr, + $._ptr_index_scale + ] ], rules: { - program: $ => sep(repeat1('\n'), $._item), + program: $ => repeatSep(repeat1('\n'), $._item), _item: $ => choice( $.meta, @@ -26,7 +35,11 @@ module.exports = grammar({ seq( field('kind', $.meta_ident), optional(choice( - $.ident, + seq( + $.ident, // macro name + optional(seq($._macro_arg, repeat(seq(',', $._macro_arg)))) + ), + $.op_expr, seq($.int, repeat(seq(',', $.int))), seq($.float, repeat(seq(',', $.float))), seq($.string, repeat(seq(',', $.string))), @@ -45,8 +58,8 @@ module.exports = grammar({ ), ), const: $ => seq('const', field('name', $.word), field('value', $._tc_expr)), - instruction: $ => seq(field('kind', $.word), choice(sep(',', $._expr), repeat($._tc_expr))), - _expr: $ => choice($.ptr, $.ident, $.int, $.string, $.float, $.list), + instruction: $ => seq(field('kind', $.word), choice(repeatSep(',', $._expr), repeat($._tc_expr))), + _expr: $ => choice($.ptr, $.ident, $.int, $.string, $.float, $.list, seq(choiceBetweenCase('offset'), $.word)), // ARMv7 list: $ => @@ -56,19 +69,49 @@ module.exports = grammar({ '}' ), + _ptr_index_scale: $ => + seq( + field('index', $.reg), + optional(seq( + field('multiplication', '*'), + field('scale', choice($.int, $.word)) + )) + ), + _ptr_expr: $ => + choice( + seq( + field('base', $.reg), + optional(field('signe', choice('+', '-'))), + optional($._ptr_index_scale), + ), + seq( + $._ptr_index_scale, + optional(field('signe', choice('+', '-'))), + optional(field('base', $.reg)), + ), + ), ptr: $ => choice( + // Intel seq( optional(seq(choice('byte', 'word', 'dword', 'qword'), 'ptr')), '[', - $.reg, - optional(seq(choice('+', '-'), choice($.int, $.ident))), + $._ptr_expr, ']', ), + // AT&T + // DISP(BASE, INDEX, SCALE) seq( - optional($.int), + field('disp', optional($.int)), '(', - $.reg, + choice( + $.reg, + sep(',', + field('base', optional($.reg)), + field('index', $.reg), + field('scale', optional(choice('1', '2', '4', '8'))), + ), + ), ')', ), seq( @@ -115,9 +158,9 @@ module.exports = grammar({ ), int: $ => { - const _int = /-?([0-9][0-9_]*|(0x|\$)[0-9A-Fa-f][0-9A-Fa-f_]*|0b[01][01_]*)/ + const _int = /([0-9][0-9_]*|(0x|\$)[0-9A-Fa-f][0-9A-Fa-f_]*|0b[01][01_]*)/ return choice( - seq('#', token.immediate(_int)), + seq(optional(choice('#', '$')), optional($.prefix_operator), token.immediate(_int)), _int, ) }, @@ -126,15 +169,24 @@ module.exports = grammar({ choice( /"[^"]*"/, /'[^']*'/ - ), + ), - word: $ => /[a-zA-Z0-9_]+/, + word: $ => /[\\a-zA-Z0-9_]+/, _reg: $ => /%?[a-z0-9]+/, address: $ => /[=\$][a-zA-Z0-9_]+/, // GAS x86 address reg: $ => choice($._reg, $.word, $.address), meta_ident: $ => /\.[a-z_]+/, _ident: $ => /[a-zA-Z_0-9.]+/, ident: $ => choice($._ident, $.meta_ident, $.reg), + _macro_arg_value: $ => choice($.int, $.float, $.string, $.ident), + _macro_arg: $ => seq($.ident, optional(seq("=", $._macro_arg_value))), + prefix_operator: $ => /[~-]/, + infix_operator: $ => /[\/%*<>|&^!+-]|<<|>>/, + op_expr: $ => seq( + field('lhs', $._expr), + field('op', $.infix_operator), + field('rhs', choice($._expr, $.op_expr)), + ), line_comment: $ => choice( @@ -150,6 +202,20 @@ module.exports = grammar({ }, }) -function sep(separator, rule) { +function repeatSep(separator, rule) { return optional(seq(rule, repeat(seq(separator, rule)), optional(separator))) } +function choiceBetweenCase(...values) { + return choice( + ...values.flatMap(v => [String(v).toLowerCase(), String(v).toUpperCase()]) + ); +} + +function sep(separator, ...rules) { + if (rules.length === 0) return optional(); + let parts = [rules[0]]; + for (let i = 1; i < rules.length; i++) { + parts.push(separator, rules[i]); + } + return seq(...parts); +} diff --git a/package.json b/package.json index 07a92253..ccb70ca8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tree-sitter-asm", - "version": "0.1.0", + "version": "0.24.0", "description": "assembly grammar for tree-sitter", "main": "bindings/node", "types": "bindings/node", @@ -12,7 +12,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/RubixDev/tree-sitter-asm" + "url": "https://github.com/Neptunium931/tree-sitter-asm" }, "keywords": [ "parser", @@ -28,6 +28,12 @@ ], "author": "RubixDev", "license": "MIT", + "maintainers": [ + { + "name": "Tymothé BILLEREY", + "email": "tymothe_billerey@fastmail.fr" + } + ], "dependencies": { "node-addon-api": "^7.1.0", "node-gyp-build": "^4.8.0" diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..322e9ced --- /dev/null +++ b/pom.xml @@ -0,0 +1,152 @@ + + + 4.0.0 + io.github.tree-sitter + jtreesitter-asm + JTreeSitter Asm + 0.24.0 + assembly grammar for tree-sitter + https://github.com/neptunium931/tree-sitter-asm + + + MIT + https://spdx.org/licenses/MIT.html + + + + + RubixDev + + + + https://github.com/neptunium931/tree-sitter-asm + scm:git:git://github.com/neptunium931/tree-sitter-asm.git + scm:git:ssh://github.com/neptunium931/tree-sitter-asm.git + + + 23 + UTF-8 + true + true + false + true + + + + io.github.tree-sitter + jtreesitter + 0.26.0 + true + + + org.junit.jupiter + junit-jupiter-api + 6.0.1 + test + + + + bindings/java/main + bindings/java/test + + + maven-surefire-plugin + 3.5.4 + + + ${project.build.directory}/reports/surefire + + --enable-native-access=ALL-UNNAMED + + + + maven-javadoc-plugin + 3.12.0 + + + + jar + + + + + public + true + true + all,-missing + + + + maven-source-plugin + 3.3.1 + + + + jar-no-fork + + + + + + maven-gpg-plugin + 3.2.8 + + + verify + + sign + + + true + + --no-tty + --pinentry-mode + loopback + + + + + + + io.github.mavenplugins + central-publishing-maven-plugin + 1.1.1 + + + deploy + + publish + + + validated + ${publish.auto} + ${publish.skip} + ${project.artifactId}-${project.version}.zip + ${project.artifactId}-${project.version}.zip + + + + true + + + + + + ci + + + env.CI + true + + + + false + true + false + + + + diff --git a/pyproject.toml b/pyproject.toml index b3e01492..352f4054 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "tree-sitter-asm" description = "assembly grammar for tree-sitter" -version = "0.1.0" +version = "0.24.0" keywords = ["incremental", "parsing", "tree-sitter", "asm"] classifiers = [ "Intended Audience :: Developers", @@ -13,13 +13,16 @@ classifiers = [ "Topic :: Text Processing :: Linguistic", "Typing :: Typed", ] -authors = [{ name = "RubixDev" }] +authors = [ + { name = "RubixDev" }, + { name = "Tymothé BILLEREY", email = "tymothe_billerey@fastmail.fr" }, +] requires-python = ">=3.9" license.text = "MIT" readme = "README.md" [project.urls] -Homepage = "https://github.com/RubixDev/tree-sitter-asm" +Homepage = "https://github.com/Neptunium931/tree-sitter-asm" [project.optional-dependencies] core = ["tree-sitter~=0.22"] diff --git a/queries/asm/highlights.scm b/queries/asm/highlights.scm index 28664a3a..892a888f 100644 --- a/queries/asm/highlights.scm +++ b/queries/asm/highlights.scm @@ -48,8 +48,11 @@ "|" "^" "&" + "!" ] @operator +(infix_operator) @operator + [ "(" ")" diff --git a/src/grammar.json b/src/grammar.json index a75664ba..2b573a08 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1,4 +1,5 @@ { + "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "asm", "rules": { "program": { @@ -90,9 +91,51 @@ { "type": "CHOICE", "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "ident" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_macro_arg" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_macro_arg" + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, { "type": "SYMBOL", - "name": "ident" + "name": "op_expr" }, { "type": "SEQ", @@ -391,6 +434,28 @@ { "type": "SYMBOL", "name": "list" + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "offset" + }, + { + "type": "STRING", + "value": "OFFSET" + } + ] + }, + { + "type": "SYMBOL", + "name": "word" + } + ] } ] }, @@ -561,26 +626,105 @@ { "type": "SEQ", "members": [ + { + "type": "FIELD", + "name": "disp", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "int" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "STRING", + "value": "(" + }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", - "name": "int" + "name": "reg" }, { - "type": "BLANK" + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "base", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "reg" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "index", + "content": { + "type": "SYMBOL", + "name": "reg" + } + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "scale", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "1" + }, + { + "type": "STRING", + "value": "2" + }, + { + "type": "STRING", + "value": "4" + }, + { + "type": "STRING", + "value": "8" + } + ] + }, + { + "type": "BLANK" + } + ] + } + } + ] } ] }, - { - "type": "STRING", - "value": "(" - }, - { - "type": "SYMBOL", - "name": "reg" - }, { "type": "STRING", "value": ")" @@ -961,21 +1105,50 @@ "type": "SEQ", "members": [ { - "type": "STRING", - "value": "#" + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "#" + }, + { + "type": "STRING", + "value": "$" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "prefix_operator" + }, + { + "type": "BLANK" + } + ] }, { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", - "value": "-?([0-9][0-9_]*|(0x|\\$)[0-9A-Fa-f][0-9A-Fa-f_]*|0b[01][01_]*)" + "value": "([0-9][0-9_]*|(0x|\\$)[0-9A-Fa-f][0-9A-Fa-f_]*|0b[01][01_]*)" } } ] }, { "type": "PATTERN", - "value": "-?([0-9][0-9_]*|(0x|\\$)[0-9A-Fa-f][0-9A-Fa-f_]*|0b[01][01_]*)" + "value": "([0-9][0-9_]*|(0x|\\$)[0-9A-Fa-f][0-9A-Fa-f_]*|0b[01][01_]*)" } ] }, @@ -998,7 +1171,7 @@ }, "word": { "type": "PATTERN", - "value": "[a-zA-Z0-9_]+" + "value": "[\\\\a-zA-Z0-9_]+" }, "_reg": { "type": "PATTERN", @@ -1050,6 +1223,103 @@ } ] }, + "_macro_arg_value": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "int" + }, + { + "type": "SYMBOL", + "name": "float" + }, + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "ident" + } + ] + }, + "_macro_arg": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "ident" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_macro_arg_value" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "prefix_operator": { + "type": "PATTERN", + "value": "[~-]" + }, + "infix_operator": { + "type": "PATTERN", + "value": "[\\/%*<>|&^!+-]|<<|>>" + }, + "op_expr": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "SYMBOL", + "name": "infix_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "op_expr" + } + ] + } + } + ] + }, "line_comment": { "type": "CHOICE", "members": [ @@ -1119,5 +1389,6 @@ "precedences": [], "externals": [], "inline": [], - "supertypes": [] -} + "supertypes": [], + "reserved": {} +} \ No newline at end of file diff --git a/src/node-types.json b/src/node-types.json index 80b1f8e6..5ff29ced 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -102,6 +102,10 @@ { "type": "tc_infix", "named": true + }, + { + "type": "word", + "named": true } ] } @@ -109,7 +113,17 @@ { "type": "int", "named": true, - "fields": {} + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "prefix_operator", + "named": true + } + ] + } }, { "type": "label", @@ -148,6 +162,7 @@ { "type": "line_comment", "named": true, + "extra": true, "fields": {} }, { @@ -196,6 +211,10 @@ "type": "int", "named": true }, + { + "type": "op_expr", + "named": true + }, { "type": "string", "named": true @@ -203,9 +222,114 @@ ] } }, + { + "type": "op_expr", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "OFFSET", + "named": false + }, + { + "type": "float", + "named": true + }, + { + "type": "ident", + "named": true + }, + { + "type": "int", + "named": true + }, + { + "type": "list", + "named": true + }, + { + "type": "offset", + "named": false + }, + { + "type": "ptr", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "word", + "named": true + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "infix_operator", + "named": true + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "OFFSET", + "named": false + }, + { + "type": "float", + "named": true + }, + { + "type": "ident", + "named": true + }, + { + "type": "int", + "named": true + }, + { + "type": "list", + "named": true + }, + { + "type": "offset", + "named": false + }, + { + "type": "op_expr", + "named": true + }, + { + "type": "ptr", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "word", + "named": true + } + ] + } + } + }, { "type": "program", "named": true, + "root": true, "fields": {}, "children": { "multiple": true, @@ -233,10 +357,63 @@ { "type": "ptr", "named": true, - "fields": {}, + "fields": { + "base": { + "multiple": false, + "required": false, + "types": [ + { + "type": "reg", + "named": true + } + ] + }, + "disp": { + "multiple": false, + "required": false, + "types": [ + { + "type": "int", + "named": true + } + ] + }, + "index": { + "multiple": false, + "required": false, + "types": [ + { + "type": "reg", + "named": true + } + ] + }, + "scale": { + "multiple": false, + "required": false, + "types": [ + { + "type": "1", + "named": false + }, + { + "type": "2", + "named": false + }, + { + "type": "4", + "named": false + }, + { + "type": "8", + "named": false + } + ] + } + }, "children": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "ident", @@ -377,6 +554,10 @@ "type": "#", "named": false }, + { + "type": "$", + "named": false + }, { "type": "%", "named": false @@ -413,10 +594,34 @@ "type": "/", "named": false }, + { + "type": "1", + "named": false + }, + { + "type": "2", + "named": false + }, + { + "type": "4", + "named": false + }, + { + "type": "8", + "named": false + }, { "type": ":", "named": false }, + { + "type": "=", + "named": false + }, + { + "type": "OFFSET", + "named": false + }, { "type": "[", "named": false @@ -435,7 +640,8 @@ }, { "type": "block_comment", - "named": true + "named": true, + "extra": true }, { "type": "byte", @@ -453,6 +659,10 @@ "type": "float", "named": true }, + { + "type": "infix_operator", + "named": true + }, { "type": "label", "named": false @@ -461,6 +671,14 @@ "type": "meta_ident", "named": true }, + { + "type": "offset", + "named": false + }, + { + "type": "prefix_operator", + "named": true + }, { "type": "ptr", "named": false diff --git a/src/parser.c b/src/parser.c index 3a8c319c..acbb2d06 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,19 +1,23 @@ +/* Automatically @generated by tree-sitter */ + #include "tree_sitter/parser.h" #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif -#define LANGUAGE_VERSION 14 -#define STATE_COUNT 137 -#define LARGE_STATE_COUNT 3 -#define SYMBOL_COUNT 65 +#define LANGUAGE_VERSION 15 +#define STATE_COUNT 195 +#define LARGE_STATE_COUNT 2 +#define SYMBOL_COUNT 79 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 41 +#define TOKEN_COUNT 51 #define EXTERNAL_TOKEN_COUNT 0 -#define FIELD_COUNT 6 -#define MAX_ALIAS_SEQUENCE_LENGTH 7 -#define PRODUCTION_ID_COUNT 6 +#define FIELD_COUNT 10 +#define MAX_ALIAS_SEQUENCE_LENGTH 8 +#define MAX_RESERVED_WORD_SET_SIZE 0 +#define PRODUCTION_ID_COUNT 15 +#define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { anon_sym_LF = 1, @@ -23,63 +27,77 @@ enum ts_symbol_identifiers { anon_sym_RPAREN = 5, anon_sym_label = 6, anon_sym_const = 7, - anon_sym_LBRACE = 8, - anon_sym_DASH = 9, - anon_sym_RBRACE = 10, - anon_sym_byte = 11, - anon_sym_word = 12, - anon_sym_dword = 13, - anon_sym_qword = 14, - anon_sym_ptr = 15, - anon_sym_LBRACK = 16, - anon_sym_PLUS = 17, - anon_sym_RBRACK = 18, - anon_sym_STAR = 19, - anon_sym_rel = 20, - anon_sym_BANG = 21, - anon_sym_SLASH = 22, - anon_sym_PERCENT = 23, - anon_sym_PIPE = 24, - anon_sym_CARET = 25, - anon_sym_AMP = 26, - anon_sym_POUND = 27, - aux_sym_int_token1 = 28, - aux_sym_int_token2 = 29, - sym_float = 30, - aux_sym_string_token1 = 31, - aux_sym_string_token2 = 32, - sym_word = 33, - sym__reg = 34, - sym_address = 35, - sym_meta_ident = 36, - sym__ident = 37, - aux_sym_line_comment_token1 = 38, - aux_sym_line_comment_token2 = 39, - sym_block_comment = 40, - sym_program = 41, - sym__item = 42, - sym_meta = 43, - sym_label = 44, - sym_const = 45, - sym_instruction = 46, - sym__expr = 47, - sym_list = 48, - sym_ptr = 49, - sym__tc_expr = 50, - sym_tc_infix = 51, - sym_int = 52, - sym_string = 53, - sym_reg = 54, - sym_ident = 55, - sym_line_comment = 56, - aux_sym_program_repeat1 = 57, - aux_sym_program_repeat2 = 58, - aux_sym_meta_repeat1 = 59, - aux_sym_meta_repeat2 = 60, - aux_sym_meta_repeat3 = 61, - aux_sym_instruction_repeat1 = 62, - aux_sym_instruction_repeat2 = 63, - aux_sym_list_repeat1 = 64, + anon_sym_offset = 8, + anon_sym_OFFSET = 9, + anon_sym_LBRACE = 10, + anon_sym_DASH = 11, + anon_sym_RBRACE = 12, + anon_sym_byte = 13, + anon_sym_word = 14, + anon_sym_dword = 15, + anon_sym_qword = 16, + anon_sym_ptr = 17, + anon_sym_LBRACK = 18, + anon_sym_PLUS = 19, + anon_sym_RBRACK = 20, + anon_sym_1 = 21, + anon_sym_2 = 22, + anon_sym_4 = 23, + anon_sym_8 = 24, + anon_sym_STAR = 25, + anon_sym_rel = 26, + anon_sym_BANG = 27, + anon_sym_SLASH = 28, + anon_sym_PERCENT = 29, + anon_sym_PIPE = 30, + anon_sym_CARET = 31, + anon_sym_AMP = 32, + anon_sym_POUND = 33, + anon_sym_DOLLAR = 34, + aux_sym_int_token1 = 35, + aux_sym_int_token2 = 36, + sym_float = 37, + aux_sym_string_token1 = 38, + aux_sym_string_token2 = 39, + sym_word = 40, + sym__reg = 41, + sym_address = 42, + sym_meta_ident = 43, + sym__ident = 44, + anon_sym_EQ = 45, + sym_prefix_operator = 46, + sym_infix_operator = 47, + aux_sym_line_comment_token1 = 48, + aux_sym_line_comment_token2 = 49, + sym_block_comment = 50, + sym_program = 51, + sym__item = 52, + sym_meta = 53, + sym_label = 54, + sym_const = 55, + sym_instruction = 56, + sym__expr = 57, + sym_list = 58, + sym_ptr = 59, + sym__tc_expr = 60, + sym_tc_infix = 61, + sym_int = 62, + sym_string = 63, + sym_reg = 64, + sym_ident = 65, + sym__macro_arg_value = 66, + sym__macro_arg = 67, + sym_op_expr = 68, + sym_line_comment = 69, + aux_sym_program_repeat1 = 70, + aux_sym_program_repeat2 = 71, + aux_sym_meta_repeat1 = 72, + aux_sym_meta_repeat2 = 73, + aux_sym_meta_repeat3 = 74, + aux_sym_meta_repeat4 = 75, + aux_sym_instruction_repeat1 = 76, + aux_sym_instruction_repeat2 = 77, + aux_sym_list_repeat1 = 78, }; static const char * const ts_symbol_names[] = { @@ -91,6 +109,8 @@ static const char * const ts_symbol_names[] = { [anon_sym_RPAREN] = ")", [anon_sym_label] = "label", [anon_sym_const] = "const", + [anon_sym_offset] = "offset", + [anon_sym_OFFSET] = "OFFSET", [anon_sym_LBRACE] = "{", [anon_sym_DASH] = "-", [anon_sym_RBRACE] = "}", @@ -102,6 +122,10 @@ static const char * const ts_symbol_names[] = { [anon_sym_LBRACK] = "[", [anon_sym_PLUS] = "+", [anon_sym_RBRACK] = "]", + [anon_sym_1] = "1", + [anon_sym_2] = "2", + [anon_sym_4] = "4", + [anon_sym_8] = "8", [anon_sym_STAR] = "*", [anon_sym_rel] = "rel", [anon_sym_BANG] = "!", @@ -111,6 +135,7 @@ static const char * const ts_symbol_names[] = { [anon_sym_CARET] = "^", [anon_sym_AMP] = "&", [anon_sym_POUND] = "#", + [anon_sym_DOLLAR] = "$", [aux_sym_int_token1] = "int_token1", [aux_sym_int_token2] = "int_token2", [sym_float] = "float", @@ -121,6 +146,9 @@ static const char * const ts_symbol_names[] = { [sym_address] = "address", [sym_meta_ident] = "meta_ident", [sym__ident] = "_ident", + [anon_sym_EQ] = "=", + [sym_prefix_operator] = "prefix_operator", + [sym_infix_operator] = "infix_operator", [aux_sym_line_comment_token1] = "line_comment_token1", [aux_sym_line_comment_token2] = "line_comment_token2", [sym_block_comment] = "block_comment", @@ -139,12 +167,16 @@ static const char * const ts_symbol_names[] = { [sym_string] = "string", [sym_reg] = "reg", [sym_ident] = "ident", + [sym__macro_arg_value] = "_macro_arg_value", + [sym__macro_arg] = "_macro_arg", + [sym_op_expr] = "op_expr", [sym_line_comment] = "line_comment", [aux_sym_program_repeat1] = "program_repeat1", [aux_sym_program_repeat2] = "program_repeat2", [aux_sym_meta_repeat1] = "meta_repeat1", [aux_sym_meta_repeat2] = "meta_repeat2", [aux_sym_meta_repeat3] = "meta_repeat3", + [aux_sym_meta_repeat4] = "meta_repeat4", [aux_sym_instruction_repeat1] = "instruction_repeat1", [aux_sym_instruction_repeat2] = "instruction_repeat2", [aux_sym_list_repeat1] = "list_repeat1", @@ -159,6 +191,8 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_RPAREN] = anon_sym_RPAREN, [anon_sym_label] = anon_sym_label, [anon_sym_const] = anon_sym_const, + [anon_sym_offset] = anon_sym_offset, + [anon_sym_OFFSET] = anon_sym_OFFSET, [anon_sym_LBRACE] = anon_sym_LBRACE, [anon_sym_DASH] = anon_sym_DASH, [anon_sym_RBRACE] = anon_sym_RBRACE, @@ -170,6 +204,10 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_LBRACK] = anon_sym_LBRACK, [anon_sym_PLUS] = anon_sym_PLUS, [anon_sym_RBRACK] = anon_sym_RBRACK, + [anon_sym_1] = anon_sym_1, + [anon_sym_2] = anon_sym_2, + [anon_sym_4] = anon_sym_4, + [anon_sym_8] = anon_sym_8, [anon_sym_STAR] = anon_sym_STAR, [anon_sym_rel] = anon_sym_rel, [anon_sym_BANG] = anon_sym_BANG, @@ -179,6 +217,7 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_CARET] = anon_sym_CARET, [anon_sym_AMP] = anon_sym_AMP, [anon_sym_POUND] = anon_sym_POUND, + [anon_sym_DOLLAR] = anon_sym_DOLLAR, [aux_sym_int_token1] = aux_sym_int_token1, [aux_sym_int_token2] = aux_sym_int_token2, [sym_float] = sym_float, @@ -189,6 +228,9 @@ static const TSSymbol ts_symbol_map[] = { [sym_address] = sym_address, [sym_meta_ident] = sym_meta_ident, [sym__ident] = sym__ident, + [anon_sym_EQ] = anon_sym_EQ, + [sym_prefix_operator] = sym_prefix_operator, + [sym_infix_operator] = sym_infix_operator, [aux_sym_line_comment_token1] = aux_sym_line_comment_token1, [aux_sym_line_comment_token2] = aux_sym_line_comment_token2, [sym_block_comment] = sym_block_comment, @@ -207,12 +249,16 @@ static const TSSymbol ts_symbol_map[] = { [sym_string] = sym_string, [sym_reg] = sym_reg, [sym_ident] = sym_ident, + [sym__macro_arg_value] = sym__macro_arg_value, + [sym__macro_arg] = sym__macro_arg, + [sym_op_expr] = sym_op_expr, [sym_line_comment] = sym_line_comment, [aux_sym_program_repeat1] = aux_sym_program_repeat1, [aux_sym_program_repeat2] = aux_sym_program_repeat2, [aux_sym_meta_repeat1] = aux_sym_meta_repeat1, [aux_sym_meta_repeat2] = aux_sym_meta_repeat2, [aux_sym_meta_repeat3] = aux_sym_meta_repeat3, + [aux_sym_meta_repeat4] = aux_sym_meta_repeat4, [aux_sym_instruction_repeat1] = aux_sym_instruction_repeat1, [aux_sym_instruction_repeat2] = aux_sym_instruction_repeat2, [aux_sym_list_repeat1] = aux_sym_list_repeat1, @@ -251,6 +297,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_offset] = { + .visible = true, + .named = false, + }, + [anon_sym_OFFSET] = { + .visible = true, + .named = false, + }, [anon_sym_LBRACE] = { .visible = true, .named = false, @@ -295,6 +349,22 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_1] = { + .visible = true, + .named = false, + }, + [anon_sym_2] = { + .visible = true, + .named = false, + }, + [anon_sym_4] = { + .visible = true, + .named = false, + }, + [anon_sym_8] = { + .visible = true, + .named = false, + }, [anon_sym_STAR] = { .visible = true, .named = false, @@ -331,6 +401,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_DOLLAR] = { + .visible = true, + .named = false, + }, [aux_sym_int_token1] = { .visible = false, .named = false, @@ -371,6 +445,18 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = true, }, + [anon_sym_EQ] = { + .visible = true, + .named = false, + }, + [sym_prefix_operator] = { + .visible = true, + .named = true, + }, + [sym_infix_operator] = { + .visible = true, + .named = true, + }, [aux_sym_line_comment_token1] = { .visible = false, .named = false, @@ -443,6 +529,18 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym__macro_arg_value] = { + .visible = false, + .named = true, + }, + [sym__macro_arg] = { + .visible = false, + .named = true, + }, + [sym_op_expr] = { + .visible = true, + .named = true, + }, [sym_line_comment] = { .visible = true, .named = true, @@ -467,6 +565,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, + [aux_sym_meta_repeat4] = { + .visible = false, + .named = false, + }, [aux_sym_instruction_repeat1] = { .visible = false, .named = false, @@ -482,29 +584,46 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { }; enum ts_field_identifiers { - field_kind = 1, - field_lhs = 2, - field_name = 3, - field_op = 4, - field_rhs = 5, - field_value = 6, + field_base = 1, + field_disp = 2, + field_index = 3, + field_kind = 4, + field_lhs = 5, + field_name = 6, + field_op = 7, + field_rhs = 8, + field_scale = 9, + field_value = 10, }; static const char * const ts_field_names[] = { [0] = NULL, + [field_base] = "base", + [field_disp] = "disp", + [field_index] = "index", [field_kind] = "kind", [field_lhs] = "lhs", [field_name] = "name", [field_op] = "op", [field_rhs] = "rhs", + [field_scale] = "scale", [field_value] = "value", }; -static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { +static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [1] = {.index = 0, .length = 1}, [2] = {.index = 1, .length = 1}, [4] = {.index = 2, .length = 2}, [5] = {.index = 4, .length = 3}, + [6] = {.index = 7, .length = 1}, + [7] = {.index = 8, .length = 1}, + [8] = {.index = 9, .length = 2}, + [9] = {.index = 11, .length = 2}, + [10] = {.index = 13, .length = 2}, + [11] = {.index = 15, .length = 3}, + [12] = {.index = 18, .length = 3}, + [13] = {.index = 21, .length = 3}, + [14] = {.index = 24, .length = 4}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -519,6 +638,36 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_lhs, 0}, {field_op, 1}, {field_rhs, 2}, + [7] = + {field_disp, 0}, + [8] = + {field_index, 2}, + [9] = + {field_index, 2}, + {field_scale, 4}, + [11] = + {field_base, 1}, + {field_index, 3}, + [13] = + {field_disp, 0}, + {field_index, 3}, + [15] = + {field_base, 1}, + {field_index, 3}, + {field_scale, 5}, + [18] = + {field_disp, 0}, + {field_index, 3}, + {field_scale, 5}, + [21] = + {field_base, 2}, + {field_disp, 0}, + {field_index, 4}, + [24] = + {field_base, 2}, + {field_disp, 0}, + {field_index, 4}, + {field_scale, 6}, }; static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { @@ -562,45 +711,45 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [26] = 26, [27] = 27, [28] = 28, - [29] = 26, - [30] = 25, - [31] = 24, - [32] = 32, - [33] = 27, - [34] = 28, - [35] = 9, - [36] = 8, - [37] = 37, - [38] = 38, - [39] = 6, - [40] = 11, + [29] = 29, + [30] = 30, + [31] = 31, + [32] = 27, + [33] = 33, + [34] = 33, + [35] = 29, + [36] = 30, + [37] = 26, + [38] = 15, + [39] = 39, + [40] = 40, [41] = 41, - [42] = 12, - [43] = 17, - [44] = 19, - [45] = 16, - [46] = 46, - [47] = 13, - [48] = 14, - [49] = 15, - [50] = 50, - [51] = 51, - [52] = 52, - [53] = 53, + [42] = 42, + [43] = 43, + [44] = 16, + [45] = 45, + [46] = 16, + [47] = 15, + [48] = 18, + [49] = 10, + [50] = 21, + [51] = 19, + [52] = 12, + [53] = 22, [54] = 54, - [55] = 55, - [56] = 56, - [57] = 57, - [58] = 58, + [55] = 20, + [56] = 23, + [57] = 11, + [58] = 14, [59] = 59, [60] = 60, [61] = 61, [62] = 62, [63] = 63, - [64] = 64, - [65] = 65, + [64] = 12, + [65] = 10, [66] = 66, - [67] = 67, + [67] = 11, [68] = 68, [69] = 69, [70] = 70, @@ -652,7 +801,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [116] = 116, [117] = 117, [118] = 118, - [119] = 119, + [119] = 14, [120] = 120, [121] = 121, [122] = 122, @@ -667,9 +816,67 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [131] = 131, [132] = 132, [133] = 133, - [134] = 125, + [134] = 134, [135] = 135, - [136] = 136, + [136] = 16, + [137] = 137, + [138] = 138, + [139] = 139, + [140] = 140, + [141] = 141, + [142] = 142, + [143] = 143, + [144] = 144, + [145] = 145, + [146] = 146, + [147] = 15, + [148] = 148, + [149] = 149, + [150] = 150, + [151] = 151, + [152] = 152, + [153] = 153, + [154] = 154, + [155] = 155, + [156] = 156, + [157] = 157, + [158] = 149, + [159] = 159, + [160] = 149, + [161] = 161, + [162] = 162, + [163] = 163, + [164] = 164, + [165] = 165, + [166] = 166, + [167] = 167, + [168] = 168, + [169] = 169, + [170] = 170, + [171] = 171, + [172] = 172, + [173] = 173, + [174] = 174, + [175] = 175, + [176] = 176, + [177] = 177, + [178] = 178, + [179] = 179, + [180] = 180, + [181] = 181, + [182] = 182, + [183] = 183, + [184] = 184, + [185] = 185, + [186] = 186, + [187] = 187, + [188] = 168, + [189] = 184, + [190] = 190, + [191] = 168, + [192] = 184, + [193] = 193, + [194] = 194, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -677,4410 +884,6636 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(30); + if (eof) ADVANCE(34); ADVANCE_MAP( - '\n', 31, - '!', 58, - '"', 1, - '#', 65, - '$', 19, - '%', 60, - '&', 64, - '\'', 9, - '(', 34, - ')', 35, - '*', 55, - '+', 53, - ',', 32, - '-', 40, - '.', 147, - '/', 59, - '0', 74, - ':', 33, - ';', 154, - '=', 24, - '[', 52, - ']', 54, - '^', 63, - 'b', 134, - 'c', 110, - 'd', 129, - 'l', 95, - 'p', 125, - 'q', 130, - 'r', 103, - 'w', 112, - '{', 38, - '|', 62, - '}', 41, + '\n', 35, + '!', 76, + '"', 3, + '#', 83, + '$', 85, + '%', 78, + '&', 82, + '\'', 7, + '(', 38, + ')', 39, + '*', 73, + '+', 59, + ',', 36, + '-', 46, + '.', 198, + '/', 77, + '0', 92, + '1', 62, + '2', 65, + '4', 68, + '8', 71, + ':', 37, + ';', 213, + '<', 205, + '=', 200, + '>', 206, + 'O', 129, + '[', 58, + '\\', 193, + ']', 60, + '^', 81, + 'b', 181, + 'c', 153, + 'd', 176, + 'l', 132, + 'o', 147, + 'p', 170, + 'q', 177, + 'r', 140, + 'w', 155, + '{', 45, + '|', 80, + '}', 47, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') SKIP(0); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(77); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == ' ') SKIP(23); + if (('3' <= lookahead && lookahead <= '9')) ADVANCE(95); + if (('A' <= lookahead && lookahead <= '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 1: - if (lookahead == '"') ADVANCE(93); - if (lookahead != 0) ADVANCE(1); + ADVANCE_MAP( + '"', 3, + '#', 83, + '$', 87, + '%', 21, + '\'', 7, + '-', 202, + '.', 198, + '/', 8, + '0', 97, + ';', 213, + '=', 22, + '\\', 193, + '~', 201, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(2); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(98); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); END_STATE(); case 2: ADVANCE_MAP( - '#', 65, - '$', 20, - '-', 6, - '/', 10, - '0', 84, - ';', 154, - 'p', 16, - 'r', 13, + '"', 3, + '#', 83, + '$', 88, + '%', 21, + '\'', 7, + '-', 202, + '.', 198, + '/', 8, + '0', 113, + ';', 213, + '=', 22, + '\\', 193, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(2); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(86); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(114); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); END_STATE(); case 3: - if (lookahead == '#') ADVANCE(65); - if (lookahead == '$') ADVANCE(21); - if (lookahead == '-') ADVANCE(8); - if (lookahead == '/') ADVANCE(10); - if (lookahead == '0') ADVANCE(67); - if (lookahead == ';') ADVANCE(154); - if (lookahead == '\t' || - lookahead == '\r' || - lookahead == ' ') SKIP(5); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(69); + if (lookahead == '"') ADVANCE(125); + if (lookahead != 0) ADVANCE(3); END_STATE(); case 4: - if (lookahead == '#') ADVANCE(65); - if (lookahead == '%') ADVANCE(23); - if (lookahead == '.') ADVANCE(147); - if (lookahead == '/') ADVANCE(10); - if (lookahead == ';') ADVANCE(154); - if (lookahead == '$' || - lookahead == '=') ADVANCE(24); + if (lookahead == '#') ADVANCE(83); + if (lookahead == '$') ADVANCE(85); + if (lookahead == '/') ADVANCE(8); + if (lookahead == '0') ADVANCE(100); + if (lookahead == ';') ADVANCE(213); + if (lookahead == '-' || + lookahead == '~') ADVANCE(201); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') SKIP(4); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == ' ') SKIP(5); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(102); END_STATE(); case 5: - if (lookahead == '#') ADVANCE(65); - if (lookahead == '/') ADVANCE(10); - if (lookahead == ';') ADVANCE(154); + if (lookahead == '#') ADVANCE(83); + if (lookahead == '$') ADVANCE(86); + if (lookahead == '/') ADVANCE(8); + if (lookahead == '0') ADVANCE(116); + if (lookahead == ';') ADVANCE(213); + if (lookahead == '-' || + lookahead == '~') ADVANCE(201); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(5); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(118); END_STATE(); case 6: - if (lookahead == '$') ADVANCE(20); - if (lookahead == '0') ADVANCE(84); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(86); + ADVANCE_MAP( + '#', 83, + '%', 21, + ',', 36, + '/', 8, + ';', 213, + '}', 47, + '$', 22, + '=', 22, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(6); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '\\' || + lookahead == '_') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(192); END_STATE(); case 7: - if (lookahead == '$') ADVANCE(20); - if (lookahead == '0') ADVANCE(82); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(83); + if (lookahead == '\'') ADVANCE(126); + if (lookahead != 0) ADVANCE(7); END_STATE(); case 8: - if (lookahead == '$') ADVANCE(21); - if (lookahead == '0') ADVANCE(67); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(69); + if (lookahead == '*') ADVANCE(10); + if (lookahead == '/') ADVANCE(213); END_STATE(); case 9: - if (lookahead == '\'') ADVANCE(94); - if (lookahead != 0) ADVANCE(9); + if (lookahead == '*') ADVANCE(9); + if (lookahead == '/') ADVANCE(214); + if (lookahead != 0) ADVANCE(10); END_STATE(); case 10: - if (lookahead == '*') ADVANCE(12); - if (lookahead == '/') ADVANCE(154); + if (lookahead == '*') ADVANCE(9); + if (lookahead != 0) ADVANCE(10); END_STATE(); case 11: - if (lookahead == '*') ADVANCE(11); - if (lookahead == '/') ADVANCE(155); - if (lookahead != 0) ADVANCE(12); + if (lookahead == '.') ADVANCE(122); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(11); END_STATE(); case 12: - if (lookahead == '*') ADVANCE(11); - if (lookahead != 0) ADVANCE(12); + if (lookahead == 'e') ADVANCE(13); END_STATE(); case 13: - if (lookahead == 'e') ADVANCE(14); + if (lookahead == 'l') ADVANCE(74); END_STATE(); case 14: - if (lookahead == 'l') ADVANCE(56); + if (lookahead == 'r') ADVANCE(56); END_STATE(); case 15: - if (lookahead == 'r') ADVANCE(50); + if (lookahead == 't') ADVANCE(14); END_STATE(); case 16: - if (lookahead == 't') ADVANCE(15); + if (lookahead == '0' || + lookahead == '1') ADVANCE(101); END_STATE(); case 17: if (lookahead == '0' || - lookahead == '1') ADVANCE(85); + lookahead == '1') ADVANCE(117); END_STATE(); case 18: - if (lookahead == '0' || - lookahead == '1') ADVANCE(68); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(103); END_STATE(); case 19: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(87); - if (('G' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('g' <= lookahead && lookahead <= 'z')) ADVANCE(144); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(119); END_STATE(); case 20: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(88); + if (lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(197); END_STATE(); case 21: if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(70); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(194); END_STATE(); case 22: - if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(146); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(195); END_STATE(); case 23: - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(143); + if (eof) ADVANCE(34); + ADVANCE_MAP( + '\n', 35, + '!', 76, + '"', 3, + '#', 83, + '$', 86, + '%', 78, + '&', 82, + '\'', 7, + '(', 38, + ')', 39, + '*', 73, + '+', 59, + ',', 36, + '-', 46, + '.', 198, + '/', 77, + '0', 108, + '1', 63, + '2', 66, + '4', 69, + '8', 72, + ':', 37, + ';', 213, + '<', 205, + '=', 200, + '>', 206, + 'O', 129, + '[', 58, + '\\', 193, + ']', 60, + '^', 81, + 'b', 181, + 'c', 153, + 'd', 176, + 'l', 132, + 'o', 147, + 'p', 170, + 'q', 177, + 'r', 140, + 'w', 155, + '{', 45, + '|', 80, + '}', 47, + '~', 201, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(23); + if (('3' <= lookahead && lookahead <= '9')) ADVANCE(111); + if (('A' <= lookahead && lookahead <= '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 24: + if (eof) ADVANCE(34); + ADVANCE_MAP( + '\n', 35, + '!', 76, + '#', 83, + ',', 36, + '/', 204, + ';', 213, + '<', 205, + '>', 206, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(24); + if (lookahead == '%' || + lookahead == '&' || + ('*' <= lookahead && lookahead <= '-') || + lookahead == '^' || + lookahead == '|') ADVANCE(203); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '\\' || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(144); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(193); END_STATE(); case 25: - if (eof) ADVANCE(30); + if (eof) ADVANCE(34); ADVANCE_MAP( - '\n', 31, - '"', 1, - '#', 65, - '$', 19, - '%', 23, - '\'', 9, - '(', 34, - '*', 55, - '-', 7, - '.', 147, - '/', 10, - '0', 79, - ':', 33, - ';', 154, - '=', 24, - '[', 52, - 'b', 133, - 'd', 131, - 'q', 132, - 'w', 111, - '{', 38, + '\n', 35, + '"', 3, + '#', 83, + '$', 87, + '%', 21, + '\'', 7, + '(', 38, + '*', 73, + '-', 202, + '.', 198, + '/', 8, + '0', 97, + ':', 37, + ';', 213, + '=', 22, + 'O', 129, + '[', 58, + '\\', 193, + 'b', 180, + 'd', 178, + 'o', 149, + 'q', 179, + 'w', 154, + '{', 45, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') SKIP(25); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(80); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == ' ') SKIP(28); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(98); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + lookahead == '_') ADVANCE(191); END_STATE(); case 26: - if (eof) ADVANCE(30); + if (eof) ADVANCE(34); ADVANCE_MAP( - '\n', 31, - '"', 1, - '#', 65, - '$', 19, - '%', 23, - '\'', 9, - '-', 7, - '.', 147, - '/', 10, - '0', 79, - ':', 33, - ';', 154, - '=', 24, + '\n', 35, + '"', 3, + '#', 83, + '$', 87, + '%', 21, + '\'', 7, + '.', 198, + '/', 8, + '0', 89, + ';', 213, + '=', 22, + '\\', 193, + '-', 201, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') SKIP(26); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(80); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == ' ') SKIP(29); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(90); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + lookahead == '_') ADVANCE(191); END_STATE(); case 27: - if (eof) ADVANCE(30); + if (eof) ADVANCE(34); ADVANCE_MAP( - '\n', 31, - '"', 1, - '#', 65, - '$', 19, - '%', 61, - '&', 64, - '\'', 9, - '(', 34, - '*', 55, - '+', 53, - ',', 32, - '-', 40, - '.', 147, - '/', 59, - '0', 71, - ';', 154, - '=', 24, - '^', 63, - '|', 62, + '\n', 35, + '"', 3, + '#', 83, + '$', 87, + '%', 79, + '&', 82, + '\'', 7, + '(', 38, + '*', 73, + '+', 59, + ',', 36, + '-', 46, + '.', 198, + '/', 77, + '0', 89, + ';', 213, + '=', 22, + '\\', 193, + '^', 81, + '|', 80, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') SKIP(27); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(72); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == ' ') SKIP(30); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(90); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + lookahead == '_') ADVANCE(191); END_STATE(); case 28: - if (eof) ADVANCE(30); + if (eof) ADVANCE(34); ADVANCE_MAP( - '\n', 31, - '#', 65, - '%', 60, - '&', 64, - '(', 34, - ')', 35, - '*', 55, - '+', 53, - ',', 32, - '-', 39, - '.', 147, - '/', 59, - ';', 154, - ']', 54, - '^', 63, - 'c', 110, - 'l', 95, - '|', 62, - '}', 41, + '\n', 35, + '"', 3, + '#', 83, + '$', 88, + '%', 21, + '\'', 7, + '(', 38, + '*', 73, + '-', 202, + '.', 198, + '/', 8, + '0', 113, + ':', 37, + ';', 213, + '=', 22, + 'O', 129, + '[', 58, + '\\', 193, + 'b', 180, + 'd', 178, + 'o', 149, + 'q', 179, + 'w', 154, + '{', 45, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(28); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(114); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); END_STATE(); case 29: - if (eof) ADVANCE(30); + if (eof) ADVANCE(34); ADVANCE_MAP( - '\n', 31, - '#', 65, - '%', 23, - '(', 34, - '.', 22, - '/', 10, - ';', 154, - '}', 41, - '$', 24, - '=', 24, + '\n', 35, + '"', 3, + '#', 83, + '$', 88, + '%', 21, + '\'', 7, + '.', 198, + '/', 8, + '0', 105, + ';', 213, + '=', 22, + '\\', 193, + '-', 201, + '~', 201, ); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(29); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(106); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(142); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(141); + lookahead == '_') ADVANCE(191); END_STATE(); case 30: - ACCEPT_TOKEN(ts_builtin_sym_end); + if (eof) ADVANCE(34); + ADVANCE_MAP( + '\n', 35, + '"', 3, + '#', 83, + '$', 88, + '%', 79, + '&', 82, + '\'', 7, + '(', 38, + '*', 73, + '+', 59, + ',', 36, + '-', 46, + '.', 198, + '/', 77, + '0', 105, + ';', 213, + '=', 22, + '\\', 193, + '^', 81, + '|', 80, + '~', 201, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(30); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(106); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); END_STATE(); case 31: - ACCEPT_TOKEN(anon_sym_LF); + if (eof) ADVANCE(34); + ADVANCE_MAP( + '\n', 35, + '#', 83, + '%', 78, + '&', 82, + '*', 73, + '+', 59, + ',', 36, + '-', 46, + '.', 198, + '/', 77, + ';', 213, + '=', 200, + '\\', 193, + ']', 60, + '^', 81, + 'c', 153, + 'l', 132, + '|', 80, + '}', 47, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(31); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 32: - ACCEPT_TOKEN(anon_sym_COMMA); + if (eof) ADVANCE(34); + ADVANCE_MAP( + '\n', 35, + '#', 83, + '%', 207, + ')', 39, + ',', 36, + '.', 198, + '/', 204, + ';', 213, + '<', 205, + '>', 206, + '\\', 193, + ']', 60, + '$', 22, + '=', 22, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(32); + if (lookahead == '!' || + lookahead == '&' || + ('*' <= lookahead && lookahead <= '-') || + lookahead == '^' || + lookahead == '|') ADVANCE(203); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 33: - ACCEPT_TOKEN(anon_sym_COLON); + if (eof) ADVANCE(34); + ADVANCE_MAP( + '\n', 35, + '#', 83, + '(', 38, + ')', 39, + ',', 36, + '.', 20, + '/', 204, + '1', 61, + '2', 64, + '4', 67, + '8', 70, + ';', 213, + '<', 205, + '>', 206, + ']', 60, + 'p', 15, + 'r', 12, + ); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(33); + if (lookahead == '!' || + lookahead == '%' || + lookahead == '&' || + ('*' <= lookahead && lookahead <= '-') || + lookahead == '^' || + lookahead == '|') ADVANCE(203); END_STATE(); case 34: - ACCEPT_TOKEN(anon_sym_LPAREN); + ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); case 35: - ACCEPT_TOKEN(anon_sym_RPAREN); + ACCEPT_TOKEN(anon_sym_LF); END_STATE(); case 36: - ACCEPT_TOKEN(anon_sym_label); - if (lookahead == '.') ADVANCE(148); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); case 37: - ACCEPT_TOKEN(anon_sym_const); - if (lookahead == '.') ADVANCE(148); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); case 38: - ACCEPT_TOKEN(anon_sym_LBRACE); + ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); case 39: - ACCEPT_TOKEN(anon_sym_DASH); + ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); case 40: - ACCEPT_TOKEN(anon_sym_DASH); - if (lookahead == '$') ADVANCE(20); - if (lookahead == '0') ADVANCE(84); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(86); + ACCEPT_TOKEN(anon_sym_label); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 41: - ACCEPT_TOKEN(anon_sym_RBRACE); + ACCEPT_TOKEN(anon_sym_const); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 42: - ACCEPT_TOKEN(anon_sym_byte); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_offset); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 43: - ACCEPT_TOKEN(anon_sym_byte); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_offset); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 44: - ACCEPT_TOKEN(anon_sym_word); - if (lookahead == '.') ADVANCE(148); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); - END_STATE(); - case 45: - ACCEPT_TOKEN(anon_sym_word); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_OFFSET); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); case 46: - ACCEPT_TOKEN(anon_sym_dword); - if (lookahead == '.') ADVANCE(148); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); case 47: - ACCEPT_TOKEN(anon_sym_dword); - if (lookahead == '.') ADVANCE(148); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); case 48: - ACCEPT_TOKEN(anon_sym_qword); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_byte); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 49: - ACCEPT_TOKEN(anon_sym_qword); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_byte); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 50: - ACCEPT_TOKEN(anon_sym_ptr); + ACCEPT_TOKEN(anon_sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 51: - ACCEPT_TOKEN(anon_sym_ptr); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 52: - ACCEPT_TOKEN(anon_sym_LBRACK); + ACCEPT_TOKEN(anon_sym_dword); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 53: - ACCEPT_TOKEN(anon_sym_PLUS); + ACCEPT_TOKEN(anon_sym_dword); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 54: - ACCEPT_TOKEN(anon_sym_RBRACK); + ACCEPT_TOKEN(anon_sym_qword); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 55: - ACCEPT_TOKEN(anon_sym_STAR); + ACCEPT_TOKEN(anon_sym_qword); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 56: - ACCEPT_TOKEN(anon_sym_rel); + ACCEPT_TOKEN(anon_sym_ptr); END_STATE(); case 57: - ACCEPT_TOKEN(anon_sym_rel); - if (lookahead == '.') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_ptr); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 58: - ACCEPT_TOKEN(anon_sym_BANG); + ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); case 59: - ACCEPT_TOKEN(anon_sym_SLASH); - if (lookahead == '*') ADVANCE(12); - if (lookahead == '/') ADVANCE(154); + ACCEPT_TOKEN(anon_sym_PLUS); END_STATE(); case 60: - ACCEPT_TOKEN(anon_sym_PERCENT); + ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); case 61: - ACCEPT_TOKEN(anon_sym_PERCENT); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(143); + ACCEPT_TOKEN(anon_sym_1); END_STATE(); case 62: - ACCEPT_TOKEN(anon_sym_PIPE); + ACCEPT_TOKEN(anon_sym_1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(95); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 63: - ACCEPT_TOKEN(anon_sym_CARET); + ACCEPT_TOKEN(anon_sym_1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(111); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 64: - ACCEPT_TOKEN(anon_sym_AMP); + ACCEPT_TOKEN(anon_sym_2); END_STATE(); case 65: - ACCEPT_TOKEN(anon_sym_POUND); + ACCEPT_TOKEN(anon_sym_2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(95); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 66: - ACCEPT_TOKEN(anon_sym_POUND); - if (lookahead != 0 && - lookahead != '\n') ADVANCE(153); + ACCEPT_TOKEN(anon_sym_2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(111); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 67: - ACCEPT_TOKEN(aux_sym_int_token1); - if (lookahead == 'b') ADVANCE(18); - if (lookahead == 'x') ADVANCE(21); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(69); + ACCEPT_TOKEN(anon_sym_4); END_STATE(); case 68: - ACCEPT_TOKEN(aux_sym_int_token1); - if (lookahead == '0' || - lookahead == '1' || - lookahead == '_') ADVANCE(68); + ACCEPT_TOKEN(anon_sym_4); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(95); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 69: - ACCEPT_TOKEN(aux_sym_int_token1); + ACCEPT_TOKEN(anon_sym_4); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(69); + lookahead == '_') ADVANCE(111); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 70: - ACCEPT_TOKEN(aux_sym_int_token1); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(70); + ACCEPT_TOKEN(anon_sym_8); END_STATE(); case 71: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (lookahead == '_') ADVANCE(77); - if (lookahead == 'b') ADVANCE(136); - if (lookahead == 'x') ADVANCE(137); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(72); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); - if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_8); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(95); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 72: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (lookahead == '_') ADVANCE(77); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(72); - if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(140); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(anon_sym_8); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(111); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 73: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (lookahead == '_') ADVANCE(75); - if (lookahead == '0' || - lookahead == '1') ADVANCE(73); - if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(140); - if (('2' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); case 74: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'b') ADVANCE(135); - if (lookahead == 'x') ADVANCE(138); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(77); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_rel); END_STATE(); case 75: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (lookahead == '0' || - lookahead == '1' || - lookahead == '_') ADVANCE(75); - if (('2' <= lookahead && lookahead <= '9') || + ACCEPT_TOKEN(anon_sym_rel); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 76: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (('A' <= lookahead && lookahead <= 'F') || - lookahead == '_') ADVANCE(78); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(76); - if (('G' <= lookahead && lookahead <= 'Z')) ADVANCE(140); - if (('g' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(anon_sym_BANG); END_STATE(); case 77: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(77); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_SLASH); + if (lookahead == '*') ADVANCE(10); + if (lookahead == '/') ADVANCE(213); END_STATE(); case 78: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(148); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(78); - if (('G' <= lookahead && lookahead <= 'Z') || - ('g' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); case 79: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(89); - if (lookahead == '_') ADVANCE(81); - if (lookahead == 'b') ADVANCE(136); - if (lookahead == 'x') ADVANCE(137); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); - if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_PERCENT); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(194); END_STATE(); case 80: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(89); - if (lookahead == '_') ADVANCE(81); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); - if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(140); - if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(anon_sym_PIPE); END_STATE(); case 81: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(89); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(81); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(anon_sym_CARET); END_STATE(); case 82: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(90); - if (lookahead == 'b') ADVANCE(17); - if (lookahead == 'x') ADVANCE(20); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(83); + ACCEPT_TOKEN(anon_sym_AMP); END_STATE(); case 83: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '.') ADVANCE(90); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(83); + ACCEPT_TOKEN(anon_sym_POUND); END_STATE(); case 84: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == 'b') ADVANCE(17); - if (lookahead == 'x') ADVANCE(20); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(86); + ACCEPT_TOKEN(anon_sym_POUND); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(212); END_STATE(); case 85: - ACCEPT_TOKEN(aux_sym_int_token2); - if (lookahead == '0' || - lookahead == '1' || - lookahead == '_') ADVANCE(85); + ACCEPT_TOKEN(anon_sym_DOLLAR); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(103); END_STATE(); case 86: - ACCEPT_TOKEN(aux_sym_int_token2); + ACCEPT_TOKEN(anon_sym_DOLLAR); if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(86); + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(119); END_STATE(); case 87: - ACCEPT_TOKEN(aux_sym_int_token2); + ACCEPT_TOKEN(anon_sym_DOLLAR); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(87); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); if (('G' <= lookahead && lookahead <= 'Z') || - ('g' <= lookahead && lookahead <= 'z')) ADVANCE(144); + lookahead == '_' || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(195); END_STATE(); case 88: - ACCEPT_TOKEN(aux_sym_int_token2); + ACCEPT_TOKEN(anon_sym_DOLLAR); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(120); + if (('G' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(88); + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(195); END_STATE(); case 89: - ACCEPT_TOKEN(sym_float); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(91); - if (lookahead == '.' || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(148); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(95); + if (lookahead == 'b') ADVANCE(184); + if (lookahead == 'x') ADVANCE(186); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(90); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); END_STATE(); case 90: - ACCEPT_TOKEN(sym_float); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(92); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(95); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(90); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 91: - ACCEPT_TOKEN(sym_float); - if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(91); - if (lookahead == '.' || - ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(148); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(93); + if (lookahead == '0' || + lookahead == '1') ADVANCE(91); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('2' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 92: - ACCEPT_TOKEN(sym_float); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'b') ADVANCE(182); + if (lookahead == 'x') ADVANCE(188); if (('0' <= lookahead && lookahead <= '9') || - lookahead == '_') ADVANCE(92); + lookahead == '_') ADVANCE(95); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 93: - ACCEPT_TOKEN(aux_sym_string_token1); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '0' || + lookahead == '1' || + lookahead == '_') ADVANCE(93); + if (('2' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 94: - ACCEPT_TOKEN(aux_sym_string_token2); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'F') || + lookahead == '_') ADVANCE(96); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(94); + if (('G' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('g' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 95: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'a') ADVANCE(96); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == '_') ADVANCE(95); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 96: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'b') ADVANCE(106); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || + ('A' <= lookahead && lookahead <= 'F') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(96); + if (('G' <= lookahead && lookahead <= 'Z') || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 97: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'd') ADVANCE(45); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(121); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(99); + if (lookahead == 'b') ADVANCE(184); + if (lookahead == 'x') ADVANCE(186); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(98); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); END_STATE(); case 98: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'd') ADVANCE(47); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(121); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(99); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(98); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 99: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'd') ADVANCE(49); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '.') ADVANCE(121); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == '_') ADVANCE(99); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 100: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'd') ADVANCE(44); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == 'b') ADVANCE(16); + if (lookahead == 'x') ADVANCE(18); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == '_') ADVANCE(102); END_STATE(); case 101: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'd') ADVANCE(46); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(aux_sym_int_token1); + if (lookahead == '0' || + lookahead == '1' || + lookahead == '_') ADVANCE(101); END_STATE(); case 102: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'd') ADVANCE(48); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token1); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == '_') ADVANCE(102); END_STATE(); case 103: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'e') ADVANCE(107); + ACCEPT_TOKEN(aux_sym_int_token1); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || + ('A' <= lookahead && lookahead <= 'F') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(103); END_STATE(); case 104: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'e') ADVANCE(43); + ACCEPT_TOKEN(aux_sym_int_token1); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || + ('A' <= lookahead && lookahead <= 'F') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + if (('G' <= lookahead && lookahead <= 'Z') || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(195); END_STATE(); case 105: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'e') ADVANCE(42); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(111); + if (lookahead == 'b') ADVANCE(185); + if (lookahead == 'x') ADVANCE(187); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(106); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); END_STATE(); case 106: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'e') ADVANCE(108); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(111); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(106); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 107: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'l') ADVANCE(57); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(109); + if (lookahead == '0' || + lookahead == '1') ADVANCE(107); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('2' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 108: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'l') ADVANCE(36); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'b') ADVANCE(183); + if (lookahead == 'x') ADVANCE(189); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == '_') ADVANCE(111); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 109: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'n') ADVANCE(124); - if (('0' <= lookahead && lookahead <= '9') || + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '0' || + lookahead == '1' || + lookahead == '_') ADVANCE(109); + if (('2' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 110: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(109); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'F') || + lookahead == '_') ADVANCE(112); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(110); + if (('G' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('g' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 111: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(119); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == '_') ADVANCE(111); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 112: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(118); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || + ('A' <= lookahead && lookahead <= 'F') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(112); + if (('G' <= lookahead && lookahead <= 'Z') || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 113: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(120); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(121); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(115); + if (lookahead == 'b') ADVANCE(185); + if (lookahead == 'x') ADVANCE(187); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(114); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); END_STATE(); case 114: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(122); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(121); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '_') ADVANCE(115); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(114); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(191); + if (('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 115: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(121); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '.') ADVANCE(121); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == '_') ADVANCE(115); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 116: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'o') ADVANCE(123); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == 'b') ADVANCE(17); + if (lookahead == 'x') ADVANCE(19); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == '_') ADVANCE(118); END_STATE(); case 117: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(51); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); + if (lookahead == '0' || + lookahead == '1' || + lookahead == '_') ADVANCE(117); END_STATE(); case 118: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(97); + ACCEPT_TOKEN(aux_sym_int_token2); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == '_') ADVANCE(118); END_STATE(); case 119: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(100); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(aux_sym_int_token2); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('A' <= lookahead && lookahead <= 'F') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(119); END_STATE(); case 120: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(98); + ACCEPT_TOKEN(aux_sym_int_token2); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || + ('A' <= lookahead && lookahead <= 'F') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(120); + if (('G' <= lookahead && lookahead <= 'Z') || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(195); END_STATE(); case 121: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(101); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); - END_STATE(); - case 122: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(99); - if (('0' <= lookahead && lookahead <= '9') || + ACCEPT_TOKEN(sym_float); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(123); + if (lookahead == '.' || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(199); + END_STATE(); + case 122: + ACCEPT_TOKEN(sym_float); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); case 123: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'r') ADVANCE(102); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ACCEPT_TOKEN(sym_float); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + lookahead == '_') ADVANCE(123); + if (lookahead == '.' || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(199); END_STATE(); case 124: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 's') ADVANCE(126); + ACCEPT_TOKEN(sym_float); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + lookahead == '_') ADVANCE(124); END_STATE(); case 125: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 't') ADVANCE(117); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_string_token1); END_STATE(); case 126: - ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 't') ADVANCE(37); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ACCEPT_TOKEN(aux_sym_string_token2); END_STATE(); case 127: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 't') ADVANCE(105); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + if (lookahead == '.') ADVANCE(199); + if (lookahead == 'E') ADVANCE(131); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 128: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 't') ADVANCE(104); + if (lookahead == '.') ADVANCE(199); + if (lookahead == 'F') ADVANCE(130); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 129: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'w') ADVANCE(113); + if (lookahead == '.') ADVANCE(199); + if (lookahead == 'F') ADVANCE(128); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 130: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'w') ADVANCE(114); + if (lookahead == '.') ADVANCE(199); + if (lookahead == 'S') ADVANCE(127); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 131: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'w') ADVANCE(115); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + if (lookahead == '.') ADVANCE(199); + if (lookahead == 'T') ADVANCE(44); + if (lookahead == '\\') ADVANCE(193); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 132: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'w') ADVANCE(116); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'a') ADVANCE(133); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 133: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'y') ADVANCE(127); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'b') ADVANCE(143); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 134: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == 'y') ADVANCE(128); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'd') ADVANCE(51); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 135: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == '0' || - lookahead == '1') ADVANCE(75); - if (('2' <= lookahead && lookahead <= '9') || + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'd') ADVANCE(53); + if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 136: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (lookahead == '0' || - lookahead == '1') ADVANCE(73); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); - if (('2' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'd') ADVANCE(55); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 137: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); - if (('A' <= lookahead && lookahead <= 'F')) ADVANCE(78); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'd') ADVANCE(50); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(76); - if (('g' <= lookahead && lookahead <= 'z')) ADVANCE(139); - if (('G' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 138: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'd') ADVANCE(52); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(78); - if (('G' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('g' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 139: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'd') ADVANCE(54); if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(140); + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(139); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 140: ACCEPT_TOKEN(sym_word); - if (lookahead == '.') ADVANCE(148); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'e') ADVANCE(150); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(140); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 141: ACCEPT_TOKEN(sym_word); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_') ADVANCE(142); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'e') ADVANCE(49); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(141); + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 142: ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'e') ADVANCE(48); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(142); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 143: - ACCEPT_TOKEN(sym__reg); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'e') ADVANCE(151); if (('0' <= lookahead && lookahead <= '9') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(143); + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 144: - ACCEPT_TOKEN(sym_address); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'e') ADVANCE(174); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(144); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 145: - ACCEPT_TOKEN(sym_meta_ident); - if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(145); - if (lookahead == '.' || - ('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z')) ADVANCE(148); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'e') ADVANCE(172); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 146: - ACCEPT_TOKEN(sym_meta_ident); - if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(146); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'f') ADVANCE(167); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 147: - ACCEPT_TOKEN(sym__ident); - if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(145); - if (lookahead == '.' || - ('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z')) ADVANCE(148); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'f') ADVANCE(148); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 148: - ACCEPT_TOKEN(sym__ident); - if (lookahead == '.' || - ('0' <= lookahead && lookahead <= '9') || + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'f') ADVANCE(169); + if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(148); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 149: - ACCEPT_TOKEN(aux_sym_line_comment_token1); - if (lookahead == '\n') ADVANCE(12); - if (lookahead == '*') ADVANCE(149); - if (lookahead == '/') ADVANCE(153); - if (lookahead != 0) ADVANCE(150); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'f') ADVANCE(146); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 150: - ACCEPT_TOKEN(aux_sym_line_comment_token1); - if (lookahead == '\n') ADVANCE(12); - if (lookahead == '*') ADVANCE(149); - if (lookahead != 0) ADVANCE(150); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'l') ADVANCE(75); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 151: - ACCEPT_TOKEN(aux_sym_line_comment_token1); - if (lookahead == '#') ADVANCE(66); - if (lookahead == '/') ADVANCE(152); - if (lookahead == ';') ADVANCE(153); - if (lookahead == '\t' || - lookahead == '\r' || - lookahead == ' ') ADVANCE(151); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n') ADVANCE(153); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'l') ADVANCE(40); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 152: - ACCEPT_TOKEN(aux_sym_line_comment_token1); - if (lookahead == '*') ADVANCE(150); - if (lookahead == '/') ADVANCE(153); - if (lookahead != 0 && - lookahead != '\n') ADVANCE(153); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'n') ADVANCE(168); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 153: - ACCEPT_TOKEN(aux_sym_line_comment_token1); - if (lookahead != 0 && - lookahead != '\n') ADVANCE(153); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(152); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); case 154: - ACCEPT_TOKEN(aux_sym_line_comment_token2); - if (lookahead != 0 && - lookahead != '\n') ADVANCE(154); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(162); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); END_STATE(); case 155: - ACCEPT_TOKEN(sym_block_comment); + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(161); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); END_STATE(); - default: - return false; - } -} - -static const TSLexMode ts_lex_modes[STATE_COUNT] = { - [0] = {.lex_state = 0}, - [1] = {.lex_state = 28}, - [2] = {.lex_state = 25}, - [3] = {.lex_state = 25}, - [4] = {.lex_state = 25}, - [5] = {.lex_state = 25}, - [6] = {.lex_state = 27}, - [7] = {.lex_state = 27}, - [8] = {.lex_state = 27}, - [9] = {.lex_state = 27}, - [10] = {.lex_state = 27}, - [11] = {.lex_state = 27}, - [12] = {.lex_state = 27}, - [13] = {.lex_state = 27}, - [14] = {.lex_state = 27}, - [15] = {.lex_state = 27}, - [16] = {.lex_state = 27}, - [17] = {.lex_state = 27}, - [18] = {.lex_state = 27}, - [19] = {.lex_state = 27}, - [20] = {.lex_state = 27}, - [21] = {.lex_state = 27}, - [22] = {.lex_state = 26}, - [23] = {.lex_state = 26}, - [24] = {.lex_state = 27}, - [25] = {.lex_state = 27}, - [26] = {.lex_state = 27}, - [27] = {.lex_state = 27}, - [28] = {.lex_state = 27}, - [29] = {.lex_state = 27}, - [30] = {.lex_state = 27}, - [31] = {.lex_state = 27}, - [32] = {.lex_state = 27}, - [33] = {.lex_state = 27}, - [34] = {.lex_state = 27}, - [35] = {.lex_state = 28}, - [36] = {.lex_state = 28}, - [37] = {.lex_state = 28}, - [38] = {.lex_state = 28}, - [39] = {.lex_state = 28}, - [40] = {.lex_state = 28}, - [41] = {.lex_state = 28}, - [42] = {.lex_state = 28}, - [43] = {.lex_state = 28}, - [44] = {.lex_state = 28}, - [45] = {.lex_state = 28}, - [46] = {.lex_state = 28}, - [47] = {.lex_state = 28}, - [48] = {.lex_state = 28}, - [49] = {.lex_state = 28}, - [50] = {.lex_state = 27}, - [51] = {.lex_state = 27}, - [52] = {.lex_state = 28}, - [53] = {.lex_state = 28}, - [54] = {.lex_state = 4}, - [55] = {.lex_state = 4}, - [56] = {.lex_state = 29}, - [57] = {.lex_state = 29}, - [58] = {.lex_state = 29}, - [59] = {.lex_state = 29}, - [60] = {.lex_state = 29}, - [61] = {.lex_state = 0}, - [62] = {.lex_state = 28}, - [63] = {.lex_state = 28}, - [64] = {.lex_state = 0}, - [65] = {.lex_state = 0}, - [66] = {.lex_state = 0}, - [67] = {.lex_state = 29}, - [68] = {.lex_state = 0}, - [69] = {.lex_state = 0}, - [70] = {.lex_state = 0}, - [71] = {.lex_state = 0}, - [72] = {.lex_state = 29}, - [73] = {.lex_state = 29}, - [74] = {.lex_state = 0}, - [75] = {.lex_state = 29}, - [76] = {.lex_state = 28}, - [77] = {.lex_state = 0}, - [78] = {.lex_state = 0}, - [79] = {.lex_state = 29}, - [80] = {.lex_state = 0}, - [81] = {.lex_state = 0}, - [82] = {.lex_state = 28}, - [83] = {.lex_state = 0}, - [84] = {.lex_state = 0}, - [85] = {.lex_state = 0}, - [86] = {.lex_state = 0}, - [87] = {.lex_state = 0}, - [88] = {.lex_state = 0}, - [89] = {.lex_state = 0}, - [90] = {.lex_state = 0}, - [91] = {.lex_state = 0}, - [92] = {.lex_state = 0}, - [93] = {.lex_state = 0}, - [94] = {.lex_state = 0}, - [95] = {.lex_state = 0}, - [96] = {.lex_state = 0}, - [97] = {.lex_state = 0}, - [98] = {.lex_state = 0}, - [99] = {.lex_state = 0}, - [100] = {.lex_state = 0}, - [101] = {.lex_state = 0}, - [102] = {.lex_state = 28}, - [103] = {.lex_state = 0}, - [104] = {.lex_state = 28}, - [105] = {.lex_state = 2}, - [106] = {.lex_state = 0}, - [107] = {.lex_state = 0}, - [108] = {.lex_state = 0}, - [109] = {.lex_state = 2}, - [110] = {.lex_state = 0}, - [111] = {.lex_state = 0}, - [112] = {.lex_state = 0}, - [113] = {.lex_state = 0}, - [114] = {.lex_state = 0}, - [115] = {.lex_state = 2}, - [116] = {.lex_state = 151}, - [117] = {.lex_state = 0}, - [118] = {.lex_state = 0}, - [119] = {.lex_state = 0}, - [120] = {.lex_state = 0}, - [121] = {.lex_state = 0}, - [122] = {.lex_state = 0}, - [123] = {.lex_state = 0}, - [124] = {.lex_state = 25}, - [125] = {.lex_state = 3}, - [126] = {.lex_state = 2}, - [127] = {.lex_state = 2}, - [128] = {.lex_state = 0}, - [129] = {.lex_state = 0}, - [130] = {.lex_state = 0}, - [131] = {.lex_state = 0}, - [132] = {.lex_state = 29}, - [133] = {.lex_state = 29}, - [134] = {.lex_state = 3}, - [135] = {(TSStateId)(-1)}, - [136] = {(TSStateId)(-1)}, -}; - -static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { - [0] = { - [sym_line_comment] = STATE(0), - [ts_builtin_sym_end] = ACTIONS(1), - [anon_sym_LF] = ACTIONS(1), - [anon_sym_COMMA] = ACTIONS(1), - [anon_sym_COLON] = ACTIONS(1), - [anon_sym_LPAREN] = ACTIONS(1), - [anon_sym_RPAREN] = ACTIONS(1), - [anon_sym_label] = ACTIONS(1), - [anon_sym_const] = ACTIONS(1), - [anon_sym_LBRACE] = ACTIONS(1), - [anon_sym_DASH] = ACTIONS(1), - [anon_sym_RBRACE] = ACTIONS(1), - [anon_sym_byte] = ACTIONS(1), - [anon_sym_word] = ACTIONS(1), - [anon_sym_dword] = ACTIONS(1), - [anon_sym_qword] = ACTIONS(1), - [anon_sym_ptr] = ACTIONS(1), - [anon_sym_LBRACK] = ACTIONS(1), - [anon_sym_PLUS] = ACTIONS(1), - [anon_sym_RBRACK] = ACTIONS(1), - [anon_sym_STAR] = ACTIONS(1), - [anon_sym_rel] = ACTIONS(1), - [anon_sym_BANG] = ACTIONS(1), - [anon_sym_SLASH] = ACTIONS(1), - [anon_sym_PERCENT] = ACTIONS(1), - [anon_sym_PIPE] = ACTIONS(1), - [anon_sym_CARET] = ACTIONS(1), - [anon_sym_AMP] = ACTIONS(1), - [anon_sym_POUND] = ACTIONS(3), - [aux_sym_int_token2] = ACTIONS(1), - [aux_sym_string_token1] = ACTIONS(1), - [aux_sym_string_token2] = ACTIONS(1), - [sym_word] = ACTIONS(1), - [sym_address] = ACTIONS(1), - [sym_meta_ident] = ACTIONS(1), - [sym__ident] = ACTIONS(1), - [aux_sym_line_comment_token2] = ACTIONS(5), - [sym_block_comment] = ACTIONS(7), - }, - [1] = { - [sym_program] = STATE(130), - [sym__item] = STATE(81), - [sym_meta] = STATE(114), - [sym_label] = STATE(114), - [sym_const] = STATE(114), - [sym_instruction] = STATE(114), - [sym_line_comment] = STATE(1), - [ts_builtin_sym_end] = ACTIONS(9), - [anon_sym_label] = ACTIONS(11), - [anon_sym_const] = ACTIONS(13), - [anon_sym_POUND] = ACTIONS(3), - [sym_word] = ACTIONS(15), - [sym_meta_ident] = ACTIONS(17), - [sym__ident] = ACTIONS(19), - [aux_sym_line_comment_token2] = ACTIONS(5), - [sym_block_comment] = ACTIONS(7), - }, - [2] = { - [sym__expr] = STATE(69), - [sym_list] = STATE(100), - [sym_ptr] = STATE(100), - [sym__tc_expr] = STATE(18), - [sym_tc_infix] = STATE(17), - [sym_int] = STATE(7), - [sym_string] = STATE(10), - [sym_reg] = STATE(11), - [sym_ident] = STATE(10), - [sym_line_comment] = STATE(2), - [aux_sym_instruction_repeat2] = STATE(20), - [ts_builtin_sym_end] = ACTIONS(21), - [anon_sym_LF] = ACTIONS(21), - [anon_sym_COLON] = ACTIONS(23), - [anon_sym_LPAREN] = ACTIONS(25), - [anon_sym_LBRACE] = ACTIONS(27), - [anon_sym_byte] = ACTIONS(29), - [anon_sym_word] = ACTIONS(29), - [anon_sym_dword] = ACTIONS(29), - [anon_sym_qword] = ACTIONS(29), - [anon_sym_LBRACK] = ACTIONS(31), - [anon_sym_STAR] = ACTIONS(33), - [anon_sym_POUND] = ACTIONS(35), - [aux_sym_int_token2] = ACTIONS(37), - [sym_float] = ACTIONS(39), - [aux_sym_string_token1] = ACTIONS(41), - [aux_sym_string_token2] = ACTIONS(41), - [sym_word] = ACTIONS(43), - [sym__reg] = ACTIONS(43), - [sym_address] = ACTIONS(43), - [sym_meta_ident] = ACTIONS(45), - [sym__ident] = ACTIONS(45), - [aux_sym_line_comment_token2] = ACTIONS(5), - [sym_block_comment] = ACTIONS(7), - }, -}; - -static const uint16_t ts_small_parse_table[] = { - [0] = 19, - ACTIONS(5), 1, - aux_sym_line_comment_token2, - ACTIONS(7), 1, - sym_block_comment, - ACTIONS(25), 1, - anon_sym_LPAREN, - ACTIONS(27), 1, - anon_sym_LBRACE, - ACTIONS(31), 1, - anon_sym_LBRACK, - ACTIONS(33), 1, - anon_sym_STAR, - ACTIONS(39), 1, - sym_float, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(3), 1, - sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(78), 1, - sym_int, - STATE(91), 1, - sym__expr, - ACTIONS(47), 2, - ts_builtin_sym_end, - anon_sym_LF, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - ACTIONS(29), 4, - anon_sym_byte, - anon_sym_word, - anon_sym_dword, - anon_sym_qword, - STATE(100), 4, - sym_list, - sym_ptr, - sym_string, - sym_ident, - [69] = 19, - ACTIONS(5), 1, - aux_sym_line_comment_token2, - ACTIONS(7), 1, - sym_block_comment, - ACTIONS(25), 1, - anon_sym_LPAREN, - ACTIONS(27), 1, - anon_sym_LBRACE, - ACTIONS(31), 1, - anon_sym_LBRACK, - ACTIONS(33), 1, - anon_sym_STAR, - ACTIONS(39), 1, - sym_float, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(4), 1, - sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(78), 1, - sym_int, - STATE(91), 1, - sym__expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(59), 2, - ts_builtin_sym_end, - anon_sym_LF, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - ACTIONS(29), 4, - anon_sym_byte, - anon_sym_word, - anon_sym_dword, - anon_sym_qword, - STATE(100), 4, + case 156: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(163); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 157: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(165); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 158: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(164); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 159: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'o') ADVANCE(166); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 160: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(57); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 161: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(134); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 162: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(137); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 163: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(135); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 164: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(138); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 165: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(136); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 166: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'r') ADVANCE(139); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 167: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 's') ADVANCE(144); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 168: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 's') ADVANCE(171); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 169: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 's') ADVANCE(145); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 170: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 't') ADVANCE(160); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 171: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 't') ADVANCE(41); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 172: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 't') ADVANCE(43); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 173: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 't') ADVANCE(142); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 174: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 't') ADVANCE(42); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 175: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 't') ADVANCE(141); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 176: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'w') ADVANCE(156); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 177: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'w') ADVANCE(157); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 178: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'w') ADVANCE(158); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 179: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'w') ADVANCE(159); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 180: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'y') ADVANCE(173); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 181: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == 'y') ADVANCE(175); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 182: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '0' || + lookahead == '1') ADVANCE(93); + if (('2' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 183: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '0' || + lookahead == '1') ADVANCE(109); + if (('2' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 184: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '0' || + lookahead == '1') ADVANCE(91); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('2' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 185: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (lookahead == '0' || + lookahead == '1') ADVANCE(107); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('2' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 186: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'F')) ADVANCE(96); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(94); + if (('g' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('G' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + END_STATE(); + case 187: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'F')) ADVANCE(112); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(110); + if (('g' <= lookahead && lookahead <= 'z')) ADVANCE(190); + if (('G' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + END_STATE(); + case 188: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(96); + if (('G' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 189: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(112); + if (('G' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 190: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_') ADVANCE(191); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(190); + END_STATE(); + case 191: + ACCEPT_TOKEN(sym_word); + if (lookahead == '.') ADVANCE(199); + if (lookahead == '\\') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(191); + END_STATE(); + case 192: + ACCEPT_TOKEN(sym_word); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '\\' || + lookahead == '_') ADVANCE(193); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(192); + END_STATE(); + case 193: + ACCEPT_TOKEN(sym_word); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '\\' || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(193); + END_STATE(); + case 194: + ACCEPT_TOKEN(sym__reg); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(194); + END_STATE(); + case 195: + ACCEPT_TOKEN(sym_address); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(195); + END_STATE(); + case 196: + ACCEPT_TOKEN(sym_meta_ident); + if (lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(196); + if (lookahead == '.' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z')) ADVANCE(199); + END_STATE(); + case 197: + ACCEPT_TOKEN(sym_meta_ident); + if (lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(197); + END_STATE(); + case 198: + ACCEPT_TOKEN(sym__ident); + if (lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(196); + if (lookahead == '.' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z')) ADVANCE(199); + END_STATE(); + case 199: + ACCEPT_TOKEN(sym__ident); + if (lookahead == '.' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(199); + END_STATE(); + case 200: + ACCEPT_TOKEN(anon_sym_EQ); + END_STATE(); + case 201: + ACCEPT_TOKEN(sym_prefix_operator); + END_STATE(); + case 202: + ACCEPT_TOKEN(sym_prefix_operator); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); + END_STATE(); + case 203: + ACCEPT_TOKEN(sym_infix_operator); + END_STATE(); + case 204: + ACCEPT_TOKEN(sym_infix_operator); + if (lookahead == '*') ADVANCE(10); + if (lookahead == '/') ADVANCE(213); + END_STATE(); + case 205: + ACCEPT_TOKEN(sym_infix_operator); + if (lookahead == '<') ADVANCE(203); + END_STATE(); + case 206: + ACCEPT_TOKEN(sym_infix_operator); + if (lookahead == '>') ADVANCE(203); + END_STATE(); + case 207: + ACCEPT_TOKEN(sym_infix_operator); + if (('0' <= lookahead && lookahead <= '9') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(194); + END_STATE(); + case 208: + ACCEPT_TOKEN(aux_sym_line_comment_token1); + if (lookahead == '\n') ADVANCE(10); + if (lookahead == '*') ADVANCE(208); + if (lookahead == '/') ADVANCE(212); + if (lookahead != 0) ADVANCE(209); + END_STATE(); + case 209: + ACCEPT_TOKEN(aux_sym_line_comment_token1); + if (lookahead == '\n') ADVANCE(10); + if (lookahead == '*') ADVANCE(208); + if (lookahead != 0) ADVANCE(209); + END_STATE(); + case 210: + ACCEPT_TOKEN(aux_sym_line_comment_token1); + if (lookahead == '#') ADVANCE(84); + if (lookahead == '/') ADVANCE(211); + if (lookahead == ';') ADVANCE(212); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(210); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n') ADVANCE(212); + END_STATE(); + case 211: + ACCEPT_TOKEN(aux_sym_line_comment_token1); + if (lookahead == '*') ADVANCE(209); + if (lookahead == '/') ADVANCE(212); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(212); + END_STATE(); + case 212: + ACCEPT_TOKEN(aux_sym_line_comment_token1); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(212); + END_STATE(); + case 213: + ACCEPT_TOKEN(aux_sym_line_comment_token2); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(213); + END_STATE(); + case 214: + ACCEPT_TOKEN(sym_block_comment); + END_STATE(); + default: + return false; + } +} + +static const TSLexerMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 31}, + [2] = {.lex_state = 25}, + [3] = {.lex_state = 25}, + [4] = {.lex_state = 25}, + [5] = {.lex_state = 25}, + [6] = {.lex_state = 25}, + [7] = {.lex_state = 25}, + [8] = {.lex_state = 25}, + [9] = {.lex_state = 27}, + [10] = {.lex_state = 27}, + [11] = {.lex_state = 27}, + [12] = {.lex_state = 27}, + [13] = {.lex_state = 27}, + [14] = {.lex_state = 27}, + [15] = {.lex_state = 27}, + [16] = {.lex_state = 27}, + [17] = {.lex_state = 27}, + [18] = {.lex_state = 27}, + [19] = {.lex_state = 27}, + [20] = {.lex_state = 27}, + [21] = {.lex_state = 27}, + [22] = {.lex_state = 27}, + [23] = {.lex_state = 27}, + [24] = {.lex_state = 26}, + [25] = {.lex_state = 26}, + [26] = {.lex_state = 26}, + [27] = {.lex_state = 26}, + [28] = {.lex_state = 26}, + [29] = {.lex_state = 26}, + [30] = {.lex_state = 26}, + [31] = {.lex_state = 1}, + [32] = {.lex_state = 26}, + [33] = {.lex_state = 26}, + [34] = {.lex_state = 26}, + [35] = {.lex_state = 26}, + [36] = {.lex_state = 26}, + [37] = {.lex_state = 26}, + [38] = {.lex_state = 31}, + [39] = {.lex_state = 31}, + [40] = {.lex_state = 31}, + [41] = {.lex_state = 26}, + [42] = {.lex_state = 26}, + [43] = {.lex_state = 31}, + [44] = {.lex_state = 31}, + [45] = {.lex_state = 32}, + [46] = {.lex_state = 32}, + [47] = {.lex_state = 32}, + [48] = {.lex_state = 31}, + [49] = {.lex_state = 31}, + [50] = {.lex_state = 31}, + [51] = {.lex_state = 31}, + [52] = {.lex_state = 31}, + [53] = {.lex_state = 31}, + [54] = {.lex_state = 31}, + [55] = {.lex_state = 31}, + [56] = {.lex_state = 31}, + [57] = {.lex_state = 31}, + [58] = {.lex_state = 31}, + [59] = {.lex_state = 32}, + [60] = {.lex_state = 31}, + [61] = {.lex_state = 32}, + [62] = {.lex_state = 32}, + [63] = {.lex_state = 31}, + [64] = {.lex_state = 33}, + [65] = {.lex_state = 33}, + [66] = {.lex_state = 33}, + [67] = {.lex_state = 33}, + [68] = {.lex_state = 33}, + [69] = {.lex_state = 33}, + [70] = {.lex_state = 24}, + [71] = {.lex_state = 33}, + [72] = {.lex_state = 6}, + [73] = {.lex_state = 6}, + [74] = {.lex_state = 33}, + [75] = {.lex_state = 6}, + [76] = {.lex_state = 4}, + [77] = {.lex_state = 24}, + [78] = {.lex_state = 4}, + [79] = {.lex_state = 33}, + [80] = {.lex_state = 33}, + [81] = {.lex_state = 4}, + [82] = {.lex_state = 33}, + [83] = {.lex_state = 33}, + [84] = {.lex_state = 6}, + [85] = {.lex_state = 6}, + [86] = {.lex_state = 33}, + [87] = {.lex_state = 6}, + [88] = {.lex_state = 0}, + [89] = {.lex_state = 0}, + [90] = {.lex_state = 33}, + [91] = {.lex_state = 0}, + [92] = {.lex_state = 0}, + [93] = {.lex_state = 6}, + [94] = {.lex_state = 0}, + [95] = {.lex_state = 33}, + [96] = {.lex_state = 0}, + [97] = {.lex_state = 31}, + [98] = {.lex_state = 33}, + [99] = {.lex_state = 33}, + [100] = {.lex_state = 0}, + [101] = {.lex_state = 33}, + [102] = {.lex_state = 0}, + [103] = {.lex_state = 33}, + [104] = {.lex_state = 0}, + [105] = {.lex_state = 33}, + [106] = {.lex_state = 0}, + [107] = {.lex_state = 6}, + [108] = {.lex_state = 33}, + [109] = {.lex_state = 33}, + [110] = {.lex_state = 33}, + [111] = {.lex_state = 33}, + [112] = {.lex_state = 33}, + [113] = {.lex_state = 33}, + [114] = {.lex_state = 33}, + [115] = {.lex_state = 33}, + [116] = {.lex_state = 33}, + [117] = {.lex_state = 33}, + [118] = {.lex_state = 6}, + [119] = {.lex_state = 33}, + [120] = {.lex_state = 6}, + [121] = {.lex_state = 33}, + [122] = {.lex_state = 31}, + [123] = {.lex_state = 6}, + [124] = {.lex_state = 0}, + [125] = {.lex_state = 31}, + [126] = {.lex_state = 33}, + [127] = {.lex_state = 31}, + [128] = {.lex_state = 0}, + [129] = {.lex_state = 0}, + [130] = {.lex_state = 0}, + [131] = {.lex_state = 0}, + [132] = {.lex_state = 6}, + [133] = {.lex_state = 0}, + [134] = {.lex_state = 33}, + [135] = {.lex_state = 31}, + [136] = {.lex_state = 33}, + [137] = {.lex_state = 0}, + [138] = {.lex_state = 0}, + [139] = {.lex_state = 0}, + [140] = {.lex_state = 0}, + [141] = {.lex_state = 0}, + [142] = {.lex_state = 0}, + [143] = {.lex_state = 0}, + [144] = {.lex_state = 31}, + [145] = {.lex_state = 33}, + [146] = {.lex_state = 0}, + [147] = {.lex_state = 33}, + [148] = {.lex_state = 0}, + [149] = {.lex_state = 4}, + [150] = {.lex_state = 0}, + [151] = {.lex_state = 0}, + [152] = {.lex_state = 0}, + [153] = {.lex_state = 0}, + [154] = {.lex_state = 0}, + [155] = {.lex_state = 0}, + [156] = {.lex_state = 0}, + [157] = {.lex_state = 0}, + [158] = {.lex_state = 4}, + [159] = {.lex_state = 0}, + [160] = {.lex_state = 4}, + [161] = {.lex_state = 0}, + [162] = {.lex_state = 210}, + [163] = {.lex_state = 0}, + [164] = {.lex_state = 0}, + [165] = {.lex_state = 0}, + [166] = {.lex_state = 0}, + [167] = {.lex_state = 24}, + [168] = {.lex_state = 4}, + [169] = {.lex_state = 0}, + [170] = {.lex_state = 33}, + [171] = {.lex_state = 25}, + [172] = {.lex_state = 0}, + [173] = {.lex_state = 0}, + [174] = {.lex_state = 0}, + [175] = {.lex_state = 33}, + [176] = {.lex_state = 0}, + [177] = {.lex_state = 24}, + [178] = {.lex_state = 0}, + [179] = {.lex_state = 0}, + [180] = {.lex_state = 33}, + [181] = {.lex_state = 0}, + [182] = {.lex_state = 0}, + [183] = {.lex_state = 24}, + [184] = {.lex_state = 4}, + [185] = {.lex_state = 0}, + [186] = {.lex_state = 0}, + [187] = {.lex_state = 0}, + [188] = {.lex_state = 4}, + [189] = {.lex_state = 4}, + [190] = {.lex_state = 0}, + [191] = {.lex_state = 4}, + [192] = {.lex_state = 4}, + [193] = {(TSStateId)(-1),}, + [194] = {(TSStateId)(-1),}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [STATE(0)] = { + [sym_line_comment] = STATE(0), + [ts_builtin_sym_end] = ACTIONS(1), + [anon_sym_LF] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_COLON] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_label] = ACTIONS(1), + [anon_sym_const] = ACTIONS(1), + [anon_sym_offset] = ACTIONS(1), + [anon_sym_OFFSET] = ACTIONS(1), + [anon_sym_LBRACE] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_byte] = ACTIONS(1), + [anon_sym_word] = ACTIONS(1), + [anon_sym_dword] = ACTIONS(1), + [anon_sym_qword] = ACTIONS(1), + [anon_sym_ptr] = ACTIONS(1), + [anon_sym_LBRACK] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_RBRACK] = ACTIONS(1), + [anon_sym_1] = ACTIONS(1), + [anon_sym_2] = ACTIONS(1), + [anon_sym_4] = ACTIONS(1), + [anon_sym_8] = ACTIONS(1), + [anon_sym_STAR] = ACTIONS(1), + [anon_sym_rel] = ACTIONS(1), + [anon_sym_BANG] = ACTIONS(1), + [anon_sym_SLASH] = ACTIONS(1), + [anon_sym_PERCENT] = ACTIONS(1), + [anon_sym_PIPE] = ACTIONS(1), + [anon_sym_CARET] = ACTIONS(1), + [anon_sym_AMP] = ACTIONS(1), + [anon_sym_POUND] = ACTIONS(3), + [anon_sym_DOLLAR] = ACTIONS(1), + [aux_sym_int_token1] = ACTIONS(1), + [aux_sym_int_token2] = ACTIONS(1), + [aux_sym_string_token1] = ACTIONS(1), + [aux_sym_string_token2] = ACTIONS(1), + [sym_word] = ACTIONS(1), + [sym_meta_ident] = ACTIONS(1), + [sym__ident] = ACTIONS(1), + [anon_sym_EQ] = ACTIONS(1), + [sym_prefix_operator] = ACTIONS(1), + [sym_infix_operator] = ACTIONS(1), + [aux_sym_line_comment_token2] = ACTIONS(5), + [sym_block_comment] = ACTIONS(7), + }, + [STATE(1)] = { + [sym_program] = STATE(187), + [sym__item] = STATE(131), + [sym_meta] = STATE(152), + [sym_label] = STATE(152), + [sym_const] = STATE(152), + [sym_instruction] = STATE(152), + [sym_line_comment] = STATE(1), + [ts_builtin_sym_end] = ACTIONS(9), + [anon_sym_label] = ACTIONS(11), + [anon_sym_const] = ACTIONS(13), + [anon_sym_POUND] = ACTIONS(3), + [sym_word] = ACTIONS(15), + [sym_meta_ident] = ACTIONS(17), + [sym__ident] = ACTIONS(19), + [aux_sym_line_comment_token2] = ACTIONS(5), + [sym_block_comment] = ACTIONS(7), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 27, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(23), 1, + anon_sym_COLON, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(43), 1, + sym_float, + ACTIONS(51), 1, + sym_prefix_operator, + STATE(2), 1, + sym_line_comment, + STATE(9), 1, + sym_int, + STATE(16), 1, + sym_reg, + STATE(17), 1, + sym__tc_expr, + STATE(18), 1, + sym_tc_infix, + STATE(24), 1, + aux_sym_instruction_repeat2, + STATE(129), 1, + sym__expr, + ACTIONS(21), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + STATE(13), 2, + sym_string, + sym_ident, + STATE(126), 2, + sym_list, + sym_ptr, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + [94] = 26, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(55), 1, + anon_sym_COLON, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(63), 1, + sym_float, + ACTIONS(71), 1, + sym_prefix_operator, + STATE(3), 1, + sym_line_comment, + STATE(45), 1, + sym_ident, + STATE(46), 1, + sym_reg, + STATE(66), 1, + sym_int, + STATE(71), 1, + sym_string, + STATE(153), 1, + sym_op_expr, + STATE(170), 1, + sym__expr, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(53), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + STATE(126), 2, + sym_list, + sym_ptr, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + [184] = 25, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(63), 1, + sym_float, + ACTIONS(71), 1, + sym_prefix_operator, + STATE(4), 1, + sym_line_comment, + STATE(45), 1, + sym_ident, + STATE(46), 1, + sym_reg, + STATE(66), 1, + sym_int, + STATE(71), 1, + sym_string, + STATE(153), 1, + sym_op_expr, + STATE(170), 1, + sym__expr, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(53), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + STATE(126), 2, + sym_list, + sym_ptr, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + [271] = 22, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(43), 1, + sym_float, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(71), 1, + sym_prefix_operator, + STATE(5), 1, + sym_line_comment, + STATE(46), 1, + sym_reg, + STATE(79), 1, + sym_int, + STATE(137), 1, + sym__expr, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + ACTIONS(73), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + STATE(126), 4, + sym_list, + sym_ptr, + sym_string, + sym_ident, + [351] = 22, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(43), 1, + sym_float, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(71), 1, + sym_prefix_operator, + STATE(6), 1, + sym_line_comment, + STATE(46), 1, + sym_reg, + STATE(79), 1, + sym_int, + STATE(137), 1, + sym__expr, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + ACTIONS(75), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + STATE(126), 4, + sym_list, + sym_ptr, + sym_string, + sym_ident, + [431] = 22, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(43), 1, + sym_float, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(71), 1, + sym_prefix_operator, + STATE(7), 1, + sym_line_comment, + STATE(79), 1, + sym_int, + STATE(136), 1, + sym_reg, + STATE(145), 1, + sym__expr, + STATE(157), 1, + sym_op_expr, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(79), 2, + sym_meta_ident, + sym__ident, + ACTIONS(77), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + STATE(126), 4, + sym_list, + sym_ptr, + sym_string, + sym_ident, + [510] = 21, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(25), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_LBRACE, + ACTIONS(33), 1, + anon_sym_LBRACK, + ACTIONS(35), 1, + anon_sym_STAR, + ACTIONS(43), 1, + sym_float, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(71), 1, + sym_prefix_operator, + STATE(8), 1, + sym_line_comment, + STATE(46), 1, + sym_reg, + STATE(79), 1, + sym_int, + STATE(137), 1, + sym__expr, + ACTIONS(27), 2, + anon_sym_offset, + anon_sym_OFFSET, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + ACTIONS(31), 4, + anon_sym_byte, + anon_sym_word, + anon_sym_dword, + anon_sym_qword, + STATE(126), 4, sym_list, sym_ptr, sym_string, sym_ident, - [138] = 18, + [586] = 8, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(84), 1, + anon_sym_COMMA, + ACTIONS(86), 1, + anon_sym_LPAREN, + STATE(9), 1, + sym_line_comment, + ACTIONS(81), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(88), 9, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(90), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [630] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(10), 1, + sym_line_comment, + ACTIONS(94), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + ACTIONS(92), 13, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + [668] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(11), 1, + sym_line_comment, + ACTIONS(98), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + ACTIONS(96), 13, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + [706] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(12), 1, + sym_line_comment, + ACTIONS(102), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + ACTIONS(100), 13, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + [744] = 7, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(84), 1, + anon_sym_COMMA, + STATE(13), 1, + sym_line_comment, + ACTIONS(81), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(88), 9, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(90), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [785] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(14), 1, + sym_line_comment, + ACTIONS(106), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + ACTIONS(104), 12, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + [822] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(15), 1, + sym_line_comment, + ACTIONS(110), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + ACTIONS(108), 12, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + [859] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(16), 1, + sym_line_comment, + ACTIONS(114), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + ACTIONS(112), 12, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + [896] = 11, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(120), 1, + anon_sym_STAR, + ACTIONS(124), 1, + anon_sym_PIPE, + ACTIONS(126), 1, + anon_sym_CARET, + ACTIONS(128), 1, + anon_sym_AMP, + STATE(17), 1, + sym_line_comment, + ACTIONS(118), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(122), 2, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(116), 5, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(130), 9, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [944] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(18), 1, + sym_line_comment, + ACTIONS(88), 11, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(90), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [980] = 8, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(124), 1, + anon_sym_PIPE, + ACTIONS(126), 1, + anon_sym_CARET, + ACTIONS(128), 1, + anon_sym_AMP, + STATE(19), 1, + sym_line_comment, + ACTIONS(132), 8, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(134), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [1022] = 10, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(120), 1, + anon_sym_STAR, + ACTIONS(124), 1, + anon_sym_PIPE, + ACTIONS(126), 1, + anon_sym_CARET, + ACTIONS(128), 1, + anon_sym_AMP, + STATE(20), 1, + sym_line_comment, + ACTIONS(122), 2, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(132), 7, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(134), 9, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [1068] = 7, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(126), 1, + anon_sym_CARET, + ACTIONS(128), 1, + anon_sym_AMP, + STATE(21), 1, + sym_line_comment, + ACTIONS(132), 9, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(134), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [1108] = 6, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(128), 1, + anon_sym_AMP, + STATE(22), 1, + sym_line_comment, + ACTIONS(132), 10, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(134), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [1146] = 5, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(23), 1, + sym_line_comment, + ACTIONS(132), 11, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_POUND, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(134), 11, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_DOLLAR, + aux_sym_int_token1, + aux_sym_int_token2, + sym_word, + sym__reg, + sym_address, + sym_meta_ident, + sym__ident, + sym_prefix_operator, + [1182] = 15, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(138), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(17), 1, + sym__tc_expr, + STATE(24), 1, + sym_line_comment, + STATE(25), 1, + aux_sym_instruction_repeat2, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + ACTIONS(136), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1237] = 14, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(142), 1, + anon_sym_POUND, + ACTIONS(145), 1, + anon_sym_DOLLAR, + ACTIONS(160), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(17), 1, + sym__tc_expr, + ACTIONS(140), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(148), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(151), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(157), 2, + sym_meta_ident, + sym__ident, + STATE(25), 2, + sym_line_comment, + aux_sym_instruction_repeat2, + ACTIONS(154), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1290] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(138), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(21), 1, + sym__tc_expr, + STATE(26), 1, + sym_line_comment, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1338] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(138), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(19), 1, + sym__tc_expr, + STATE(27), 1, + sym_line_comment, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1386] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(163), 1, + anon_sym_POUND, + ACTIONS(165), 1, + anon_sym_DOLLAR, + ACTIONS(175), 1, + sym_prefix_operator, + STATE(28), 1, + sym_line_comment, + STATE(44), 1, + sym_reg, + STATE(54), 1, + sym__tc_expr, + ACTIONS(167), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(169), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(173), 2, + sym_meta_ident, + sym__ident, + ACTIONS(171), 3, + sym_word, + sym__reg, + sym_address, + STATE(48), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1434] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(138), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(22), 1, + sym__tc_expr, + STATE(29), 1, + sym_line_comment, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1482] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(138), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(23), 1, + sym__tc_expr, + STATE(30), 1, + sym_line_comment, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1530] = 14, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(71), 1, + sym_prefix_operator, + ACTIONS(177), 1, + sym_float, + STATE(31), 1, + sym_line_comment, + STATE(46), 1, + sym_reg, + STATE(140), 1, + sym__macro_arg_value, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + STATE(139), 3, + sym_int, + sym_string, + sym_ident, + [1580] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(163), 1, + anon_sym_POUND, + ACTIONS(165), 1, + anon_sym_DOLLAR, + ACTIONS(175), 1, + sym_prefix_operator, + STATE(32), 1, + sym_line_comment, + STATE(44), 1, + sym_reg, + STATE(51), 1, + sym__tc_expr, + ACTIONS(167), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(169), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(173), 2, + sym_meta_ident, + sym__ident, + ACTIONS(171), 3, + sym_word, + sym__reg, + sym_address, + STATE(48), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1628] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(37), 1, + anon_sym_POUND, + ACTIONS(39), 1, + anon_sym_DOLLAR, + ACTIONS(138), 1, + sym_prefix_operator, + STATE(16), 1, + sym_reg, + STATE(20), 1, + sym__tc_expr, + STATE(33), 1, + sym_line_comment, + ACTIONS(41), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(45), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(49), 2, + sym_meta_ident, + sym__ident, + ACTIONS(47), 3, + sym_word, + sym__reg, + sym_address, + STATE(18), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1676] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(163), 1, + anon_sym_POUND, + ACTIONS(165), 1, + anon_sym_DOLLAR, + ACTIONS(175), 1, + sym_prefix_operator, + STATE(34), 1, + sym_line_comment, + STATE(44), 1, + sym_reg, + STATE(55), 1, + sym__tc_expr, + ACTIONS(167), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(169), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(173), 2, + sym_meta_ident, + sym__ident, + ACTIONS(171), 3, + sym_word, + sym__reg, + sym_address, + STATE(48), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1724] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(163), 1, + anon_sym_POUND, + ACTIONS(165), 1, + anon_sym_DOLLAR, + ACTIONS(175), 1, + sym_prefix_operator, + STATE(35), 1, + sym_line_comment, + STATE(44), 1, + sym_reg, + STATE(53), 1, + sym__tc_expr, + ACTIONS(167), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(169), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(173), 2, + sym_meta_ident, + sym__ident, + ACTIONS(171), 3, + sym_word, + sym__reg, + sym_address, + STATE(48), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1772] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(163), 1, + anon_sym_POUND, + ACTIONS(165), 1, + anon_sym_DOLLAR, + ACTIONS(175), 1, + sym_prefix_operator, + STATE(36), 1, + sym_line_comment, + STATE(44), 1, + sym_reg, + STATE(56), 1, + sym__tc_expr, + ACTIONS(167), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(169), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(173), 2, + sym_meta_ident, + sym__ident, + ACTIONS(171), 3, + sym_word, + sym__reg, + sym_address, + STATE(48), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1820] = 13, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(163), 1, + anon_sym_POUND, + ACTIONS(165), 1, + anon_sym_DOLLAR, + ACTIONS(175), 1, + sym_prefix_operator, + STATE(37), 1, + sym_line_comment, + STATE(44), 1, + sym_reg, + STATE(50), 1, + sym__tc_expr, + ACTIONS(167), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(169), 2, + aux_sym_string_token1, + aux_sym_string_token2, + ACTIONS(173), 2, + sym_meta_ident, + sym__ident, + ACTIONS(171), 3, + sym_word, + sym__reg, + sym_address, + STATE(48), 4, + sym_tc_infix, + sym_int, + sym_string, + sym_ident, + [1868] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(110), 1, + anon_sym_SLASH, + STATE(38), 1, + sym_line_comment, + ACTIONS(108), 13, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_DASH, + anon_sym_RBRACE, + anon_sym_PLUS, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_PERCENT, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_EQ, + [1899] = 14, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(11), 1, + anon_sym_label, + ACTIONS(13), 1, + anon_sym_const, + ACTIONS(15), 1, + sym_word, + ACTIONS(17), 1, + sym_meta_ident, + ACTIONS(19), 1, + sym__ident, + ACTIONS(179), 1, + ts_builtin_sym_end, + ACTIONS(181), 1, + anon_sym_LF, + STATE(39), 1, + sym_line_comment, + STATE(60), 1, + aux_sym_program_repeat1, + STATE(150), 1, + sym__item, + STATE(152), 4, + sym_meta, + sym_label, + sym_const, + sym_instruction, + [1945] = 14, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(11), 1, + anon_sym_label, + ACTIONS(13), 1, + anon_sym_const, + ACTIONS(15), 1, + sym_word, + ACTIONS(17), 1, + sym_meta_ident, + ACTIONS(19), 1, + sym__ident, + ACTIONS(181), 1, + anon_sym_LF, + ACTIONS(183), 1, + ts_builtin_sym_end, + STATE(40), 1, + sym_line_comment, + STATE(60), 1, + aux_sym_program_repeat1, + STATE(150), 1, + sym__item, + STATE(152), 4, + sym_meta, + sym_label, + sym_const, + sym_instruction, + [1991] = 11, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(185), 1, + sym_prefix_operator, + STATE(41), 1, + sym_line_comment, + STATE(46), 1, + sym_reg, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + STATE(166), 2, + sym_int, + sym_ident, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + [2030] = 11, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(57), 1, + anon_sym_POUND, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(185), 1, + sym_prefix_operator, + STATE(42), 1, + sym_line_comment, + STATE(46), 1, + sym_reg, + ACTIONS(61), 2, + aux_sym_int_token1, + aux_sym_int_token2, + ACTIONS(69), 2, + sym_meta_ident, + sym__ident, + STATE(164), 2, + sym_int, + sym_ident, + ACTIONS(67), 3, + sym_word, + sym__reg, + sym_address, + [2069] = 13, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(11), 1, + anon_sym_label, + ACTIONS(13), 1, + anon_sym_const, + ACTIONS(15), 1, + sym_word, + ACTIONS(17), 1, + sym_meta_ident, + ACTIONS(19), 1, + sym__ident, + ACTIONS(181), 1, + anon_sym_LF, + STATE(43), 1, + sym_line_comment, + STATE(60), 1, + aux_sym_program_repeat1, + STATE(150), 1, + sym__item, + STATE(152), 4, + sym_meta, + sym_label, + sym_const, + sym_instruction, + [2112] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(25), 1, - anon_sym_LPAREN, - ACTIONS(27), 1, - anon_sym_LBRACE, - ACTIONS(31), 1, - anon_sym_LBRACK, - ACTIONS(33), 1, + ACTIONS(114), 1, + anon_sym_SLASH, + STATE(44), 1, + sym_line_comment, + ACTIONS(112), 11, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_STAR, - ACTIONS(39), 1, - sym_float, - ACTIONS(49), 1, + anon_sym_PERCENT, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + anon_sym_EQ, + [2141] = 12, + ACTIONS(3), 1, anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(5), 1, - sym_line_comment, - STATE(40), 1, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(189), 1, + sym_address, + ACTIONS(191), 1, + sym_infix_operator, + STATE(44), 1, sym_reg, - STATE(78), 1, - sym_int, - STATE(91), 1, - sym__expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, + STATE(45), 1, + sym_line_comment, + STATE(96), 1, + sym_ident, + STATE(102), 1, + sym__macro_arg, + ACTIONS(171), 2, + sym_word, + sym__reg, + ACTIONS(173), 2, sym_meta_ident, sym__ident, - ACTIONS(55), 3, + ACTIONS(187), 2, + ts_builtin_sym_end, + anon_sym_LF, + [2181] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + STATE(46), 1, + sym_line_comment, + ACTIONS(114), 5, sym_word, sym__reg, + sym_meta_ident, + sym__ident, + sym_infix_operator, + ACTIONS(112), 6, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, sym_address, - ACTIONS(29), 4, - anon_sym_byte, - anon_sym_word, - anon_sym_dword, - anon_sym_qword, - STATE(100), 4, - sym_list, - sym_ptr, - sym_string, - sym_ident, - [203] = 5, + [2209] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(6), 1, + STATE(47), 1, sym_line_comment, - ACTIONS(63), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, + ACTIONS(110), 5, sym_word, sym__reg, - sym_address, sym_meta_ident, sym__ident, - ACTIONS(61), 12, + sym_infix_operator, + ACTIONS(108), 6, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + sym_address, + [2237] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(90), 1, + anon_sym_SLASH, + STATE(48), 1, + sym_line_comment, + ACTIONS(88), 9, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PERCENT, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + [2264] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(94), 1, + anon_sym_SLASH, + STATE(49), 1, + sym_line_comment, + ACTIONS(92), 9, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PERCENT, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + [2291] = 8, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(134), 1, + anon_sym_SLASH, + ACTIONS(193), 1, + anon_sym_CARET, + ACTIONS(195), 1, + anon_sym_AMP, + STATE(50), 1, + sym_line_comment, + ACTIONS(132), 7, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PERCENT, + anon_sym_PIPE, + [2322] = 9, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(134), 1, + anon_sym_SLASH, + ACTIONS(193), 1, + anon_sym_CARET, + ACTIONS(195), 1, + anon_sym_AMP, + ACTIONS(197), 1, + anon_sym_PIPE, + STATE(51), 1, + sym_line_comment, + ACTIONS(132), 6, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PERCENT, + [2355] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(102), 1, + anon_sym_SLASH, + STATE(52), 1, + sym_line_comment, + ACTIONS(100), 9, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PERCENT, + anon_sym_PIPE, + anon_sym_CARET, + anon_sym_AMP, + [2382] = 7, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(134), 1, + anon_sym_SLASH, + ACTIONS(195), 1, + anon_sym_AMP, + STATE(53), 1, + sym_line_comment, + ACTIONS(132), 8, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_PERCENT, + anon_sym_PIPE, + anon_sym_CARET, + [2411] = 11, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(193), 1, + anon_sym_CARET, + ACTIONS(195), 1, + anon_sym_AMP, + ACTIONS(197), 1, + anon_sym_PIPE, + ACTIONS(205), 1, + anon_sym_SLASH, + STATE(54), 1, + sym_line_comment, + ACTIONS(199), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(201), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(203), 2, + anon_sym_STAR, + anon_sym_PERCENT, + [2448] = 10, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(193), 1, + anon_sym_CARET, + ACTIONS(195), 1, + anon_sym_AMP, + ACTIONS(197), 1, + anon_sym_PIPE, + ACTIONS(205), 1, + anon_sym_SLASH, + STATE(55), 1, + sym_line_comment, + ACTIONS(203), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(132), 4, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, + anon_sym_PLUS, + [2483] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(134), 1, + anon_sym_SLASH, + STATE(56), 1, + sym_line_comment, + ACTIONS(132), 9, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_DASH, anon_sym_PLUS, anon_sym_STAR, + anon_sym_PERCENT, anon_sym_PIPE, anon_sym_CARET, anon_sym_AMP, + [2510] = 6, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [238] = 8, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(68), 1, - anon_sym_COMMA, - ACTIONS(70), 1, - anon_sym_LPAREN, - STATE(7), 1, + ACTIONS(98), 1, + anon_sym_SLASH, + STATE(57), 1, sym_line_comment, - ACTIONS(65), 2, + ACTIONS(96), 9, ts_builtin_sym_end, anon_sym_LF, - ACTIONS(74), 8, + anon_sym_DASH, anon_sym_PLUS, anon_sym_STAR, + anon_sym_PERCENT, anon_sym_PIPE, anon_sym_CARET, anon_sym_AMP, + [2537] = 6, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(72), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - [279] = 5, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(8), 1, - sym_line_comment, - ACTIONS(78), 9, - anon_sym_DASH, + ACTIONS(106), 1, anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - ACTIONS(76), 12, + STATE(58), 1, + sym_line_comment, + ACTIONS(104), 9, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - anon_sym_LPAREN, + anon_sym_DASH, anon_sym_PLUS, anon_sym_STAR, + anon_sym_PERCENT, anon_sym_PIPE, anon_sym_CARET, anon_sym_AMP, + [2564] = 10, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [314] = 5, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(9), 1, + ACTIONS(189), 1, + sym_address, + STATE(44), 1, + sym_reg, + STATE(59), 1, sym_line_comment, - ACTIONS(82), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, + STATE(96), 1, + sym_ident, + STATE(141), 1, + sym__macro_arg, + ACTIONS(171), 2, sym_word, sym__reg, - sym_address, + ACTIONS(173), 2, sym_meta_ident, sym__ident, - ACTIONS(80), 11, - ts_builtin_sym_end, - anon_sym_LF, - anon_sym_COMMA, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, + [2597] = 7, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [348] = 7, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(68), 1, - anon_sym_COMMA, - STATE(10), 1, - sym_line_comment, - ACTIONS(65), 2, + ACTIONS(207), 1, ts_builtin_sym_end, + ACTIONS(209), 1, anon_sym_LF, - ACTIONS(74), 8, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, + STATE(60), 2, + sym_line_comment, + aux_sym_program_repeat1, + ACTIONS(212), 5, + anon_sym_label, + anon_sym_const, + sym_word, + sym_meta_ident, + sym__ident, + [2624] = 9, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(72), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(214), 1, + sym_address, + STATE(46), 1, + sym_reg, + STATE(61), 1, + sym_line_comment, + STATE(174), 1, + sym_ident, + ACTIONS(67), 2, sym_word, sym__reg, - sym_address, + ACTIONS(69), 2, sym_meta_ident, sym__ident, - [386] = 5, + [2654] = 9, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(11), 1, + ACTIONS(214), 1, + sym_address, + STATE(46), 1, + sym_reg, + STATE(62), 1, sym_line_comment, - ACTIONS(86), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, + STATE(182), 1, + sym_ident, + ACTIONS(67), 2, sym_word, sym__reg, - sym_address, + ACTIONS(69), 2, sym_meta_ident, sym__ident, - ACTIONS(84), 11, - ts_builtin_sym_end, - anon_sym_LF, - anon_sym_COMMA, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, + [2684] = 6, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [420] = 5, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(12), 1, + STATE(63), 1, sym_line_comment, - ACTIONS(90), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, + ACTIONS(216), 2, + ts_builtin_sym_end, + anon_sym_LF, + ACTIONS(218), 5, + anon_sym_label, + anon_sym_const, sym_word, - sym__reg, - sym_address, sym_meta_ident, sym__ident, - ACTIONS(88), 11, + [2708] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(102), 1, + sym_infix_operator, + STATE(64), 1, + sym_line_comment, + ACTIONS(100), 5, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, + anon_sym_LPAREN, + anon_sym_RBRACK, + [2731] = 6, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [454] = 8, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(96), 1, - anon_sym_PIPE, - ACTIONS(98), 1, - anon_sym_CARET, - ACTIONS(100), 1, - anon_sym_AMP, - STATE(13), 1, + ACTIONS(94), 1, + sym_infix_operator, + STATE(65), 1, sym_line_comment, - ACTIONS(92), 7, + ACTIONS(92), 5, ts_builtin_sym_end, anon_sym_LF, - anon_sym_PLUS, - anon_sym_STAR, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RBRACK, + [2754] = 9, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(94), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - [493] = 10, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(96), 1, - anon_sym_PIPE, - ACTIONS(98), 1, - anon_sym_CARET, - ACTIONS(100), 1, - anon_sym_AMP, - ACTIONS(102), 1, - anon_sym_STAR, - STATE(14), 1, + ACTIONS(86), 1, + anon_sym_LPAREN, + ACTIONS(191), 1, + sym_infix_operator, + ACTIONS(220), 1, + anon_sym_COMMA, + STATE(66), 1, sym_line_comment, - ACTIONS(104), 2, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(92), 6, + STATE(91), 1, + aux_sym_meta_repeat2, + ACTIONS(187), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_PLUS, + [2783] = 6, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(94), 7, - anon_sym_DASH, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - [536] = 5, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(15), 1, + ACTIONS(98), 1, + sym_infix_operator, + STATE(67), 1, sym_line_comment, - ACTIONS(94), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - ACTIONS(92), 10, + ACTIONS(96), 5, ts_builtin_sym_end, anon_sym_LF, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RBRACK, + [2806] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(222), 1, + anon_sym_RPAREN, + STATE(68), 1, + sym_line_comment, + ACTIONS(224), 4, + anon_sym_1, + anon_sym_2, + anon_sym_4, + anon_sym_8, + [2828] = 6, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(226), 1, + anon_sym_RPAREN, + STATE(69), 1, + sym_line_comment, + ACTIONS(228), 4, + anon_sym_1, + anon_sym_2, + anon_sym_4, + anon_sym_8, + [2850] = 7, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(232), 1, + anon_sym_BANG, + ACTIONS(234), 1, + sym_infix_operator, + STATE(70), 1, + sym_line_comment, + ACTIONS(230), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [2874] = 8, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [569] = 7, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(98), 1, - anon_sym_CARET, - ACTIONS(100), 1, - anon_sym_AMP, - STATE(16), 1, + ACTIONS(191), 1, + sym_infix_operator, + ACTIONS(236), 1, + anon_sym_COMMA, + STATE(71), 1, sym_line_comment, - ACTIONS(92), 8, + STATE(94), 1, + aux_sym_meta_repeat4, + ACTIONS(187), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, + [2900] = 8, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(94), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - [606] = 5, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(17), 1, + ACTIONS(171), 1, + sym__reg, + ACTIONS(238), 1, + anon_sym_RBRACE, + STATE(72), 1, sym_line_comment, - ACTIONS(72), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, + STATE(125), 1, + sym_reg, + ACTIONS(189), 2, sym_word, - sym__reg, sym_address, - sym_meta_ident, - sym__ident, - ACTIONS(74), 10, - ts_builtin_sym_end, - anon_sym_LF, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, + [2926] = 8, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - [639] = 12, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(96), 1, - anon_sym_PIPE, - ACTIONS(98), 1, - anon_sym_CARET, - ACTIONS(100), 1, - anon_sym_AMP, - ACTIONS(102), 1, - anon_sym_STAR, - ACTIONS(108), 1, - anon_sym_DASH, - ACTIONS(110), 1, - anon_sym_PLUS, - STATE(18), 1, + ACTIONS(67), 1, + sym__reg, + ACTIONS(240), 1, + anon_sym_COMMA, + STATE(73), 1, sym_line_comment, - ACTIONS(104), 2, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(106), 5, - ts_builtin_sym_end, - anon_sym_LF, - anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(112), 6, - aux_sym_int_token2, + STATE(156), 1, + sym_reg, + ACTIONS(214), 2, sym_word, - sym__reg, sym_address, - sym_meta_ident, - sym__ident, - [686] = 6, + [2952] = 8, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(100), 1, - anon_sym_AMP, - STATE(19), 1, + ACTIONS(244), 1, + anon_sym_LPAREN, + ACTIONS(246), 1, + sym_meta_ident, + STATE(74), 1, sym_line_comment, - ACTIONS(92), 9, + STATE(159), 1, + sym_meta, + ACTIONS(242), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PIPE, - anon_sym_CARET, + [2978] = 8, + ACTIONS(3), 1, anon_sym_POUND, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(94), 9, - anon_sym_DASH, - anon_sym_SLASH, - anon_sym_PERCENT, - aux_sym_int_token2, - sym_word, - sym__reg, - sym_address, - sym_meta_ident, - sym__ident, - [721] = 13, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(35), 1, - anon_sym_POUND, - ACTIONS(37), 1, - aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(18), 1, - sym__tc_expr, - STATE(20), 1, + ACTIONS(171), 1, + sym__reg, + ACTIONS(248), 1, + anon_sym_RBRACE, + STATE(75), 1, sym_line_comment, - STATE(21), 1, - aux_sym_instruction_repeat2, - ACTIONS(41), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(45), 2, - sym_meta_ident, - sym__ident, - ACTIONS(114), 2, - ts_builtin_sym_end, - anon_sym_LF, - ACTIONS(43), 3, + STATE(135), 1, + sym_reg, + ACTIONS(189), 2, sym_word, - sym__reg, sym_address, - STATE(17), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [769] = 12, + [3004] = 9, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(118), 1, + ACTIONS(57), 1, anon_sym_POUND, - ACTIONS(121), 1, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(61), 1, aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(18), 1, - sym__tc_expr, - ACTIONS(116), 2, - ts_builtin_sym_end, - anon_sym_LF, - ACTIONS(124), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(130), 2, - sym_meta_ident, - sym__ident, - STATE(21), 2, + ACTIONS(185), 1, + sym_prefix_operator, + ACTIONS(250), 1, + aux_sym_int_token1, + STATE(76), 1, sym_line_comment, - aux_sym_instruction_repeat2, - ACTIONS(127), 3, - sym_word, - sym__reg, - sym_address, - STATE(17), 4, - sym_tc_infix, + STATE(165), 1, sym_int, - sym_string, - sym_ident, - [815] = 15, + [3032] = 7, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - ACTIONS(135), 1, - anon_sym_COLON, - ACTIONS(137), 1, - sym_float, - STATE(22), 1, + ACTIONS(254), 1, + anon_sym_BANG, + ACTIONS(256), 1, + sym_infix_operator, + STATE(77), 1, sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(65), 1, - sym_string, - STATE(74), 1, - sym_int, - STATE(106), 1, - sym_ident, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(133), 2, + ACTIONS(252), 3, ts_builtin_sym_end, anon_sym_LF, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - [866] = 14, + anon_sym_COMMA, + [3056] = 9, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, + ACTIONS(57), 1, anon_sym_POUND, - ACTIONS(51), 1, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(61), 1, aux_sym_int_token2, - ACTIONS(137), 1, - sym_float, - STATE(23), 1, + ACTIONS(185), 1, + sym_prefix_operator, + ACTIONS(250), 1, + aux_sym_int_token1, + STATE(78), 1, sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(65), 1, - sym_string, - STATE(74), 1, + STATE(166), 1, sym_int, - STATE(106), 1, - sym_ident, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(133), 2, - ts_builtin_sym_end, - anon_sym_LF, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - [914] = 11, + [3084] = 7, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(24), 1, + ACTIONS(86), 1, + anon_sym_LPAREN, + ACTIONS(191), 1, + sym_infix_operator, + STATE(79), 1, sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(49), 1, - sym__tc_expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - STATE(43), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [955] = 11, + ACTIONS(84), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3108] = 8, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(35), 1, - anon_sym_POUND, - ACTIONS(37), 1, - aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(14), 1, - sym__tc_expr, - STATE(25), 1, - sym_line_comment, - ACTIONS(41), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(45), 2, + ACTIONS(246), 1, sym_meta_ident, - sym__ident, - ACTIONS(43), 3, - sym_word, - sym__reg, - sym_address, - STATE(17), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [996] = 11, + ACTIONS(260), 1, + anon_sym_LPAREN, + STATE(80), 1, + sym_line_comment, + STATE(151), 1, + sym_meta, + ACTIONS(258), 2, + ts_builtin_sym_end, + anon_sym_LF, + [3134] = 9, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, + ACTIONS(57), 1, anon_sym_POUND, - ACTIONS(51), 1, + ACTIONS(59), 1, + anon_sym_DOLLAR, + ACTIONS(61), 1, aux_sym_int_token2, - STATE(26), 1, + ACTIONS(185), 1, + sym_prefix_operator, + ACTIONS(250), 1, + aux_sym_int_token1, + STATE(81), 1, sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(44), 1, - sym__tc_expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - STATE(43), 4, - sym_tc_infix, + STATE(146), 1, sym_int, - sym_string, - sym_ident, - [1037] = 11, + [3162] = 8, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(35), 1, - anon_sym_POUND, - ACTIONS(37), 1, - aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(13), 1, - sym__tc_expr, - STATE(27), 1, + ACTIONS(191), 1, + sym_infix_operator, + ACTIONS(262), 1, + anon_sym_COMMA, + STATE(82), 1, sym_line_comment, - ACTIONS(41), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(45), 2, - sym_meta_ident, - sym__ident, - ACTIONS(43), 3, - sym_word, - sym__reg, - sym_address, - STATE(17), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1078] = 11, + STATE(128), 1, + aux_sym_meta_repeat3, + ACTIONS(187), 2, + ts_builtin_sym_end, + anon_sym_LF, + [3188] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(35), 1, - anon_sym_POUND, - ACTIONS(37), 1, - aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(16), 1, - sym__tc_expr, - STATE(28), 1, + ACTIONS(264), 1, + anon_sym_RPAREN, + STATE(83), 1, sym_line_comment, - ACTIONS(41), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(45), 2, - sym_meta_ident, - sym__ident, - ACTIONS(43), 3, - sym_word, - sym__reg, - sym_address, - STATE(17), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1119] = 11, + ACTIONS(266), 4, + anon_sym_1, + anon_sym_2, + anon_sym_4, + anon_sym_8, + [3210] = 8, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(35), 1, - anon_sym_POUND, - ACTIONS(37), 1, - aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(19), 1, - sym__tc_expr, - STATE(29), 1, + ACTIONS(171), 1, + sym__reg, + ACTIONS(268), 1, + anon_sym_RBRACE, + STATE(84), 1, sym_line_comment, - ACTIONS(41), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(45), 2, - sym_meta_ident, - sym__ident, - ACTIONS(43), 3, + STATE(135), 1, + sym_reg, + ACTIONS(189), 2, sym_word, - sym__reg, sym_address, - STATE(17), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1160] = 11, + [3236] = 8, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(30), 1, + ACTIONS(67), 1, + sym__reg, + ACTIONS(270), 1, + anon_sym_COMMA, + STATE(85), 1, sym_line_comment, - STATE(40), 1, + STATE(161), 1, sym_reg, - STATE(48), 1, - sym__tc_expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, + ACTIONS(214), 2, sym_word, - sym__reg, sym_address, - STATE(43), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1201] = 11, + [3262] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(35), 1, - anon_sym_POUND, - ACTIONS(37), 1, - aux_sym_int_token2, - STATE(11), 1, - sym_reg, - STATE(15), 1, - sym__tc_expr, - STATE(31), 1, + ACTIONS(272), 1, + anon_sym_RPAREN, + STATE(86), 1, sym_line_comment, - ACTIONS(41), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(45), 2, - sym_meta_ident, - sym__ident, - ACTIONS(43), 3, - sym_word, - sym__reg, - sym_address, - STATE(17), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1242] = 11, + ACTIONS(274), 4, + anon_sym_1, + anon_sym_2, + anon_sym_4, + anon_sym_8, + [3284] = 7, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(32), 1, + ACTIONS(67), 1, + sym__reg, + STATE(87), 1, sym_line_comment, - STATE(40), 1, + STATE(186), 1, sym_reg, - STATE(46), 1, - sym__tc_expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, + ACTIONS(214), 2, sym_word, - sym__reg, sym_address, - STATE(43), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1283] = 11, + [3307] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(33), 1, + ACTIONS(278), 1, + anon_sym_COMMA, + ACTIONS(276), 2, + ts_builtin_sym_end, + anon_sym_LF, + STATE(88), 2, sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(47), 1, - sym__tc_expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - STATE(43), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1324] = 11, + aux_sym_meta_repeat2, + [3328] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(34), 1, + ACTIONS(283), 1, + anon_sym_COMMA, + ACTIONS(281), 2, + ts_builtin_sym_end, + anon_sym_LF, + STATE(89), 2, sym_line_comment, - STATE(40), 1, - sym_reg, - STATE(45), 1, - sym__tc_expr, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - STATE(43), 4, - sym_tc_infix, - sym_int, - sym_string, - sym_ident, - [1365] = 6, + aux_sym_meta_repeat4, + [3349] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(82), 1, - anon_sym_SLASH, - STATE(35), 1, + ACTIONS(288), 1, + sym_infix_operator, + STATE(90), 1, sym_line_comment, - ACTIONS(80), 13, + ACTIONS(286), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_DASH, - anon_sym_RBRACE, - anon_sym_PLUS, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1396] = 6, + [3370] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(78), 1, - anon_sym_SLASH, - STATE(36), 1, + ACTIONS(220), 1, + anon_sym_COMMA, + STATE(88), 1, + aux_sym_meta_repeat2, + STATE(91), 1, sym_line_comment, - ACTIONS(76), 12, + ACTIONS(290), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1426] = 14, + [3393] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(11), 1, - anon_sym_label, - ACTIONS(13), 1, - anon_sym_const, - ACTIONS(15), 1, - sym_word, - ACTIONS(17), 1, - sym_meta_ident, - ACTIONS(19), 1, - sym__ident, - ACTIONS(139), 1, + ACTIONS(294), 1, + anon_sym_COMMA, + STATE(92), 1, + sym_line_comment, + STATE(100), 1, + aux_sym_meta_repeat1, + ACTIONS(292), 2, ts_builtin_sym_end, - ACTIONS(141), 1, anon_sym_LF, - STATE(37), 1, - sym_line_comment, - STATE(52), 1, - aux_sym_program_repeat1, - STATE(110), 1, - sym__item, - STATE(114), 4, - sym_meta, - sym_label, - sym_const, - sym_instruction, - [1472] = 14, + [3416] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(11), 1, - anon_sym_label, - ACTIONS(13), 1, - anon_sym_const, - ACTIONS(15), 1, + ACTIONS(67), 1, + sym__reg, + STATE(93), 1, + sym_line_comment, + STATE(163), 1, + sym_reg, + ACTIONS(214), 2, sym_word, - ACTIONS(17), 1, - sym_meta_ident, - ACTIONS(19), 1, - sym__ident, - ACTIONS(141), 1, - anon_sym_LF, - ACTIONS(143), 1, - ts_builtin_sym_end, - STATE(38), 1, + sym_address, + [3439] = 7, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(236), 1, + anon_sym_COMMA, + STATE(89), 1, + aux_sym_meta_repeat4, + STATE(94), 1, sym_line_comment, - STATE(52), 1, - aux_sym_program_repeat1, - STATE(110), 1, - sym__item, - STATE(114), 4, - sym_meta, - sym_label, - sym_const, - sym_instruction, - [1518] = 6, + ACTIONS(290), 2, + ts_builtin_sym_end, + anon_sym_LF, + [3462] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(63), 1, - anon_sym_SLASH, - STATE(39), 1, + ACTIONS(298), 1, + sym_infix_operator, + STATE(95), 1, sym_line_comment, - ACTIONS(61), 12, + ACTIONS(296), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1548] = 6, + [3483] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(86), 1, - anon_sym_SLASH, - STATE(40), 1, + ACTIONS(302), 1, + anon_sym_EQ, + STATE(96), 1, sym_line_comment, - ACTIONS(84), 12, + ACTIONS(300), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1578] = 13, + [3504] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(11), 1, - anon_sym_label, - ACTIONS(13), 1, - anon_sym_const, - ACTIONS(15), 1, - sym_word, - ACTIONS(17), 1, - sym_meta_ident, - ACTIONS(19), 1, - sym__ident, - ACTIONS(141), 1, - anon_sym_LF, - STATE(41), 1, + ACTIONS(307), 1, + anon_sym_RBRACE, + ACTIONS(304), 2, + anon_sym_COMMA, + anon_sym_DASH, + STATE(97), 2, sym_line_comment, - STATE(52), 1, - aux_sym_program_repeat1, - STATE(110), 1, - sym__item, - STATE(114), 4, - sym_meta, - sym_label, - sym_const, - sym_instruction, - [1621] = 6, + aux_sym_list_repeat1, + [3525] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(90), 1, - anon_sym_SLASH, - STATE(42), 1, + ACTIONS(311), 1, + sym_infix_operator, + STATE(98), 1, sym_line_comment, - ACTIONS(88), 10, + ACTIONS(309), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1649] = 6, + [3546] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(72), 1, - anon_sym_SLASH, - STATE(43), 1, + ACTIONS(315), 1, + sym_infix_operator, + STATE(99), 1, sym_line_comment, - ACTIONS(74), 9, + ACTIONS(313), 3, ts_builtin_sym_end, anon_sym_LF, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1676] = 7, + anon_sym_COMMA, + [3567] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(94), 1, - anon_sym_SLASH, - ACTIONS(145), 1, - anon_sym_AMP, - STATE(44), 1, - sym_line_comment, - ACTIONS(92), 8, + ACTIONS(319), 1, + anon_sym_COMMA, + ACTIONS(317), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - [1705] = 8, + STATE(100), 2, + sym_line_comment, + aux_sym_meta_repeat1, + [3588] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(94), 1, - anon_sym_SLASH, - ACTIONS(145), 1, - anon_sym_AMP, - ACTIONS(147), 1, - anon_sym_CARET, - STATE(45), 1, + ACTIONS(324), 1, + sym_infix_operator, + STATE(101), 1, sym_line_comment, - ACTIONS(92), 7, + ACTIONS(322), 3, ts_builtin_sym_end, anon_sym_LF, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - [1736] = 11, + anon_sym_COMMA, + [3609] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(145), 1, - anon_sym_AMP, - ACTIONS(147), 1, - anon_sym_CARET, - ACTIONS(155), 1, - anon_sym_SLASH, - ACTIONS(157), 1, - anon_sym_PIPE, - STATE(46), 1, + ACTIONS(294), 1, + anon_sym_COMMA, + STATE(92), 1, + aux_sym_meta_repeat1, + STATE(102), 1, sym_line_comment, - ACTIONS(149), 2, + ACTIONS(290), 2, ts_builtin_sym_end, anon_sym_LF, - ACTIONS(151), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(153), 2, - anon_sym_STAR, - anon_sym_PERCENT, - [1773] = 9, + [3632] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(94), 1, - anon_sym_SLASH, - ACTIONS(145), 1, - anon_sym_AMP, - ACTIONS(147), 1, - anon_sym_CARET, - ACTIONS(157), 1, - anon_sym_PIPE, - STATE(47), 1, + ACTIONS(328), 1, + sym_infix_operator, + STATE(103), 1, sym_line_comment, - ACTIONS(92), 6, + ACTIONS(326), 3, ts_builtin_sym_end, anon_sym_LF, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PERCENT, - [1806] = 10, + anon_sym_COMMA, + [3653] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(145), 1, - anon_sym_AMP, - ACTIONS(147), 1, - anon_sym_CARET, - ACTIONS(155), 1, - anon_sym_SLASH, - ACTIONS(157), 1, - anon_sym_PIPE, - STATE(48), 1, + ACTIONS(330), 1, + anon_sym_COMMA, + STATE(104), 1, sym_line_comment, - ACTIONS(153), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(92), 4, + STATE(130), 1, + aux_sym_instruction_repeat1, + ACTIONS(73), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_DASH, - anon_sym_PLUS, - [1841] = 6, + [3676] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(94), 1, - anon_sym_SLASH, - STATE(49), 1, + ACTIONS(234), 1, + sym_infix_operator, + STATE(105), 1, sym_line_comment, - ACTIONS(92), 9, + ACTIONS(230), 3, ts_builtin_sym_end, anon_sym_LF, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_PERCENT, - anon_sym_PIPE, - anon_sym_CARET, - anon_sym_AMP, - [1868] = 9, + anon_sym_COMMA, + [3697] = 7, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(40), 1, - sym_reg, - STATE(50), 1, + ACTIONS(332), 1, + ts_builtin_sym_end, + ACTIONS(334), 1, + anon_sym_LF, + STATE(43), 1, + aux_sym_program_repeat1, + STATE(106), 2, sym_line_comment, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - STATE(122), 2, - sym_int, - sym_ident, - ACTIONS(55), 3, - sym_word, - sym__reg, - sym_address, - [1900] = 9, + aux_sym_program_repeat2, + [3720] = 7, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(51), 1, - aux_sym_int_token2, - STATE(40), 1, - sym_reg, - STATE(51), 1, - sym_line_comment, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - STATE(117), 2, - sym_int, - sym_ident, - ACTIONS(55), 3, - sym_word, + ACTIONS(67), 1, sym__reg, + STATE(107), 1, + sym_line_comment, + STATE(179), 1, + sym_reg, + ACTIONS(214), 2, + sym_word, sym_address, - [1932] = 7, + [3743] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(159), 1, + ACTIONS(339), 1, + sym_infix_operator, + STATE(108), 1, + sym_line_comment, + ACTIONS(337), 3, ts_builtin_sym_end, - ACTIONS(161), 1, anon_sym_LF, - STATE(52), 2, - sym_line_comment, - aux_sym_program_repeat1, - ACTIONS(164), 5, - anon_sym_label, - anon_sym_const, - sym_word, - sym_meta_ident, - sym__ident, - [1959] = 6, + anon_sym_COMMA, + [3764] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(53), 1, + ACTIONS(343), 1, + sym_infix_operator, + STATE(109), 1, sym_line_comment, - ACTIONS(166), 2, + ACTIONS(341), 3, ts_builtin_sym_end, anon_sym_LF, - ACTIONS(168), 5, - anon_sym_label, - anon_sym_const, - sym_word, - sym_meta_ident, - sym__ident, - [1983] = 9, + anon_sym_COMMA, + [3785] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(170), 1, - sym_address, - STATE(40), 1, - sym_reg, - STATE(54), 1, + ACTIONS(347), 1, + sym_infix_operator, + STATE(110), 1, sym_line_comment, - STATE(128), 1, - sym_ident, - ACTIONS(55), 2, - sym_word, - sym__reg, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - [2013] = 9, + ACTIONS(345), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3806] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(170), 1, - sym_address, - STATE(40), 1, - sym_reg, - STATE(55), 1, + ACTIONS(351), 1, + sym_infix_operator, + STATE(111), 1, sym_line_comment, - STATE(129), 1, - sym_ident, - ACTIONS(55), 2, - sym_word, - sym__reg, - ACTIONS(57), 2, - sym_meta_ident, - sym__ident, - [2043] = 8, + ACTIONS(349), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3827] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - ACTIONS(172), 1, - anon_sym_RBRACE, - STATE(56), 1, + ACTIONS(256), 1, + sym_infix_operator, + STATE(112), 1, sym_line_comment, - STATE(82), 1, - sym_reg, - ACTIONS(170), 2, - sym_word, - sym_address, - [2069] = 8, + ACTIONS(252), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3848] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - ACTIONS(174), 1, - anon_sym_RBRACE, - STATE(57), 1, + ACTIONS(355), 1, + sym_infix_operator, + STATE(113), 1, sym_line_comment, - STATE(104), 1, - sym_reg, - ACTIONS(170), 2, - sym_word, - sym_address, - [2095] = 8, + ACTIONS(353), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3869] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(178), 1, - anon_sym_LPAREN, - ACTIONS(180), 1, - sym_meta_ident, - STATE(58), 1, + ACTIONS(359), 1, + sym_infix_operator, + STATE(114), 1, sym_line_comment, - STATE(108), 1, - sym_meta, - ACTIONS(176), 2, + ACTIONS(357), 3, ts_builtin_sym_end, anon_sym_LF, - [2121] = 8, + anon_sym_COMMA, + [3890] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - ACTIONS(182), 1, - anon_sym_RBRACE, - STATE(59), 1, + ACTIONS(363), 1, + sym_infix_operator, + STATE(115), 1, sym_line_comment, - STATE(104), 1, - sym_reg, - ACTIONS(170), 2, - sym_word, - sym_address, - [2147] = 8, + ACTIONS(361), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3911] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(180), 1, - sym_meta_ident, - ACTIONS(186), 1, - anon_sym_LPAREN, - STATE(60), 1, + ACTIONS(367), 1, + sym_infix_operator, + STATE(116), 1, sym_line_comment, - STATE(111), 1, - sym_meta, - ACTIONS(184), 2, + ACTIONS(365), 3, ts_builtin_sym_end, anon_sym_LF, - [2173] = 7, + anon_sym_COMMA, + [3932] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(188), 1, + ACTIONS(371), 1, + sym_infix_operator, + STATE(117), 1, + sym_line_comment, + ACTIONS(369), 3, ts_builtin_sym_end, - ACTIONS(190), 1, anon_sym_LF, - STATE(41), 1, - aux_sym_program_repeat1, - STATE(61), 2, - sym_line_comment, - aux_sym_program_repeat2, - [2196] = 8, + anon_sym_COMMA, + [3953] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(182), 1, - anon_sym_RBRACE, - ACTIONS(193), 1, - anon_sym_COMMA, - ACTIONS(195), 1, - anon_sym_DASH, - STATE(62), 1, + ACTIONS(171), 1, + sym__reg, + STATE(118), 1, sym_line_comment, - STATE(63), 1, - aux_sym_list_repeat1, - [2221] = 6, + STATE(127), 1, + sym_reg, + ACTIONS(189), 2, + sym_word, + sym_address, + [3976] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(200), 1, - anon_sym_RBRACE, - ACTIONS(197), 2, - anon_sym_COMMA, - anon_sym_DASH, - STATE(63), 2, + ACTIONS(106), 1, + sym_infix_operator, + STATE(119), 1, sym_line_comment, - aux_sym_list_repeat1, - [2242] = 7, + ACTIONS(104), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [3997] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(204), 1, - anon_sym_COMMA, - STATE(64), 1, + ACTIONS(171), 1, + sym__reg, + STATE(120), 1, sym_line_comment, - STATE(86), 1, - aux_sym_meta_repeat2, - ACTIONS(202), 2, - ts_builtin_sym_end, - anon_sym_LF, - [2265] = 7, + STATE(135), 1, + sym_reg, + ACTIONS(189), 2, + sym_word, + sym_address, + [4020] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(208), 1, - anon_sym_COMMA, - STATE(65), 1, + ACTIONS(375), 1, + sym_infix_operator, + STATE(121), 1, sym_line_comment, - STATE(68), 1, - aux_sym_meta_repeat3, - ACTIONS(206), 2, + ACTIONS(373), 3, ts_builtin_sym_end, anon_sym_LF, - [2288] = 7, + anon_sym_COMMA, + [4041] = 8, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(210), 1, + ACTIONS(248), 1, + anon_sym_RBRACE, + ACTIONS(377), 1, anon_sym_COMMA, - STATE(66), 1, + ACTIONS(379), 1, + anon_sym_DASH, + STATE(97), 1, + aux_sym_list_repeat1, + STATE(122), 1, sym_line_comment, - STATE(87), 1, - aux_sym_meta_repeat1, - ACTIONS(202), 2, - ts_builtin_sym_end, - anon_sym_LF, - [2311] = 7, + [4066] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, + ACTIONS(171), 1, sym__reg, - STATE(67), 1, + STATE(123), 1, sym_line_comment, - STATE(121), 1, + STATE(144), 1, sym_reg, - ACTIONS(170), 2, + ACTIONS(189), 2, sym_word, sym_address, - [2334] = 7, + [4089] = 8, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(208), 1, - anon_sym_COMMA, - STATE(68), 1, - sym_line_comment, - STATE(84), 1, - aux_sym_meta_repeat3, - ACTIONS(202), 2, - ts_builtin_sym_end, + ACTIONS(181), 1, anon_sym_LF, - [2357] = 7, + ACTIONS(183), 1, + ts_builtin_sym_end, + STATE(39), 1, + aux_sym_program_repeat1, + STATE(106), 1, + aux_sym_program_repeat2, + STATE(124), 1, + sym_line_comment, + [4114] = 8, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(212), 1, + ACTIONS(379), 1, + anon_sym_DASH, + ACTIONS(381), 1, anon_sym_COMMA, - STATE(69), 1, + ACTIONS(383), 1, + anon_sym_RBRACE, + STATE(122), 1, + aux_sym_list_repeat1, + STATE(125), 1, sym_line_comment, - STATE(71), 1, - aux_sym_instruction_repeat1, - ACTIONS(114), 2, - ts_builtin_sym_end, - anon_sym_LF, - [2380] = 7, + [4139] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(204), 1, - anon_sym_COMMA, - STATE(64), 1, - aux_sym_meta_repeat2, - STATE(70), 1, + ACTIONS(191), 1, + sym_infix_operator, + STATE(126), 1, sym_line_comment, - ACTIONS(206), 2, + ACTIONS(84), 3, ts_builtin_sym_end, anon_sym_LF, - [2403] = 7, + anon_sym_COMMA, + [4160] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(214), 1, + ACTIONS(385), 1, anon_sym_COMMA, - STATE(71), 1, + ACTIONS(389), 1, + anon_sym_RBRACK, + STATE(127), 1, sym_line_comment, - STATE(80), 1, - aux_sym_instruction_repeat1, - ACTIONS(47), 2, - ts_builtin_sym_end, - anon_sym_LF, - [2426] = 7, + ACTIONS(387), 2, + anon_sym_DASH, + anon_sym_PLUS, + [4183] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - STATE(72), 1, + ACTIONS(262), 1, + anon_sym_COMMA, + STATE(128), 1, sym_line_comment, - STATE(120), 1, - sym_reg, - ACTIONS(170), 2, - sym_word, - sym_address, - [2449] = 7, + STATE(133), 1, + aux_sym_meta_repeat3, + ACTIONS(290), 2, + ts_builtin_sym_end, + anon_sym_LF, + [4206] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - STATE(73), 1, - sym_line_comment, + ACTIONS(391), 1, + anon_sym_COMMA, STATE(104), 1, - sym_reg, - ACTIONS(170), 2, - sym_word, - sym_address, - [2472] = 7, + aux_sym_instruction_repeat1, + STATE(129), 1, + sym_line_comment, + ACTIONS(136), 2, + ts_builtin_sym_end, + anon_sym_LF, + [4229] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(210), 1, + ACTIONS(395), 1, anon_sym_COMMA, - STATE(66), 1, - aux_sym_meta_repeat1, - STATE(74), 1, - sym_line_comment, - ACTIONS(206), 2, + ACTIONS(393), 2, ts_builtin_sym_end, anon_sym_LF, - [2495] = 7, + STATE(130), 2, + sym_line_comment, + aux_sym_instruction_repeat1, + [4250] = 8, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - STATE(75), 1, + ACTIONS(181), 1, + anon_sym_LF, + ACTIONS(398), 1, + ts_builtin_sym_end, + STATE(40), 1, + aux_sym_program_repeat1, + STATE(124), 1, + aux_sym_program_repeat2, + STATE(131), 1, sym_line_comment, - STATE(102), 1, - sym_reg, - ACTIONS(170), 2, - sym_word, - sym_address, - [2518] = 7, + [4275] = 7, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(216), 1, - anon_sym_COMMA, - ACTIONS(220), 1, - anon_sym_RBRACK, - STATE(76), 1, + ACTIONS(67), 1, + sym__reg, + STATE(132), 1, sym_line_comment, - ACTIONS(218), 2, - anon_sym_DASH, - anon_sym_PLUS, - [2541] = 6, + STATE(169), 1, + sym_reg, + ACTIONS(214), 2, + sym_word, + sym_address, + [4298] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(224), 1, - anon_sym_BANG, - STATE(77), 1, - sym_line_comment, - ACTIONS(222), 3, + ACTIONS(402), 1, + anon_sym_COMMA, + ACTIONS(400), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2562] = 6, + STATE(133), 2, + sym_line_comment, + aux_sym_meta_repeat3, + [4319] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(70), 1, - anon_sym_LPAREN, - STATE(78), 1, + ACTIONS(407), 1, + sym_infix_operator, + STATE(134), 1, sym_line_comment, - ACTIONS(68), 3, + ACTIONS(405), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - [2583] = 7, + [4340] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(55), 1, - sym__reg, - STATE(76), 1, - sym_reg, - STATE(79), 1, + STATE(135), 1, sym_line_comment, - ACTIONS(170), 2, - sym_word, - sym_address, - [2606] = 6, + ACTIONS(307), 3, + anon_sym_COMMA, + anon_sym_DASH, + anon_sym_RBRACE, + [4358] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(228), 1, - anon_sym_COMMA, - ACTIONS(226), 2, + ACTIONS(114), 1, + sym_infix_operator, + STATE(136), 1, + sym_line_comment, + ACTIONS(112), 2, ts_builtin_sym_end, anon_sym_LF, - STATE(80), 2, - sym_line_comment, - aux_sym_instruction_repeat1, - [2627] = 8, + [4378] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(141), 1, - anon_sym_LF, - ACTIONS(231), 1, - ts_builtin_sym_end, - STATE(37), 1, - aux_sym_program_repeat1, - STATE(81), 1, + STATE(137), 1, sym_line_comment, - STATE(85), 1, - aux_sym_program_repeat2, - [2652] = 8, + ACTIONS(393), 3, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_COMMA, + [4396] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(195), 1, - anon_sym_DASH, - ACTIONS(233), 1, - anon_sym_COMMA, - ACTIONS(235), 1, - anon_sym_RBRACE, - STATE(62), 1, - aux_sym_list_repeat1, - STATE(82), 1, + STATE(138), 1, sym_line_comment, - [2677] = 6, + STATE(142), 1, + sym_string, + ACTIONS(65), 2, + aux_sym_string_token1, + aux_sym_string_token2, + [4416] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(239), 1, - anon_sym_BANG, - STATE(83), 1, + STATE(139), 1, sym_line_comment, - ACTIONS(237), 3, + ACTIONS(409), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - [2698] = 6, + [4434] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(243), 1, - anon_sym_COMMA, - ACTIONS(241), 2, + STATE(140), 1, + sym_line_comment, + ACTIONS(411), 3, ts_builtin_sym_end, anon_sym_LF, - STATE(84), 2, - sym_line_comment, - aux_sym_meta_repeat3, - [2719] = 8, + anon_sym_COMMA, + [4452] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(139), 1, + STATE(141), 1, + sym_line_comment, + ACTIONS(317), 3, ts_builtin_sym_end, - ACTIONS(141), 1, anon_sym_LF, - STATE(38), 1, - aux_sym_program_repeat1, - STATE(61), 1, - aux_sym_program_repeat2, - STATE(85), 1, - sym_line_comment, - [2744] = 6, + anon_sym_COMMA, + [4470] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(248), 1, - anon_sym_COMMA, - ACTIONS(246), 2, + STATE(142), 1, + sym_line_comment, + ACTIONS(281), 3, ts_builtin_sym_end, anon_sym_LF, - STATE(86), 2, - sym_line_comment, - aux_sym_meta_repeat2, - [2765] = 6, + anon_sym_COMMA, + [4488] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(253), 1, - anon_sym_COMMA, - ACTIONS(251), 2, + STATE(143), 1, + sym_line_comment, + ACTIONS(400), 3, ts_builtin_sym_end, anon_sym_LF, - STATE(87), 2, - sym_line_comment, - aux_sym_meta_repeat1, - [2786] = 6, + anon_sym_COMMA, + [4506] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(88), 1, + ACTIONS(415), 1, + anon_sym_RBRACK, + STATE(144), 1, sym_line_comment, - STATE(99), 1, - sym_string, - ACTIONS(53), 2, - aux_sym_string_token1, - aux_sym_string_token2, - [2806] = 5, + ACTIONS(413), 2, + anon_sym_DASH, + anon_sym_PLUS, + [4526] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(89), 1, + ACTIONS(419), 1, + sym_infix_operator, + STATE(145), 1, sym_line_comment, - ACTIONS(256), 3, + ACTIONS(417), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2824] = 5, + [4546] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(90), 1, + STATE(146), 1, sym_line_comment, - ACTIONS(258), 3, + ACTIONS(276), 3, ts_builtin_sym_end, anon_sym_LF, anon_sym_COMMA, - [2842] = 5, + [4564] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(91), 1, + ACTIONS(110), 1, + sym_infix_operator, + STATE(147), 1, sym_line_comment, - ACTIONS(226), 3, + ACTIONS(108), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2860] = 5, + [4584] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(92), 1, + STATE(148), 1, sym_line_comment, - ACTIONS(222), 3, + ACTIONS(421), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2878] = 5, + [4601] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(93), 1, + ACTIONS(423), 1, + aux_sym_int_token1, + ACTIONS(425), 1, + sym_prefix_operator, + STATE(149), 1, sym_line_comment, - ACTIONS(237), 3, - ts_builtin_sym_end, - anon_sym_LF, - anon_sym_COMMA, - [2896] = 5, + [4620] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(94), 1, + STATE(150), 1, sym_line_comment, - ACTIONS(260), 3, + ACTIONS(332), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2914] = 5, + [4637] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(95), 1, + STATE(151), 1, sym_line_comment, - ACTIONS(246), 3, + ACTIONS(427), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2932] = 5, + [4654] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(96), 1, + STATE(152), 1, sym_line_comment, - ACTIONS(262), 3, + ACTIONS(429), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2950] = 5, + [4671] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(97), 1, + STATE(153), 1, sym_line_comment, - ACTIONS(251), 3, + ACTIONS(187), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2968] = 5, + [4688] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(98), 1, + STATE(154), 1, sym_line_comment, - ACTIONS(264), 3, + ACTIONS(431), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [2986] = 5, + [4705] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(99), 1, + STATE(155), 1, sym_line_comment, - ACTIONS(241), 3, + ACTIONS(433), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [3004] = 5, + [4722] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(100), 1, - sym_line_comment, - ACTIONS(68), 3, - ts_builtin_sym_end, - anon_sym_LF, + ACTIONS(435), 1, anon_sym_COMMA, - [3022] = 5, + ACTIONS(437), 1, + anon_sym_RPAREN, + STATE(156), 1, + sym_line_comment, + [4741] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(101), 1, + STATE(157), 1, sym_line_comment, - ACTIONS(266), 3, + ACTIONS(417), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [3040] = 6, + [4758] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(270), 1, - anon_sym_RBRACK, - STATE(102), 1, + ACTIONS(439), 1, + aux_sym_int_token1, + ACTIONS(441), 1, + sym_prefix_operator, + STATE(158), 1, sym_line_comment, - ACTIONS(268), 2, - anon_sym_DASH, - anon_sym_PLUS, - [3060] = 5, + [4777] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(103), 1, + STATE(159), 1, sym_line_comment, - ACTIONS(272), 3, + ACTIONS(443), 2, ts_builtin_sym_end, anon_sym_LF, - anon_sym_COMMA, - [3078] = 5, + [4794] = 6, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(104), 1, + ACTIONS(445), 1, + aux_sym_int_token1, + ACTIONS(447), 1, + sym_prefix_operator, + STATE(160), 1, sym_line_comment, - ACTIONS(200), 3, - anon_sym_COMMA, - anon_sym_DASH, - anon_sym_RBRACE, - [3096] = 6, + [4813] = 6, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, + ACTIONS(449), 1, + anon_sym_COMMA, + ACTIONS(451), 1, + anon_sym_RPAREN, + STATE(161), 1, + sym_line_comment, + [4832] = 5, + ACTIONS(453), 1, anon_sym_POUND, - ACTIONS(274), 1, - aux_sym_int_token2, - STATE(97), 1, - sym_int, - STATE(105), 1, + ACTIONS(455), 1, + aux_sym_line_comment_token1, + ACTIONS(457), 1, + aux_sym_line_comment_token2, + ACTIONS(459), 1, + sym_block_comment, + STATE(162), 1, sym_line_comment, - [3115] = 5, + [4848] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(106), 1, + ACTIONS(461), 1, + anon_sym_COMMA, + STATE(163), 1, sym_line_comment, - ACTIONS(206), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3132] = 5, + [4864] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(107), 1, + ACTIONS(463), 1, + anon_sym_RBRACK, + STATE(164), 1, sym_line_comment, - ACTIONS(276), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3149] = 5, + [4880] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(108), 1, + ACTIONS(465), 1, + anon_sym_RBRACK, + STATE(165), 1, sym_line_comment, - ACTIONS(278), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3166] = 6, + [4896] = 5, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(274), 1, - aux_sym_int_token2, - STATE(109), 1, + ACTIONS(415), 1, + anon_sym_RBRACK, + STATE(166), 1, sym_line_comment, - STATE(123), 1, - sym_int, - [3185] = 5, + [4912] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(110), 1, + ACTIONS(467), 1, + sym_word, + STATE(167), 1, sym_line_comment, - ACTIONS(188), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3202] = 5, + [4928] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(111), 1, + ACTIONS(439), 1, + aux_sym_int_token1, + STATE(168), 1, sym_line_comment, - ACTIONS(280), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3219] = 5, + [4944] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(112), 1, + ACTIONS(469), 1, + anon_sym_COMMA, + STATE(169), 1, sym_line_comment, - ACTIONS(282), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3236] = 5, + [4960] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(113), 1, + ACTIONS(419), 1, + sym_infix_operator, + STATE(170), 1, sym_line_comment, - ACTIONS(284), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3253] = 5, + [4976] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - STATE(114), 1, + ACTIONS(471), 1, + sym_float, + STATE(171), 1, sym_line_comment, - ACTIONS(286), 2, - ts_builtin_sym_end, - anon_sym_LF, - [3270] = 6, + [4992] = 5, + ACTIONS(3), 1, + anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(49), 1, - anon_sym_POUND, - ACTIONS(274), 1, - aux_sym_int_token2, - STATE(115), 1, + ACTIONS(473), 1, + anon_sym_LBRACK, + STATE(172), 1, sym_line_comment, - STATE(122), 1, - sym_int, - [3289] = 5, - ACTIONS(288), 1, + [5008] = 5, + ACTIONS(3), 1, anon_sym_POUND, - ACTIONS(290), 1, - aux_sym_line_comment_token1, - ACTIONS(292), 1, + ACTIONS(5), 1, aux_sym_line_comment_token2, - ACTIONS(294), 1, + ACTIONS(7), 1, sym_block_comment, - STATE(116), 1, + ACTIONS(475), 1, + anon_sym_RPAREN, + STATE(173), 1, sym_line_comment, - [3305] = 5, + [5024] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(296), 1, - anon_sym_RBRACK, - STATE(117), 1, + ACTIONS(477), 1, + anon_sym_RPAREN, + STATE(174), 1, sym_line_comment, - [3321] = 5, + [5040] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(298), 1, - anon_sym_LBRACK, - STATE(118), 1, + ACTIONS(479), 1, + anon_sym_ptr, + STATE(175), 1, sym_line_comment, - [3337] = 5, + [5056] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(300), 1, + ACTIONS(481), 1, anon_sym_LBRACK, - STATE(119), 1, + STATE(176), 1, sym_line_comment, - [3353] = 5, + [5072] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(224), 1, - anon_sym_RPAREN, - STATE(120), 1, + ACTIONS(483), 1, + sym_word, + STATE(177), 1, sym_line_comment, - [3369] = 5, + [5088] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(302), 1, + ACTIONS(485), 1, anon_sym_RPAREN, - STATE(121), 1, + STATE(178), 1, sym_line_comment, - [3385] = 5, + [5104] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(270), 1, - anon_sym_RBRACK, - STATE(122), 1, + ACTIONS(487), 1, + anon_sym_COMMA, + STATE(179), 1, sym_line_comment, - [3401] = 5, + [5120] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(304), 1, - anon_sym_RBRACK, - STATE(123), 1, + ACTIONS(489), 1, + anon_sym_rel, + STATE(180), 1, sym_line_comment, - [3417] = 5, + [5136] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(306), 1, - sym_float, - STATE(124), 1, + ACTIONS(491), 1, + anon_sym_RPAREN, + STATE(181), 1, sym_line_comment, - [3433] = 5, + [5152] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(308), 1, - aux_sym_int_token1, - STATE(125), 1, + ACTIONS(493), 1, + anon_sym_RPAREN, + STATE(182), 1, sym_line_comment, - [3449] = 5, + [5168] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(310), 1, - anon_sym_rel, - STATE(126), 1, + ACTIONS(495), 1, + sym_word, + STATE(183), 1, sym_line_comment, - [3465] = 5, + [5184] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(312), 1, - anon_sym_ptr, - STATE(127), 1, + ACTIONS(497), 1, + aux_sym_int_token1, + STATE(184), 1, sym_line_comment, - [3481] = 5, + [5200] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(314), 1, - anon_sym_RPAREN, - STATE(128), 1, + ACTIONS(23), 1, + anon_sym_COLON, + STATE(185), 1, sym_line_comment, - [3497] = 5, + [5216] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(316), 1, - anon_sym_RPAREN, - STATE(129), 1, + ACTIONS(499), 1, + anon_sym_COMMA, + STATE(186), 1, sym_line_comment, - [3513] = 5, + [5232] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(318), 1, + ACTIONS(501), 1, ts_builtin_sym_end, - STATE(130), 1, + STATE(187), 1, sym_line_comment, - [3529] = 5, + [5248] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(23), 1, - anon_sym_COLON, - STATE(131), 1, + ACTIONS(445), 1, + aux_sym_int_token1, + STATE(188), 1, sym_line_comment, - [3545] = 5, + [5264] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(320), 1, - sym_word, - STATE(132), 1, + ACTIONS(503), 1, + aux_sym_int_token1, + STATE(189), 1, sym_line_comment, - [3561] = 5, + [5280] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(322), 1, - sym_word, - STATE(133), 1, + ACTIONS(505), 1, + anon_sym_RPAREN, + STATE(190), 1, sym_line_comment, - [3577] = 5, + [5296] = 5, ACTIONS(3), 1, anon_sym_POUND, ACTIONS(5), 1, aux_sym_line_comment_token2, ACTIONS(7), 1, sym_block_comment, - ACTIONS(324), 1, + ACTIONS(423), 1, aux_sym_int_token1, - STATE(134), 1, + STATE(191), 1, + sym_line_comment, + [5312] = 5, + ACTIONS(3), 1, + anon_sym_POUND, + ACTIONS(5), 1, + aux_sym_line_comment_token2, + ACTIONS(7), 1, + sym_block_comment, + ACTIONS(507), 1, + aux_sym_int_token1, + STATE(192), 1, sym_line_comment, - [3593] = 1, - ACTIONS(326), 1, + [5328] = 1, + ACTIONS(509), 1, ts_builtin_sym_end, - [3597] = 1, - ACTIONS(328), 1, + [5332] = 1, + ACTIONS(511), 1, ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { - [SMALL_STATE(3)] = 0, - [SMALL_STATE(4)] = 69, - [SMALL_STATE(5)] = 138, - [SMALL_STATE(6)] = 203, - [SMALL_STATE(7)] = 238, - [SMALL_STATE(8)] = 279, - [SMALL_STATE(9)] = 314, - [SMALL_STATE(10)] = 348, - [SMALL_STATE(11)] = 386, - [SMALL_STATE(12)] = 420, - [SMALL_STATE(13)] = 454, - [SMALL_STATE(14)] = 493, - [SMALL_STATE(15)] = 536, - [SMALL_STATE(16)] = 569, - [SMALL_STATE(17)] = 606, - [SMALL_STATE(18)] = 639, - [SMALL_STATE(19)] = 686, - [SMALL_STATE(20)] = 721, - [SMALL_STATE(21)] = 769, - [SMALL_STATE(22)] = 815, - [SMALL_STATE(23)] = 866, - [SMALL_STATE(24)] = 914, - [SMALL_STATE(25)] = 955, - [SMALL_STATE(26)] = 996, - [SMALL_STATE(27)] = 1037, - [SMALL_STATE(28)] = 1078, - [SMALL_STATE(29)] = 1119, - [SMALL_STATE(30)] = 1160, - [SMALL_STATE(31)] = 1201, - [SMALL_STATE(32)] = 1242, - [SMALL_STATE(33)] = 1283, - [SMALL_STATE(34)] = 1324, - [SMALL_STATE(35)] = 1365, - [SMALL_STATE(36)] = 1396, - [SMALL_STATE(37)] = 1426, - [SMALL_STATE(38)] = 1472, - [SMALL_STATE(39)] = 1518, - [SMALL_STATE(40)] = 1548, - [SMALL_STATE(41)] = 1578, - [SMALL_STATE(42)] = 1621, - [SMALL_STATE(43)] = 1649, - [SMALL_STATE(44)] = 1676, - [SMALL_STATE(45)] = 1705, - [SMALL_STATE(46)] = 1736, - [SMALL_STATE(47)] = 1773, - [SMALL_STATE(48)] = 1806, - [SMALL_STATE(49)] = 1841, - [SMALL_STATE(50)] = 1868, - [SMALL_STATE(51)] = 1900, - [SMALL_STATE(52)] = 1932, - [SMALL_STATE(53)] = 1959, - [SMALL_STATE(54)] = 1983, - [SMALL_STATE(55)] = 2013, - [SMALL_STATE(56)] = 2043, - [SMALL_STATE(57)] = 2069, - [SMALL_STATE(58)] = 2095, - [SMALL_STATE(59)] = 2121, - [SMALL_STATE(60)] = 2147, - [SMALL_STATE(61)] = 2173, - [SMALL_STATE(62)] = 2196, - [SMALL_STATE(63)] = 2221, - [SMALL_STATE(64)] = 2242, - [SMALL_STATE(65)] = 2265, - [SMALL_STATE(66)] = 2288, - [SMALL_STATE(67)] = 2311, - [SMALL_STATE(68)] = 2334, - [SMALL_STATE(69)] = 2357, - [SMALL_STATE(70)] = 2380, - [SMALL_STATE(71)] = 2403, - [SMALL_STATE(72)] = 2426, - [SMALL_STATE(73)] = 2449, - [SMALL_STATE(74)] = 2472, - [SMALL_STATE(75)] = 2495, - [SMALL_STATE(76)] = 2518, - [SMALL_STATE(77)] = 2541, - [SMALL_STATE(78)] = 2562, - [SMALL_STATE(79)] = 2583, - [SMALL_STATE(80)] = 2606, - [SMALL_STATE(81)] = 2627, - [SMALL_STATE(82)] = 2652, - [SMALL_STATE(83)] = 2677, - [SMALL_STATE(84)] = 2698, - [SMALL_STATE(85)] = 2719, - [SMALL_STATE(86)] = 2744, - [SMALL_STATE(87)] = 2765, - [SMALL_STATE(88)] = 2786, - [SMALL_STATE(89)] = 2806, - [SMALL_STATE(90)] = 2824, - [SMALL_STATE(91)] = 2842, - [SMALL_STATE(92)] = 2860, - [SMALL_STATE(93)] = 2878, - [SMALL_STATE(94)] = 2896, - [SMALL_STATE(95)] = 2914, - [SMALL_STATE(96)] = 2932, - [SMALL_STATE(97)] = 2950, - [SMALL_STATE(98)] = 2968, - [SMALL_STATE(99)] = 2986, - [SMALL_STATE(100)] = 3004, - [SMALL_STATE(101)] = 3022, - [SMALL_STATE(102)] = 3040, - [SMALL_STATE(103)] = 3060, - [SMALL_STATE(104)] = 3078, - [SMALL_STATE(105)] = 3096, - [SMALL_STATE(106)] = 3115, - [SMALL_STATE(107)] = 3132, - [SMALL_STATE(108)] = 3149, - [SMALL_STATE(109)] = 3166, - [SMALL_STATE(110)] = 3185, - [SMALL_STATE(111)] = 3202, - [SMALL_STATE(112)] = 3219, - [SMALL_STATE(113)] = 3236, - [SMALL_STATE(114)] = 3253, - [SMALL_STATE(115)] = 3270, - [SMALL_STATE(116)] = 3289, - [SMALL_STATE(117)] = 3305, - [SMALL_STATE(118)] = 3321, - [SMALL_STATE(119)] = 3337, - [SMALL_STATE(120)] = 3353, - [SMALL_STATE(121)] = 3369, - [SMALL_STATE(122)] = 3385, - [SMALL_STATE(123)] = 3401, - [SMALL_STATE(124)] = 3417, - [SMALL_STATE(125)] = 3433, - [SMALL_STATE(126)] = 3449, - [SMALL_STATE(127)] = 3465, - [SMALL_STATE(128)] = 3481, - [SMALL_STATE(129)] = 3497, - [SMALL_STATE(130)] = 3513, - [SMALL_STATE(131)] = 3529, - [SMALL_STATE(132)] = 3545, - [SMALL_STATE(133)] = 3561, - [SMALL_STATE(134)] = 3577, - [SMALL_STATE(135)] = 3593, - [SMALL_STATE(136)] = 3597, + [SMALL_STATE(2)] = 0, + [SMALL_STATE(3)] = 94, + [SMALL_STATE(4)] = 184, + [SMALL_STATE(5)] = 271, + [SMALL_STATE(6)] = 351, + [SMALL_STATE(7)] = 431, + [SMALL_STATE(8)] = 510, + [SMALL_STATE(9)] = 586, + [SMALL_STATE(10)] = 630, + [SMALL_STATE(11)] = 668, + [SMALL_STATE(12)] = 706, + [SMALL_STATE(13)] = 744, + [SMALL_STATE(14)] = 785, + [SMALL_STATE(15)] = 822, + [SMALL_STATE(16)] = 859, + [SMALL_STATE(17)] = 896, + [SMALL_STATE(18)] = 944, + [SMALL_STATE(19)] = 980, + [SMALL_STATE(20)] = 1022, + [SMALL_STATE(21)] = 1068, + [SMALL_STATE(22)] = 1108, + [SMALL_STATE(23)] = 1146, + [SMALL_STATE(24)] = 1182, + [SMALL_STATE(25)] = 1237, + [SMALL_STATE(26)] = 1290, + [SMALL_STATE(27)] = 1338, + [SMALL_STATE(28)] = 1386, + [SMALL_STATE(29)] = 1434, + [SMALL_STATE(30)] = 1482, + [SMALL_STATE(31)] = 1530, + [SMALL_STATE(32)] = 1580, + [SMALL_STATE(33)] = 1628, + [SMALL_STATE(34)] = 1676, + [SMALL_STATE(35)] = 1724, + [SMALL_STATE(36)] = 1772, + [SMALL_STATE(37)] = 1820, + [SMALL_STATE(38)] = 1868, + [SMALL_STATE(39)] = 1899, + [SMALL_STATE(40)] = 1945, + [SMALL_STATE(41)] = 1991, + [SMALL_STATE(42)] = 2030, + [SMALL_STATE(43)] = 2069, + [SMALL_STATE(44)] = 2112, + [SMALL_STATE(45)] = 2141, + [SMALL_STATE(46)] = 2181, + [SMALL_STATE(47)] = 2209, + [SMALL_STATE(48)] = 2237, + [SMALL_STATE(49)] = 2264, + [SMALL_STATE(50)] = 2291, + [SMALL_STATE(51)] = 2322, + [SMALL_STATE(52)] = 2355, + [SMALL_STATE(53)] = 2382, + [SMALL_STATE(54)] = 2411, + [SMALL_STATE(55)] = 2448, + [SMALL_STATE(56)] = 2483, + [SMALL_STATE(57)] = 2510, + [SMALL_STATE(58)] = 2537, + [SMALL_STATE(59)] = 2564, + [SMALL_STATE(60)] = 2597, + [SMALL_STATE(61)] = 2624, + [SMALL_STATE(62)] = 2654, + [SMALL_STATE(63)] = 2684, + [SMALL_STATE(64)] = 2708, + [SMALL_STATE(65)] = 2731, + [SMALL_STATE(66)] = 2754, + [SMALL_STATE(67)] = 2783, + [SMALL_STATE(68)] = 2806, + [SMALL_STATE(69)] = 2828, + [SMALL_STATE(70)] = 2850, + [SMALL_STATE(71)] = 2874, + [SMALL_STATE(72)] = 2900, + [SMALL_STATE(73)] = 2926, + [SMALL_STATE(74)] = 2952, + [SMALL_STATE(75)] = 2978, + [SMALL_STATE(76)] = 3004, + [SMALL_STATE(77)] = 3032, + [SMALL_STATE(78)] = 3056, + [SMALL_STATE(79)] = 3084, + [SMALL_STATE(80)] = 3108, + [SMALL_STATE(81)] = 3134, + [SMALL_STATE(82)] = 3162, + [SMALL_STATE(83)] = 3188, + [SMALL_STATE(84)] = 3210, + [SMALL_STATE(85)] = 3236, + [SMALL_STATE(86)] = 3262, + [SMALL_STATE(87)] = 3284, + [SMALL_STATE(88)] = 3307, + [SMALL_STATE(89)] = 3328, + [SMALL_STATE(90)] = 3349, + [SMALL_STATE(91)] = 3370, + [SMALL_STATE(92)] = 3393, + [SMALL_STATE(93)] = 3416, + [SMALL_STATE(94)] = 3439, + [SMALL_STATE(95)] = 3462, + [SMALL_STATE(96)] = 3483, + [SMALL_STATE(97)] = 3504, + [SMALL_STATE(98)] = 3525, + [SMALL_STATE(99)] = 3546, + [SMALL_STATE(100)] = 3567, + [SMALL_STATE(101)] = 3588, + [SMALL_STATE(102)] = 3609, + [SMALL_STATE(103)] = 3632, + [SMALL_STATE(104)] = 3653, + [SMALL_STATE(105)] = 3676, + [SMALL_STATE(106)] = 3697, + [SMALL_STATE(107)] = 3720, + [SMALL_STATE(108)] = 3743, + [SMALL_STATE(109)] = 3764, + [SMALL_STATE(110)] = 3785, + [SMALL_STATE(111)] = 3806, + [SMALL_STATE(112)] = 3827, + [SMALL_STATE(113)] = 3848, + [SMALL_STATE(114)] = 3869, + [SMALL_STATE(115)] = 3890, + [SMALL_STATE(116)] = 3911, + [SMALL_STATE(117)] = 3932, + [SMALL_STATE(118)] = 3953, + [SMALL_STATE(119)] = 3976, + [SMALL_STATE(120)] = 3997, + [SMALL_STATE(121)] = 4020, + [SMALL_STATE(122)] = 4041, + [SMALL_STATE(123)] = 4066, + [SMALL_STATE(124)] = 4089, + [SMALL_STATE(125)] = 4114, + [SMALL_STATE(126)] = 4139, + [SMALL_STATE(127)] = 4160, + [SMALL_STATE(128)] = 4183, + [SMALL_STATE(129)] = 4206, + [SMALL_STATE(130)] = 4229, + [SMALL_STATE(131)] = 4250, + [SMALL_STATE(132)] = 4275, + [SMALL_STATE(133)] = 4298, + [SMALL_STATE(134)] = 4319, + [SMALL_STATE(135)] = 4340, + [SMALL_STATE(136)] = 4358, + [SMALL_STATE(137)] = 4378, + [SMALL_STATE(138)] = 4396, + [SMALL_STATE(139)] = 4416, + [SMALL_STATE(140)] = 4434, + [SMALL_STATE(141)] = 4452, + [SMALL_STATE(142)] = 4470, + [SMALL_STATE(143)] = 4488, + [SMALL_STATE(144)] = 4506, + [SMALL_STATE(145)] = 4526, + [SMALL_STATE(146)] = 4546, + [SMALL_STATE(147)] = 4564, + [SMALL_STATE(148)] = 4584, + [SMALL_STATE(149)] = 4601, + [SMALL_STATE(150)] = 4620, + [SMALL_STATE(151)] = 4637, + [SMALL_STATE(152)] = 4654, + [SMALL_STATE(153)] = 4671, + [SMALL_STATE(154)] = 4688, + [SMALL_STATE(155)] = 4705, + [SMALL_STATE(156)] = 4722, + [SMALL_STATE(157)] = 4741, + [SMALL_STATE(158)] = 4758, + [SMALL_STATE(159)] = 4777, + [SMALL_STATE(160)] = 4794, + [SMALL_STATE(161)] = 4813, + [SMALL_STATE(162)] = 4832, + [SMALL_STATE(163)] = 4848, + [SMALL_STATE(164)] = 4864, + [SMALL_STATE(165)] = 4880, + [SMALL_STATE(166)] = 4896, + [SMALL_STATE(167)] = 4912, + [SMALL_STATE(168)] = 4928, + [SMALL_STATE(169)] = 4944, + [SMALL_STATE(170)] = 4960, + [SMALL_STATE(171)] = 4976, + [SMALL_STATE(172)] = 4992, + [SMALL_STATE(173)] = 5008, + [SMALL_STATE(174)] = 5024, + [SMALL_STATE(175)] = 5040, + [SMALL_STATE(176)] = 5056, + [SMALL_STATE(177)] = 5072, + [SMALL_STATE(178)] = 5088, + [SMALL_STATE(179)] = 5104, + [SMALL_STATE(180)] = 5120, + [SMALL_STATE(181)] = 5136, + [SMALL_STATE(182)] = 5152, + [SMALL_STATE(183)] = 5168, + [SMALL_STATE(184)] = 5184, + [SMALL_STATE(185)] = 5200, + [SMALL_STATE(186)] = 5216, + [SMALL_STATE(187)] = 5232, + [SMALL_STATE(188)] = 5248, + [SMALL_STATE(189)] = 5264, + [SMALL_STATE(190)] = 5280, + [SMALL_STATE(191)] = 5296, + [SMALL_STATE(192)] = 5312, + [SMALL_STATE(193)] = 5328, + [SMALL_STATE(194)] = 5332, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), - [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), [9] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 0, 0, 0), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(133), - [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(132), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(167), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(183), [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), - [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(131), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(3), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(185), [21] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 1, 0, 1), - [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(127), - [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), - [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), - [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), - [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(100), - [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), - [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), - [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 3, 0, 1), - [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), - [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(36), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35), - [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), - [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 4, 0, 1), - [61] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_int, 2, 0, 0), - [63] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_int, 2, 0, 0), - [65] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__expr, 1, 0, 0), REDUCE(sym__tc_expr, 1, 0, 0), - [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1, 0, 0), - [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [72] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__tc_expr, 1, 0, 0), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__tc_expr, 1, 0, 0), - [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_int, 1, 0, 0), - [78] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_int, 1, 0, 0), - [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reg, 1, 0, 0), - [82] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_reg, 1, 0, 0), - [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ident, 1, 0, 0), - [86] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ident, 1, 0, 0), - [88] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0), - [90] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1, 0, 0), - [92] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tc_infix, 3, 0, 5), - [94] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tc_infix, 3, 0, 5), - [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), - [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 1, 0, 0), - [108] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), - [110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 1, 0, 0), - [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 2, 0, 1), - [116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), - [118] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(125), - [121] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(8), - [124] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(12), - [127] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(9), - [130] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(11), - [133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 1, 0, 1), - [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [137] = {.entry = {.count = 1, .reusable = false}}, SHIFT(70), - [139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 2, 0, 0), - [141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 3, 0, 0), - [145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_const, 3, 0, 4), - [151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [155] = {.entry = {.count = 1, .reusable = false}}, SHIFT(33), - [157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_program_repeat1, 2, 0, 0), - [161] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_program_repeat1, 2, 0, 0), SHIFT_REPEAT(53), - [164] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_program_repeat1, 2, 0, 0), - [166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_program_repeat1, 1, 0, 0), - [168] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_program_repeat1, 1, 0, 0), - [170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 3), - [178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 0), - [186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_program_repeat2, 2, 0, 0), - [190] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_program_repeat2, 2, 0, 0), SHIFT_REPEAT(53), - [193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [197] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_repeat1, 2, 0, 0), SHIFT_REPEAT(73), - [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_repeat1, 2, 0, 0), - [202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 3, 0, 1), - [204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), - [206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 2, 0, 1), - [208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 3, 0, 0), - [224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_instruction_repeat1, 2, 0, 0), - [228] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat1, 2, 0, 0), SHIFT_REPEAT(5), - [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 1, 0, 0), - [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), - [237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 5, 0, 0), - [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), - [241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat3, 2, 0, 0), - [243] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat3, 2, 0, 0), SHIFT_REPEAT(88), - [246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat2, 2, 0, 0), - [248] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat2, 2, 0, 0), SHIFT_REPEAT(124), - [251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat1, 2, 0, 0), - [253] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat1, 2, 0, 0), SHIFT_REPEAT(105), - [256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, 0, 0), - [258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 6, 0, 0), - [260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 5, 0, 0), - [262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 4, 0, 0), - [264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2, 0, 0), - [266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 7, 0, 0), - [268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(177), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(175), + [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(158), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(126), + [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(168), + [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 1, 0, 1), + [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(160), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), + [65] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(47), + [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(46), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(188), + [73] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 3, 0, 1), + [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 4, 0, 1), + [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), + [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [81] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__expr, 1, 0, 0), REDUCE(sym__tc_expr, 1, 0, 0), + [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1, 0, 0), + [86] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [88] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__tc_expr, 1, 0, 0), + [90] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__tc_expr, 1, 0, 0), + [92] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_int, 2, 0, 0), + [94] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_int, 2, 0, 0), + [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_int, 1, 0, 0), + [98] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_int, 1, 0, 0), + [100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_int, 3, 0, 0), + [102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_int, 3, 0, 0), + [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0), + [106] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 1, 0, 0), + [108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reg, 1, 0, 0), + [110] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_reg, 1, 0, 0), + [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ident, 1, 0, 0), + [114] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ident, 1, 0, 0), + [116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 1, 0, 0), + [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [122] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), + [124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 1, 0, 0), + [132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tc_infix, 3, 0, 5), + [134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tc_infix, 3, 0, 5), + [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instruction, 2, 0, 1), + [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), + [140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), + [142] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(158), + [145] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(158), + [148] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(11), + [151] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(14), + [154] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(15), + [157] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(16), + [160] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat2, 2, 0, 0), SHIFT_REPEAT(168), + [163] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), + [165] = {.entry = {.count = 1, .reusable = false}}, SHIFT(149), + [167] = {.entry = {.count = 1, .reusable = false}}, SHIFT(57), + [169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), + [173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(44), + [175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [177] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 3, 0, 0), + [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [183] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 2, 0, 0), + [185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [187] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 2, 0, 1), + [189] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 1, 0, 0), + [193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [197] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_const, 3, 0, 4), + [201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [205] = {.entry = {.count = 1, .reusable = false}}, SHIFT(32), + [207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_program_repeat1, 2, 0, 0), + [209] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_program_repeat1, 2, 0, 0), SHIFT_REPEAT(63), + [212] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_program_repeat1, 2, 0, 0), + [214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_program_repeat1, 1, 0, 0), + [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_program_repeat1, 1, 0, 0), + [220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [222] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 5, 0, 0), + [232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 5, 0, 0), + [236] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 3), + [244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [246] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 3, 0, 0), + [254] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [256] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 3, 0, 0), + [258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 0), + [260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), + [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), + [268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), [270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), - [272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 4, 0, 0), - [274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 5, 0, 3), - [278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 3, 0, 3), - [280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 3, 0, 0), - [282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 5, 0, 0), - [284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 2), - [286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__item, 1, 0, 0), - [288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(116), - [290] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), - [292] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), - [294] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), - [296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [298] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [300] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), - [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), - [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), - [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), - [314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [318] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_line_comment, 2, 0, 0), - [328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_line_comment, 1, 0, 0), + [272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat2, 2, 0, 0), + [278] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat2, 2, 0, 0), SHIFT_REPEAT(81), + [281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat4, 2, 0, 0), + [283] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat4, 2, 0, 0), SHIFT_REPEAT(138), + [286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2, 0, 0), + [288] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2, 0, 0), + [290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 3, 0, 1), + [292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 4, 0, 1), + [294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 4, 0, 0), + [298] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 4, 0, 0), + [300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_arg, 1, 0, 0), + [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [304] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_repeat1, 2, 0, 0), SHIFT_REPEAT(120), + [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_repeat1, 2, 0, 0), + [309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 4, 0, 0), + [311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 4, 0, 0), + [313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 4, 0, 6), + [315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 4, 0, 6), + [317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat1, 2, 0, 0), + [319] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat1, 2, 0, 0), SHIFT_REPEAT(59), + [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 5, 0, 7), + [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 5, 0, 7), + [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 5, 0, 0), + [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 5, 0, 0), + [330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_program_repeat2, 2, 0, 0), + [334] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_program_repeat2, 2, 0, 0), SHIFT_REPEAT(63), + [337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 6, 0, 8), + [339] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 6, 0, 8), + [341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 6, 0, 9), + [343] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 6, 0, 9), + [345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 6, 0, 0), + [347] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 6, 0, 0), + [349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 6, 0, 10), + [351] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 6, 0, 10), + [353] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 7, 0, 11), + [355] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 7, 0, 11), + [357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 7, 0, 0), + [359] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 7, 0, 0), + [361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 7, 0, 12), + [363] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 7, 0, 12), + [365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 7, 0, 13), + [367] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 7, 0, 13), + [369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ptr, 8, 0, 14), + [371] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ptr, 8, 0, 14), + [373] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, 0, 0), + [375] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, 0, 0), + [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_instruction_repeat1, 2, 0, 0), + [395] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_instruction_repeat1, 2, 0, 0), SHIFT_REPEAT(8), + [398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 1, 0, 0), + [400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_meta_repeat3, 2, 0, 0), + [402] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_meta_repeat3, 2, 0, 0), SHIFT_REPEAT(171), + [405] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 2, 0, 0), + [407] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 2, 0, 0), + [409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_arg_value, 1, 0, 0), + [411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_arg, 3, 0, 0), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [417] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_op_expr, 3, 0, 5), + [419] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), + [421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 5, 0, 3), + [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), + [427] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 3, 0, 0), + [429] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__item, 1, 0, 0), + [431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 2), + [433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 5, 0, 0), + [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), + [443] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 3, 0, 3), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [453] = {.entry = {.count = 1, .reusable = false}}, SHIFT(162), + [455] = {.entry = {.count = 1, .reusable = false}}, SHIFT(193), + [457] = {.entry = {.count = 1, .reusable = false}}, SHIFT(194), + [459] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143), + [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(148), + [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [501] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [509] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_line_comment, 2, 0, 0), + [511] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_line_comment, 1, 0, 0), }; #ifdef __cplusplus @@ -5096,7 +7529,7 @@ extern "C" { TS_PUBLIC const TSLanguage *tree_sitter_asm(void) { static const TSLanguage language = { - .version = LANGUAGE_VERSION, + .abi_version = LANGUAGE_VERSION, .symbol_count = SYMBOL_COUNT, .alias_count = ALIAS_COUNT, .token_count = TOKEN_COUNT, @@ -5104,6 +7537,7 @@ TS_PUBLIC const TSLanguage *tree_sitter_asm(void) { .state_count = STATE_COUNT, .large_state_count = LARGE_STATE_COUNT, .production_id_count = PRODUCTION_ID_COUNT, + .supertype_count = SUPERTYPE_COUNT, .field_count = FIELD_COUNT, .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, .parse_table = &ts_parse_table[0][0], @@ -5118,9 +7552,16 @@ TS_PUBLIC const TSLanguage *tree_sitter_asm(void) { .public_symbol_map = ts_symbol_map, .alias_map = ts_non_terminal_alias_map, .alias_sequences = &ts_alias_sequences[0][0], - .lex_modes = ts_lex_modes, + .lex_modes = (const void*)ts_lex_modes, .lex_fn = ts_lex, .primary_state_ids = ts_primary_state_ids, + .name = "asm", + .max_reserved_word_set_size = 0, + .metadata = { + .major_version = 0, + .minor_version = 24, + .patch_version = 0, + }, }; return &language; } diff --git a/src/tree_sitter/alloc.h b/src/tree_sitter/alloc.h index 1f4466d7..1abdd120 100644 --- a/src/tree_sitter/alloc.h +++ b/src/tree_sitter/alloc.h @@ -12,10 +12,10 @@ extern "C" { // Allow clients to override allocation functions #ifdef TREE_SITTER_REUSE_ALLOCATOR -extern void *(*ts_current_malloc)(size_t); -extern void *(*ts_current_calloc)(size_t, size_t); -extern void *(*ts_current_realloc)(void *, size_t); -extern void (*ts_current_free)(void *); +extern void *(*ts_current_malloc)(size_t size); +extern void *(*ts_current_calloc)(size_t count, size_t size); +extern void *(*ts_current_realloc)(void *ptr, size_t size); +extern void (*ts_current_free)(void *ptr); #ifndef ts_malloc #define ts_malloc ts_current_malloc diff --git a/src/tree_sitter/array.h b/src/tree_sitter/array.h index 15a3b233..56fc8cd4 100644 --- a/src/tree_sitter/array.h +++ b/src/tree_sitter/array.h @@ -14,6 +14,7 @@ extern "C" { #include #ifdef _MSC_VER +#pragma warning(push) #pragma warning(disable : 4101) #elif defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic push @@ -51,67 +52,96 @@ extern "C" { /// Reserve `new_capacity` elements of space in the array. If `new_capacity` is /// less than the array's current capacity, this function has no effect. -#define array_reserve(self, new_capacity) \ - _array__reserve((Array *)(self), array_elem_size(self), new_capacity) +#define array_reserve(self, new_capacity) \ + ((self)->contents = _array__reserve( \ + (void *)(self)->contents, &(self)->capacity, \ + array_elem_size(self), new_capacity) \ + ) /// Free any memory allocated for this array. Note that this does not free any /// memory allocated for the array's contents. -#define array_delete(self) _array__delete((Array *)(self)) +#define array_delete(self) \ + do { \ + if ((self)->contents) ts_free((self)->contents); \ + (self)->contents = NULL; \ + (self)->size = 0; \ + (self)->capacity = 0; \ + } while (0) /// Push a new `element` onto the end of the array. -#define array_push(self, element) \ - (_array__grow((Array *)(self), 1, array_elem_size(self)), \ - (self)->contents[(self)->size++] = (element)) +#define array_push(self, element) \ + do { \ + (self)->contents = _array__grow( \ + (void *)(self)->contents, (self)->size, &(self)->capacity, \ + 1, array_elem_size(self) \ + ); \ + (self)->contents[(self)->size++] = (element); \ + } while(0) /// Increase the array's size by `count` elements. /// New elements are zero-initialized. -#define array_grow_by(self, count) \ - do { \ - if ((count) == 0) break; \ - _array__grow((Array *)(self), count, array_elem_size(self)); \ +#define array_grow_by(self, count) \ + do { \ + if ((count) == 0) break; \ + (self)->contents = _array__grow( \ + (self)->contents, (self)->size, &(self)->capacity, \ + count, array_elem_size(self) \ + ); \ memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \ - (self)->size += (count); \ + (self)->size += (count); \ } while (0) /// Append all elements from one array to the end of another. -#define array_push_all(self, other) \ +#define array_push_all(self, other) \ array_extend((self), (other)->size, (other)->contents) /// Append `count` elements to the end of the array, reading their values from the /// `contents` pointer. -#define array_extend(self, count, contents) \ - _array__splice( \ - (Array *)(self), array_elem_size(self), (self)->size, \ - 0, count, contents \ +#define array_extend(self, count, other_contents) \ + (self)->contents = _array__splice( \ + (void*)(self)->contents, &(self)->size, &(self)->capacity, \ + array_elem_size(self), (self)->size, 0, count, other_contents \ ) /// Remove `old_count` elements from the array starting at the given `index`. At /// the same index, insert `new_count` new elements, reading their values from the /// `new_contents` pointer. -#define array_splice(self, _index, old_count, new_count, new_contents) \ - _array__splice( \ - (Array *)(self), array_elem_size(self), _index, \ - old_count, new_count, new_contents \ +#define array_splice(self, _index, old_count, new_count, new_contents) \ + (self)->contents = _array__splice( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + array_elem_size(self), _index, old_count, new_count, new_contents \ ) /// Insert one `element` into the array at the given `index`. -#define array_insert(self, _index, element) \ - _array__splice((Array *)(self), array_elem_size(self), _index, 0, 1, &(element)) +#define array_insert(self, _index, element) \ + (self)->contents = _array__splice( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + array_elem_size(self), _index, 0, 1, &(element) \ + ) /// Remove one element from the array at the given `index`. #define array_erase(self, _index) \ - _array__erase((Array *)(self), array_elem_size(self), _index) + _array__erase((void *)(self)->contents, &(self)->size, array_elem_size(self), _index) /// Pop the last element off the array, returning the element by value. #define array_pop(self) ((self)->contents[--(self)->size]) /// Assign the contents of one array to another, reallocating if necessary. -#define array_assign(self, other) \ - _array__assign((Array *)(self), (const Array *)(other), array_elem_size(self)) +#define array_assign(self, other) \ + (self)->contents = _array__assign( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + (const void *)(other)->contents, (other)->size, array_elem_size(self) \ + ) /// Swap one array with another -#define array_swap(self, other) \ - _array__swap((Array *)(self), (Array *)(other)) +#define array_swap(self, other) \ + do { \ + void *_array_swap_tmp = (void *)(self)->contents; \ + (self)->contents = (other)->contents; \ + (other)->contents = _array_swap_tmp; \ + _array__swap(&(self)->size, &(self)->capacity, \ + &(other)->size, &(other)->capacity); \ + } while (0) /// Get the size of the array contents #define array_elem_size(self) (sizeof *(self)->contents) @@ -156,82 +186,90 @@ extern "C" { // Private -typedef Array(void) Array; - -/// This is not what you're looking for, see `array_delete`. -static inline void _array__delete(Array *self) { - if (self->contents) { - ts_free(self->contents); - self->contents = NULL; - self->size = 0; - self->capacity = 0; - } -} +// Pointers to individual `Array` fields (rather than the entire `Array` itself) +// are passed to the various `_array__*` functions below to address strict aliasing +// violations that arises when the _entire_ `Array` struct is passed as `Array(void)*`. +// +// The `Array` type itself was not altered as a solution in order to avoid breakage +// with existing consumers (in particular, parsers with external scanners). /// This is not what you're looking for, see `array_erase`. -static inline void _array__erase(Array *self, size_t element_size, - uint32_t index) { - assert(index < self->size); - char *contents = (char *)self->contents; +static inline void _array__erase(void* self_contents, uint32_t *size, + size_t element_size, uint32_t index) { + assert(index < *size); + char *contents = (char *)self_contents; memmove(contents + index * element_size, contents + (index + 1) * element_size, - (self->size - index - 1) * element_size); - self->size--; + (*size - index - 1) * element_size); + (*size)--; } /// This is not what you're looking for, see `array_reserve`. -static inline void _array__reserve(Array *self, size_t element_size, uint32_t new_capacity) { - if (new_capacity > self->capacity) { - if (self->contents) { - self->contents = ts_realloc(self->contents, new_capacity * element_size); +static inline void *_array__reserve(void *contents, uint32_t *capacity, + size_t element_size, uint32_t new_capacity) { + void *new_contents = contents; + if (new_capacity > *capacity) { + if (contents) { + new_contents = ts_realloc(contents, new_capacity * element_size); } else { - self->contents = ts_malloc(new_capacity * element_size); + new_contents = ts_malloc(new_capacity * element_size); } - self->capacity = new_capacity; + *capacity = new_capacity; } + return new_contents; } /// This is not what you're looking for, see `array_assign`. -static inline void _array__assign(Array *self, const Array *other, size_t element_size) { - _array__reserve(self, element_size, other->size); - self->size = other->size; - memcpy(self->contents, other->contents, self->size * element_size); +static inline void *_array__assign(void* self_contents, uint32_t *self_size, uint32_t *self_capacity, + const void *other_contents, uint32_t other_size, size_t element_size) { + void *new_contents = _array__reserve(self_contents, self_capacity, element_size, other_size); + *self_size = other_size; + memcpy(new_contents, other_contents, *self_size * element_size); + return new_contents; } /// This is not what you're looking for, see `array_swap`. -static inline void _array__swap(Array *self, Array *other) { - Array swap = *other; - *other = *self; - *self = swap; +static inline void _array__swap(uint32_t *self_size, uint32_t *self_capacity, + uint32_t *other_size, uint32_t *other_capacity) { + uint32_t tmp_size = *self_size; + uint32_t tmp_capacity = *self_capacity; + *self_size = *other_size; + *self_capacity = *other_capacity; + *other_size = tmp_size; + *other_capacity = tmp_capacity; } /// This is not what you're looking for, see `array_push` or `array_grow_by`. -static inline void _array__grow(Array *self, uint32_t count, size_t element_size) { - uint32_t new_size = self->size + count; - if (new_size > self->capacity) { - uint32_t new_capacity = self->capacity * 2; +static inline void *_array__grow(void *contents, uint32_t size, uint32_t *capacity, + uint32_t count, size_t element_size) { + void *new_contents = contents; + uint32_t new_size = size + count; + if (new_size > *capacity) { + uint32_t new_capacity = *capacity * 2; if (new_capacity < 8) new_capacity = 8; if (new_capacity < new_size) new_capacity = new_size; - _array__reserve(self, element_size, new_capacity); + new_contents = _array__reserve(contents, capacity, element_size, new_capacity); } + return new_contents; } /// This is not what you're looking for, see `array_splice`. -static inline void _array__splice(Array *self, size_t element_size, +static inline void *_array__splice(void *self_contents, uint32_t *size, uint32_t *capacity, + size_t element_size, uint32_t index, uint32_t old_count, uint32_t new_count, const void *elements) { - uint32_t new_size = self->size + new_count - old_count; + uint32_t new_size = *size + new_count - old_count; uint32_t old_end = index + old_count; uint32_t new_end = index + new_count; - assert(old_end <= self->size); + assert(old_end <= *size); - _array__reserve(self, element_size, new_size); + void *new_contents = _array__reserve(self_contents, capacity, element_size, new_size); - char *contents = (char *)self->contents; - if (self->size > old_end) { + char *contents = (char *)new_contents; + if (*size > old_end) { memmove( contents + new_end * element_size, contents + old_end * element_size, - (self->size - old_end) * element_size + (*size - old_end) * element_size ); } if (new_count > 0) { @@ -249,7 +287,9 @@ static inline void _array__splice(Array *self, size_t element_size, ); } } - self->size += new_count - old_count; + *size += new_count - old_count; + + return new_contents; } /// A binary search routine, based on Rust's `std::slice::binary_search_by`. @@ -278,7 +318,7 @@ static inline void _array__splice(Array *self, size_t element_size, #define _compare_int(a, b) ((int)*(a) - (int)(b)) #ifdef _MSC_VER -#pragma warning(default : 4101) +#pragma warning(pop) #elif defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h index 17f0e94b..858107de 100644 --- a/src/tree_sitter/parser.h +++ b/src/tree_sitter/parser.h @@ -18,6 +18,11 @@ typedef uint16_t TSStateId; typedef uint16_t TSSymbol; typedef uint16_t TSFieldId; typedef struct TSLanguage TSLanguage; +typedef struct TSLanguageMetadata { + uint8_t major_version; + uint8_t minor_version; + uint8_t patch_version; +} TSLanguageMetadata; #endif typedef struct { @@ -26,10 +31,11 @@ typedef struct { bool inherited; } TSFieldMapEntry; +// Used to index the field and supertype maps. typedef struct { uint16_t index; uint16_t length; -} TSFieldMapSlice; +} TSMapSlice; typedef struct { bool visible; @@ -47,6 +53,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 { @@ -78,6 +85,12 @@ typedef struct { uint16_t external_lex_state; } TSLexMode; +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; + uint16_t reserved_word_set_id; +} TSLexerMode; + typedef union { TSParseAction action; struct { @@ -92,7 +105,7 @@ typedef struct { } TSCharacterRange; struct TSLanguage { - uint32_t version; + uint32_t abi_version; uint32_t symbol_count; uint32_t alias_count; uint32_t token_count; @@ -108,13 +121,13 @@ struct TSLanguage { const TSParseActionEntry *parse_actions; const char * const *symbol_names; const char * const *field_names; - const TSFieldMapSlice *field_map_slices; + const TSMapSlice *field_map_slices; const TSFieldMapEntry *field_map_entries; const TSSymbolMetadata *symbol_metadata; const TSSymbol *public_symbol_map; const uint16_t *alias_map; const TSSymbol *alias_sequences; - const TSLexMode *lex_modes; + const TSLexerMode *lex_modes; bool (*lex_fn)(TSLexer *, TSStateId); bool (*keyword_lex_fn)(TSLexer *, TSStateId); TSSymbol keyword_capture_token; @@ -128,15 +141,23 @@ struct TSLanguage { void (*deserialize)(void *, const char *, unsigned); } external_scanner; const TSStateId *primary_state_ids; + const char *name; + const TSSymbol *reserved_words; + uint16_t max_reserved_word_set_size; + uint32_t supertype_count; + const TSSymbol *supertype_symbols; + const TSMapSlice *supertype_map_slices; + const TSSymbol *supertype_map_entries; + TSLanguageMetadata metadata; }; -static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) { +static inline bool set_contains(const 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]; + const TSCharacterRange *range = &ranges[mid_index]; if (lookahead >= range->start && lookahead <= range->end) { return true; } else if (lookahead > range->end) { @@ -144,7 +165,7 @@ static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t } size -= half_size; } - TSCharacterRange *range = &ranges[index]; + const TSCharacterRange *range = &ranges[index]; return (lookahead >= range->start && lookahead <= range->end); } diff --git a/test/corpus/instr_and_reg.test b/test/corpus/instr_and_reg.test index aeb8f16c..36bde4fe 100644 --- a/test/corpus/instr_and_reg.test +++ b/test/corpus/instr_and_reg.test @@ -33,12 +33,14 @@ Instruction -- Pointer offset arg, reg arg movzbl -1(%rbp), %eax --- (program - (instruction - kind: (word) - (ptr - (int) - (reg)) - (ident (reg)))) + (instruction + (word) + (ptr + (int + (prefix_operator)) + (reg)) + (ident + (reg)))) ========== Instruction -- Integer immediate arg, reg arg (GAS x86) @@ -82,7 +84,8 @@ stp w0, w1, [sp, #-16]! (ptr (reg (word)) - (int)))) + (int + (prefix_operator))))) ========== @@ -189,3 +192,250 @@ LDR A1, =addr (ident (reg (address))))) + +========== +Instruction -- mov from offset label (GAS x86) +========== +mov rsi, offset notImplemented +--- + +(program + (instruction + (word) + (ident + (reg + (word))) + (word))) + +========== +Instruction -- mov from offset label (GAS x86) +========== +mov rsi, OFFSET notImplemented +--- + +(program + (instruction + (word) + (ident + (reg + (word))) + (word))) + +========== +Instruction -- Memory addressing source omission of DISP and SCALE (x86 AT&T) +========== +leaq (%rdi, %rdi, ), %rdi +--- + +(program + (instruction + (word) + (ptr + (reg) + (reg)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing source omission of SCALE (x86 AT&T) +========== +leaq 5(%rdi, %rdi, ), %rdi +--- + +(program + (instruction + (word) + (ptr + (int) + (reg) + (reg)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing source omission of BASE and SCALE (x86 AT&T) +========== +leaq 5(, %rdi, ), %rdi +--- + +(program + (instruction + (word) + (ptr + (int) + (reg)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing source omission of DISP, BASE and SCALE (x86 AT&T) +========== +leaq (, %rdi, ), %rdi +--- + +(program + (instruction + (word) + (ptr + (reg)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing source omission of DISP and BASE (x86 AT&T) +========== +leaq (, %rdi, 4), %rdi +--- + +(program + (instruction + (word) + (ptr + (reg)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing source omission of BASE (x86 AT&T) +========== +leaq 4(, %rdi, 4), %rdi +--- + +(program + (instruction + (word) + (ptr + (int) + (reg)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing destination omission of DISP and SCALE (x86 AT&T) +========== +movq $rax, (%rdi, %rdi, ) +--- + +(program + (instruction + (word) + (ident + (reg + (address))) + (ptr + (reg) + (reg)))) + +========== +Instruction -- Memory addressing destination omission of DISP, BASE and SCALE (x86 AT&T) +========== +movq $rax, (, %rdi, ) +--- + +(program + (instruction + (word) + (ident + (reg + (address))) + (ptr + (reg)))) + +========== +Instruction -- Memory addressing destination omission of BASE and SCALE (x86 AT&T) +========== +movq $rax, 1(, %rdi, ) +--- + +(program + (instruction + (word) + (ident + (reg + (address))) + (ptr + (int) + (reg)))) + +========== +Instruction -- Memory addressing destination omission of DISP and BASE (x86 AT&T) +========== +movq $rax, (, %rdi, 8) +--- + +(program + (instruction + (word) + (ident + (reg + (address))) + (ptr + (reg)))) + +========== +Instruction -- Memory addressing destination omission of BASE (x86 AT&T) +========== +movq $rax, 4(, %rdi, 8) +--- + +(program + (instruction + (word) + (ident + (reg + (address))) + (ptr + (int) + (reg)))) + +========== +Instruction -- Negative constant arg +========== +movq $-1, %rax +--- + +(program + (instruction + (word) + (int + (prefix_operator)) + (ident + (reg)))) + +========== +Instruction -- Memory addressing source with base, index and scale (x86 intel) +========== +mov rax, [rsp+rax*8] +--- + +(program + (instruction + (word) + (ident + (reg + (word))) + (ptr + (reg + (word)) + (reg + (word)) + (int)))) + +========== +Instruction -- Memory addressing source with base, index and scale different order (x86 intel) +========== +mov rax, [rax*8+rsp] +--- + +(program + (instruction + (word) + (ident + (reg + (word))) + (ptr + (reg + (word)) + (int) + (reg + (word))))) diff --git a/test/corpus/labels_directives.test b/test/corpus/labels_directives.test index 3e33887c..75164483 100644 --- a/test/corpus/labels_directives.test +++ b/test/corpus/labels_directives.test @@ -91,3 +91,236 @@ length: .word 8 (meta_ident) (int)))) +========== +Label and Operator -- prefix operator negative +========== +.quad -2 +--- +(program + (meta + (meta_ident) + (int + (prefix_operator)))) +========== +Label and Operator -- prefix operator tilde +========== +.quad ~2 +--- +(program + (meta + (meta_ident) + (int + (prefix_operator)))) +========== +Label and Operator -- Multiplication +========== +.quad 1*2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Division +========== +.quad 1/2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Remainder +========== +.quad 1%2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Shift Left Simple +========== +.quad 1<2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Shift Left Double +========== +.quad 1<<2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Shift Right Simple +========== +.quad 1>2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Shift Right Double +========== +.quad 1>>2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Bitwise Inclusive Or +========== +.quad 1|2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Bitwise And +========== +.quad 1&2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Bitwise Exclusive Or +========== +.quad 1^2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Bitwise Or Not +========== +.quad 1!2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Addition +========== +.quad 1+2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Subtraction +========== +.quad 1-2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int)))) +========== +Label and Operator -- Addition with negative +========== +.quad 1+-2 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int + (prefix_operator))))) +========== +Label and Operator -- Addition with multiple operands +========== +.quad 1+1+1 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (op_expr + (int) + (infix_operator) + (int))))) +========== +Label and Operator -- Addition with multiple operands and prefix operator +========== +.quad 1+1+-1 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (op_expr + (int) + (infix_operator) + (int + (prefix_operator)))))) +========== +Label and Operator -- Addition with multiple operands and prefix operator +========== +.quad 1--1 +--- +(program + (meta + (meta_ident) + (op_expr + (int) + (infix_operator) + (int + (prefix_operator))))) diff --git a/test/corpus/macro.test b/test/corpus/macro.test new file mode 100644 index 00000000..29992792 --- /dev/null +++ b/test/corpus/macro.test @@ -0,0 +1,144 @@ +========== +Macro -- use macro Parameters +========== +mov rax, \parm +--- +(program + (instruction + (word) + (ident + (reg + (word))) + (ident + (reg + (word))))) +========== +Macro -- simple macro +========== +.macro foo r +mov \r, 0 +.endm +--- +(program + (meta + (meta_ident) + (ident + (reg + (word))) + (ident + (reg + (word)))) + (instruction + (word) + (ident + (reg + (word))) + (int)) + (meta + (meta_ident))) +========== +Macro -- simple macro multi args +========== +.macro foo r, v +mov \r, \v +.endm +--- +(program + (meta + (meta_ident) + (ident + (reg + (word))) + (ident + (reg + (word))) + (ident + (reg + (word)))) + (instruction + (word) + (ident + (reg + (word))) + (ident + (reg + (word)))) + (meta + (meta_ident))) +========== +Macro -- example macro of gas doc +========== +.macro sum from=0, to=5 +.long \from +.if \to-\from +sum "(\from+1)",\to +.endif +.endm +--- +(program + (meta + (meta_ident) + (ident + (reg + (word))) + (ident + (reg + (word))) + (int) + (ident + (reg + (word))) + (int)) + (meta + (meta_ident) + (ident + (reg + (word)))) + (meta + (meta_ident) + (op_expr + (ident + (reg + (word))) + (infix_operator) + (ident + (reg + (word))))) + (instruction + (word) + (string) + (ident + (reg + (word)))) + (meta + (meta_ident)) + (meta + (meta_ident))) + +========== +Macro -- use offset as macro_arg +========== +.macro useOffset offset +mov rdi, [r11*\offset] +.endm +--- +(program + (meta + (meta_ident) + (ident + (reg + (word))) + (ident + (reg + (word)))) + (instruction + (word) + (ident + (reg + (word))) + (ptr + (reg + (word)) + (word))) + (meta + (meta_ident))) diff --git a/tree-sitter.json b/tree-sitter.json index a6fc102b..aaff6ac8 100644 --- a/tree-sitter.json +++ b/tree-sitter.json @@ -15,7 +15,7 @@ } ], "metadata": { - "version": "0.1.0", + "version": "0.24.0", "license": "MIT", "description": "assembly grammar for tree-sitter", "authors": [ @@ -24,15 +24,17 @@ } ], "links": { - "repository": "https://github.com/RubixDev/tree-sitter-asm" + "repository": "https://github.com/Neptunium931/tree-sitter-asm" } }, "bindings": { "c": true, "go": true, + "java": true, "node": true, "python": true, "rust": true, - "swift": true + "swift": true, + "zig": true } }