diff --git a/.gitignore b/.gitignore index 764515c..89b5f0b 100755 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ **/target/ **/Cargo.lock +tree-sitter-mers/log.html +tree-sitter-mers/package-lock.json +tree-sitter-mers/node_modules diff --git a/tree-sitter-mers/Cargo.toml b/tree-sitter-mers/Cargo.toml new file mode 100644 index 0000000..b3997ec --- /dev/null +++ b/tree-sitter-mers/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "tree-sitter-mers" +description = "mers grammar for the tree-sitter parsing library" +version = "0.0.1" +keywords = ["incremental", "parsing", "mers"] +categories = ["parsing", "text-editors"] +repository = "https://github.com/tree-sitter/tree-sitter-mers" +edition = "2018" +license = "MIT" + +build = "bindings/rust/build.rs" +include = [ + "bindings/rust/*", + "grammar.js", + "queries/*", + "src/*", +] + +[lib] +path = "bindings/rust/lib.rs" + +[dependencies] +tree-sitter = "~0.20.10" + +[build-dependencies] +cc = "1.0" diff --git a/tree-sitter-mers/binding.gyp b/tree-sitter-mers/binding.gyp new file mode 100644 index 0000000..fb723fc --- /dev/null +++ b/tree-sitter-mers/binding.gyp @@ -0,0 +1,19 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_mers_binding", + "include_dirs": [ + " +#include "nan.h" + +using namespace v8; + +extern "C" TSLanguage * tree_sitter_mers(); + +namespace { + +NAN_METHOD(New) {} + +void Init(Local exports, Local module) { + Local tpl = Nan::New(New); + tpl->SetClassName(Nan::New("Language").ToLocalChecked()); + tpl->InstanceTemplate()->SetInternalFieldCount(1); + + Local constructor = Nan::GetFunction(tpl).ToLocalChecked(); + Local instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked(); + Nan::SetInternalFieldPointer(instance, 0, tree_sitter_mers()); + + Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("mers").ToLocalChecked()); + Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +} + +NODE_MODULE(tree_sitter_mers_binding, Init) + +} // namespace diff --git a/tree-sitter-mers/bindings/node/index.js b/tree-sitter-mers/bindings/node/index.js new file mode 100644 index 0000000..11b6270 --- /dev/null +++ b/tree-sitter-mers/bindings/node/index.js @@ -0,0 +1,19 @@ +try { + module.exports = require("../../build/Release/tree_sitter_mers_binding"); +} catch (error1) { + if (error1.code !== 'MODULE_NOT_FOUND') { + throw error1; + } + try { + module.exports = require("../../build/Debug/tree_sitter_mers_binding"); + } catch (error2) { + if (error2.code !== 'MODULE_NOT_FOUND') { + throw error2; + } + throw error1 + } +} + +try { + module.exports.nodeTypeInfo = require("../../src/node-types.json"); +} catch (_) {} diff --git a/tree-sitter-mers/bindings/rust/build.rs b/tree-sitter-mers/bindings/rust/build.rs new file mode 100644 index 0000000..c6061f0 --- /dev/null +++ b/tree-sitter-mers/bindings/rust/build.rs @@ -0,0 +1,40 @@ +fn main() { + let src_dir = std::path::Path::new("src"); + + let mut c_config = cc::Build::new(); + c_config.include(&src_dir); + c_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable") + .flag_if_supported("-Wno-trigraphs"); + let parser_path = src_dir.join("parser.c"); + c_config.file(&parser_path); + + // If your language uses an external scanner written in C, + // then include this block of code: + + /* + let scanner_path = src_dir.join("scanner.c"); + c_config.file(&scanner_path); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + */ + + c_config.compile("parser"); + println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); + + // If your language uses an external scanner written in C++, + // then include this block of code: + + /* + let mut cpp_config = cc::Build::new(); + cpp_config.cpp(true); + cpp_config.include(&src_dir); + cpp_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable"); + let scanner_path = src_dir.join("scanner.cc"); + cpp_config.file(&scanner_path); + cpp_config.compile("scanner"); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + */ +} diff --git a/tree-sitter-mers/bindings/rust/lib.rs b/tree-sitter-mers/bindings/rust/lib.rs new file mode 100644 index 0000000..29ad06a --- /dev/null +++ b/tree-sitter-mers/bindings/rust/lib.rs @@ -0,0 +1,52 @@ +//! This crate provides mers language support for the [tree-sitter][] parsing library. +//! +//! Typically, you will use the [language][language func] function to add this language to a +//! tree-sitter [Parser][], and then use the parser to parse some code: +//! +//! ``` +//! let code = ""; +//! let mut parser = tree_sitter::Parser::new(); +//! parser.set_language(tree_sitter_mers::language()).expect("Error loading mers grammar"); +//! let tree = parser.parse(code, None).unwrap(); +//! ``` +//! +//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +//! [language func]: fn.language.html +//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html +//! [tree-sitter]: https://tree-sitter.github.io/ + +use tree_sitter::Language; + +extern "C" { + fn tree_sitter_mers() -> Language; +} + +/// Get the tree-sitter [Language][] for this grammar. +/// +/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +pub fn language() -> Language { + unsafe { tree_sitter_mers() } +} + +/// The content of the [`node-types.json`][] file for this grammar. +/// +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types +pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json"); + +// Uncomment these to include any queries that this grammar contains + +// pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm"); +// pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm"); +// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm"); +// pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm"); + +#[cfg(test)] +mod tests { + #[test] + fn test_can_load_grammar() { + let mut parser = tree_sitter::Parser::new(); + parser + .set_language(super::language()) + .expect("Error loading mers language"); + } +} diff --git a/tree-sitter-mers/grammar.js b/tree-sitter-mers/grammar.js new file mode 100644 index 0000000..39cfbf1 --- /dev/null +++ b/tree-sitter-mers/grammar.js @@ -0,0 +1,113 @@ +module.exports = grammar({ + name: 'mers', + rules: { + source_file: $ => repeat($.definition), + definition: $ => choice( + $.init, + $.assign, + $.if, + $.func, + $.block, + $.tuple, + $.chain, + $.string, + $.number, + $.variable, + ), + definition_in_chain: $ => choice( + $.block, + $.tuple, + $.string, + $.number, + $.variable, + ), + definition_initable: $ => choice( + $.variable, + $.tuple, + ), + definition_assignable: $ => choice( + $.variable, + $.tuple, + $.block, + $.string, + $.number, + ), + + block: $ => seq( + $.block_start, + repeat($.definition), + $.block_end + ), + block_start: $ => '{', + block_end: $ => '}', + + if: $ => prec.left(seq( + $.if_if, + $.definition, + $.definition, + optional(seq( + $.if_else, + $.definition + )) + )), + if_if: $ => 'if', + if_else: $ => 'else', + + func: $ => seq( + $.func_arg, + $.func_arrow, + $.func_body + ), + func_arg: $ => $.definition_assignable, + func_arrow: $ => '->', + func_body: $ => $.definition, + + init: $ => seq( + $.init_to, + $.init_colonequals, + $.init_source, + ), + init_to: $ => $.definition_initable, + init_colonequals: $ => ':=', + init_source: $ => $.definition, + + assign: $ => seq( + $.assign_to, + $.assign_equals, + $.assign_source, + ), + assign_to: $ => $.definition_assignable, + assign_equals: $ => '=', + assign_source: $ => $.definition, + + tuple: $ => seq( + $.tuple_start, + repeat(seq( + $.definition, + $.tuple_separator + )), + $.tuple_end + ), + tuple_start: $ => '(', + tuple_end: $ => ')', + tuple_separator: $ => /(,\s*)|\s+/, + + chain: $ => seq( + $.chain_dot, + $.definition_in_chain, + ), + chain_dot: $ => '.', + + number: $ => /[\+-]?(\d+)|(\d+\.\d+)/, + + variable: $ => /&?[^\s:=\.\{\}\[\]\(\)\d"]+/, + + string: $ => seq( + '"', + $.string_content, + '"' + ), + string_content: $ => /([^\\"]|[\\.])+/, + + } +}) diff --git a/tree-sitter-mers/package.json b/tree-sitter-mers/package.json new file mode 100644 index 0000000..df18581 --- /dev/null +++ b/tree-sitter-mers/package.json @@ -0,0 +1,18 @@ +{ + "name": "tree-sitter-mers", + "version": "1.0.0", + "description": "tree-sitter syntax highlighting for mers", + "main": "bindings/node", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "nan": "^2.18.0" + }, + "tree-sitter": [{ + "scope": "source.mers", + "file-types": ["mers"] + }] +} diff --git a/tree-sitter-mers/queries/highlights.scm b/tree-sitter-mers/queries/highlights.scm new file mode 100644 index 0000000..4e75f9c --- /dev/null +++ b/tree-sitter-mers/queries/highlights.scm @@ -0,0 +1,14 @@ +(string) @string +(variable) @variable +(number) @number +(chain_dot) @punctuation.delimeter + +(if_if) @keyword.control.conditional +(if_else) @keyword.control.conditional + +(func_arrow) @function + +(block_start) @punctuation.bracket +(block_end) @punctuation.bracket +(tuple_start) @punctuation.bracket +(tuple_end) @punctuation.bracket diff --git a/tree-sitter-mers/src/grammar.json b/tree-sitter-mers/src/grammar.json new file mode 100644 index 0000000..836b1e6 --- /dev/null +++ b/tree-sitter-mers/src/grammar.json @@ -0,0 +1,384 @@ +{ + "name": "mers", + "rules": { + "source_file": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "definition" + } + }, + "definition": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "init" + }, + { + "type": "SYMBOL", + "name": "assign" + }, + { + "type": "SYMBOL", + "name": "if" + }, + { + "type": "SYMBOL", + "name": "func" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "SYMBOL", + "name": "tuple" + }, + { + "type": "SYMBOL", + "name": "chain" + }, + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "number" + }, + { + "type": "SYMBOL", + "name": "variable" + } + ] + }, + "definition_in_chain": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "SYMBOL", + "name": "tuple" + }, + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "number" + }, + { + "type": "SYMBOL", + "name": "variable" + } + ] + }, + "definition_initable": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "variable" + }, + { + "type": "SYMBOL", + "name": "tuple" + } + ] + }, + "definition_assignable": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "variable" + }, + { + "type": "SYMBOL", + "name": "tuple" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "number" + } + ] + }, + "block": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "block_start" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "definition" + } + }, + { + "type": "SYMBOL", + "name": "block_end" + } + ] + }, + "block_start": { + "type": "STRING", + "value": "{" + }, + "block_end": { + "type": "STRING", + "value": "}" + }, + "if": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "if_if" + }, + { + "type": "SYMBOL", + "name": "definition" + }, + { + "type": "SYMBOL", + "name": "definition" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "if_else" + }, + { + "type": "SYMBOL", + "name": "definition" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "if_if": { + "type": "STRING", + "value": "if" + }, + "if_else": { + "type": "STRING", + "value": "else" + }, + "func": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "func_arg" + }, + { + "type": "SYMBOL", + "name": "func_arrow" + }, + { + "type": "SYMBOL", + "name": "func_body" + } + ] + }, + "func_arg": { + "type": "SYMBOL", + "name": "definition_assignable" + }, + "func_arrow": { + "type": "STRING", + "value": "->" + }, + "func_body": { + "type": "SYMBOL", + "name": "definition" + }, + "init": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "init_to" + }, + { + "type": "SYMBOL", + "name": "init_colonequals" + }, + { + "type": "SYMBOL", + "name": "init_source" + } + ] + }, + "init_to": { + "type": "SYMBOL", + "name": "definition_initable" + }, + "init_colonequals": { + "type": "STRING", + "value": ":=" + }, + "init_source": { + "type": "SYMBOL", + "name": "definition" + }, + "assign": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "assign_to" + }, + { + "type": "SYMBOL", + "name": "assign_equals" + }, + { + "type": "SYMBOL", + "name": "assign_source" + } + ] + }, + "assign_to": { + "type": "SYMBOL", + "name": "definition_assignable" + }, + "assign_equals": { + "type": "STRING", + "value": "=" + }, + "assign_source": { + "type": "SYMBOL", + "name": "definition" + }, + "tuple": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "tuple_start" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "definition" + }, + { + "type": "SYMBOL", + "name": "tuple_separator" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "tuple_end" + } + ] + }, + "tuple_start": { + "type": "STRING", + "value": "(" + }, + "tuple_end": { + "type": "STRING", + "value": ")" + }, + "tuple_separator": { + "type": "PATTERN", + "value": "(,\\s*)|\\s+" + }, + "chain": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "chain_dot" + }, + { + "type": "SYMBOL", + "name": "definition_in_chain" + } + ] + }, + "chain_dot": { + "type": "STRING", + "value": "." + }, + "number": { + "type": "PATTERN", + "value": "[\\+-]?(\\d+)|(\\d+\\.\\d+)" + }, + "variable": { + "type": "PATTERN", + "value": "&?[^\\s:=\\.\\{\\}\\[\\]\\(\\)\\d\"]+" + }, + "string": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\"" + }, + { + "type": "SYMBOL", + "name": "string_content" + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, + "string_content": { + "type": "PATTERN", + "value": "([^\\\\\"]|[\\\\.])+" + } + }, + "extras": [ + { + "type": "PATTERN", + "value": "\\s" + } + ], + "conflicts": [], + "precedences": [], + "externals": [], + "inline": [], + "supertypes": [] +} + diff --git a/tree-sitter-mers/src/node-types.json b/tree-sitter-mers/src/node-types.json new file mode 100644 index 0000000..fe4f084 --- /dev/null +++ b/tree-sitter-mers/src/node-types.json @@ -0,0 +1,475 @@ +[ + { + "type": "assign", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "assign_equals", + "named": true + }, + { + "type": "assign_source", + "named": true + }, + { + "type": "assign_to", + "named": true + } + ] + } + }, + { + "type": "assign_source", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "definition", + "named": true + } + ] + } + }, + { + "type": "assign_to", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "definition_assignable", + "named": true + } + ] + } + }, + { + "type": "block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block_end", + "named": true + }, + { + "type": "block_start", + "named": true + }, + { + "type": "definition", + "named": true + } + ] + } + }, + { + "type": "chain", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "chain_dot", + "named": true + }, + { + "type": "definition_in_chain", + "named": true + } + ] + } + }, + { + "type": "definition", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "assign", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "chain", + "named": true + }, + { + "type": "func", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "init", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "tuple", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "definition_assignable", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "tuple", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "definition_in_chain", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "string", + "named": true + }, + { + "type": "tuple", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "definition_initable", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "tuple", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "func", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "func_arg", + "named": true + }, + { + "type": "func_arrow", + "named": true + }, + { + "type": "func_body", + "named": true + } + ] + } + }, + { + "type": "func_arg", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "definition_assignable", + "named": true + } + ] + } + }, + { + "type": "func_body", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "definition", + "named": true + } + ] + } + }, + { + "type": "if", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "definition", + "named": true + }, + { + "type": "if_else", + "named": true + }, + { + "type": "if_if", + "named": true + } + ] + } + }, + { + "type": "init", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "init_colonequals", + "named": true + }, + { + "type": "init_source", + "named": true + }, + { + "type": "init_to", + "named": true + } + ] + } + }, + { + "type": "init_source", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "definition", + "named": true + } + ] + } + }, + { + "type": "init_to", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "definition_initable", + "named": true + } + ] + } + }, + { + "type": "source_file", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "definition", + "named": true + } + ] + } + }, + { + "type": "string", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "string_content", + "named": true + } + ] + } + }, + { + "type": "tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "definition", + "named": true + }, + { + "type": "tuple_end", + "named": true + }, + { + "type": "tuple_separator", + "named": true + }, + { + "type": "tuple_start", + "named": true + } + ] + } + }, + { + "type": "\"", + "named": false + }, + { + "type": "assign_equals", + "named": true + }, + { + "type": "block_end", + "named": true + }, + { + "type": "block_start", + "named": true + }, + { + "type": "chain_dot", + "named": true + }, + { + "type": "func_arrow", + "named": true + }, + { + "type": "if_else", + "named": true + }, + { + "type": "if_if", + "named": true + }, + { + "type": "init_colonequals", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "string_content", + "named": true + }, + { + "type": "tuple_end", + "named": true + }, + { + "type": "tuple_separator", + "named": true + }, + { + "type": "tuple_start", + "named": true + }, + { + "type": "variable", + "named": true + } +] \ No newline at end of file diff --git a/tree-sitter-mers/src/parser.c b/tree-sitter-mers/src/parser.c new file mode 100644 index 0000000..0d81862 --- /dev/null +++ b/tree-sitter-mers/src/parser.c @@ -0,0 +1,3215 @@ +#include + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +#define LANGUAGE_VERSION 14 +#define STATE_COUNT 142 +#define LARGE_STATE_COUNT 47 +#define SYMBOL_COUNT 37 +#define ALIAS_COUNT 0 +#define TOKEN_COUNT 16 +#define EXTERNAL_TOKEN_COUNT 0 +#define FIELD_COUNT 0 +#define MAX_ALIAS_SEQUENCE_LENGTH 5 +#define PRODUCTION_ID_COUNT 1 + +enum { + sym_block_start = 1, + sym_block_end = 2, + sym_if_if = 3, + sym_if_else = 4, + sym_func_arrow = 5, + sym_init_colonequals = 6, + sym_assign_equals = 7, + sym_tuple_start = 8, + sym_tuple_end = 9, + sym_tuple_separator = 10, + sym_chain_dot = 11, + sym_number = 12, + sym_variable = 13, + anon_sym_DQUOTE = 14, + sym_string_content = 15, + sym_source_file = 16, + sym_definition = 17, + sym_definition_in_chain = 18, + sym_definition_initable = 19, + sym_definition_assignable = 20, + sym_block = 21, + sym_if = 22, + sym_func = 23, + sym_func_arg = 24, + sym_func_body = 25, + sym_init = 26, + sym_init_to = 27, + sym_init_source = 28, + sym_assign = 29, + sym_assign_to = 30, + sym_assign_source = 31, + sym_tuple = 32, + sym_chain = 33, + sym_string = 34, + aux_sym_source_file_repeat1 = 35, + aux_sym_tuple_repeat1 = 36, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [sym_block_start] = "block_start", + [sym_block_end] = "block_end", + [sym_if_if] = "if_if", + [sym_if_else] = "if_else", + [sym_func_arrow] = "func_arrow", + [sym_init_colonequals] = "init_colonequals", + [sym_assign_equals] = "assign_equals", + [sym_tuple_start] = "tuple_start", + [sym_tuple_end] = "tuple_end", + [sym_tuple_separator] = "tuple_separator", + [sym_chain_dot] = "chain_dot", + [sym_number] = "number", + [sym_variable] = "variable", + [anon_sym_DQUOTE] = "\"", + [sym_string_content] = "string_content", + [sym_source_file] = "source_file", + [sym_definition] = "definition", + [sym_definition_in_chain] = "definition_in_chain", + [sym_definition_initable] = "definition_initable", + [sym_definition_assignable] = "definition_assignable", + [sym_block] = "block", + [sym_if] = "if", + [sym_func] = "func", + [sym_func_arg] = "func_arg", + [sym_func_body] = "func_body", + [sym_init] = "init", + [sym_init_to] = "init_to", + [sym_init_source] = "init_source", + [sym_assign] = "assign", + [sym_assign_to] = "assign_to", + [sym_assign_source] = "assign_source", + [sym_tuple] = "tuple", + [sym_chain] = "chain", + [sym_string] = "string", + [aux_sym_source_file_repeat1] = "source_file_repeat1", + [aux_sym_tuple_repeat1] = "tuple_repeat1", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_block_start] = sym_block_start, + [sym_block_end] = sym_block_end, + [sym_if_if] = sym_if_if, + [sym_if_else] = sym_if_else, + [sym_func_arrow] = sym_func_arrow, + [sym_init_colonequals] = sym_init_colonequals, + [sym_assign_equals] = sym_assign_equals, + [sym_tuple_start] = sym_tuple_start, + [sym_tuple_end] = sym_tuple_end, + [sym_tuple_separator] = sym_tuple_separator, + [sym_chain_dot] = sym_chain_dot, + [sym_number] = sym_number, + [sym_variable] = sym_variable, + [anon_sym_DQUOTE] = anon_sym_DQUOTE, + [sym_string_content] = sym_string_content, + [sym_source_file] = sym_source_file, + [sym_definition] = sym_definition, + [sym_definition_in_chain] = sym_definition_in_chain, + [sym_definition_initable] = sym_definition_initable, + [sym_definition_assignable] = sym_definition_assignable, + [sym_block] = sym_block, + [sym_if] = sym_if, + [sym_func] = sym_func, + [sym_func_arg] = sym_func_arg, + [sym_func_body] = sym_func_body, + [sym_init] = sym_init, + [sym_init_to] = sym_init_to, + [sym_init_source] = sym_init_source, + [sym_assign] = sym_assign, + [sym_assign_to] = sym_assign_to, + [sym_assign_source] = sym_assign_source, + [sym_tuple] = sym_tuple, + [sym_chain] = sym_chain, + [sym_string] = sym_string, + [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, + [aux_sym_tuple_repeat1] = aux_sym_tuple_repeat1, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [sym_block_start] = { + .visible = true, + .named = true, + }, + [sym_block_end] = { + .visible = true, + .named = true, + }, + [sym_if_if] = { + .visible = true, + .named = true, + }, + [sym_if_else] = { + .visible = true, + .named = true, + }, + [sym_func_arrow] = { + .visible = true, + .named = true, + }, + [sym_init_colonequals] = { + .visible = true, + .named = true, + }, + [sym_assign_equals] = { + .visible = true, + .named = true, + }, + [sym_tuple_start] = { + .visible = true, + .named = true, + }, + [sym_tuple_end] = { + .visible = true, + .named = true, + }, + [sym_tuple_separator] = { + .visible = true, + .named = true, + }, + [sym_chain_dot] = { + .visible = true, + .named = true, + }, + [sym_number] = { + .visible = true, + .named = true, + }, + [sym_variable] = { + .visible = true, + .named = true, + }, + [anon_sym_DQUOTE] = { + .visible = true, + .named = false, + }, + [sym_string_content] = { + .visible = true, + .named = true, + }, + [sym_source_file] = { + .visible = true, + .named = true, + }, + [sym_definition] = { + .visible = true, + .named = true, + }, + [sym_definition_in_chain] = { + .visible = true, + .named = true, + }, + [sym_definition_initable] = { + .visible = true, + .named = true, + }, + [sym_definition_assignable] = { + .visible = true, + .named = true, + }, + [sym_block] = { + .visible = true, + .named = true, + }, + [sym_if] = { + .visible = true, + .named = true, + }, + [sym_func] = { + .visible = true, + .named = true, + }, + [sym_func_arg] = { + .visible = true, + .named = true, + }, + [sym_func_body] = { + .visible = true, + .named = true, + }, + [sym_init] = { + .visible = true, + .named = true, + }, + [sym_init_to] = { + .visible = true, + .named = true, + }, + [sym_init_source] = { + .visible = true, + .named = true, + }, + [sym_assign] = { + .visible = true, + .named = true, + }, + [sym_assign_to] = { + .visible = true, + .named = true, + }, + [sym_assign_source] = { + .visible = true, + .named = true, + }, + [sym_tuple] = { + .visible = true, + .named = true, + }, + [sym_chain] = { + .visible = true, + .named = true, + }, + [sym_string] = { + .visible = true, + .named = true, + }, + [aux_sym_source_file_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_tuple_repeat1] = { + .visible = false, + .named = false, + }, +}; + +static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { + [0] = {0}, +}; + +static const uint16_t ts_non_terminal_alias_map[] = { + 0, +}; + +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 4, + [5] = 4, + [6] = 6, + [7] = 7, + [8] = 4, + [9] = 3, + [10] = 6, + [11] = 11, + [12] = 7, + [13] = 7, + [14] = 6, + [15] = 3, + [16] = 16, + [17] = 4, + [18] = 7, + [19] = 3, + [20] = 6, + [21] = 3, + [22] = 4, + [23] = 7, + [24] = 6, + [25] = 25, + [26] = 26, + [27] = 27, + [28] = 25, + [29] = 25, + [30] = 26, + [31] = 27, + [32] = 27, + [33] = 27, + [34] = 25, + [35] = 26, + [36] = 26, + [37] = 37, + [38] = 38, + [39] = 39, + [40] = 39, + [41] = 39, + [42] = 37, + [43] = 37, + [44] = 38, + [45] = 39, + [46] = 37, + [47] = 47, + [48] = 48, + [49] = 49, + [50] = 50, + [51] = 51, + [52] = 52, + [53] = 53, + [54] = 47, + [55] = 48, + [56] = 49, + [57] = 51, + [58] = 53, + [59] = 50, + [60] = 52, + [61] = 52, + [62] = 62, + [63] = 48, + [64] = 64, + [65] = 65, + [66] = 66, + [67] = 67, + [68] = 68, + [69] = 69, + [70] = 70, + [71] = 71, + [72] = 72, + [73] = 73, + [74] = 51, + [75] = 50, + [76] = 47, + [77] = 62, + [78] = 78, + [79] = 52, + [80] = 68, + [81] = 71, + [82] = 72, + [83] = 73, + [84] = 50, + [85] = 47, + [86] = 78, + [87] = 69, + [88] = 64, + [89] = 70, + [90] = 48, + [91] = 51, + [92] = 78, + [93] = 67, + [94] = 65, + [95] = 66, + [96] = 96, + [97] = 47, + [98] = 49, + [99] = 48, + [100] = 50, + [101] = 53, + [102] = 51, + [103] = 52, + [104] = 104, + [105] = 65, + [106] = 62, + [107] = 67, + [108] = 69, + [109] = 68, + [110] = 62, + [111] = 66, + [112] = 70, + [113] = 64, + [114] = 73, + [115] = 71, + [116] = 72, + [117] = 117, + [118] = 118, + [119] = 117, + [120] = 120, + [121] = 120, + [122] = 122, + [123] = 123, + [124] = 122, + [125] = 120, + [126] = 122, + [127] = 127, + [128] = 117, + [129] = 127, + [130] = 117, + [131] = 117, + [132] = 118, + [133] = 133, + [134] = 118, + [135] = 118, + [136] = 136, + [137] = 118, + [138] = 127, + [139] = 127, + [140] = 122, + [141] = 120, +}; + +static inline bool sym_variable_character_set_1(int32_t c) { + return (c < '.' + ? (c < ' ' + ? (c < '\t' + ? c == 0 + : (c <= '\n' || c == '\r')) + : (c <= ' ' || (c < '(' + ? c == '"' + : c <= ')'))) + : (c <= '.' || (c < ']' + ? (c < '=' + ? (c >= '0' && c <= ':') + : (c <= '=' || c == '[')) + : (c <= ']' || (c < '}' + ? c == '{' + : c <= '}'))))); +} + +static inline bool sym_variable_character_set_2(int32_t c) { + return (c < '.' + ? (c < ' ' + ? (c < '\t' + ? c == 0 + : (c <= '\n' || c == '\r')) + : (c <= ' ' || (c < '(' + ? c == '"' + : c <= ')'))) + : (c <= '.' || (c < ']' + ? (c < '=' + ? c == ':' + : (c <= '=' || c == '[')) + : (c <= ']' || (c < '}' + ? c == '{' + : c <= '}'))))); +} + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(14); + if (lookahead == '"') ADVANCE(38); + if (lookahead == '&') ADVANCE(37); + if (lookahead == '(') ADVANCE(24); + if (lookahead == ')') ADVANCE(25); + if (lookahead == '+') ADVANCE(36); + if (lookahead == '-') ADVANCE(31); + if (lookahead == '.') ADVANCE(28); + if (lookahead == ':') ADVANCE(4); + if (lookahead == '=') ADVANCE(23); + if (lookahead == 'e') ADVANCE(34); + if (lookahead == 'i') ADVANCE(33); + if (lookahead == '{') ADVANCE(15); + if (lookahead == '}') ADVANCE(16); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(0) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (lookahead != 0 && + lookahead != '[' && + lookahead != ']') ADVANCE(37); + END_STATE(); + case 1: + if (lookahead == '"') ADVANCE(38); + if (lookahead == '&') ADVANCE(37); + if (lookahead == '(') ADVANCE(24); + if (lookahead == '{') ADVANCE(15); + if (lookahead == '+' || + lookahead == '-') ADVANCE(36); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(1) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (lookahead != 0 && + lookahead != ')' && + lookahead != '.' && + lookahead != ':' && + lookahead != '=' && + lookahead != '[' && + lookahead != ']' && + lookahead != '}') ADVANCE(37); + END_STATE(); + case 2: + if (lookahead == ',') ADVANCE(27); + if (lookahead == '-') ADVANCE(5); + if (lookahead == ':') ADVANCE(4); + if (lookahead == '=') ADVANCE(23); + if (lookahead == 'e') ADVANCE(7); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(26); + END_STATE(); + case 3: + if (lookahead == '-') ADVANCE(5); + if (lookahead == '=') ADVANCE(23); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(3) + END_STATE(); + case 4: + if (lookahead == '=') ADVANCE(22); + END_STATE(); + case 5: + if (lookahead == '>') ADVANCE(20); + END_STATE(); + case 6: + if (lookahead == 'e') ADVANCE(18); + END_STATE(); + case 7: + if (lookahead == 'l') ADVANCE(8); + END_STATE(); + case 8: + if (lookahead == 's') ADVANCE(6); + END_STATE(); + case 9: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(30); + END_STATE(); + case 10: + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != '"') ADVANCE(40); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(39); + END_STATE(); + case 11: + if (eof) ADVANCE(14); + if (lookahead == '"') ADVANCE(38); + if (lookahead == '&') ADVANCE(37); + if (lookahead == '(') ADVANCE(24); + if (lookahead == ')') ADVANCE(25); + if (lookahead == '.') ADVANCE(28); + if (lookahead == 'i') ADVANCE(33); + if (lookahead == '{') ADVANCE(15); + if (lookahead == '}') ADVANCE(16); + if (lookahead == '+' || + lookahead == '-') ADVANCE(36); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(11) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (lookahead != 0 && + lookahead != ':' && + lookahead != '=' && + lookahead != '[' && + lookahead != ']') ADVANCE(37); + END_STATE(); + case 12: + if (eof) ADVANCE(14); + if (lookahead == '"') ADVANCE(38); + if (lookahead == '&') ADVANCE(37); + if (lookahead == '(') ADVANCE(24); + if (lookahead == '+') ADVANCE(36); + if (lookahead == '-') ADVANCE(31); + if (lookahead == '.') ADVANCE(28); + if (lookahead == ':') ADVANCE(4); + if (lookahead == '=') ADVANCE(23); + if (lookahead == 'i') ADVANCE(33); + if (lookahead == '{') ADVANCE(15); + if (lookahead == '}') ADVANCE(16); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(12) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (lookahead != 0 && + lookahead != ')' && + lookahead != '[' && + lookahead != ']') ADVANCE(37); + END_STATE(); + case 13: + if (eof) ADVANCE(14); + if (lookahead == '"') ADVANCE(38); + if (lookahead == '&') ADVANCE(37); + if (lookahead == '(') ADVANCE(24); + if (lookahead == '.') ADVANCE(28); + if (lookahead == 'e') ADVANCE(34); + if (lookahead == 'i') ADVANCE(33); + if (lookahead == '{') ADVANCE(15); + if (lookahead == '}') ADVANCE(16); + if (lookahead == '+' || + lookahead == '-') ADVANCE(36); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(13) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (lookahead != 0 && + lookahead != ')' && + lookahead != ':' && + lookahead != '=' && + lookahead != '[' && + lookahead != ']') ADVANCE(37); + END_STATE(); + case 14: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 15: + ACCEPT_TOKEN(sym_block_start); + END_STATE(); + case 16: + ACCEPT_TOKEN(sym_block_end); + END_STATE(); + case 17: + ACCEPT_TOKEN(sym_if_if); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 18: + ACCEPT_TOKEN(sym_if_else); + END_STATE(); + case 19: + ACCEPT_TOKEN(sym_if_else); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 20: + ACCEPT_TOKEN(sym_func_arrow); + END_STATE(); + case 21: + ACCEPT_TOKEN(sym_func_arrow); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 22: + ACCEPT_TOKEN(sym_init_colonequals); + END_STATE(); + case 23: + ACCEPT_TOKEN(sym_assign_equals); + END_STATE(); + case 24: + ACCEPT_TOKEN(sym_tuple_start); + END_STATE(); + case 25: + ACCEPT_TOKEN(sym_tuple_end); + END_STATE(); + case 26: + ACCEPT_TOKEN(sym_tuple_separator); + if (lookahead == ',') ADVANCE(27); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(26); + END_STATE(); + case 27: + ACCEPT_TOKEN(sym_tuple_separator); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(27); + END_STATE(); + case 28: + ACCEPT_TOKEN(sym_chain_dot); + END_STATE(); + case 29: + ACCEPT_TOKEN(sym_number); + if (lookahead == '.') ADVANCE(9); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + END_STATE(); + case 30: + ACCEPT_TOKEN(sym_number); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(30); + END_STATE(); + case 31: + ACCEPT_TOKEN(sym_variable); + if (lookahead == '>') ADVANCE(21); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(30); + if (!sym_variable_character_set_2(lookahead)) ADVANCE(37); + END_STATE(); + case 32: + ACCEPT_TOKEN(sym_variable); + if (lookahead == 'e') ADVANCE(19); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 33: + ACCEPT_TOKEN(sym_variable); + if (lookahead == 'f') ADVANCE(17); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 34: + ACCEPT_TOKEN(sym_variable); + if (lookahead == 'l') ADVANCE(35); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 35: + ACCEPT_TOKEN(sym_variable); + if (lookahead == 's') ADVANCE(32); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 36: + ACCEPT_TOKEN(sym_variable); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(30); + if (!sym_variable_character_set_2(lookahead)) ADVANCE(37); + END_STATE(); + case 37: + ACCEPT_TOKEN(sym_variable); + if (!sym_variable_character_set_1(lookahead)) ADVANCE(37); + END_STATE(); + case 38: + ACCEPT_TOKEN(anon_sym_DQUOTE); + END_STATE(); + case 39: + ACCEPT_TOKEN(sym_string_content); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != '"') ADVANCE(40); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(39); + END_STATE(); + case 40: + ACCEPT_TOKEN(sym_string_content); + if (lookahead != 0 && + lookahead != '"') ADVANCE(40); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 11}, + [2] = {.lex_state = 11}, + [3] = {.lex_state = 11}, + [4] = {.lex_state = 11}, + [5] = {.lex_state = 11}, + [6] = {.lex_state = 11}, + [7] = {.lex_state = 11}, + [8] = {.lex_state = 11}, + [9] = {.lex_state = 11}, + [10] = {.lex_state = 11}, + [11] = {.lex_state = 11}, + [12] = {.lex_state = 11}, + [13] = {.lex_state = 11}, + [14] = {.lex_state = 11}, + [15] = {.lex_state = 11}, + [16] = {.lex_state = 11}, + [17] = {.lex_state = 11}, + [18] = {.lex_state = 11}, + [19] = {.lex_state = 11}, + [20] = {.lex_state = 11}, + [21] = {.lex_state = 11}, + [22] = {.lex_state = 11}, + [23] = {.lex_state = 11}, + [24] = {.lex_state = 11}, + [25] = {.lex_state = 11}, + [26] = {.lex_state = 11}, + [27] = {.lex_state = 11}, + [28] = {.lex_state = 11}, + [29] = {.lex_state = 11}, + [30] = {.lex_state = 11}, + [31] = {.lex_state = 11}, + [32] = {.lex_state = 11}, + [33] = {.lex_state = 11}, + [34] = {.lex_state = 11}, + [35] = {.lex_state = 11}, + [36] = {.lex_state = 11}, + [37] = {.lex_state = 11}, + [38] = {.lex_state = 11}, + [39] = {.lex_state = 11}, + [40] = {.lex_state = 11}, + [41] = {.lex_state = 11}, + [42] = {.lex_state = 11}, + [43] = {.lex_state = 11}, + [44] = {.lex_state = 11}, + [45] = {.lex_state = 11}, + [46] = {.lex_state = 11}, + [47] = {.lex_state = 0}, + [48] = {.lex_state = 0}, + [49] = {.lex_state = 0}, + [50] = {.lex_state = 0}, + [51] = {.lex_state = 0}, + [52] = {.lex_state = 0}, + [53] = {.lex_state = 0}, + [54] = {.lex_state = 12}, + [55] = {.lex_state = 12}, + [56] = {.lex_state = 12}, + [57] = {.lex_state = 12}, + [58] = {.lex_state = 12}, + [59] = {.lex_state = 12}, + [60] = {.lex_state = 12}, + [61] = {.lex_state = 13}, + [62] = {.lex_state = 13}, + [63] = {.lex_state = 13}, + [64] = {.lex_state = 13}, + [65] = {.lex_state = 13}, + [66] = {.lex_state = 13}, + [67] = {.lex_state = 13}, + [68] = {.lex_state = 13}, + [69] = {.lex_state = 13}, + [70] = {.lex_state = 13}, + [71] = {.lex_state = 13}, + [72] = {.lex_state = 13}, + [73] = {.lex_state = 13}, + [74] = {.lex_state = 13}, + [75] = {.lex_state = 13}, + [76] = {.lex_state = 13}, + [77] = {.lex_state = 13}, + [78] = {.lex_state = 1}, + [79] = {.lex_state = 11}, + [80] = {.lex_state = 11}, + [81] = {.lex_state = 11}, + [82] = {.lex_state = 11}, + [83] = {.lex_state = 11}, + [84] = {.lex_state = 11}, + [85] = {.lex_state = 11}, + [86] = {.lex_state = 1}, + [87] = {.lex_state = 11}, + [88] = {.lex_state = 11}, + [89] = {.lex_state = 11}, + [90] = {.lex_state = 11}, + [91] = {.lex_state = 11}, + [92] = {.lex_state = 1}, + [93] = {.lex_state = 11}, + [94] = {.lex_state = 11}, + [95] = {.lex_state = 11}, + [96] = {.lex_state = 11}, + [97] = {.lex_state = 2}, + [98] = {.lex_state = 2}, + [99] = {.lex_state = 2}, + [100] = {.lex_state = 2}, + [101] = {.lex_state = 2}, + [102] = {.lex_state = 2}, + [103] = {.lex_state = 2}, + [104] = {.lex_state = 3}, + [105] = {.lex_state = 2}, + [106] = {.lex_state = 2}, + [107] = {.lex_state = 2}, + [108] = {.lex_state = 2}, + [109] = {.lex_state = 2}, + [110] = {.lex_state = 2}, + [111] = {.lex_state = 2}, + [112] = {.lex_state = 2}, + [113] = {.lex_state = 2}, + [114] = {.lex_state = 2}, + [115] = {.lex_state = 2}, + [116] = {.lex_state = 2}, + [117] = {.lex_state = 0}, + [118] = {.lex_state = 10}, + [119] = {.lex_state = 0}, + [120] = {.lex_state = 0}, + [121] = {.lex_state = 0}, + [122] = {.lex_state = 0}, + [123] = {.lex_state = 2}, + [124] = {.lex_state = 0}, + [125] = {.lex_state = 0}, + [126] = {.lex_state = 0}, + [127] = {.lex_state = 3}, + [128] = {.lex_state = 0}, + [129] = {.lex_state = 3}, + [130] = {.lex_state = 0}, + [131] = {.lex_state = 0}, + [132] = {.lex_state = 10}, + [133] = {.lex_state = 0}, + [134] = {.lex_state = 10}, + [135] = {.lex_state = 10}, + [136] = {.lex_state = 0}, + [137] = {.lex_state = 10}, + [138] = {.lex_state = 3}, + [139] = {.lex_state = 3}, + [140] = {.lex_state = 0}, + [141] = {.lex_state = 0}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [ts_builtin_sym_end] = ACTIONS(1), + [sym_block_start] = ACTIONS(1), + [sym_block_end] = ACTIONS(1), + [sym_if_if] = ACTIONS(1), + [sym_if_else] = ACTIONS(1), + [sym_func_arrow] = ACTIONS(1), + [sym_init_colonequals] = ACTIONS(1), + [sym_assign_equals] = ACTIONS(1), + [sym_tuple_start] = ACTIONS(1), + [sym_tuple_end] = ACTIONS(1), + [sym_chain_dot] = ACTIONS(1), + [sym_number] = ACTIONS(1), + [sym_variable] = ACTIONS(1), + [anon_sym_DQUOTE] = ACTIONS(1), + }, + [1] = { + [sym_source_file] = STATE(136), + [sym_definition] = STATE(16), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(16), + [ts_builtin_sym_end] = ACTIONS(3), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [2] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [ts_builtin_sym_end] = ACTIONS(19), + [sym_block_start] = ACTIONS(21), + [sym_block_end] = ACTIONS(19), + [sym_if_if] = ACTIONS(24), + [sym_tuple_start] = ACTIONS(27), + [sym_chain_dot] = ACTIONS(30), + [sym_number] = ACTIONS(33), + [sym_variable] = ACTIONS(36), + [anon_sym_DQUOTE] = ACTIONS(39), + }, + [3] = { + [sym_definition] = STATE(7), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(7), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(42), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [4] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(11), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(50), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [5] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(11), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(60), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [6] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(8), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(62), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [7] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(64), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [8] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(11), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(66), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [9] = { + [sym_definition] = STATE(12), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(12), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(68), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [10] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(5), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(70), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [11] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(11), + [sym_block_start] = ACTIONS(72), + [sym_if_if] = ACTIONS(75), + [sym_tuple_start] = ACTIONS(78), + [sym_tuple_end] = ACTIONS(81), + [sym_chain_dot] = ACTIONS(83), + [sym_number] = ACTIONS(86), + [sym_variable] = ACTIONS(89), + [anon_sym_DQUOTE] = ACTIONS(92), + }, + [12] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(95), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [13] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(97), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [14] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(4), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(99), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [15] = { + [sym_definition] = STATE(13), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(13), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(101), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [16] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [ts_builtin_sym_end] = ACTIONS(103), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [17] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(11), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(105), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [18] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(107), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [19] = { + [sym_definition] = STATE(18), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(18), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(109), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [20] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(22), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(111), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [21] = { + [sym_definition] = STATE(23), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(23), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(113), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [22] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(11), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(115), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [23] = { + [sym_definition] = STATE(2), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [aux_sym_source_file_repeat1] = STATE(2), + [sym_block_start] = ACTIONS(5), + [sym_block_end] = ACTIONS(117), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [24] = { + [sym_definition] = STATE(123), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [aux_sym_tuple_repeat1] = STATE(17), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_tuple_end] = ACTIONS(119), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [25] = { + [sym_definition] = STATE(69), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(53), + [sym_if] = STATE(68), + [sym_func] = STATE(68), + [sym_func_arg] = STATE(129), + [sym_init] = STATE(68), + [sym_init_to] = STATE(124), + [sym_assign] = STATE(68), + [sym_assign_to] = STATE(121), + [sym_assign_source] = STATE(70), + [sym_tuple] = STATE(49), + [sym_chain] = STATE(68), + [sym_string] = STATE(53), + [sym_block_start] = ACTIONS(121), + [sym_if_if] = ACTIONS(123), + [sym_tuple_start] = ACTIONS(125), + [sym_chain_dot] = ACTIONS(127), + [sym_number] = ACTIONS(129), + [sym_variable] = ACTIONS(131), + [anon_sym_DQUOTE] = ACTIONS(133), + }, + [26] = { + [sym_definition] = STATE(113), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(139), + [sym_func_body] = STATE(105), + [sym_init] = STATE(109), + [sym_init_to] = STATE(140), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(141), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(135), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [27] = { + [sym_definition] = STATE(95), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_init_source] = STATE(93), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [28] = { + [sym_definition] = STATE(87), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_assign_source] = STATE(89), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [29] = { + [sym_definition] = STATE(108), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(139), + [sym_init] = STATE(109), + [sym_init_to] = STATE(140), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(141), + [sym_assign_source] = STATE(112), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(135), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [30] = { + [sym_definition] = STATE(113), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_func_body] = STATE(105), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [31] = { + [sym_definition] = STATE(111), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_init_source] = STATE(107), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [32] = { + [sym_definition] = STATE(66), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(53), + [sym_if] = STATE(68), + [sym_func] = STATE(68), + [sym_func_arg] = STATE(129), + [sym_init] = STATE(68), + [sym_init_to] = STATE(124), + [sym_init_source] = STATE(67), + [sym_assign] = STATE(68), + [sym_assign_to] = STATE(121), + [sym_tuple] = STATE(49), + [sym_chain] = STATE(68), + [sym_string] = STATE(53), + [sym_block_start] = ACTIONS(121), + [sym_if_if] = ACTIONS(123), + [sym_tuple_start] = ACTIONS(125), + [sym_chain_dot] = ACTIONS(127), + [sym_number] = ACTIONS(129), + [sym_variable] = ACTIONS(131), + [anon_sym_DQUOTE] = ACTIONS(133), + }, + [33] = { + [sym_definition] = STATE(111), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(139), + [sym_init] = STATE(109), + [sym_init_to] = STATE(140), + [sym_init_source] = STATE(107), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(141), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(135), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [34] = { + [sym_definition] = STATE(108), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_assign_source] = STATE(112), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [35] = { + [sym_definition] = STATE(64), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(53), + [sym_if] = STATE(68), + [sym_func] = STATE(68), + [sym_func_arg] = STATE(129), + [sym_func_body] = STATE(65), + [sym_init] = STATE(68), + [sym_init_to] = STATE(124), + [sym_assign] = STATE(68), + [sym_assign_to] = STATE(121), + [sym_tuple] = STATE(49), + [sym_chain] = STATE(68), + [sym_string] = STATE(53), + [sym_block_start] = ACTIONS(121), + [sym_if_if] = ACTIONS(123), + [sym_tuple_start] = ACTIONS(125), + [sym_chain_dot] = ACTIONS(127), + [sym_number] = ACTIONS(129), + [sym_variable] = ACTIONS(131), + [anon_sym_DQUOTE] = ACTIONS(133), + }, + [36] = { + [sym_definition] = STATE(88), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_func_body] = STATE(94), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [37] = { + [sym_definition] = STATE(62), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(53), + [sym_if] = STATE(68), + [sym_func] = STATE(68), + [sym_func_arg] = STATE(129), + [sym_init] = STATE(68), + [sym_init_to] = STATE(124), + [sym_assign] = STATE(68), + [sym_assign_to] = STATE(121), + [sym_tuple] = STATE(49), + [sym_chain] = STATE(68), + [sym_string] = STATE(53), + [sym_block_start] = ACTIONS(121), + [sym_if_if] = ACTIONS(123), + [sym_tuple_start] = ACTIONS(125), + [sym_chain_dot] = ACTIONS(127), + [sym_number] = ACTIONS(129), + [sym_variable] = ACTIONS(131), + [anon_sym_DQUOTE] = ACTIONS(133), + }, + [38] = { + [sym_definition] = STATE(114), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(138), + [sym_init] = STATE(109), + [sym_init_to] = STATE(122), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(120), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(46), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [39] = { + [sym_definition] = STATE(42), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [40] = { + [sym_definition] = STATE(46), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [41] = { + [sym_definition] = STATE(37), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [42] = { + [sym_definition] = STATE(110), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(139), + [sym_init] = STATE(109), + [sym_init_to] = STATE(140), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(141), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(135), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [43] = { + [sym_definition] = STATE(106), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(101), + [sym_if] = STATE(109), + [sym_func] = STATE(109), + [sym_func_arg] = STATE(139), + [sym_init] = STATE(109), + [sym_init_to] = STATE(140), + [sym_assign] = STATE(109), + [sym_assign_to] = STATE(141), + [sym_tuple] = STATE(98), + [sym_chain] = STATE(109), + [sym_string] = STATE(101), + [sym_block_start] = ACTIONS(44), + [sym_if_if] = ACTIONS(135), + [sym_tuple_start] = ACTIONS(48), + [sym_chain_dot] = ACTIONS(52), + [sym_number] = ACTIONS(54), + [sym_variable] = ACTIONS(56), + [anon_sym_DQUOTE] = ACTIONS(58), + }, + [44] = { + [sym_definition] = STATE(83), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [45] = { + [sym_definition] = STATE(43), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(58), + [sym_if] = STATE(80), + [sym_func] = STATE(80), + [sym_func_arg] = STATE(127), + [sym_init] = STATE(80), + [sym_init_to] = STATE(126), + [sym_assign] = STATE(80), + [sym_assign_to] = STATE(125), + [sym_tuple] = STATE(56), + [sym_chain] = STATE(80), + [sym_string] = STATE(58), + [sym_block_start] = ACTIONS(5), + [sym_if_if] = ACTIONS(7), + [sym_tuple_start] = ACTIONS(9), + [sym_chain_dot] = ACTIONS(11), + [sym_number] = ACTIONS(13), + [sym_variable] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + }, + [46] = { + [sym_definition] = STATE(77), + [sym_definition_initable] = STATE(133), + [sym_definition_assignable] = STATE(104), + [sym_block] = STATE(53), + [sym_if] = STATE(68), + [sym_func] = STATE(68), + [sym_func_arg] = STATE(129), + [sym_init] = STATE(68), + [sym_init_to] = STATE(124), + [sym_assign] = STATE(68), + [sym_assign_to] = STATE(121), + [sym_tuple] = STATE(49), + [sym_chain] = STATE(68), + [sym_string] = STATE(53), + [sym_block_start] = ACTIONS(121), + [sym_if_if] = ACTIONS(123), + [sym_tuple_start] = ACTIONS(125), + [sym_chain_dot] = ACTIONS(127), + [sym_number] = ACTIONS(129), + [sym_variable] = ACTIONS(131), + [anon_sym_DQUOTE] = ACTIONS(133), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 2, + ACTIONS(139), 4, + sym_if_if, + sym_if_else, + sym_func_arrow, + sym_variable, + ACTIONS(137), 9, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_init_colonequals, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [18] = 2, + ACTIONS(143), 4, + sym_if_if, + sym_if_else, + sym_func_arrow, + sym_variable, + ACTIONS(141), 9, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_init_colonequals, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [36] = 5, + ACTIONS(149), 1, + sym_func_arrow, + ACTIONS(151), 1, + sym_init_colonequals, + ACTIONS(153), 1, + sym_assign_equals, + ACTIONS(147), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(145), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [60] = 2, + ACTIONS(157), 4, + sym_if_if, + sym_if_else, + sym_func_arrow, + sym_variable, + ACTIONS(155), 8, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [77] = 2, + ACTIONS(161), 4, + sym_if_if, + sym_if_else, + sym_func_arrow, + sym_variable, + ACTIONS(159), 8, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [94] = 2, + ACTIONS(165), 4, + sym_if_if, + sym_if_else, + sym_func_arrow, + sym_variable, + ACTIONS(163), 8, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [111] = 4, + ACTIONS(149), 1, + sym_func_arrow, + ACTIONS(153), 1, + sym_assign_equals, + ACTIONS(147), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(145), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [132] = 2, + ACTIONS(139), 3, + sym_if_if, + sym_func_arrow, + sym_variable, + ACTIONS(137), 9, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_init_colonequals, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [149] = 2, + ACTIONS(143), 3, + sym_if_if, + sym_func_arrow, + sym_variable, + ACTIONS(141), 9, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_init_colonequals, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [166] = 5, + ACTIONS(149), 1, + sym_func_arrow, + ACTIONS(151), 1, + sym_init_colonequals, + ACTIONS(153), 1, + sym_assign_equals, + ACTIONS(147), 2, + sym_if_if, + sym_variable, + ACTIONS(145), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [189] = 2, + ACTIONS(161), 3, + sym_if_if, + sym_func_arrow, + sym_variable, + ACTIONS(159), 8, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [205] = 4, + ACTIONS(149), 1, + sym_func_arrow, + ACTIONS(153), 1, + sym_assign_equals, + ACTIONS(147), 2, + sym_if_if, + sym_variable, + ACTIONS(145), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [225] = 2, + ACTIONS(157), 3, + sym_if_if, + sym_func_arrow, + sym_variable, + ACTIONS(155), 8, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [241] = 2, + ACTIONS(165), 3, + sym_if_if, + sym_func_arrow, + sym_variable, + ACTIONS(163), 8, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_assign_equals, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [257] = 2, + ACTIONS(165), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(163), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [272] = 3, + ACTIONS(171), 1, + sym_if_else, + ACTIONS(169), 2, + sym_if_if, + sym_variable, + ACTIONS(167), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [289] = 2, + ACTIONS(143), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(141), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [304] = 2, + ACTIONS(175), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(173), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [319] = 2, + ACTIONS(179), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(177), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [334] = 2, + ACTIONS(183), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(181), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [349] = 2, + ACTIONS(187), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(185), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [364] = 2, + ACTIONS(147), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(145), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [379] = 2, + ACTIONS(191), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(189), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [394] = 2, + ACTIONS(195), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(193), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [409] = 2, + ACTIONS(199), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(197), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [424] = 2, + ACTIONS(203), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(201), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [439] = 2, + ACTIONS(207), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(205), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [454] = 2, + ACTIONS(161), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(159), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [469] = 2, + ACTIONS(157), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(155), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [484] = 2, + ACTIONS(139), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(137), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [499] = 2, + ACTIONS(169), 3, + sym_if_if, + sym_if_else, + sym_variable, + ACTIONS(167), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [514] = 7, + ACTIONS(44), 1, + sym_block_start, + ACTIONS(48), 1, + sym_tuple_start, + ACTIONS(58), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + sym_number, + ACTIONS(211), 1, + sym_variable, + STATE(116), 1, + sym_definition_in_chain, + STATE(115), 3, + sym_block, + sym_tuple, + sym_string, + [538] = 2, + ACTIONS(165), 2, + sym_if_if, + sym_variable, + ACTIONS(163), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [552] = 2, + ACTIONS(147), 2, + sym_if_if, + sym_variable, + ACTIONS(145), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [566] = 2, + ACTIONS(199), 2, + sym_if_if, + sym_variable, + ACTIONS(197), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [580] = 2, + ACTIONS(203), 2, + sym_if_if, + sym_variable, + ACTIONS(201), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [594] = 2, + ACTIONS(207), 2, + sym_if_if, + sym_variable, + ACTIONS(205), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [608] = 2, + ACTIONS(157), 2, + sym_if_if, + sym_variable, + ACTIONS(155), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [622] = 2, + ACTIONS(139), 2, + sym_if_if, + sym_variable, + ACTIONS(137), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [636] = 7, + ACTIONS(213), 1, + sym_block_start, + ACTIONS(215), 1, + sym_tuple_start, + ACTIONS(217), 1, + sym_number, + ACTIONS(219), 1, + sym_variable, + ACTIONS(221), 1, + anon_sym_DQUOTE, + STATE(82), 1, + sym_definition_in_chain, + STATE(81), 3, + sym_block, + sym_tuple, + sym_string, + [660] = 2, + ACTIONS(191), 2, + sym_if_if, + sym_variable, + ACTIONS(189), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [674] = 2, + ACTIONS(175), 2, + sym_if_if, + sym_variable, + ACTIONS(173), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [688] = 2, + ACTIONS(195), 2, + sym_if_if, + sym_variable, + ACTIONS(193), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [702] = 2, + ACTIONS(143), 2, + sym_if_if, + sym_variable, + ACTIONS(141), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [716] = 2, + ACTIONS(161), 2, + sym_if_if, + sym_variable, + ACTIONS(159), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [730] = 7, + ACTIONS(223), 1, + sym_block_start, + ACTIONS(225), 1, + sym_tuple_start, + ACTIONS(227), 1, + sym_number, + ACTIONS(229), 1, + sym_variable, + ACTIONS(231), 1, + anon_sym_DQUOTE, + STATE(72), 1, + sym_definition_in_chain, + STATE(71), 3, + sym_block, + sym_tuple, + sym_string, + [754] = 2, + ACTIONS(187), 2, + sym_if_if, + sym_variable, + ACTIONS(185), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [768] = 2, + ACTIONS(179), 2, + sym_if_if, + sym_variable, + ACTIONS(177), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [782] = 2, + ACTIONS(183), 2, + sym_if_if, + sym_variable, + ACTIONS(181), 7, + ts_builtin_sym_end, + sym_block_start, + sym_block_end, + sym_tuple_start, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [796] = 2, + ACTIONS(233), 2, + sym_if_if, + sym_variable, + ACTIONS(81), 6, + sym_block_start, + sym_tuple_start, + sym_tuple_end, + sym_chain_dot, + sym_number, + anon_sym_DQUOTE, + [809] = 2, + ACTIONS(137), 1, + sym_tuple_separator, + ACTIONS(139), 4, + sym_if_else, + sym_func_arrow, + sym_init_colonequals, + sym_assign_equals, + [819] = 4, + ACTIONS(145), 1, + sym_tuple_separator, + ACTIONS(147), 1, + sym_if_else, + ACTIONS(235), 1, + sym_init_colonequals, + ACTIONS(149), 2, + sym_func_arrow, + sym_assign_equals, + [833] = 2, + ACTIONS(141), 1, + sym_tuple_separator, + ACTIONS(143), 4, + sym_if_else, + sym_func_arrow, + sym_init_colonequals, + sym_assign_equals, + [843] = 2, + ACTIONS(155), 1, + sym_tuple_separator, + ACTIONS(157), 3, + sym_if_else, + sym_func_arrow, + sym_assign_equals, + [852] = 3, + ACTIONS(145), 1, + sym_tuple_separator, + ACTIONS(147), 1, + sym_if_else, + ACTIONS(149), 2, + sym_func_arrow, + sym_assign_equals, + [863] = 2, + ACTIONS(159), 1, + sym_tuple_separator, + ACTIONS(161), 3, + sym_if_else, + sym_func_arrow, + sym_assign_equals, + [872] = 2, + ACTIONS(163), 1, + sym_tuple_separator, + ACTIONS(165), 3, + sym_if_else, + sym_func_arrow, + sym_assign_equals, + [881] = 2, + ACTIONS(237), 1, + sym_func_arrow, + ACTIONS(239), 1, + sym_assign_equals, + [888] = 2, + ACTIONS(177), 1, + sym_tuple_separator, + ACTIONS(179), 1, + sym_if_else, + [895] = 2, + ACTIONS(167), 1, + sym_tuple_separator, + ACTIONS(241), 1, + sym_if_else, + [902] = 2, + ACTIONS(185), 1, + sym_tuple_separator, + ACTIONS(187), 1, + sym_if_else, + [909] = 2, + ACTIONS(189), 1, + sym_tuple_separator, + ACTIONS(191), 1, + sym_if_else, + [916] = 2, + ACTIONS(145), 1, + sym_tuple_separator, + ACTIONS(147), 1, + sym_if_else, + [923] = 2, + ACTIONS(167), 1, + sym_tuple_separator, + ACTIONS(169), 1, + sym_if_else, + [930] = 2, + ACTIONS(181), 1, + sym_tuple_separator, + ACTIONS(183), 1, + sym_if_else, + [937] = 2, + ACTIONS(193), 1, + sym_tuple_separator, + ACTIONS(195), 1, + sym_if_else, + [944] = 2, + ACTIONS(173), 1, + sym_tuple_separator, + ACTIONS(175), 1, + sym_if_else, + [951] = 2, + ACTIONS(205), 1, + sym_tuple_separator, + ACTIONS(207), 1, + sym_if_else, + [958] = 2, + ACTIONS(197), 1, + sym_tuple_separator, + ACTIONS(199), 1, + sym_if_else, + [965] = 2, + ACTIONS(201), 1, + sym_tuple_separator, + ACTIONS(203), 1, + sym_if_else, + [972] = 1, + ACTIONS(243), 1, + anon_sym_DQUOTE, + [976] = 1, + ACTIONS(245), 1, + sym_string_content, + [980] = 1, + ACTIONS(247), 1, + anon_sym_DQUOTE, + [984] = 1, + ACTIONS(249), 1, + sym_assign_equals, + [988] = 1, + ACTIONS(251), 1, + sym_assign_equals, + [992] = 1, + ACTIONS(253), 1, + sym_init_colonequals, + [996] = 1, + ACTIONS(255), 1, + sym_tuple_separator, + [1000] = 1, + ACTIONS(257), 1, + sym_init_colonequals, + [1004] = 1, + ACTIONS(259), 1, + sym_assign_equals, + [1008] = 1, + ACTIONS(261), 1, + sym_init_colonequals, + [1012] = 1, + ACTIONS(263), 1, + sym_func_arrow, + [1016] = 1, + ACTIONS(265), 1, + anon_sym_DQUOTE, + [1020] = 1, + ACTIONS(267), 1, + sym_func_arrow, + [1024] = 1, + ACTIONS(269), 1, + anon_sym_DQUOTE, + [1028] = 1, + ACTIONS(271), 1, + anon_sym_DQUOTE, + [1032] = 1, + ACTIONS(273), 1, + sym_string_content, + [1036] = 1, + ACTIONS(275), 1, + sym_init_colonequals, + [1040] = 1, + ACTIONS(277), 1, + sym_string_content, + [1044] = 1, + ACTIONS(279), 1, + sym_string_content, + [1048] = 1, + ACTIONS(281), 1, + ts_builtin_sym_end, + [1052] = 1, + ACTIONS(283), 1, + sym_string_content, + [1056] = 1, + ACTIONS(285), 1, + sym_func_arrow, + [1060] = 1, + ACTIONS(287), 1, + sym_func_arrow, + [1064] = 1, + ACTIONS(289), 1, + sym_init_colonequals, + [1068] = 1, + ACTIONS(291), 1, + sym_assign_equals, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(47)] = 0, + [SMALL_STATE(48)] = 18, + [SMALL_STATE(49)] = 36, + [SMALL_STATE(50)] = 60, + [SMALL_STATE(51)] = 77, + [SMALL_STATE(52)] = 94, + [SMALL_STATE(53)] = 111, + [SMALL_STATE(54)] = 132, + [SMALL_STATE(55)] = 149, + [SMALL_STATE(56)] = 166, + [SMALL_STATE(57)] = 189, + [SMALL_STATE(58)] = 205, + [SMALL_STATE(59)] = 225, + [SMALL_STATE(60)] = 241, + [SMALL_STATE(61)] = 257, + [SMALL_STATE(62)] = 272, + [SMALL_STATE(63)] = 289, + [SMALL_STATE(64)] = 304, + [SMALL_STATE(65)] = 319, + [SMALL_STATE(66)] = 334, + [SMALL_STATE(67)] = 349, + [SMALL_STATE(68)] = 364, + [SMALL_STATE(69)] = 379, + [SMALL_STATE(70)] = 394, + [SMALL_STATE(71)] = 409, + [SMALL_STATE(72)] = 424, + [SMALL_STATE(73)] = 439, + [SMALL_STATE(74)] = 454, + [SMALL_STATE(75)] = 469, + [SMALL_STATE(76)] = 484, + [SMALL_STATE(77)] = 499, + [SMALL_STATE(78)] = 514, + [SMALL_STATE(79)] = 538, + [SMALL_STATE(80)] = 552, + [SMALL_STATE(81)] = 566, + [SMALL_STATE(82)] = 580, + [SMALL_STATE(83)] = 594, + [SMALL_STATE(84)] = 608, + [SMALL_STATE(85)] = 622, + [SMALL_STATE(86)] = 636, + [SMALL_STATE(87)] = 660, + [SMALL_STATE(88)] = 674, + [SMALL_STATE(89)] = 688, + [SMALL_STATE(90)] = 702, + [SMALL_STATE(91)] = 716, + [SMALL_STATE(92)] = 730, + [SMALL_STATE(93)] = 754, + [SMALL_STATE(94)] = 768, + [SMALL_STATE(95)] = 782, + [SMALL_STATE(96)] = 796, + [SMALL_STATE(97)] = 809, + [SMALL_STATE(98)] = 819, + [SMALL_STATE(99)] = 833, + [SMALL_STATE(100)] = 843, + [SMALL_STATE(101)] = 852, + [SMALL_STATE(102)] = 863, + [SMALL_STATE(103)] = 872, + [SMALL_STATE(104)] = 881, + [SMALL_STATE(105)] = 888, + [SMALL_STATE(106)] = 895, + [SMALL_STATE(107)] = 902, + [SMALL_STATE(108)] = 909, + [SMALL_STATE(109)] = 916, + [SMALL_STATE(110)] = 923, + [SMALL_STATE(111)] = 930, + [SMALL_STATE(112)] = 937, + [SMALL_STATE(113)] = 944, + [SMALL_STATE(114)] = 951, + [SMALL_STATE(115)] = 958, + [SMALL_STATE(116)] = 965, + [SMALL_STATE(117)] = 972, + [SMALL_STATE(118)] = 976, + [SMALL_STATE(119)] = 980, + [SMALL_STATE(120)] = 984, + [SMALL_STATE(121)] = 988, + [SMALL_STATE(122)] = 992, + [SMALL_STATE(123)] = 996, + [SMALL_STATE(124)] = 1000, + [SMALL_STATE(125)] = 1004, + [SMALL_STATE(126)] = 1008, + [SMALL_STATE(127)] = 1012, + [SMALL_STATE(128)] = 1016, + [SMALL_STATE(129)] = 1020, + [SMALL_STATE(130)] = 1024, + [SMALL_STATE(131)] = 1028, + [SMALL_STATE(132)] = 1032, + [SMALL_STATE(133)] = 1036, + [SMALL_STATE(134)] = 1040, + [SMALL_STATE(135)] = 1044, + [SMALL_STATE(136)] = 1048, + [SMALL_STATE(137)] = 1052, + [SMALL_STATE(138)] = 1056, + [SMALL_STATE(139)] = 1060, + [SMALL_STATE(140)] = 1064, + [SMALL_STATE(141)] = 1068, +}; + +static const TSParseActionEntry ts_parse_actions[] = { + [0] = {.entry = {.count = 0, .reusable = false}}, + [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), + [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(56), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), + [19] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [21] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(19), + [24] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(41), + [27] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(20), + [30] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(86), + [33] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(58), + [36] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(56), + [39] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(137), + [42] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [44] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [46] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), + [48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [52] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [54] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [56] = {.entry = {.count = 1, .reusable = false}}, SHIFT(98), + [58] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [62] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [72] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(3), + [75] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(45), + [78] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(6), + [81] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), + [83] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(78), + [86] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(101), + [89] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(98), + [92] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(118), + [95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [123] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), + [125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(49), + [133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [135] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39), + [137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), + [139] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), + [141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), + [143] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3), + [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition, 1), + [147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_definition, 1), + [149] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_definition_assignable, 1), + [151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_initable, 1), + [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_assignable, 1), + [155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), + [157] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2), + [159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3), + [161] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3), + [163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), + [165] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 3), + [167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if, 3), + [169] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if, 3), + [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(44), + [173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_func_body, 1), + [175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_func_body, 1), + [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_func, 3), + [179] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_func, 3), + [181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_init_source, 1), + [183] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_init_source, 1), + [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_init, 3), + [187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_init, 3), + [189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_source, 1), + [191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_source, 1), + [193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign, 3), + [195] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign, 3), + [197] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_in_chain, 1), + [199] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_definition_in_chain, 1), + [201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chain, 2), + [203] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_chain, 2), + [205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if, 5), + [207] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if, 5), + [209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(115), + [213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [219] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81), + [221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [229] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), + [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_tuple_repeat1, 2), + [235] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_definition_initable, 1), + [237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_func_arg, 1), + [239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_to, 1), + [241] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), + [243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), + [247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [269] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [275] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_init_to, 1), + [277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [281] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), +}; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef _WIN32 +#define extern __declspec(dllexport) +#endif + +extern const TSLanguage *tree_sitter_mers(void) { + static const TSLanguage language = { + .version = LANGUAGE_VERSION, + .symbol_count = SYMBOL_COUNT, + .alias_count = ALIAS_COUNT, + .token_count = TOKEN_COUNT, + .external_token_count = EXTERNAL_TOKEN_COUNT, + .state_count = STATE_COUNT, + .large_state_count = LARGE_STATE_COUNT, + .production_id_count = PRODUCTION_ID_COUNT, + .field_count = FIELD_COUNT, + .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, + .parse_table = &ts_parse_table[0][0], + .small_parse_table = ts_small_parse_table, + .small_parse_table_map = ts_small_parse_table_map, + .parse_actions = ts_parse_actions, + .symbol_names = ts_symbol_names, + .symbol_metadata = ts_symbol_metadata, + .public_symbol_map = ts_symbol_map, + .alias_map = ts_non_terminal_alias_map, + .alias_sequences = &ts_alias_sequences[0][0], + .lex_modes = ts_lex_modes, + .lex_fn = ts_lex, + .primary_state_ids = ts_primary_state_ids, + }; + return &language; +} +#ifdef __cplusplus +} +#endif diff --git a/tree-sitter-mers/src/tree_sitter/parser.h b/tree-sitter-mers/src/tree_sitter/parser.h new file mode 100644 index 0000000..2b14ac1 --- /dev/null +++ b/tree-sitter-mers/src/tree_sitter/parser.h @@ -0,0 +1,224 @@ +#ifndef TREE_SITTER_PARSER_H_ +#define TREE_SITTER_PARSER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define ts_builtin_sym_error ((TSSymbol)-1) +#define ts_builtin_sym_end 0 +#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 + +typedef uint16_t TSStateId; + +#ifndef TREE_SITTER_API_H_ +typedef uint16_t TSSymbol; +typedef uint16_t TSFieldId; +typedef struct TSLanguage TSLanguage; +#endif + +typedef struct { + TSFieldId field_id; + uint8_t child_index; + bool inherited; +} TSFieldMapEntry; + +typedef struct { + uint16_t index; + uint16_t length; +} TSFieldMapSlice; + +typedef struct { + bool visible; + bool named; + bool supertype; +} TSSymbolMetadata; + +typedef struct TSLexer TSLexer; + +struct TSLexer { + int32_t lookahead; + TSSymbol result_symbol; + void (*advance)(TSLexer *, bool); + void (*mark_end)(TSLexer *); + uint32_t (*get_column)(TSLexer *); + bool (*is_at_included_range_start)(const TSLexer *); + bool (*eof)(const TSLexer *); +}; + +typedef enum { + TSParseActionTypeShift, + TSParseActionTypeReduce, + TSParseActionTypeAccept, + TSParseActionTypeRecover, +} TSParseActionType; + +typedef union { + struct { + uint8_t type; + TSStateId state; + bool extra; + bool repetition; + } shift; + struct { + uint8_t type; + uint8_t child_count; + TSSymbol symbol; + int16_t dynamic_precedence; + uint16_t production_id; + } reduce; + uint8_t type; +} TSParseAction; + +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; +} TSLexMode; + +typedef union { + TSParseAction action; + struct { + uint8_t count; + bool reusable; + } entry; +} TSParseActionEntry; + +struct TSLanguage { + uint32_t version; + uint32_t symbol_count; + uint32_t alias_count; + uint32_t token_count; + uint32_t external_token_count; + uint32_t state_count; + uint32_t large_state_count; + uint32_t production_id_count; + uint32_t field_count; + uint16_t max_alias_sequence_length; + const uint16_t *parse_table; + const uint16_t *small_parse_table; + const uint32_t *small_parse_table_map; + const TSParseActionEntry *parse_actions; + const char * const *symbol_names; + const char * const *field_names; + const TSFieldMapSlice *field_map_slices; + const TSFieldMapEntry *field_map_entries; + const TSSymbolMetadata *symbol_metadata; + const TSSymbol *public_symbol_map; + const uint16_t *alias_map; + const TSSymbol *alias_sequences; + const TSLexMode *lex_modes; + bool (*lex_fn)(TSLexer *, TSStateId); + bool (*keyword_lex_fn)(TSLexer *, TSStateId); + TSSymbol keyword_capture_token; + struct { + const bool *states; + const TSSymbol *symbol_map; + void *(*create)(void); + void (*destroy)(void *); + bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist); + unsigned (*serialize)(void *, char *); + void (*deserialize)(void *, const char *, unsigned); + } external_scanner; + const TSStateId *primary_state_ids; +}; + +/* + * Lexer Macros + */ + +#define START_LEXER() \ + bool result = false; \ + bool skip = false; \ + bool eof = false; \ + int32_t lookahead; \ + goto start; \ + next_state: \ + lexer->advance(lexer, skip); \ + start: \ + skip = false; \ + lookahead = lexer->lookahead; + +#define ADVANCE(state_value) \ + { \ + state = state_value; \ + goto next_state; \ + } + +#define SKIP(state_value) \ + { \ + skip = true; \ + state = state_value; \ + goto next_state; \ + } + +#define ACCEPT_TOKEN(symbol_value) \ + result = true; \ + lexer->result_symbol = symbol_value; \ + lexer->mark_end(lexer); + +#define END_STATE() return result; + +/* + * Parse Table Macros + */ + +#define SMALL_STATE(id) id - LARGE_STATE_COUNT + +#define STATE(id) id + +#define ACTIONS(id) id + +#define SHIFT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value \ + } \ + }} + +#define SHIFT_REPEAT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value, \ + .repetition = true \ + } \ + }} + +#define SHIFT_EXTRA() \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .extra = true \ + } \ + }} + +#define REDUCE(symbol_val, child_count_val, ...) \ + {{ \ + .reduce = { \ + .type = TSParseActionTypeReduce, \ + .symbol = symbol_val, \ + .child_count = child_count_val, \ + __VA_ARGS__ \ + }, \ + }} + +#define RECOVER() \ + {{ \ + .type = TSParseActionTypeRecover \ + }} + +#define ACCEPT_INPUT() \ + {{ \ + .type = TSParseActionTypeAccept \ + }} + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_PARSER_H_ diff --git a/tree-sitter-mers/test.mers b/tree-sitter-mers/test.mers new file mode 100644 index 0000000..c46cc28 --- /dev/null +++ b/tree-sitter-mers/test.mers @@ -0,0 +1,8 @@ +(my_arg, some_flag) -> { + x := "test" + if some_flag { + my_arg.println + } else { + x.println + } +}