From e28a16803eda1b8ca8549ce2786b3f99f28de8b4 Mon Sep 17 00:00:00 2001 From: "yufei.li" Date: Mon, 28 Nov 2022 21:39:29 +0800 Subject: [PATCH 1/5] feat: Add compiler toolchain for developer --- .gitignore | 2 + ide/grammars/.editorconfig | 0 ide/grammars/.gitignore | 2 + ide/grammars/Cargo.toml | 26 + ide/grammars/binding.gyp | 19 + ide/grammars/bindings/node/binding.cc | 28 + ide/grammars/bindings/node/index.js | 19 + ide/grammars/bindings/rust/build.rs | 40 + ide/grammars/bindings/rust/lib.rs | 52 + ide/grammars/grammar.js | 284 + ide/grammars/package-lock.json | 28 + ide/grammars/package.json | 35 + ide/grammars/queries/highlights.scm | 65 + ide/grammars/queries/locals.scm | 0 ide/grammars/queries/tags.scm | 0 ide/grammars/src/grammar.json | 1486 +++++ ide/grammars/src/node-types.json | 947 +++ ide/grammars/src/parser.c | 5838 +++++++++++++++++ ide/grammars/src/tree_sitter/parser.h | 224 + ide/grammars/test/corpus/debug.txt | 23 + ide/grammars/test/highlight/statements.txt | 29 + ide/grammars/test/nginx.ppl | 49 + ide/plugins/vscode/.eslintignore | 5 + ide/plugins/vscode/.eslintrc.js | 20 + ide/plugins/vscode/.gitignore | 5 + ide/plugins/vscode/.vscode/extensions.json | 9 + ide/plugins/vscode/.vscode/launch.json | 44 + ide/plugins/vscode/.vscode/settings.json | 8 + ide/plugins/vscode/.vscode/tasks.json | 33 + ide/plugins/vscode/.vscodeignore | 15 + ide/plugins/vscode/README.md | 38 + ide/plugins/vscode/client/package-lock.json | 902 +++ ide/plugins/vscode/client/package.json | 22 + ide/plugins/vscode/client/src/extension.ts | 65 + .../vscode/client/src/test/completion.test.ts | 43 + .../client/src/test/diagnostics.test.ts | 41 + ide/plugins/vscode/client/src/test/helper.ts | 47 + ide/plugins/vscode/client/src/test/index.ts | 43 + ide/plugins/vscode/client/src/test/runTest.ts | 27 + .../vscode/client/testFixture/completion.txt | 0 .../vscode/client/testFixture/diagnostics.txt | 1 + ide/plugins/vscode/client/tsconfig.json | 12 + .../vscode/language-configuration.json | 30 + ide/plugins/vscode/package-lock.json | 4736 +++++++++++++ ide/plugins/vscode/package.json | 84 + ide/plugins/vscode/scripts/e2e.sh | 6 + ide/plugins/vscode/server/package-lock.json | 92 + ide/plugins/vscode/server/package.json | 19 + ide/plugins/vscode/server/src/data.ts | 559 ++ ide/plugins/vscode/server/src/server.ts | 286 + ide/plugins/vscode/server/tsconfig.json | 14 + .../vscode/syntaxes/ppl.tmLanguage.json | 82 + ide/plugins/vscode/tsconfig.json | 21 + proposals/A001-add-developer-toolchain.md | 156 + proposals/README.md | 12 + 55 files changed, 16673 insertions(+) create mode 100644 ide/grammars/.editorconfig create mode 100644 ide/grammars/.gitignore create mode 100644 ide/grammars/Cargo.toml create mode 100644 ide/grammars/binding.gyp create mode 100644 ide/grammars/bindings/node/binding.cc create mode 100644 ide/grammars/bindings/node/index.js create mode 100644 ide/grammars/bindings/rust/build.rs create mode 100644 ide/grammars/bindings/rust/lib.rs create mode 100644 ide/grammars/grammar.js create mode 100644 ide/grammars/package-lock.json create mode 100644 ide/grammars/package.json create mode 100644 ide/grammars/queries/highlights.scm create mode 100644 ide/grammars/queries/locals.scm create mode 100644 ide/grammars/queries/tags.scm create mode 100644 ide/grammars/src/grammar.json create mode 100644 ide/grammars/src/node-types.json create mode 100644 ide/grammars/src/parser.c create mode 100644 ide/grammars/src/tree_sitter/parser.h create mode 100644 ide/grammars/test/corpus/debug.txt create mode 100644 ide/grammars/test/highlight/statements.txt create mode 100644 ide/grammars/test/nginx.ppl create mode 100644 ide/plugins/vscode/.eslintignore create mode 100644 ide/plugins/vscode/.eslintrc.js create mode 100644 ide/plugins/vscode/.gitignore create mode 100644 ide/plugins/vscode/.vscode/extensions.json create mode 100644 ide/plugins/vscode/.vscode/launch.json create mode 100644 ide/plugins/vscode/.vscode/settings.json create mode 100644 ide/plugins/vscode/.vscode/tasks.json create mode 100644 ide/plugins/vscode/.vscodeignore create mode 100644 ide/plugins/vscode/README.md create mode 100644 ide/plugins/vscode/client/package-lock.json create mode 100644 ide/plugins/vscode/client/package.json create mode 100644 ide/plugins/vscode/client/src/extension.ts create mode 100644 ide/plugins/vscode/client/src/test/completion.test.ts create mode 100644 ide/plugins/vscode/client/src/test/diagnostics.test.ts create mode 100644 ide/plugins/vscode/client/src/test/helper.ts create mode 100644 ide/plugins/vscode/client/src/test/index.ts create mode 100644 ide/plugins/vscode/client/src/test/runTest.ts create mode 100644 ide/plugins/vscode/client/testFixture/completion.txt create mode 100644 ide/plugins/vscode/client/testFixture/diagnostics.txt create mode 100644 ide/plugins/vscode/client/tsconfig.json create mode 100644 ide/plugins/vscode/language-configuration.json create mode 100644 ide/plugins/vscode/package-lock.json create mode 100644 ide/plugins/vscode/package.json create mode 100755 ide/plugins/vscode/scripts/e2e.sh create mode 100644 ide/plugins/vscode/server/package-lock.json create mode 100644 ide/plugins/vscode/server/package.json create mode 100644 ide/plugins/vscode/server/src/data.ts create mode 100644 ide/plugins/vscode/server/src/server.ts create mode 100644 ide/plugins/vscode/server/tsconfig.json create mode 100644 ide/plugins/vscode/syntaxes/ppl.tmLanguage.json create mode 100644 ide/plugins/vscode/tsconfig.json create mode 100644 proposals/A001-add-developer-toolchain.md create mode 100644 proposals/README.md diff --git a/.gitignore b/.gitignore index 59e7c9e..8eaba8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +.DS_Store + pkg/parser/y.output *.pdf rl.sh diff --git a/ide/grammars/.editorconfig b/ide/grammars/.editorconfig new file mode 100644 index 0000000..e69de29 diff --git a/ide/grammars/.gitignore b/ide/grammars/.gitignore new file mode 100644 index 0000000..b38db2f --- /dev/null +++ b/ide/grammars/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +build/ diff --git a/ide/grammars/Cargo.toml b/ide/grammars/Cargo.toml new file mode 100644 index 0000000..99ba05f --- /dev/null +++ b/ide/grammars/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "tree-sitter-ppl" +description = "ppl grammar for the tree-sitter parsing library" +version = "0.0.1" +keywords = ["incremental", "parsing", "ppl"] +categories = ["parsing", "text-editors"] +repository = "https://github.com/tree-sitter/tree-sitter-ppl" +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.3" + +[build-dependencies] +cc = "1.0" diff --git a/ide/grammars/binding.gyp b/ide/grammars/binding.gyp new file mode 100644 index 0000000..a1d3329 --- /dev/null +++ b/ide/grammars/binding.gyp @@ -0,0 +1,19 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_ppl_binding", + "include_dirs": [ + " +#include "nan.h" + +using namespace v8; + +extern "C" TSLanguage * tree_sitter_YOUR_LANGUAGE_NAME(); + +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_YOUR_LANGUAGE_NAME()); + + Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("YOUR_LANGUAGE_NAME").ToLocalChecked()); + Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +} + +NODE_MODULE(tree_sitter_YOUR_LANGUAGE_NAME_binding, Init) + +} // namespace diff --git a/ide/grammars/bindings/node/index.js b/ide/grammars/bindings/node/index.js new file mode 100644 index 0000000..814d8b0 --- /dev/null +++ b/ide/grammars/bindings/node/index.js @@ -0,0 +1,19 @@ +try { + module.exports = require("../../build/Release/tree_sitter_YOUR_LANGUAGE_NAME_binding"); +} catch (error1) { + if (error1.code !== 'MODULE_NOT_FOUND') { + throw error1; + } + try { + module.exports = require("../../build/Debug/tree_sitter_YOUR_LANGUAGE_NAME_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/ide/grammars/bindings/rust/build.rs b/ide/grammars/bindings/rust/build.rs new file mode 100644 index 0000000..c6061f0 --- /dev/null +++ b/ide/grammars/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/ide/grammars/bindings/rust/lib.rs b/ide/grammars/bindings/rust/lib.rs new file mode 100644 index 0000000..b3d2209 --- /dev/null +++ b/ide/grammars/bindings/rust/lib.rs @@ -0,0 +1,52 @@ +//! This crate provides YOUR_LANGUAGE_NAME 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_YOUR_LANGUAGE_NAME::language()).expect("Error loading YOUR_LANGUAGE_NAME 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_YOUR_LANGUAGE_NAME() -> 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_YOUR_LANGUAGE_NAME() } +} + +/// 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 YOUR_LANGUAGE_NAME language"); + } +} diff --git a/ide/grammars/grammar.js b/ide/grammars/grammar.js new file mode 100644 index 0000000..cbf311b --- /dev/null +++ b/ide/grammars/grammar.js @@ -0,0 +1,284 @@ +const PREC = { + DEFAULT: 0, + + EQ: 1, + OR: 2, + AND: 3, + RELATIONAL: 4, + ADD: 5, + MULTIPLY: 6, + UNARY: 7, + + CALL: 10, + INDEX: 11, +} + +module.exports = grammar({ + name: 'ppl', + + rules: { + // TODO: error? + // See: https://github.com/GuanceCloud/ppl/blob/main/pkg/parser/gram.y#LL131C9-L131C9 + source_file: $ => repeat($._stmt), + + // Statements + _stmt: $ => choice( + $.comment, + $.if_stmt, + $.for_in_stmt, + $.continue_stmt, + $.break_stmt, + $.expr_stmt, + + // TODO: why it is expr + $.assign_stmt, + ), + + comment: $ => token(prec(-10, /#.*/)), + + if_stmt: $ => prec.right(seq( + 'if', + field('condition', $._expr), // TODO: expr or condition expr + field('consequence', $.block_stmts), + repeat(seq( + 'elif', + field('alternative', $.block_stmts) + )), + optional(seq( + 'else', + field('alternative', $.block_stmts) + )) + )), + + for_in_stmt: $ => seq( + 'for', + $.identifier, + 'in', + $.identifier, + $.block_stmts, + ), + + block_stmts: $ => seq( + '{', + repeat($._stmt), + '}', + ), + + continue_stmt: $ => seq( + 'continue', + ), + + break_stmt: $ => seq( + 'break', + ), + + assign_stmt: $ => seq( + $.identifier, + '=', + $._expr, + ), + + expr_stmt: $ => $._expr, + + // Expressions + _expr: $ => choice( + $.identifier, + $._literal, + $.list_expr, + $.map_expr, + $.paren_expr, + $.call_expr, + $.binary_expr, + // $.attr_expr, + $.index_expr, + ), + + identifier: $ => /[a-zA-Z_]\w*/, + + // Expr: paren + paren_expr: $ => seq( + '(', + $._expr, + ')', + ), + + // Expr: call + call_expr: $ => prec(PREC.CALL, seq( + field('name', $.identifier), + $.argument_list, + )), + + argument_list: $ => seq( + '(', + commaSep($._expr), + ')', + ), + + // Expr: binary + binary_expr: $ => { + const table = [ + [prec.left, '+', PREC.ADD], + [prec.left, '-', PREC.ADD], + [prec.left, '*', PREC.MULTIPLY], + [prec.left, '/', PREC.MULTIPLY], + [prec.left, '%', PREC.MULTIPLY], + [prec.left, '||', PREC.OR], + [prec.left, '&&', PREC.AND], + [prec.left, '==', PREC.EQ], + [prec.left, '!=', PREC.EQ], + [prec.left, '>', PREC.RELATIONAL], + [prec.left, '>=', PREC.RELATIONAL], + [prec.left, '<=', PREC.RELATIONAL], + [prec.left, '<', PREC.RELATIONAL], + ]; + + return choice(...table.map(([fn, operator, precedence]) => fn(precedence, seq( + field('left', $._expr), + field('operator', operator), + field('right', $._expr) + )))); + }, + + // TODO: only for json function? + // attr_expr: $ => seq(), + + // Expr: index + index_expr: $ => prec(PREC.INDEX, seq( + $.identifier, + '[', + $._expr, + ']', + )), + + // Expr: condition + cond_expr: $ => seq( + $._expr, + choice( + '>=', + '>', + '||', + '&&', + '<', + '<=', + '!=', + '==', + ), + $._expr, + ), + + // Expr: list + list_expr: $ => seq( + '[', + commaSep($.list_elem), + ']', + ), + + list_elem: $ => choice( + $._literal, + $.identifier, + ), + + // Expr: map + map_expr: $ => seq( + '{', + commaSep($.map_elem), + '}', + ), + + map_elem: $ => seq( + $._expr, + ':', + $._expr, + ), + + // Literals + _literal: $ => choice( + $.nil_lit, + $.number_lit, + $.string_lit, + $.bool_lit, + ), + + // Literal: nil + nil_lit: $ => choice( + 'nil', + 'null', + ), + + // Literal: number + number_lit: $ => { + const separator = "'"; + const hex = /[0-9a-fA-F]/; + const decimal = /[0-9]/; + const hexDigits = seq(repeat1(hex), repeat(seq(separator, repeat1(hex)))); + const decimalDigits = seq(repeat1(decimal), repeat(seq(separator, repeat1(decimal)))); + return token(seq( + optional(/[-\+]/), + optional(choice('0x', '0b')), + choice( + seq( + choice( + decimalDigits, + seq('0b', decimalDigits), + seq('0x', hexDigits) + ), + optional(seq('.', optional(hexDigits))) + ), + seq('.', decimalDigits) + ), + optional(seq( + /[eEpP]/, + optional(seq( + optional(/[-\+]/), + hexDigits + )) + )), + repeat(choice('u', 'l', 'U', 'L', 'f', 'F')) + )) + }, + + // Literal: string + string_lit: $ => choice( + seq('"', '"'), + seq('"', field('value', $.string_content), '"'), + ), + + string_lit: $ => choice( + seq( + '"', + repeat(choice( + token.immediate(prec(1, /[^\\"\n]+/)), + $.escape_sequence, + )), + '"' + ), + seq( + "'", + repeat(choice( + token.immediate(prec(1, /[^\\'\n]+/)), + $.escape_sequence, + )), + "'" + ) + ), + + // Literal: bool + bool_lit: $ => choice( + 'true', + 'false', + ), + + escape_sequence: $ => token.immediate(seq( + '\\', + /(\"|\\|\/|b|f|n|r|t|u)/ + )), + } +}); + +function commaSep (rule) { + return optional(commaSep1(rule)) +} + +function commaSep1 (rule) { + return seq(rule, repeat(seq(',', rule))) +} diff --git a/ide/grammars/package-lock.json b/ide/grammars/package-lock.json new file mode 100644 index 0000000..1b0c8a5 --- /dev/null +++ b/ide/grammars/package-lock.json @@ -0,0 +1,28 @@ +{ + "name": "tree-sitter-ppl", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "tree-sitter-ppl", + "version": "1.0.0", + "license": "Apache-2.0", + "dependencies": { + "nan": "^2.17.0" + } + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + } + }, + "dependencies": { + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + } + } +} diff --git a/ide/grammars/package.json b/ide/grammars/package.json new file mode 100644 index 0000000..ee519ce --- /dev/null +++ b/ide/grammars/package.json @@ -0,0 +1,35 @@ +{ + "name": "tree-sitter-ppl", + "version": "1.0.0", + "description": "Tree sitter grammar for PPL (Pipeline Processor Language)", + "main": "bindings/node", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/GuanceCloud/ppl.git" + }, + "keywords": [ + "ppl" + ], + "author": "Guance Cloud", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/GuanceCloud/ppl/issues" + }, + "homepage": "https://github.com/GuanceCloud/ppl#readme", + "dependencies": { + "nan": "^2.17.0" + }, + "tree-sitter": [ + { + "scope": "source.ppl", + "file-types": [ + "p", + "ppl" + ], + "injection-regex": "ppl" + } + ] +} diff --git a/ide/grammars/queries/highlights.scm b/ide/grammars/queries/highlights.scm new file mode 100644 index 0000000..8bec233 --- /dev/null +++ b/ide/grammars/queries/highlights.scm @@ -0,0 +1,65 @@ +; Keywords +[ + "if" + "elif" + "else" + ; "identifier" ; TODO: why is this here? + "for" + "in" + ; "while" ; TODO: why is this here? + "break" + "continue" + ; "return" +] @keyword + +; Function calls +((identifier) @function.method.builtin + (#eq? @function.method.builtin "use")) + +(call_expr name: (identifier) @function.method) + +; Identifiers +(identifier) @variable + +; Literals +(string_lit) @string +(number_lit) @number +(escape_sequence) @escape + +[ + (nil_lit) + (bool_lit) +] @constant.builtin + +(comment) @comment + +; Operators + +[ + "+" + "-" + "*" + "/" + "%" + "||" + "&&" + "==" + "!=" + ">" + ">=" + "<=" + "<" +] @operator + +[ + "," +] @punctuation.delimiter + +[ + "(" + ")" + "[" + "]" + "{" + "}" +] @punctuation.bracket diff --git a/ide/grammars/queries/locals.scm b/ide/grammars/queries/locals.scm new file mode 100644 index 0000000..e69de29 diff --git a/ide/grammars/queries/tags.scm b/ide/grammars/queries/tags.scm new file mode 100644 index 0000000..e69de29 diff --git a/ide/grammars/src/grammar.json b/ide/grammars/src/grammar.json new file mode 100644 index 0000000..7ab7096 --- /dev/null +++ b/ide/grammars/src/grammar.json @@ -0,0 +1,1486 @@ +{ + "name": "ppl", + "rules": { + "source_file": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_stmt" + } + }, + "_stmt": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "comment" + }, + { + "type": "SYMBOL", + "name": "if_stmt" + }, + { + "type": "SYMBOL", + "name": "for_in_stmt" + }, + { + "type": "SYMBOL", + "name": "continue_stmt" + }, + { + "type": "SYMBOL", + "name": "break_stmt" + }, + { + "type": "SYMBOL", + "name": "expr_stmt" + }, + { + "type": "SYMBOL", + "name": "assign_stmt" + } + ] + }, + "comment": { + "type": "TOKEN", + "content": { + "type": "PREC", + "value": -10, + "content": { + "type": "PATTERN", + "value": "#.*" + } + } + }, + "if_stmt": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "consequence", + "content": { + "type": "SYMBOL", + "name": "block_stmts" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "elif" + }, + { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "SYMBOL", + "name": "block_stmts" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "FIELD", + "name": "alternative", + "content": { + "type": "SYMBOL", + "name": "block_stmts" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "for_in_stmt": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "for" + }, + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "block_stmts" + } + ] + }, + "block_stmts": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_stmt" + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "continue_stmt": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "continue" + } + ] + }, + "break_stmt": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "break" + } + ] + }, + "assign_stmt": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "expr_stmt": { + "type": "SYMBOL", + "name": "_expr" + }, + "_expr": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "_literal" + }, + { + "type": "SYMBOL", + "name": "list_expr" + }, + { + "type": "SYMBOL", + "name": "map_expr" + }, + { + "type": "SYMBOL", + "name": "paren_expr" + }, + { + "type": "SYMBOL", + "name": "call_expr" + }, + { + "type": "SYMBOL", + "name": "binary_expr" + }, + { + "type": "SYMBOL", + "name": "index_expr" + } + ] + }, + "identifier": { + "type": "PATTERN", + "value": "[a-zA-Z_]\\w*" + }, + "paren_expr": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "call_expr": { + "type": "PREC", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "SYMBOL", + "name": "argument_list" + } + ] + } + }, + "argument_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "binary_expr": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "+" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "-" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "*" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "/" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "%" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "||" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "&&" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "==" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "!=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": ">" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": ">=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "<=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "<" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } + } + ] + }, + "index_expr": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "cond_expr": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ">=" + }, + { + "type": "STRING", + "value": ">" + }, + { + "type": "STRING", + "value": "||" + }, + { + "type": "STRING", + "value": "&&" + }, + { + "type": "STRING", + "value": "<" + }, + { + "type": "STRING", + "value": "<=" + }, + { + "type": "STRING", + "value": "!=" + }, + { + "type": "STRING", + "value": "==" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "list_expr": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "list_elem" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "list_elem" + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "list_elem": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_literal" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + }, + "map_expr": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "map_elem" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "map_elem" + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "map_elem": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "_literal": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "nil_lit" + }, + { + "type": "SYMBOL", + "name": "number_lit" + }, + { + "type": "SYMBOL", + "name": "string_lit" + }, + { + "type": "SYMBOL", + "name": "bool_lit" + } + ] + }, + "nil_lit": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "nil" + }, + { + "type": "STRING", + "value": "null" + } + ] + }, + "number_lit": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[-\\+]" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "0x" + }, + { + "type": "STRING", + "value": "0b" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "0b" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + } + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "0x" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + } + ] + } + } + ] + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + } + } + ] + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "[eEpP]" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[-\\+]" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + } + ] + } + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "u" + }, + { + "type": "STRING", + "value": "l" + }, + { + "type": "STRING", + "value": "U" + }, + { + "type": "STRING", + "value": "L" + }, + { + "type": "STRING", + "value": "f" + }, + { + "type": "STRING", + "value": "F" + } + ] + } + } + ] + } + }, + "string_lit": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\"" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "PATTERN", + "value": "[^\\\\\"\\n]+" + } + } + }, + { + "type": "SYMBOL", + "name": "escape_sequence" + } + ] + } + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "PATTERN", + "value": "[^\\\\'\\n]+" + } + } + }, + { + "type": "SYMBOL", + "name": "escape_sequence" + } + ] + } + }, + { + "type": "STRING", + "value": "'" + } + ] + } + ] + }, + "bool_lit": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "true" + }, + { + "type": "STRING", + "value": "false" + } + ] + }, + "escape_sequence": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\\" + }, + { + "type": "PATTERN", + "value": "(\\\"|\\\\|\\/|b|f|n|r|t|u)" + } + ] + } + } + }, + "extras": [ + { + "type": "PATTERN", + "value": "\\s" + } + ], + "conflicts": [], + "precedences": [], + "externals": [], + "inline": [], + "supertypes": [] +} + diff --git a/ide/grammars/src/node-types.json b/ide/grammars/src/node-types.json new file mode 100644 index 0000000..e30f71b --- /dev/null +++ b/ide/grammars/src/node-types.json @@ -0,0 +1,947 @@ +[ + { + "type": "argument_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "assign_stmt", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "binary_expr", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + }, + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "&&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": "||", + "named": false + } + ] + }, + "right": { + "multiple": false, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + } + }, + { + "type": "block_stmts", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "assign_stmt", + "named": true + }, + { + "type": "break_stmt", + "named": true + }, + { + "type": "comment", + "named": true + }, + { + "type": "continue_stmt", + "named": true + }, + { + "type": "expr_stmt", + "named": true + }, + { + "type": "for_in_stmt", + "named": true + }, + { + "type": "if_stmt", + "named": true + } + ] + } + }, + { + "type": "bool_lit", + "named": true, + "fields": {} + }, + { + "type": "break_stmt", + "named": true, + "fields": {} + }, + { + "type": "call_expr", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "argument_list", + "named": true + } + ] + } + }, + { + "type": "continue_stmt", + "named": true, + "fields": {} + }, + { + "type": "expr_stmt", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "for_in_stmt", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block_stmts", + "named": true + }, + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "if_stmt", + "named": true, + "fields": { + "alternative": { + "multiple": true, + "required": false, + "types": [ + { + "type": "block_stmts", + "named": true + } + ] + }, + "condition": { + "multiple": false, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + }, + "consequence": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block_stmts", + "named": true + } + ] + } + } + }, + { + "type": "index_expr", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "list_elem", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "bool_lit", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "list_expr", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "list_elem", + "named": true + } + ] + } + }, + { + "type": "map_elem", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "map_expr", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "map_elem", + "named": true + } + ] + } + }, + { + "type": "nil_lit", + "named": true, + "fields": {} + }, + { + "type": "paren_expr", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] + } + }, + { + "type": "source_file", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "assign_stmt", + "named": true + }, + { + "type": "break_stmt", + "named": true + }, + { + "type": "comment", + "named": true + }, + { + "type": "continue_stmt", + "named": true + }, + { + "type": "expr_stmt", + "named": true + }, + { + "type": "for_in_stmt", + "named": true + }, + { + "type": "if_stmt", + "named": true + } + ] + } + }, + { + "type": "string_lit", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "escape_sequence", + "named": true + } + ] + } + }, + { + "type": "!=", + "named": false + }, + { + "type": "\"", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "&&", + "named": false + }, + { + "type": "'", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "break", + "named": false + }, + { + "type": "comment", + "named": true + }, + { + "type": "continue", + "named": false + }, + { + "type": "elif", + "named": false + }, + { + "type": "else", + "named": false + }, + { + "type": "escape_sequence", + "named": true + }, + { + "type": "false", + "named": false + }, + { + "type": "for", + "named": false + }, + { + "type": "identifier", + "named": true + }, + { + "type": "if", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "nil", + "named": false + }, + { + "type": "null", + "named": false + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "true", + "named": false + }, + { + "type": "{", + "named": false + }, + { + "type": "||", + "named": false + }, + { + "type": "}", + "named": false + } +] \ No newline at end of file diff --git a/ide/grammars/src/parser.c b/ide/grammars/src/parser.c new file mode 100644 index 0000000..e813797 --- /dev/null +++ b/ide/grammars/src/parser.c @@ -0,0 +1,5838 @@ +#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 141 +#define LARGE_STATE_COUNT 3 +#define SYMBOL_COUNT 72 +#define ALIAS_COUNT 0 +#define TOKEN_COUNT 42 +#define EXTERNAL_TOKEN_COUNT 0 +#define FIELD_COUNT 7 +#define MAX_ALIAS_SEQUENCE_LENGTH 6 +#define PRODUCTION_ID_COUNT 9 + +enum { + sym_comment = 1, + anon_sym_if = 2, + anon_sym_elif = 3, + anon_sym_else = 4, + anon_sym_for = 5, + anon_sym_in = 6, + anon_sym_LBRACE = 7, + anon_sym_RBRACE = 8, + anon_sym_continue = 9, + anon_sym_break = 10, + anon_sym_EQ = 11, + sym_identifier = 12, + anon_sym_LPAREN = 13, + anon_sym_RPAREN = 14, + anon_sym_COMMA = 15, + anon_sym_PLUS = 16, + anon_sym_DASH = 17, + anon_sym_STAR = 18, + anon_sym_SLASH = 19, + anon_sym_PERCENT = 20, + anon_sym_PIPE_PIPE = 21, + anon_sym_AMP_AMP = 22, + anon_sym_EQ_EQ = 23, + anon_sym_BANG_EQ = 24, + anon_sym_GT = 25, + anon_sym_GT_EQ = 26, + anon_sym_LT_EQ = 27, + anon_sym_LT = 28, + anon_sym_LBRACK = 29, + anon_sym_RBRACK = 30, + anon_sym_COLON = 31, + anon_sym_nil = 32, + anon_sym_null = 33, + sym_number_lit = 34, + anon_sym_DQUOTE = 35, + aux_sym_string_lit_token1 = 36, + anon_sym_SQUOTE = 37, + aux_sym_string_lit_token2 = 38, + anon_sym_true = 39, + anon_sym_false = 40, + sym_escape_sequence = 41, + sym_source_file = 42, + sym__stmt = 43, + sym_if_stmt = 44, + sym_for_in_stmt = 45, + sym_block_stmts = 46, + sym_continue_stmt = 47, + sym_break_stmt = 48, + sym_assign_stmt = 49, + sym_expr_stmt = 50, + sym__expr = 51, + sym_paren_expr = 52, + sym_call_expr = 53, + sym_argument_list = 54, + sym_binary_expr = 55, + sym_index_expr = 56, + sym_list_expr = 57, + sym_list_elem = 58, + sym_map_expr = 59, + sym_map_elem = 60, + sym__literal = 61, + sym_nil_lit = 62, + sym_string_lit = 63, + sym_bool_lit = 64, + aux_sym_source_file_repeat1 = 65, + aux_sym_if_stmt_repeat1 = 66, + aux_sym_argument_list_repeat1 = 67, + aux_sym_list_expr_repeat1 = 68, + aux_sym_map_expr_repeat1 = 69, + aux_sym_string_lit_repeat1 = 70, + aux_sym_string_lit_repeat2 = 71, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [sym_comment] = "comment", + [anon_sym_if] = "if", + [anon_sym_elif] = "elif", + [anon_sym_else] = "else", + [anon_sym_for] = "for", + [anon_sym_in] = "in", + [anon_sym_LBRACE] = "{", + [anon_sym_RBRACE] = "}", + [anon_sym_continue] = "continue", + [anon_sym_break] = "break", + [anon_sym_EQ] = "=", + [sym_identifier] = "identifier", + [anon_sym_LPAREN] = "(", + [anon_sym_RPAREN] = ")", + [anon_sym_COMMA] = ",", + [anon_sym_PLUS] = "+", + [anon_sym_DASH] = "-", + [anon_sym_STAR] = "*", + [anon_sym_SLASH] = "/", + [anon_sym_PERCENT] = "%", + [anon_sym_PIPE_PIPE] = "||", + [anon_sym_AMP_AMP] = "&&", + [anon_sym_EQ_EQ] = "==", + [anon_sym_BANG_EQ] = "!=", + [anon_sym_GT] = ">", + [anon_sym_GT_EQ] = ">=", + [anon_sym_LT_EQ] = "<=", + [anon_sym_LT] = "<", + [anon_sym_LBRACK] = "[", + [anon_sym_RBRACK] = "]", + [anon_sym_COLON] = ":", + [anon_sym_nil] = "nil", + [anon_sym_null] = "null", + [sym_number_lit] = "number_lit", + [anon_sym_DQUOTE] = "\"", + [aux_sym_string_lit_token1] = "string_lit_token1", + [anon_sym_SQUOTE] = "'", + [aux_sym_string_lit_token2] = "string_lit_token2", + [anon_sym_true] = "true", + [anon_sym_false] = "false", + [sym_escape_sequence] = "escape_sequence", + [sym_source_file] = "source_file", + [sym__stmt] = "_stmt", + [sym_if_stmt] = "if_stmt", + [sym_for_in_stmt] = "for_in_stmt", + [sym_block_stmts] = "block_stmts", + [sym_continue_stmt] = "continue_stmt", + [sym_break_stmt] = "break_stmt", + [sym_assign_stmt] = "assign_stmt", + [sym_expr_stmt] = "expr_stmt", + [sym__expr] = "_expr", + [sym_paren_expr] = "paren_expr", + [sym_call_expr] = "call_expr", + [sym_argument_list] = "argument_list", + [sym_binary_expr] = "binary_expr", + [sym_index_expr] = "index_expr", + [sym_list_expr] = "list_expr", + [sym_list_elem] = "list_elem", + [sym_map_expr] = "map_expr", + [sym_map_elem] = "map_elem", + [sym__literal] = "_literal", + [sym_nil_lit] = "nil_lit", + [sym_string_lit] = "string_lit", + [sym_bool_lit] = "bool_lit", + [aux_sym_source_file_repeat1] = "source_file_repeat1", + [aux_sym_if_stmt_repeat1] = "if_stmt_repeat1", + [aux_sym_argument_list_repeat1] = "argument_list_repeat1", + [aux_sym_list_expr_repeat1] = "list_expr_repeat1", + [aux_sym_map_expr_repeat1] = "map_expr_repeat1", + [aux_sym_string_lit_repeat1] = "string_lit_repeat1", + [aux_sym_string_lit_repeat2] = "string_lit_repeat2", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_comment] = sym_comment, + [anon_sym_if] = anon_sym_if, + [anon_sym_elif] = anon_sym_elif, + [anon_sym_else] = anon_sym_else, + [anon_sym_for] = anon_sym_for, + [anon_sym_in] = anon_sym_in, + [anon_sym_LBRACE] = anon_sym_LBRACE, + [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_continue] = anon_sym_continue, + [anon_sym_break] = anon_sym_break, + [anon_sym_EQ] = anon_sym_EQ, + [sym_identifier] = sym_identifier, + [anon_sym_LPAREN] = anon_sym_LPAREN, + [anon_sym_RPAREN] = anon_sym_RPAREN, + [anon_sym_COMMA] = anon_sym_COMMA, + [anon_sym_PLUS] = anon_sym_PLUS, + [anon_sym_DASH] = anon_sym_DASH, + [anon_sym_STAR] = anon_sym_STAR, + [anon_sym_SLASH] = anon_sym_SLASH, + [anon_sym_PERCENT] = anon_sym_PERCENT, + [anon_sym_PIPE_PIPE] = anon_sym_PIPE_PIPE, + [anon_sym_AMP_AMP] = anon_sym_AMP_AMP, + [anon_sym_EQ_EQ] = anon_sym_EQ_EQ, + [anon_sym_BANG_EQ] = anon_sym_BANG_EQ, + [anon_sym_GT] = anon_sym_GT, + [anon_sym_GT_EQ] = anon_sym_GT_EQ, + [anon_sym_LT_EQ] = anon_sym_LT_EQ, + [anon_sym_LT] = anon_sym_LT, + [anon_sym_LBRACK] = anon_sym_LBRACK, + [anon_sym_RBRACK] = anon_sym_RBRACK, + [anon_sym_COLON] = anon_sym_COLON, + [anon_sym_nil] = anon_sym_nil, + [anon_sym_null] = anon_sym_null, + [sym_number_lit] = sym_number_lit, + [anon_sym_DQUOTE] = anon_sym_DQUOTE, + [aux_sym_string_lit_token1] = aux_sym_string_lit_token1, + [anon_sym_SQUOTE] = anon_sym_SQUOTE, + [aux_sym_string_lit_token2] = aux_sym_string_lit_token2, + [anon_sym_true] = anon_sym_true, + [anon_sym_false] = anon_sym_false, + [sym_escape_sequence] = sym_escape_sequence, + [sym_source_file] = sym_source_file, + [sym__stmt] = sym__stmt, + [sym_if_stmt] = sym_if_stmt, + [sym_for_in_stmt] = sym_for_in_stmt, + [sym_block_stmts] = sym_block_stmts, + [sym_continue_stmt] = sym_continue_stmt, + [sym_break_stmt] = sym_break_stmt, + [sym_assign_stmt] = sym_assign_stmt, + [sym_expr_stmt] = sym_expr_stmt, + [sym__expr] = sym__expr, + [sym_paren_expr] = sym_paren_expr, + [sym_call_expr] = sym_call_expr, + [sym_argument_list] = sym_argument_list, + [sym_binary_expr] = sym_binary_expr, + [sym_index_expr] = sym_index_expr, + [sym_list_expr] = sym_list_expr, + [sym_list_elem] = sym_list_elem, + [sym_map_expr] = sym_map_expr, + [sym_map_elem] = sym_map_elem, + [sym__literal] = sym__literal, + [sym_nil_lit] = sym_nil_lit, + [sym_string_lit] = sym_string_lit, + [sym_bool_lit] = sym_bool_lit, + [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, + [aux_sym_if_stmt_repeat1] = aux_sym_if_stmt_repeat1, + [aux_sym_argument_list_repeat1] = aux_sym_argument_list_repeat1, + [aux_sym_list_expr_repeat1] = aux_sym_list_expr_repeat1, + [aux_sym_map_expr_repeat1] = aux_sym_map_expr_repeat1, + [aux_sym_string_lit_repeat1] = aux_sym_string_lit_repeat1, + [aux_sym_string_lit_repeat2] = aux_sym_string_lit_repeat2, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [sym_comment] = { + .visible = true, + .named = true, + }, + [anon_sym_if] = { + .visible = true, + .named = false, + }, + [anon_sym_elif] = { + .visible = true, + .named = false, + }, + [anon_sym_else] = { + .visible = true, + .named = false, + }, + [anon_sym_for] = { + .visible = true, + .named = false, + }, + [anon_sym_in] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_continue] = { + .visible = true, + .named = false, + }, + [anon_sym_break] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ] = { + .visible = true, + .named = false, + }, + [sym_identifier] = { + .visible = true, + .named = true, + }, + [anon_sym_LPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_RPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_COMMA] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH] = { + .visible = true, + .named = false, + }, + [anon_sym_PERCENT] = { + .visible = true, + .named = false, + }, + [anon_sym_PIPE_PIPE] = { + .visible = true, + .named = false, + }, + [anon_sym_AMP_AMP] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_BANG_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_GT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_nil] = { + .visible = true, + .named = false, + }, + [anon_sym_null] = { + .visible = true, + .named = false, + }, + [sym_number_lit] = { + .visible = true, + .named = true, + }, + [anon_sym_DQUOTE] = { + .visible = true, + .named = false, + }, + [aux_sym_string_lit_token1] = { + .visible = false, + .named = false, + }, + [anon_sym_SQUOTE] = { + .visible = true, + .named = false, + }, + [aux_sym_string_lit_token2] = { + .visible = false, + .named = false, + }, + [anon_sym_true] = { + .visible = true, + .named = false, + }, + [anon_sym_false] = { + .visible = true, + .named = false, + }, + [sym_escape_sequence] = { + .visible = true, + .named = true, + }, + [sym_source_file] = { + .visible = true, + .named = true, + }, + [sym__stmt] = { + .visible = false, + .named = true, + }, + [sym_if_stmt] = { + .visible = true, + .named = true, + }, + [sym_for_in_stmt] = { + .visible = true, + .named = true, + }, + [sym_block_stmts] = { + .visible = true, + .named = true, + }, + [sym_continue_stmt] = { + .visible = true, + .named = true, + }, + [sym_break_stmt] = { + .visible = true, + .named = true, + }, + [sym_assign_stmt] = { + .visible = true, + .named = true, + }, + [sym_expr_stmt] = { + .visible = true, + .named = true, + }, + [sym__expr] = { + .visible = false, + .named = true, + }, + [sym_paren_expr] = { + .visible = true, + .named = true, + }, + [sym_call_expr] = { + .visible = true, + .named = true, + }, + [sym_argument_list] = { + .visible = true, + .named = true, + }, + [sym_binary_expr] = { + .visible = true, + .named = true, + }, + [sym_index_expr] = { + .visible = true, + .named = true, + }, + [sym_list_expr] = { + .visible = true, + .named = true, + }, + [sym_list_elem] = { + .visible = true, + .named = true, + }, + [sym_map_expr] = { + .visible = true, + .named = true, + }, + [sym_map_elem] = { + .visible = true, + .named = true, + }, + [sym__literal] = { + .visible = false, + .named = true, + }, + [sym_nil_lit] = { + .visible = true, + .named = true, + }, + [sym_string_lit] = { + .visible = true, + .named = true, + }, + [sym_bool_lit] = { + .visible = true, + .named = true, + }, + [aux_sym_source_file_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_if_stmt_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_argument_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_list_expr_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_map_expr_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_string_lit_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_string_lit_repeat2] = { + .visible = false, + .named = false, + }, +}; + +enum { + field_alternative = 1, + field_condition = 2, + field_consequence = 3, + field_left = 4, + field_name = 5, + field_operator = 6, + field_right = 7, +}; + +static const char * const ts_field_names[] = { + [0] = NULL, + [field_alternative] = "alternative", + [field_condition] = "condition", + [field_consequence] = "consequence", + [field_left] = "left", + [field_name] = "name", + [field_operator] = "operator", + [field_right] = "right", +}; + +static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { + [1] = {.index = 0, .length = 1}, + [2] = {.index = 1, .length = 2}, + [3] = {.index = 3, .length = 3}, + [4] = {.index = 6, .length = 3}, + [5] = {.index = 9, .length = 1}, + [6] = {.index = 10, .length = 3}, + [7] = {.index = 13, .length = 2}, + [8] = {.index = 15, .length = 4}, +}; + +static const TSFieldMapEntry ts_field_map_entries[] = { + [0] = + {field_name, 0}, + [1] = + {field_condition, 1}, + {field_consequence, 2}, + [3] = + {field_left, 0}, + {field_operator, 1}, + {field_right, 2}, + [6] = + {field_alternative, 3, .inherited = true}, + {field_condition, 1}, + {field_consequence, 2}, + [9] = + {field_alternative, 1}, + [10] = + {field_alternative, 4}, + {field_condition, 1}, + {field_consequence, 2}, + [13] = + {field_alternative, 0, .inherited = true}, + {field_alternative, 1, .inherited = true}, + [15] = + {field_alternative, 3, .inherited = true}, + {field_alternative, 5}, + {field_condition, 1}, + {field_consequence, 2}, +}; + +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] = 3, + [7] = 7, + [8] = 8, + [9] = 9, + [10] = 10, + [11] = 11, + [12] = 12, + [13] = 13, + [14] = 14, + [15] = 15, + [16] = 16, + [17] = 17, + [18] = 18, + [19] = 19, + [20] = 20, + [21] = 21, + [22] = 22, + [23] = 23, + [24] = 24, + [25] = 25, + [26] = 26, + [27] = 27, + [28] = 28, + [29] = 29, + [30] = 30, + [31] = 31, + [32] = 32, + [33] = 33, + [34] = 34, + [35] = 34, + [36] = 36, + [37] = 37, + [38] = 36, + [39] = 39, + [40] = 40, + [41] = 13, + [42] = 42, + [43] = 43, + [44] = 44, + [45] = 42, + [46] = 43, + [47] = 47, + [48] = 47, + [49] = 40, + [50] = 39, + [51] = 51, + [52] = 52, + [53] = 53, + [54] = 52, + [55] = 55, + [56] = 56, + [57] = 51, + [58] = 56, + [59] = 59, + [60] = 60, + [61] = 61, + [62] = 62, + [63] = 63, + [64] = 64, + [65] = 65, + [66] = 31, + [67] = 19, + [68] = 32, + [69] = 10, + [70] = 29, + [71] = 26, + [72] = 20, + [73] = 14, + [74] = 30, + [75] = 33, + [76] = 15, + [77] = 28, + [78] = 25, + [79] = 12, + [80] = 17, + [81] = 18, + [82] = 11, + [83] = 24, + [84] = 8, + [85] = 21, + [86] = 22, + [87] = 23, + [88] = 88, + [89] = 89, + [90] = 65, + [91] = 63, + [92] = 92, + [93] = 93, + [94] = 94, + [95] = 95, + [96] = 95, + [97] = 97, + [98] = 98, + [99] = 99, + [100] = 100, + [101] = 101, + [102] = 102, + [103] = 103, + [104] = 103, + [105] = 102, + [106] = 101, + [107] = 107, + [108] = 108, + [109] = 109, + [110] = 110, + [111] = 111, + [112] = 112, + [113] = 112, + [114] = 111, + [115] = 115, + [116] = 115, + [117] = 110, + [118] = 118, + [119] = 119, + [120] = 120, + [121] = 121, + [122] = 122, + [123] = 120, + [124] = 122, + [125] = 125, + [126] = 121, + [127] = 127, + [128] = 127, + [129] = 119, + [130] = 130, + [131] = 131, + [132] = 132, + [133] = 133, + [134] = 134, + [135] = 135, + [136] = 136, + [137] = 137, + [138] = 138, + [139] = 139, + [140] = 140, +}; + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(26); + if (lookahead == '!') ADVANCE(11); + if (lookahead == '"') ADVANCE(108); + if (lookahead == '#') ADVANCE(27); + if (lookahead == '%') ADVANCE(79); + if (lookahead == '&') ADVANCE(6); + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '(') ADVANCE(70); + if (lookahead == ')') ADVANCE(71); + if (lookahead == '*') ADVANCE(77); + if (lookahead == '+') ADVANCE(74); + if (lookahead == ',') ADVANCE(72); + if (lookahead == '-') ADVANCE(76); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '/') ADVANCE(78); + if (lookahead == '0') ADVANCE(97); + if (lookahead == ':') ADVANCE(90); + if (lookahead == '<') ADVANCE(87); + if (lookahead == '=') ADVANCE(38); + if (lookahead == '>') ADVANCE(84); + if (lookahead == '[') ADVANCE(88); + if (lookahead == '\\') ADVANCE(16); + if (lookahead == ']') ADVANCE(89); + if (lookahead == 'b') ADVANCE(62); + if (lookahead == 'c') ADVANCE(61); + if (lookahead == 'e') ADVANCE(54); + if (lookahead == 'f') ADVANCE(40); + if (lookahead == 'i') ADVANCE(47); + if (lookahead == 'n') ADVANCE(52); + if (lookahead == 't') ADVANCE(63); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '|') ADVANCE(14); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(23) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 1: + if (lookahead == '\n') SKIP(5) + if (lookahead == '"') ADVANCE(108); + if (lookahead == '\\') ADVANCE(16); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(109); + if (lookahead != 0) ADVANCE(110); + END_STATE(); + case 2: + if (lookahead == '\n') SKIP(7) + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '\\') ADVANCE(16); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(112); + if (lookahead != 0) ADVANCE(113); + END_STATE(); + case 3: + if (lookahead == '!') ADVANCE(11); + if (lookahead == '%') ADVANCE(79); + if (lookahead == '&') ADVANCE(6); + if (lookahead == '(') ADVANCE(70); + if (lookahead == ')') ADVANCE(71); + if (lookahead == '*') ADVANCE(77); + if (lookahead == '+') ADVANCE(73); + if (lookahead == ',') ADVANCE(72); + if (lookahead == '-') ADVANCE(75); + if (lookahead == '/') ADVANCE(78); + if (lookahead == ':') ADVANCE(90); + if (lookahead == '<') ADVANCE(87); + if (lookahead == '=') ADVANCE(12); + if (lookahead == '>') ADVANCE(84); + if (lookahead == '[') ADVANCE(88); + if (lookahead == ']') ADVANCE(89); + if (lookahead == 'i') ADVANCE(13); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '|') ADVANCE(14); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(3) + END_STATE(); + case 4: + if (lookahead == '"') ADVANCE(108); + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '(') ADVANCE(70); + if (lookahead == ')') ADVANCE(71); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(97); + if (lookahead == '[') ADVANCE(88); + if (lookahead == ']') ADVANCE(89); + if (lookahead == 'f') ADVANCE(41); + if (lookahead == 'n') ADVANCE(52); + if (lookahead == 't') ADVANCE(63); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '+' || + lookahead == '-') ADVANCE(8); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(4) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 5: + if (lookahead == '"') ADVANCE(108); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(5) + END_STATE(); + case 6: + if (lookahead == '&') ADVANCE(81); + END_STATE(); + case 7: + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(7) + END_STATE(); + case 8: + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(97); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 9: + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(95); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(96); + if (('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + END_STATE(); + case 10: + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(98); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 11: + if (lookahead == '=') ADVANCE(83); + END_STATE(); + case 12: + if (lookahead == '=') ADVANCE(82); + END_STATE(); + case 13: + if (lookahead == 'n') ADVANCE(32); + END_STATE(); + case 14: + if (lookahead == '|') ADVANCE(80); + END_STATE(); + case 15: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(15) + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 16: + if (lookahead == '"' || + lookahead == '/' || + lookahead == '\\' || + lookahead == 'b' || + lookahead == 'f' || + lookahead == 'n' || + lookahead == 'r' || + lookahead == 't' || + lookahead == 'u') ADVANCE(116); + END_STATE(); + case 17: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 18: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); + END_STATE(); + case 19: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + if (('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + END_STATE(); + case 20: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(101); + END_STATE(); + case 21: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + END_STATE(); + case 22: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(94); + END_STATE(); + case 23: + if (eof) ADVANCE(26); + if (lookahead == '!') ADVANCE(11); + if (lookahead == '"') ADVANCE(108); + if (lookahead == '#') ADVANCE(27); + if (lookahead == '%') ADVANCE(79); + if (lookahead == '&') ADVANCE(6); + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '(') ADVANCE(70); + if (lookahead == ')') ADVANCE(71); + if (lookahead == '*') ADVANCE(77); + if (lookahead == '+') ADVANCE(74); + if (lookahead == ',') ADVANCE(72); + if (lookahead == '-') ADVANCE(76); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '/') ADVANCE(78); + if (lookahead == '0') ADVANCE(97); + if (lookahead == ':') ADVANCE(90); + if (lookahead == '<') ADVANCE(87); + if (lookahead == '=') ADVANCE(38); + if (lookahead == '>') ADVANCE(84); + if (lookahead == '[') ADVANCE(88); + if (lookahead == ']') ADVANCE(89); + if (lookahead == 'b') ADVANCE(62); + if (lookahead == 'c') ADVANCE(61); + if (lookahead == 'e') ADVANCE(54); + if (lookahead == 'f') ADVANCE(40); + if (lookahead == 'i') ADVANCE(47); + if (lookahead == 'n') ADVANCE(52); + if (lookahead == 't') ADVANCE(63); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '|') ADVANCE(14); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(23) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 24: + if (eof) ADVANCE(26); + if (lookahead == '!') ADVANCE(11); + if (lookahead == '"') ADVANCE(108); + if (lookahead == '#') ADVANCE(27); + if (lookahead == '%') ADVANCE(79); + if (lookahead == '&') ADVANCE(6); + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '(') ADVANCE(70); + if (lookahead == '*') ADVANCE(77); + if (lookahead == '+') ADVANCE(74); + if (lookahead == ',') ADVANCE(72); + if (lookahead == '-') ADVANCE(76); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '/') ADVANCE(78); + if (lookahead == '0') ADVANCE(97); + if (lookahead == '<') ADVANCE(87); + if (lookahead == '=') ADVANCE(38); + if (lookahead == '>') ADVANCE(84); + if (lookahead == '[') ADVANCE(88); + if (lookahead == ']') ADVANCE(89); + if (lookahead == 'b') ADVANCE(62); + if (lookahead == 'c') ADVANCE(61); + if (lookahead == 'f') ADVANCE(40); + if (lookahead == 'i') ADVANCE(48); + if (lookahead == 'n') ADVANCE(52); + if (lookahead == 't') ADVANCE(63); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '|') ADVANCE(14); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(24) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 25: + if (eof) ADVANCE(26); + if (lookahead == '"') ADVANCE(108); + if (lookahead == '#') ADVANCE(27); + if (lookahead == '\'') ADVANCE(111); + if (lookahead == '(') ADVANCE(70); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(97); + if (lookahead == '[') ADVANCE(88); + if (lookahead == 'b') ADVANCE(62); + if (lookahead == 'c') ADVANCE(61); + if (lookahead == 'e') ADVANCE(54); + if (lookahead == 'f') ADVANCE(40); + if (lookahead == 'i') ADVANCE(48); + if (lookahead == 'n') ADVANCE(52); + if (lookahead == 't') ADVANCE(63); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '+' || + lookahead == '-') ADVANCE(8); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(25) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 26: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 27: + ACCEPT_TOKEN(sym_comment); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(27); + END_STATE(); + case 28: + ACCEPT_TOKEN(anon_sym_if); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 29: + ACCEPT_TOKEN(anon_sym_elif); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 30: + ACCEPT_TOKEN(anon_sym_else); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 31: + ACCEPT_TOKEN(anon_sym_for); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 32: + ACCEPT_TOKEN(anon_sym_in); + END_STATE(); + case 33: + ACCEPT_TOKEN(anon_sym_in); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 34: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 35: + ACCEPT_TOKEN(anon_sym_RBRACE); + END_STATE(); + case 36: + ACCEPT_TOKEN(anon_sym_continue); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 37: + ACCEPT_TOKEN(anon_sym_break); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 38: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(82); + END_STATE(); + case 39: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(53); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 40: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(55); + if (lookahead == 'o') ADVANCE(64); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 41: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(55); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 42: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(39); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 43: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(30); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 44: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(114); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 45: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(115); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 46: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(36); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 47: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'f') ADVANCE(28); + if (lookahead == 'n') ADVANCE(33); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 48: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'f') ADVANCE(28); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 49: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'f') ADVANCE(29); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 50: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'i') ADVANCE(49); + if (lookahead == 's') ADVANCE(43); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 51: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'i') ADVANCE(60); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 52: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'i') ADVANCE(56); + if (lookahead == 'u') ADVANCE(58); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 53: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'k') ADVANCE(37); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 54: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(50); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 55: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(65); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 56: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(91); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 57: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(92); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 58: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(57); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 59: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'n') ADVANCE(66); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 60: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'n') ADVANCE(68); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 61: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'o') ADVANCE(59); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 62: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'r') ADVANCE(42); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 63: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'r') ADVANCE(67); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 64: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'r') ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 65: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 's') ADVANCE(45); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 66: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 't') ADVANCE(51); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 67: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'u') ADVANCE(44); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 68: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'u') ADVANCE(46); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 69: + ACCEPT_TOKEN(sym_identifier); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 71: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + case 72: + ACCEPT_TOKEN(anon_sym_COMMA); + END_STATE(); + case 73: + ACCEPT_TOKEN(anon_sym_PLUS); + END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(97); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 75: + ACCEPT_TOKEN(anon_sym_DASH); + END_STATE(); + case 76: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '.') ADVANCE(18); + if (lookahead == '0') ADVANCE(97); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 77: + ACCEPT_TOKEN(anon_sym_STAR); + END_STATE(); + case 78: + ACCEPT_TOKEN(anon_sym_SLASH); + END_STATE(); + case 79: + ACCEPT_TOKEN(anon_sym_PERCENT); + END_STATE(); + case 80: + ACCEPT_TOKEN(anon_sym_PIPE_PIPE); + END_STATE(); + case 81: + ACCEPT_TOKEN(anon_sym_AMP_AMP); + END_STATE(); + case 82: + ACCEPT_TOKEN(anon_sym_EQ_EQ); + END_STATE(); + case 83: + ACCEPT_TOKEN(anon_sym_BANG_EQ); + END_STATE(); + case 84: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(85); + END_STATE(); + case 85: + ACCEPT_TOKEN(anon_sym_GT_EQ); + END_STATE(); + case 86: + ACCEPT_TOKEN(anon_sym_LT_EQ); + END_STATE(); + case 87: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '=') ADVANCE(86); + END_STATE(); + case 88: + ACCEPT_TOKEN(anon_sym_LBRACK); + END_STATE(); + case 89: + ACCEPT_TOKEN(anon_sym_RBRACK); + END_STATE(); + case 90: + ACCEPT_TOKEN(anon_sym_COLON); + END_STATE(); + case 91: + ACCEPT_TOKEN(anon_sym_nil); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 92: + ACCEPT_TOKEN(anon_sym_null); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 93: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(18); + if (lookahead == 'F' || + lookahead == 'L' || + lookahead == 'U' || + lookahead == 'f' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'P' || + lookahead == 'e' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); + END_STATE(); + case 94: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(22); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(94); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'E') || + ('a' <= lookahead && lookahead <= 'e')) ADVANCE(94); + END_STATE(); + case 95: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(19); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(104); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'b') ADVANCE(103); + if (lookahead == 'x') ADVANCE(21); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(102); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + END_STATE(); + case 96: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(19); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(104); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(102); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + END_STATE(); + case 97: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(17); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'L' || + lookahead == 'U' || + lookahead == 'f' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'b') ADVANCE(10); + if (lookahead == 'x') ADVANCE(9); + if (lookahead == 'E' || + lookahead == 'P' || + lookahead == 'e' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 98: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(17); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'L' || + lookahead == 'U' || + lookahead == 'f' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'b') ADVANCE(17); + if (lookahead == 'x') ADVANCE(21); + if (lookahead == 'E' || + lookahead == 'P' || + lookahead == 'e' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 99: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(17); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'L' || + lookahead == 'U' || + lookahead == 'f' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'P' || + lookahead == 'e' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + END_STATE(); + case 100: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(20); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(101); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == '+' || + lookahead == '-') ADVANCE(22); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(100); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(101); + END_STATE(); + case 101: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(20); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(101); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(100); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(101); + END_STATE(); + case 102: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(21); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(104); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == '+' || + lookahead == '-') ADVANCE(22); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(102); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + END_STATE(); + case 103: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(21); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(104); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(102); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + END_STATE(); + case 104: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == '\'') ADVANCE(21); + if (lookahead == '.') ADVANCE(105); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(104); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(102); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + END_STATE(); + case 105: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(101); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(100); + if (lookahead == 'P' || + lookahead == 'p') ADVANCE(106); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'D') || + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(101); + END_STATE(); + case 106: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == 'F' || + lookahead == 'f') ADVANCE(94); + if (lookahead == 'L' || + lookahead == 'U' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + if (lookahead == '+' || + lookahead == '-') ADVANCE(22); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'E') || + ('a' <= lookahead && lookahead <= 'e')) ADVANCE(94); + END_STATE(); + case 107: + ACCEPT_TOKEN(sym_number_lit); + if (lookahead == 'F' || + lookahead == 'L' || + lookahead == 'U' || + lookahead == 'f' || + lookahead == 'l' || + lookahead == 'u') ADVANCE(107); + END_STATE(); + case 108: + ACCEPT_TOKEN(anon_sym_DQUOTE); + END_STATE(); + case 109: + ACCEPT_TOKEN(aux_sym_string_lit_token1); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(109); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '"' && + lookahead != '\\') ADVANCE(110); + END_STATE(); + case 110: + ACCEPT_TOKEN(aux_sym_string_lit_token1); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '"' && + lookahead != '\\') ADVANCE(110); + END_STATE(); + case 111: + ACCEPT_TOKEN(anon_sym_SQUOTE); + END_STATE(); + case 112: + ACCEPT_TOKEN(aux_sym_string_lit_token2); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(112); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '\'' && + lookahead != '\\') ADVANCE(113); + END_STATE(); + case 113: + ACCEPT_TOKEN(aux_sym_string_lit_token2); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '\'' && + lookahead != '\\') ADVANCE(113); + END_STATE(); + case 114: + ACCEPT_TOKEN(anon_sym_true); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 115: + ACCEPT_TOKEN(anon_sym_false); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + END_STATE(); + case 116: + ACCEPT_TOKEN(sym_escape_sequence); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 24}, + [2] = {.lex_state = 24}, + [3] = {.lex_state = 24}, + [4] = {.lex_state = 24}, + [5] = {.lex_state = 24}, + [6] = {.lex_state = 24}, + [7] = {.lex_state = 24}, + [8] = {.lex_state = 24}, + [9] = {.lex_state = 24}, + [10] = {.lex_state = 24}, + [11] = {.lex_state = 24}, + [12] = {.lex_state = 24}, + [13] = {.lex_state = 24}, + [14] = {.lex_state = 24}, + [15] = {.lex_state = 24}, + [16] = {.lex_state = 24}, + [17] = {.lex_state = 24}, + [18] = {.lex_state = 24}, + [19] = {.lex_state = 24}, + [20] = {.lex_state = 24}, + [21] = {.lex_state = 24}, + [22] = {.lex_state = 24}, + [23] = {.lex_state = 24}, + [24] = {.lex_state = 24}, + [25] = {.lex_state = 24}, + [26] = {.lex_state = 24}, + [27] = {.lex_state = 24}, + [28] = {.lex_state = 24}, + [29] = {.lex_state = 24}, + [30] = {.lex_state = 24}, + [31] = {.lex_state = 24}, + [32] = {.lex_state = 24}, + [33] = {.lex_state = 24}, + [34] = {.lex_state = 4}, + [35] = {.lex_state = 4}, + [36] = {.lex_state = 4}, + [37] = {.lex_state = 4}, + [38] = {.lex_state = 4}, + [39] = {.lex_state = 4}, + [40] = {.lex_state = 4}, + [41] = {.lex_state = 3}, + [42] = {.lex_state = 4}, + [43] = {.lex_state = 4}, + [44] = {.lex_state = 4}, + [45] = {.lex_state = 4}, + [46] = {.lex_state = 4}, + [47] = {.lex_state = 4}, + [48] = {.lex_state = 4}, + [49] = {.lex_state = 4}, + [50] = {.lex_state = 4}, + [51] = {.lex_state = 4}, + [52] = {.lex_state = 4}, + [53] = {.lex_state = 4}, + [54] = {.lex_state = 4}, + [55] = {.lex_state = 4}, + [56] = {.lex_state = 4}, + [57] = {.lex_state = 4}, + [58] = {.lex_state = 4}, + [59] = {.lex_state = 4}, + [60] = {.lex_state = 25}, + [61] = {.lex_state = 25}, + [62] = {.lex_state = 25}, + [63] = {.lex_state = 25}, + [64] = {.lex_state = 25}, + [65] = {.lex_state = 25}, + [66] = {.lex_state = 3}, + [67] = {.lex_state = 3}, + [68] = {.lex_state = 3}, + [69] = {.lex_state = 3}, + [70] = {.lex_state = 3}, + [71] = {.lex_state = 3}, + [72] = {.lex_state = 3}, + [73] = {.lex_state = 3}, + [74] = {.lex_state = 3}, + [75] = {.lex_state = 3}, + [76] = {.lex_state = 3}, + [77] = {.lex_state = 3}, + [78] = {.lex_state = 3}, + [79] = {.lex_state = 3}, + [80] = {.lex_state = 3}, + [81] = {.lex_state = 3}, + [82] = {.lex_state = 3}, + [83] = {.lex_state = 3}, + [84] = {.lex_state = 3}, + [85] = {.lex_state = 3}, + [86] = {.lex_state = 3}, + [87] = {.lex_state = 3}, + [88] = {.lex_state = 24}, + [89] = {.lex_state = 24}, + [90] = {.lex_state = 24}, + [91] = {.lex_state = 24}, + [92] = {.lex_state = 24}, + [93] = {.lex_state = 24}, + [94] = {.lex_state = 24}, + [95] = {.lex_state = 3}, + [96] = {.lex_state = 3}, + [97] = {.lex_state = 3}, + [98] = {.lex_state = 3}, + [99] = {.lex_state = 3}, + [100] = {.lex_state = 3}, + [101] = {.lex_state = 4}, + [102] = {.lex_state = 3}, + [103] = {.lex_state = 3}, + [104] = {.lex_state = 3}, + [105] = {.lex_state = 3}, + [106] = {.lex_state = 4}, + [107] = {.lex_state = 4}, + [108] = {.lex_state = 1}, + [109] = {.lex_state = 2}, + [110] = {.lex_state = 1}, + [111] = {.lex_state = 2}, + [112] = {.lex_state = 1}, + [113] = {.lex_state = 1}, + [114] = {.lex_state = 2}, + [115] = {.lex_state = 2}, + [116] = {.lex_state = 2}, + [117] = {.lex_state = 1}, + [118] = {.lex_state = 0}, + [119] = {.lex_state = 0}, + [120] = {.lex_state = 0}, + [121] = {.lex_state = 0}, + [122] = {.lex_state = 0}, + [123] = {.lex_state = 0}, + [124] = {.lex_state = 0}, + [125] = {.lex_state = 0}, + [126] = {.lex_state = 0}, + [127] = {.lex_state = 0}, + [128] = {.lex_state = 0}, + [129] = {.lex_state = 0}, + [130] = {.lex_state = 0}, + [131] = {.lex_state = 0}, + [132] = {.lex_state = 0}, + [133] = {.lex_state = 0}, + [134] = {.lex_state = 0}, + [135] = {.lex_state = 0}, + [136] = {.lex_state = 0}, + [137] = {.lex_state = 0}, + [138] = {.lex_state = 3}, + [139] = {.lex_state = 15}, + [140] = {.lex_state = 0}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [ts_builtin_sym_end] = ACTIONS(1), + [sym_comment] = ACTIONS(1), + [anon_sym_if] = ACTIONS(1), + [anon_sym_elif] = ACTIONS(1), + [anon_sym_else] = ACTIONS(1), + [anon_sym_for] = ACTIONS(1), + [anon_sym_in] = ACTIONS(1), + [anon_sym_LBRACE] = ACTIONS(1), + [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_continue] = ACTIONS(1), + [anon_sym_break] = ACTIONS(1), + [anon_sym_EQ] = ACTIONS(1), + [sym_identifier] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [anon_sym_STAR] = ACTIONS(1), + [anon_sym_SLASH] = ACTIONS(1), + [anon_sym_PERCENT] = ACTIONS(1), + [anon_sym_PIPE_PIPE] = ACTIONS(1), + [anon_sym_AMP_AMP] = ACTIONS(1), + [anon_sym_EQ_EQ] = ACTIONS(1), + [anon_sym_BANG_EQ] = ACTIONS(1), + [anon_sym_GT] = ACTIONS(1), + [anon_sym_GT_EQ] = ACTIONS(1), + [anon_sym_LT_EQ] = ACTIONS(1), + [anon_sym_LT] = ACTIONS(1), + [anon_sym_LBRACK] = ACTIONS(1), + [anon_sym_RBRACK] = ACTIONS(1), + [anon_sym_COLON] = ACTIONS(1), + [anon_sym_nil] = ACTIONS(1), + [anon_sym_null] = ACTIONS(1), + [sym_number_lit] = ACTIONS(1), + [anon_sym_DQUOTE] = ACTIONS(1), + [anon_sym_SQUOTE] = ACTIONS(1), + [anon_sym_true] = ACTIONS(1), + [anon_sym_false] = ACTIONS(1), + [sym_escape_sequence] = ACTIONS(1), + }, + [1] = { + [sym_source_file] = STATE(140), + [sym__stmt] = STATE(7), + [sym_if_stmt] = STATE(7), + [sym_for_in_stmt] = STATE(7), + [sym_continue_stmt] = STATE(7), + [sym_break_stmt] = STATE(7), + [sym_assign_stmt] = STATE(7), + [sym_expr_stmt] = STATE(7), + [sym__expr] = STATE(16), + [sym_paren_expr] = STATE(16), + [sym_call_expr] = STATE(16), + [sym_binary_expr] = STATE(16), + [sym_index_expr] = STATE(16), + [sym_list_expr] = STATE(16), + [sym_map_expr] = STATE(16), + [sym__literal] = STATE(16), + [sym_nil_lit] = STATE(16), + [sym_string_lit] = STATE(16), + [sym_bool_lit] = STATE(16), + [aux_sym_source_file_repeat1] = STATE(7), + [ts_builtin_sym_end] = ACTIONS(3), + [sym_comment] = ACTIONS(5), + [anon_sym_if] = ACTIONS(7), + [anon_sym_for] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_continue] = ACTIONS(13), + [anon_sym_break] = ACTIONS(15), + [sym_identifier] = ACTIONS(17), + [anon_sym_LPAREN] = ACTIONS(19), + [anon_sym_LBRACK] = ACTIONS(21), + [anon_sym_nil] = ACTIONS(23), + [anon_sym_null] = ACTIONS(23), + [sym_number_lit] = ACTIONS(25), + [anon_sym_DQUOTE] = ACTIONS(27), + [anon_sym_SQUOTE] = ACTIONS(29), + [anon_sym_true] = ACTIONS(31), + [anon_sym_false] = ACTIONS(31), + }, + [2] = { + [sym__stmt] = STATE(2), + [sym_if_stmt] = STATE(2), + [sym_for_in_stmt] = STATE(2), + [sym_continue_stmt] = STATE(2), + [sym_break_stmt] = STATE(2), + [sym_assign_stmt] = STATE(2), + [sym_expr_stmt] = STATE(2), + [sym__expr] = STATE(16), + [sym_paren_expr] = STATE(16), + [sym_call_expr] = STATE(16), + [sym_binary_expr] = STATE(16), + [sym_index_expr] = STATE(16), + [sym_list_expr] = STATE(16), + [sym_map_expr] = STATE(16), + [sym__literal] = STATE(16), + [sym_nil_lit] = STATE(16), + [sym_string_lit] = STATE(16), + [sym_bool_lit] = STATE(16), + [aux_sym_source_file_repeat1] = STATE(2), + [ts_builtin_sym_end] = ACTIONS(33), + [sym_comment] = ACTIONS(35), + [anon_sym_if] = ACTIONS(38), + [anon_sym_for] = ACTIONS(41), + [anon_sym_LBRACE] = ACTIONS(44), + [anon_sym_RBRACE] = ACTIONS(33), + [anon_sym_continue] = ACTIONS(47), + [anon_sym_break] = ACTIONS(50), + [sym_identifier] = ACTIONS(53), + [anon_sym_LPAREN] = ACTIONS(56), + [anon_sym_LBRACK] = ACTIONS(59), + [anon_sym_nil] = ACTIONS(62), + [anon_sym_null] = ACTIONS(62), + [sym_number_lit] = ACTIONS(65), + [anon_sym_DQUOTE] = ACTIONS(68), + [anon_sym_SQUOTE] = ACTIONS(71), + [anon_sym_true] = ACTIONS(74), + [anon_sym_false] = ACTIONS(74), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 17, + ACTIONS(7), 1, + anon_sym_if, + ACTIONS(9), 1, + anon_sym_for, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_continue, + ACTIONS(15), 1, + anon_sym_break, + ACTIONS(17), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(25), 1, + sym_number_lit, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(77), 1, + sym_comment, + ACTIONS(79), 1, + anon_sym_RBRACE, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(4), 8, + sym__stmt, + sym_if_stmt, + sym_for_in_stmt, + sym_continue_stmt, + sym_break_stmt, + sym_assign_stmt, + sym_expr_stmt, + aux_sym_source_file_repeat1, + STATE(16), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [71] = 17, + ACTIONS(7), 1, + anon_sym_if, + ACTIONS(9), 1, + anon_sym_for, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_continue, + ACTIONS(15), 1, + anon_sym_break, + ACTIONS(17), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(25), 1, + sym_number_lit, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(81), 1, + sym_comment, + ACTIONS(83), 1, + anon_sym_RBRACE, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(2), 8, + sym__stmt, + sym_if_stmt, + sym_for_in_stmt, + sym_continue_stmt, + sym_break_stmt, + sym_assign_stmt, + sym_expr_stmt, + aux_sym_source_file_repeat1, + STATE(16), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [142] = 17, + ACTIONS(7), 1, + anon_sym_if, + ACTIONS(9), 1, + anon_sym_for, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_continue, + ACTIONS(15), 1, + anon_sym_break, + ACTIONS(17), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(25), 1, + sym_number_lit, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(81), 1, + sym_comment, + ACTIONS(85), 1, + anon_sym_RBRACE, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(2), 8, + sym__stmt, + sym_if_stmt, + sym_for_in_stmt, + sym_continue_stmt, + sym_break_stmt, + sym_assign_stmt, + sym_expr_stmt, + aux_sym_source_file_repeat1, + STATE(16), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [213] = 17, + ACTIONS(7), 1, + anon_sym_if, + ACTIONS(9), 1, + anon_sym_for, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_continue, + ACTIONS(15), 1, + anon_sym_break, + ACTIONS(17), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(25), 1, + sym_number_lit, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + sym_comment, + ACTIONS(89), 1, + anon_sym_RBRACE, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(5), 8, + sym__stmt, + sym_if_stmt, + sym_for_in_stmt, + sym_continue_stmt, + sym_break_stmt, + sym_assign_stmt, + sym_expr_stmt, + aux_sym_source_file_repeat1, + STATE(16), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [284] = 17, + ACTIONS(7), 1, + anon_sym_if, + ACTIONS(9), 1, + anon_sym_for, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_continue, + ACTIONS(15), 1, + anon_sym_break, + ACTIONS(17), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(25), 1, + sym_number_lit, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(81), 1, + sym_comment, + ACTIONS(91), 1, + ts_builtin_sym_end, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(2), 8, + sym__stmt, + sym_if_stmt, + sym_for_in_stmt, + sym_continue_stmt, + sym_break_stmt, + sym_assign_stmt, + sym_expr_stmt, + aux_sym_source_file_repeat1, + STATE(16), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [355] = 2, + ACTIONS(95), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(93), 20, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + anon_sym_RBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [393] = 6, + ACTIONS(101), 1, + anon_sym_EQ, + ACTIONS(103), 1, + anon_sym_LPAREN, + ACTIONS(105), 1, + anon_sym_LBRACK, + STATE(26), 1, + sym_argument_list, + ACTIONS(99), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(97), 16, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [439] = 2, + ACTIONS(109), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(107), 20, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + anon_sym_RBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [477] = 2, + ACTIONS(113), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(111), 20, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + anon_sym_RBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [515] = 2, + ACTIONS(117), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(115), 20, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + anon_sym_RBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [553] = 5, + ACTIONS(103), 1, + anon_sym_LPAREN, + ACTIONS(105), 1, + anon_sym_LBRACK, + STATE(26), 1, + sym_argument_list, + ACTIONS(99), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(97), 16, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [596] = 2, + ACTIONS(121), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(119), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [632] = 2, + ACTIONS(125), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(123), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [668] = 9, + ACTIONS(135), 1, + anon_sym_PIPE_PIPE, + ACTIONS(137), 1, + anon_sym_AMP_AMP, + ACTIONS(131), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(139), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(141), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(127), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(129), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [718] = 4, + ACTIONS(131), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(147), 11, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(145), 15, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [758] = 8, + ACTIONS(135), 1, + anon_sym_PIPE_PIPE, + ACTIONS(137), 1, + anon_sym_AMP_AMP, + ACTIONS(131), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(141), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(147), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(145), 11, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [806] = 6, + ACTIONS(131), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(141), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(147), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(145), 13, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [850] = 2, + ACTIONS(151), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(149), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [886] = 7, + ACTIONS(137), 1, + anon_sym_AMP_AMP, + ACTIONS(131), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(141), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(147), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(145), 12, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_PIPE_PIPE, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [932] = 2, + ACTIONS(147), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(145), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [968] = 3, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(147), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(145), 15, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1006] = 2, + ACTIONS(155), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(153), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1042] = 2, + ACTIONS(159), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(157), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1078] = 2, + ACTIONS(163), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(161), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1114] = 9, + ACTIONS(135), 1, + anon_sym_PIPE_PIPE, + ACTIONS(137), 1, + anon_sym_AMP_AMP, + ACTIONS(131), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(139), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(141), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(133), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(165), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(167), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [1164] = 2, + ACTIONS(171), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(169), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1200] = 2, + ACTIONS(175), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(173), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1236] = 2, + ACTIONS(179), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(177), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1272] = 2, + ACTIONS(183), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(181), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1308] = 2, + ACTIONS(187), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(185), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1344] = 2, + ACTIONS(191), 13, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_GT, + anon_sym_LT, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + ACTIONS(189), 18, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + [1380] = 12, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(195), 1, + anon_sym_RBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(205), 1, + sym_number_lit, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + STATE(121), 1, + sym_map_elem, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(100), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1429] = 12, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(205), 1, + sym_number_lit, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(213), 1, + anon_sym_RBRACE, + STATE(126), 1, + sym_map_elem, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(100), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1478] = 11, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(215), 1, + anon_sym_RPAREN, + ACTIONS(217), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(96), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1524] = 11, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(205), 1, + sym_number_lit, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + STATE(136), 1, + sym_map_elem, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(100), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1570] = 11, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(219), 1, + anon_sym_RPAREN, + ACTIONS(221), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(95), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1616] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(223), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(86), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1659] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(225), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(85), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1702] = 5, + ACTIONS(227), 1, + anon_sym_LPAREN, + ACTIONS(229), 1, + anon_sym_LBRACK, + STATE(71), 1, + sym_argument_list, + ACTIONS(99), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(97), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [1735] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(231), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(80), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1778] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(233), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(81), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1821] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(235), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1864] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(239), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(17), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1907] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(241), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(18), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1950] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(243), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(67), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1993] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(245), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(19), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2036] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(247), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(21), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2079] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(249), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(22), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2122] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(251), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(23), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2165] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(253), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(104), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2208] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(255), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(97), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2251] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(257), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(103), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2294] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(259), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(99), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2337] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(261), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(102), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2380] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(263), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(87), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2423] = 10, + ACTIONS(193), 1, + anon_sym_LBRACE, + ACTIONS(197), 1, + sym_identifier, + ACTIONS(199), 1, + anon_sym_LPAREN, + ACTIONS(201), 1, + anon_sym_LBRACK, + ACTIONS(207), 1, + anon_sym_DQUOTE, + ACTIONS(209), 1, + anon_sym_SQUOTE, + ACTIONS(265), 1, + sym_number_lit, + ACTIONS(203), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(211), 2, + anon_sym_true, + anon_sym_false, + STATE(105), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2466] = 10, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(19), 1, + anon_sym_LPAREN, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(237), 1, + sym_identifier, + ACTIONS(267), 1, + sym_number_lit, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(27), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2509] = 4, + ACTIONS(273), 1, + anon_sym_elif, + STATE(60), 1, + aux_sym_if_stmt_repeat1, + ACTIONS(269), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(271), 10, + anon_sym_if, + anon_sym_else, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [2539] = 5, + ACTIONS(280), 1, + anon_sym_elif, + ACTIONS(282), 1, + anon_sym_else, + STATE(60), 1, + aux_sym_if_stmt_repeat1, + ACTIONS(276), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(278), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [2571] = 5, + ACTIONS(280), 1, + anon_sym_elif, + ACTIONS(288), 1, + anon_sym_else, + STATE(61), 1, + aux_sym_if_stmt_repeat1, + ACTIONS(284), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(286), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [2603] = 2, + ACTIONS(290), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(292), 11, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [2628] = 2, + ACTIONS(294), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(296), 11, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [2653] = 2, + ACTIONS(298), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(300), 11, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [2678] = 2, + ACTIONS(183), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(181), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2702] = 5, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2732] = 2, + ACTIONS(187), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(185), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2756] = 2, + ACTIONS(109), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(107), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2780] = 2, + ACTIONS(175), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(173), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2804] = 2, + ACTIONS(163), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(161), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2828] = 2, + ACTIONS(151), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(149), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2852] = 2, + ACTIONS(121), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(119), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2876] = 2, + ACTIONS(179), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(177), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2900] = 2, + ACTIONS(191), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(189), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2924] = 2, + ACTIONS(125), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(123), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2948] = 2, + ACTIONS(171), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(169), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2972] = 2, + ACTIONS(159), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(157), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2996] = 2, + ACTIONS(117), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(115), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3020] = 4, + ACTIONS(147), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 12, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3048] = 7, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 8, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3082] = 2, + ACTIONS(113), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(111), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3106] = 2, + ACTIONS(155), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(153), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3130] = 2, + ACTIONS(95), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(93), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3154] = 6, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 9, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PIPE_PIPE, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3186] = 2, + ACTIONS(147), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(145), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3210] = 3, + ACTIONS(147), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 14, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [3236] = 2, + ACTIONS(314), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(316), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3259] = 2, + ACTIONS(318), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(320), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3282] = 2, + ACTIONS(298), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(300), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3305] = 2, + ACTIONS(290), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(292), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3328] = 2, + ACTIONS(322), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(324), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3351] = 2, + ACTIONS(326), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(328), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3374] = 2, + ACTIONS(330), 9, + ts_builtin_sym_end, + sym_comment, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + ACTIONS(332), 9, + anon_sym_if, + anon_sym_for, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_nil, + anon_sym_null, + anon_sym_true, + anon_sym_false, + [3397] = 10, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(334), 1, + anon_sym_RPAREN, + ACTIONS(336), 1, + anon_sym_COMMA, + STATE(123), 1, + aux_sym_argument_list_repeat1, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3434] = 10, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(336), 1, + anon_sym_COMMA, + ACTIONS(340), 1, + anon_sym_RPAREN, + STATE(120), 1, + aux_sym_argument_list_repeat1, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3471] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(342), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3503] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(344), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3535] = 9, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(346), 1, + anon_sym_LBRACE, + STATE(62), 1, + sym_block_stmts, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3569] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(348), 1, + anon_sym_COLON, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3600] = 9, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(350), 1, + sym_identifier, + ACTIONS(352), 1, + anon_sym_RBRACK, + ACTIONS(354), 1, + sym_number_lit, + STATE(119), 1, + sym_list_elem, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(133), 4, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [3633] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(356), 1, + anon_sym_RBRACK, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3664] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(358), 1, + anon_sym_RPAREN, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3695] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(360), 1, + anon_sym_RPAREN, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3726] = 8, + ACTIONS(310), 1, + anon_sym_PIPE_PIPE, + ACTIONS(312), 1, + anon_sym_AMP_AMP, + ACTIONS(362), 1, + anon_sym_RBRACK, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(306), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(308), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3757] = 9, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(350), 1, + sym_identifier, + ACTIONS(354), 1, + sym_number_lit, + ACTIONS(364), 1, + anon_sym_RBRACK, + STATE(129), 1, + sym_list_elem, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(133), 4, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [3790] = 8, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(350), 1, + sym_identifier, + ACTIONS(354), 1, + sym_number_lit, + STATE(131), 1, + sym_list_elem, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(133), 4, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [3820] = 3, + ACTIONS(366), 1, + anon_sym_DQUOTE, + STATE(108), 1, + aux_sym_string_lit_repeat1, + ACTIONS(368), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, + [3831] = 3, + ACTIONS(371), 1, + anon_sym_SQUOTE, + STATE(109), 1, + aux_sym_string_lit_repeat2, + ACTIONS(373), 2, + aux_sym_string_lit_token2, + sym_escape_sequence, + [3842] = 3, + ACTIONS(376), 1, + anon_sym_DQUOTE, + STATE(112), 1, + aux_sym_string_lit_repeat1, + ACTIONS(378), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, + [3853] = 3, + ACTIONS(380), 1, + anon_sym_SQUOTE, + STATE(109), 1, + aux_sym_string_lit_repeat2, + ACTIONS(382), 2, + aux_sym_string_lit_token2, + sym_escape_sequence, + [3864] = 3, + ACTIONS(384), 1, + anon_sym_DQUOTE, + STATE(108), 1, + aux_sym_string_lit_repeat1, + ACTIONS(386), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, + [3875] = 3, + ACTIONS(380), 1, + anon_sym_DQUOTE, + STATE(108), 1, + aux_sym_string_lit_repeat1, + ACTIONS(386), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, + [3886] = 3, + ACTIONS(384), 1, + anon_sym_SQUOTE, + STATE(109), 1, + aux_sym_string_lit_repeat2, + ACTIONS(382), 2, + aux_sym_string_lit_token2, + sym_escape_sequence, + [3897] = 3, + ACTIONS(376), 1, + anon_sym_SQUOTE, + STATE(114), 1, + aux_sym_string_lit_repeat2, + ACTIONS(388), 2, + aux_sym_string_lit_token2, + sym_escape_sequence, + [3908] = 3, + ACTIONS(390), 1, + anon_sym_SQUOTE, + STATE(111), 1, + aux_sym_string_lit_repeat2, + ACTIONS(392), 2, + aux_sym_string_lit_token2, + sym_escape_sequence, + [3919] = 3, + ACTIONS(390), 1, + anon_sym_DQUOTE, + STATE(113), 1, + aux_sym_string_lit_repeat1, + ACTIONS(394), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, + [3930] = 3, + ACTIONS(396), 1, + anon_sym_RBRACE, + ACTIONS(398), 1, + anon_sym_COMMA, + STATE(118), 1, + aux_sym_map_expr_repeat1, + [3940] = 3, + ACTIONS(401), 1, + anon_sym_COMMA, + ACTIONS(403), 1, + anon_sym_RBRACK, + STATE(124), 1, + aux_sym_list_expr_repeat1, + [3950] = 3, + ACTIONS(336), 1, + anon_sym_COMMA, + ACTIONS(405), 1, + anon_sym_RPAREN, + STATE(130), 1, + aux_sym_argument_list_repeat1, + [3960] = 3, + ACTIONS(407), 1, + anon_sym_RBRACE, + ACTIONS(409), 1, + anon_sym_COMMA, + STATE(127), 1, + aux_sym_map_expr_repeat1, + [3970] = 3, + ACTIONS(401), 1, + anon_sym_COMMA, + ACTIONS(411), 1, + anon_sym_RBRACK, + STATE(125), 1, + aux_sym_list_expr_repeat1, + [3980] = 3, + ACTIONS(336), 1, + anon_sym_COMMA, + ACTIONS(413), 1, + anon_sym_RPAREN, + STATE(130), 1, + aux_sym_argument_list_repeat1, + [3990] = 3, + ACTIONS(401), 1, + anon_sym_COMMA, + ACTIONS(415), 1, + anon_sym_RBRACK, + STATE(125), 1, + aux_sym_list_expr_repeat1, + [4000] = 3, + ACTIONS(417), 1, + anon_sym_COMMA, + ACTIONS(420), 1, + anon_sym_RBRACK, + STATE(125), 1, + aux_sym_list_expr_repeat1, + [4010] = 3, + ACTIONS(409), 1, + anon_sym_COMMA, + ACTIONS(422), 1, + anon_sym_RBRACE, + STATE(128), 1, + aux_sym_map_expr_repeat1, + [4020] = 3, + ACTIONS(409), 1, + anon_sym_COMMA, + ACTIONS(424), 1, + anon_sym_RBRACE, + STATE(118), 1, + aux_sym_map_expr_repeat1, + [4030] = 3, + ACTIONS(409), 1, + anon_sym_COMMA, + ACTIONS(426), 1, + anon_sym_RBRACE, + STATE(118), 1, + aux_sym_map_expr_repeat1, + [4040] = 3, + ACTIONS(401), 1, + anon_sym_COMMA, + ACTIONS(428), 1, + anon_sym_RBRACK, + STATE(122), 1, + aux_sym_list_expr_repeat1, + [4050] = 3, + ACTIONS(342), 1, + anon_sym_RPAREN, + ACTIONS(430), 1, + anon_sym_COMMA, + STATE(130), 1, + aux_sym_argument_list_repeat1, + [4060] = 1, + ACTIONS(420), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [4065] = 2, + ACTIONS(433), 1, + anon_sym_LBRACE, + STATE(92), 1, + sym_block_stmts, + [4072] = 1, + ACTIONS(435), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [4077] = 2, + ACTIONS(433), 1, + anon_sym_LBRACE, + STATE(89), 1, + sym_block_stmts, + [4084] = 2, + ACTIONS(346), 1, + anon_sym_LBRACE, + STATE(64), 1, + sym_block_stmts, + [4091] = 1, + ACTIONS(396), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [4096] = 2, + ACTIONS(433), 1, + anon_sym_LBRACE, + STATE(88), 1, + sym_block_stmts, + [4103] = 1, + ACTIONS(437), 1, + anon_sym_in, + [4107] = 1, + ACTIONS(439), 1, + sym_identifier, + [4111] = 1, + ACTIONS(441), 1, + ts_builtin_sym_end, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(3)] = 0, + [SMALL_STATE(4)] = 71, + [SMALL_STATE(5)] = 142, + [SMALL_STATE(6)] = 213, + [SMALL_STATE(7)] = 284, + [SMALL_STATE(8)] = 355, + [SMALL_STATE(9)] = 393, + [SMALL_STATE(10)] = 439, + [SMALL_STATE(11)] = 477, + [SMALL_STATE(12)] = 515, + [SMALL_STATE(13)] = 553, + [SMALL_STATE(14)] = 596, + [SMALL_STATE(15)] = 632, + [SMALL_STATE(16)] = 668, + [SMALL_STATE(17)] = 718, + [SMALL_STATE(18)] = 758, + [SMALL_STATE(19)] = 806, + [SMALL_STATE(20)] = 850, + [SMALL_STATE(21)] = 886, + [SMALL_STATE(22)] = 932, + [SMALL_STATE(23)] = 968, + [SMALL_STATE(24)] = 1006, + [SMALL_STATE(25)] = 1042, + [SMALL_STATE(26)] = 1078, + [SMALL_STATE(27)] = 1114, + [SMALL_STATE(28)] = 1164, + [SMALL_STATE(29)] = 1200, + [SMALL_STATE(30)] = 1236, + [SMALL_STATE(31)] = 1272, + [SMALL_STATE(32)] = 1308, + [SMALL_STATE(33)] = 1344, + [SMALL_STATE(34)] = 1380, + [SMALL_STATE(35)] = 1429, + [SMALL_STATE(36)] = 1478, + [SMALL_STATE(37)] = 1524, + [SMALL_STATE(38)] = 1570, + [SMALL_STATE(39)] = 1616, + [SMALL_STATE(40)] = 1659, + [SMALL_STATE(41)] = 1702, + [SMALL_STATE(42)] = 1735, + [SMALL_STATE(43)] = 1778, + [SMALL_STATE(44)] = 1821, + [SMALL_STATE(45)] = 1864, + [SMALL_STATE(46)] = 1907, + [SMALL_STATE(47)] = 1950, + [SMALL_STATE(48)] = 1993, + [SMALL_STATE(49)] = 2036, + [SMALL_STATE(50)] = 2079, + [SMALL_STATE(51)] = 2122, + [SMALL_STATE(52)] = 2165, + [SMALL_STATE(53)] = 2208, + [SMALL_STATE(54)] = 2251, + [SMALL_STATE(55)] = 2294, + [SMALL_STATE(56)] = 2337, + [SMALL_STATE(57)] = 2380, + [SMALL_STATE(58)] = 2423, + [SMALL_STATE(59)] = 2466, + [SMALL_STATE(60)] = 2509, + [SMALL_STATE(61)] = 2539, + [SMALL_STATE(62)] = 2571, + [SMALL_STATE(63)] = 2603, + [SMALL_STATE(64)] = 2628, + [SMALL_STATE(65)] = 2653, + [SMALL_STATE(66)] = 2678, + [SMALL_STATE(67)] = 2702, + [SMALL_STATE(68)] = 2732, + [SMALL_STATE(69)] = 2756, + [SMALL_STATE(70)] = 2780, + [SMALL_STATE(71)] = 2804, + [SMALL_STATE(72)] = 2828, + [SMALL_STATE(73)] = 2852, + [SMALL_STATE(74)] = 2876, + [SMALL_STATE(75)] = 2900, + [SMALL_STATE(76)] = 2924, + [SMALL_STATE(77)] = 2948, + [SMALL_STATE(78)] = 2972, + [SMALL_STATE(79)] = 2996, + [SMALL_STATE(80)] = 3020, + [SMALL_STATE(81)] = 3048, + [SMALL_STATE(82)] = 3082, + [SMALL_STATE(83)] = 3106, + [SMALL_STATE(84)] = 3130, + [SMALL_STATE(85)] = 3154, + [SMALL_STATE(86)] = 3186, + [SMALL_STATE(87)] = 3210, + [SMALL_STATE(88)] = 3236, + [SMALL_STATE(89)] = 3259, + [SMALL_STATE(90)] = 3282, + [SMALL_STATE(91)] = 3305, + [SMALL_STATE(92)] = 3328, + [SMALL_STATE(93)] = 3351, + [SMALL_STATE(94)] = 3374, + [SMALL_STATE(95)] = 3397, + [SMALL_STATE(96)] = 3434, + [SMALL_STATE(97)] = 3471, + [SMALL_STATE(98)] = 3503, + [SMALL_STATE(99)] = 3535, + [SMALL_STATE(100)] = 3569, + [SMALL_STATE(101)] = 3600, + [SMALL_STATE(102)] = 3633, + [SMALL_STATE(103)] = 3664, + [SMALL_STATE(104)] = 3695, + [SMALL_STATE(105)] = 3726, + [SMALL_STATE(106)] = 3757, + [SMALL_STATE(107)] = 3790, + [SMALL_STATE(108)] = 3820, + [SMALL_STATE(109)] = 3831, + [SMALL_STATE(110)] = 3842, + [SMALL_STATE(111)] = 3853, + [SMALL_STATE(112)] = 3864, + [SMALL_STATE(113)] = 3875, + [SMALL_STATE(114)] = 3886, + [SMALL_STATE(115)] = 3897, + [SMALL_STATE(116)] = 3908, + [SMALL_STATE(117)] = 3919, + [SMALL_STATE(118)] = 3930, + [SMALL_STATE(119)] = 3940, + [SMALL_STATE(120)] = 3950, + [SMALL_STATE(121)] = 3960, + [SMALL_STATE(122)] = 3970, + [SMALL_STATE(123)] = 3980, + [SMALL_STATE(124)] = 3990, + [SMALL_STATE(125)] = 4000, + [SMALL_STATE(126)] = 4010, + [SMALL_STATE(127)] = 4020, + [SMALL_STATE(128)] = 4030, + [SMALL_STATE(129)] = 4040, + [SMALL_STATE(130)] = 4050, + [SMALL_STATE(131)] = 4060, + [SMALL_STATE(132)] = 4065, + [SMALL_STATE(133)] = 4072, + [SMALL_STATE(134)] = 4077, + [SMALL_STATE(135)] = 4084, + [SMALL_STATE(136)] = 4091, + [SMALL_STATE(137)] = 4096, + [SMALL_STATE(138)] = 4103, + [SMALL_STATE(139)] = 4107, + [SMALL_STATE(140)] = 4111, +}; + +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(7), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(55), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(94), + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(93), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(2), + [38] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(55), + [41] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(139), + [44] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(34), + [47] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(94), + [50] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(93), + [53] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(9), + [56] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(54), + [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(101), + [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(11), + [65] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(16), + [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(110), + [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(115), + [74] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(12), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), + [95] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 3), + [97] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1), + [99] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 1), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(59), + [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 2), + [109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 2), + [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nil_lit, 1), + [113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_nil_lit, 1), + [115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), + [117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), + [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4), + [121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4), + [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expr, 4), + [125] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expr, 4), + [127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_stmt, 1), + [129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_stmt, 1), + [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(51), + [133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [141] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), + [143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expr, 3, .production_id = 3), + [147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expr, 3, .production_id = 3), + [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 2), + [151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 2), + [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 3), + [155] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 3), + [157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 4), + [159] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 4), + [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expr, 2, .production_id = 1), + [163] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expr, 2, .production_id = 1), + [165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_stmt, 3), + [167] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_stmt, 3), + [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3), + [171] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3), + [173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 2), + [175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 2), + [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 3), + [179] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 3), + [181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2), + [183] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2), + [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paren_expr, 3), + [187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_paren_expr, 3), + [189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 4), + [191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 4), + [193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [197] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), + [199] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), + [205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(79), + [213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [237] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), + [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), + [271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), + [273] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), SHIFT_REPEAT(135), + [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 4, .production_id = 4), + [278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 4, .production_id = 4), + [280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), + [282] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), + [284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 3, .production_id = 2), + [286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 3, .production_id = 2), + [288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), + [290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_stmts, 3), + [292] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 3), + [294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 5), + [296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 5), + [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_stmts, 2), + [300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 2), + [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [306] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), + [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [314] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5, .production_id = 6), + [316] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 5, .production_id = 6), + [318] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 6, .production_id = 8), + [320] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 6, .production_id = 8), + [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_stmt, 4), + [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_stmt, 4), + [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_stmt, 1), + [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_stmt, 1), + [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_stmt, 1), + [332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_stmt, 1), + [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), + [344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_elem, 3), + [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [350] = {.entry = {.count = 1, .reusable = false}}, SHIFT(133), + [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), + [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), + [368] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(108), + [371] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat2, 2), + [373] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat2, 2), SHIFT_REPEAT(109), + [376] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [380] = {.entry = {.count = 1, .reusable = false}}, SHIFT(84), + [382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [384] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), + [386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [390] = {.entry = {.count = 1, .reusable = false}}, SHIFT(69), + [392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), + [398] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), SHIFT_REPEAT(37), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [417] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), SHIFT_REPEAT(107), + [420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), + [422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [430] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), SHIFT_REPEAT(53), + [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_elem, 1), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [441] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), +}; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef _WIN32 +#define extern __declspec(dllexport) +#endif + +extern const TSLanguage *tree_sitter_ppl(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, + .field_names = ts_field_names, + .field_map_slices = ts_field_map_slices, + .field_map_entries = ts_field_map_entries, + .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/ide/grammars/src/tree_sitter/parser.h b/ide/grammars/src/tree_sitter/parser.h new file mode 100644 index 0000000..2b14ac1 --- /dev/null +++ b/ide/grammars/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/ide/grammars/test/corpus/debug.txt b/ide/grammars/test/corpus/debug.txt new file mode 100644 index 0000000..0d2e288 --- /dev/null +++ b/ide/grammars/test/corpus/debug.txt @@ -0,0 +1,23 @@ +================== +Full featured +================== + +a = 2 +b = "" + +if a { + add_key(a) +} + +set_tag(a, "1") + +if b { + add_key(b) +} + +use("s.ppl") +# drop() + +--- + +(source_file) diff --git a/ide/grammars/test/highlight/statements.txt b/ide/grammars/test/highlight/statements.txt new file mode 100644 index 0000000..84c791f --- /dev/null +++ b/ide/grammars/test/highlight/statements.txt @@ -0,0 +1,29 @@ +================== +Full featured +================== + +a = 2 +b = "" + +if a { + add_key(a) +} + +set_tag(a, "1") + +if b { + add_key(b) +} + +use("s.ppl") +# drop() + +--- + +(source_file + (function_definition + (identifier) + (parameter_list) + (primitive_type) + (block + (return_statement (number))))) diff --git a/ide/grammars/test/nginx.ppl b/ide/grammars/test/nginx.ppl new file mode 100644 index 0000000..48aac50 --- /dev/null +++ b/ide/grammars/test/nginx.ppl @@ -0,0 +1,49 @@ + +add_pattern("date2", "%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME}") + +asd@@ + +# access log +grok(_, "%{NOTSPACE:client_ip} %{NOTSPACE:http_ident} %{NOTSPACE:http_auth} \\[%{HTTPDATE:time}\\] \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}") + +# access log +add_pattern("access_common", "%{NOTSPACE:client_ip} %{NOTSPACE:http_ident} %{NOTSPACE:http_auth} \\[%{HTTPDATE:time}\\] \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}") +grok(_, '%{access_common} "%{NOTSPACE:referrer}" "%{GREEDYDATA:agent}"') +user_agent(agent) + +# error log +grok(_, "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}, client: %{NOTSPACE:client_ip}, server: %{NOTSPACE:server}, request: \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\", (upstream: \"%{GREEDYDATA:upstream}\", )?host: \"%{NOTSPACE:ip_or_host}\"") +grok(_, "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}, client: %{NOTSPACE:client_ip}, server: %{NOTSPACE:server}, request: \"%{GREEDYDATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\", host: \"%{NOTSPACE:ip_or_host}\"") +grok(_,"%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}") + +group_in(status, ["warn", "notice"], "warning") +group_in(status, ["error", "crit", "alert", "emerg"], "error") + +cast(status_code, "int") +cast(bytes, "int") + +group_between(status_code, [200,299], "OK", status) +group_between(status_code, [300,399], "notice", status) +group_between(status_code, [400,499], "warning", status) +group_between(status_code, [500,599], "error", status) + +nullif(http_ident, "-") +nullif(http_auth, "-") +nullif(upstream, "") +default_time(time) + +a = 2 +b = "" +c = true + +if a { + add_key(a) +} + +set_tag(a, "1") + +if b { + add_key(b) +} + +use("s.ppl") diff --git a/ide/plugins/vscode/.eslintignore b/ide/plugins/vscode/.eslintignore new file mode 100644 index 0000000..1d39096 --- /dev/null +++ b/ide/plugins/vscode/.eslintignore @@ -0,0 +1,5 @@ +node_modules/** +client/node_modules/** +client/out/** +server/node_modules/** +server/out/** \ No newline at end of file diff --git a/ide/plugins/vscode/.eslintrc.js b/ide/plugins/vscode/.eslintrc.js new file mode 100644 index 0000000..f660e39 --- /dev/null +++ b/ide/plugins/vscode/.eslintrc.js @@ -0,0 +1,20 @@ +/**@type {import('eslint').Linter.Config} */ +// eslint-disable-next-line no-undef +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: [ + '@typescript-eslint', + ], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + ], + rules: { + 'semi': [2, "always"], + '@typescript-eslint/no-unused-vars': 0, + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/explicit-module-boundary-types': 0, + '@typescript-eslint/no-non-null-assertion': 0, + } +}; \ No newline at end of file diff --git a/ide/plugins/vscode/.gitignore b/ide/plugins/vscode/.gitignore new file mode 100644 index 0000000..7f8a48e --- /dev/null +++ b/ide/plugins/vscode/.gitignore @@ -0,0 +1,5 @@ +out +node_modules +client/server +.vscode-test +*.wasm diff --git a/ide/plugins/vscode/.vscode/extensions.json b/ide/plugins/vscode/.vscode/extensions.json new file mode 100644 index 0000000..af51550 --- /dev/null +++ b/ide/plugins/vscode/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. + // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp + + // List of extensions which should be recommended for users of this workspace. + "recommendations": [ + "dbaeumer.vscode-eslint" + ] +} \ No newline at end of file diff --git a/ide/plugins/vscode/.vscode/launch.json b/ide/plugins/vscode/.vscode/launch.json new file mode 100644 index 0000000..6cd3add --- /dev/null +++ b/ide/plugins/vscode/.vscode/launch.json @@ -0,0 +1,44 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +{ + "version": "0.2.0", + "configurations": [ + { + "type": "extensionHost", + "request": "launch", + "name": "Launch Client", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceRoot}"], + "outFiles": ["${workspaceRoot}/client/out/**/*.js"], + "preLaunchTask": { + "type": "npm", + "script": "watch" + } + }, + { + "type": "node", + "request": "attach", + "name": "Attach to Server", + "port": 6009, + "restart": true, + "outFiles": ["${workspaceRoot}/server/out/**/*.js"] + }, + { + "name": "Language Server E2E Test", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": [ + "--extensionDevelopmentPath=${workspaceRoot}", + "--extensionTestsPath=${workspaceRoot}/client/out/test/index", + "${workspaceRoot}/client/testFixture" + ], + "outFiles": ["${workspaceRoot}/client/out/test/**/*.js"] + } + ], + "compounds": [ + { + "name": "Client + Server", + "configurations": ["Launch Client", "Attach to Server"] + } + ] +} diff --git a/ide/plugins/vscode/.vscode/settings.json b/ide/plugins/vscode/.vscode/settings.json new file mode 100644 index 0000000..cb88827 --- /dev/null +++ b/ide/plugins/vscode/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "editor.insertSpaces": false, + "typescript.tsc.autoDetect": "off", + "typescript.preferences.quoteStyle": "single", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } +} \ No newline at end of file diff --git a/ide/plugins/vscode/.vscode/tasks.json b/ide/plugins/vscode/.vscode/tasks.json new file mode 100644 index 0000000..070d88e --- /dev/null +++ b/ide/plugins/vscode/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "compile", + "group": "build", + "presentation": { + "panel": "dedicated", + "reveal": "never" + }, + "problemMatcher": [ + "$tsc" + ] + }, + { + "type": "npm", + "script": "watch", + "isBackground": true, + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "panel": "dedicated", + "reveal": "never" + }, + "problemMatcher": [ + "$tsc-watch" + ] + } + ] +} \ No newline at end of file diff --git a/ide/plugins/vscode/.vscodeignore b/ide/plugins/vscode/.vscodeignore new file mode 100644 index 0000000..2a6b6a9 --- /dev/null +++ b/ide/plugins/vscode/.vscodeignore @@ -0,0 +1,15 @@ +.vscode/** +**/*.ts +**/*.map +.gitignore +**/tsconfig.json +**/tsconfig.base.json +contributing.md +.travis.yml +client/node_modules/** +!client/node_modules/vscode-jsonrpc/** +!client/node_modules/vscode-languageclient/** +!client/node_modules/vscode-languageserver-protocol/** +!client/node_modules/vscode-languageserver-types/** +!client/node_modules/{minimatch,brace-expansion,concat-map,balanced-match}/** +!client/node_modules/{semver,lru-cache,yallist}/** \ No newline at end of file diff --git a/ide/plugins/vscode/README.md b/ide/plugins/vscode/README.md new file mode 100644 index 0000000..4c85fc7 --- /dev/null +++ b/ide/plugins/vscode/README.md @@ -0,0 +1,38 @@ +# LSP Example + +Heavily documented sample code for https://code.visualstudio.com/api/language-extensions/language-server-extension-guide + +## Functionality + +This Language Server works for plain text file. It has the following language features: +- Completions +- Diagnostics regenerated on each file change or configuration change + +It also includes an End-to-End test. + +## Structure + +``` +. +├── client // Language Client +│ ├── src +│ │ ├── test // End to End tests for Language Client / Server +│ │ └── extension.ts // Language Client entry point +├── package.json // The extension manifest. +└── server // Language Server + └── src + └── server.ts // Language Server entry point +``` + +## Running the Sample + +- Run `npm install` in this folder. This installs all necessary npm modules in both the client and server folder +- Open VS Code on this folder. +- Press Ctrl+Shift+B to start compiling the client and server in [watch mode](https://code.visualstudio.com/docs/editor/tasks#:~:text=The%20first%20entry%20executes,the%20HelloWorld.js%20file.). +- Switch to the Run and Debug View in the Sidebar (Ctrl+Shift+D). +- Select `Launch Client` from the drop down (if it is not already). +- Press ▷ to run the launch config (F5). +- If you want to debug the server as well, use the launch configuration `Attach to Server` +- In the [Extension Development Host](https://code.visualstudio.com/api/get-started/your-first-extension#:~:text=Then%2C%20inside%20the%20editor%2C%20press%20F5.%20This%20will%20compile%20and%20run%20the%20extension%20in%20a%20new%20Extension%20Development%20Host%20window.) instance of VSCode, open a document in 'plain text' language mode. + - Type `j` or `t` to see `Javascript` and `TypeScript` completion. + - Enter text content such as `AAA aaa BBB`. The extension will emit diagnostics for all words in all-uppercase. diff --git a/ide/plugins/vscode/client/package-lock.json b/ide/plugins/vscode/client/package-lock.json new file mode 100644 index 0000000..2523118 --- /dev/null +++ b/ide/plugins/vscode/client/package-lock.json @@ -0,0 +1,902 @@ +{ + "name": "lsp-sample-client", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "lsp-sample-client", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "vscode-languageclient": "^7.0.0" + }, + "devDependencies": { + "@types/vscode": "^1.63.0", + "@vscode/test-electron": "^2.1.2" + }, + "engines": { + "vscode": "^1.63.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/vscode": { + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.64.0.tgz", + "integrity": "sha512-bSlAWz5WtcSL3cO9tAT/KpEH9rv5OBnm93OIIFwdCshaAiqr2bp1AUyEwW9MWeCvZBHEXc3V0fTYVdVyzDNwHA==", + "dev": true + }, + "node_modules/@vscode/test-electron": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.2.tgz", + "integrity": "sha512-INjJ0YA9RgR1B/xBl8P4sxww4Dy2996f4Xn5oGTFfC0c2Mm45y/1Id8xmfuoba6tR5i8zZaUIHfEYWe7Rt4uZA==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "engines": { + "node": ">=8.9.3" + } + }, + "node_modules/@vscode/test-electron/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@vscode/test-electron/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@vscode/test-electron/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@vscode/test-electron/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@vscode/test-electron/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@vscode/test-electron/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" + }, + "engines": { + "vscode": "^1.52.0" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/vscode": { + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.64.0.tgz", + "integrity": "sha512-bSlAWz5WtcSL3cO9tAT/KpEH9rv5OBnm93OIIFwdCshaAiqr2bp1AUyEwW9MWeCvZBHEXc3V0fTYVdVyzDNwHA==", + "dev": true + }, + "@vscode/test-electron": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.2.tgz", + "integrity": "sha512-INjJ0YA9RgR1B/xBl8P4sxww4Dy2996f4Xn5oGTFfC0c2Mm45y/1Id8xmfuoba6tR5i8zZaUIHfEYWe7Rt4uZA==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==" + }, + "vscode-languageclient": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", + "requires": { + "minimatch": "^3.0.4", + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" + } + }, + "vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "requires": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/ide/plugins/vscode/client/package.json b/ide/plugins/vscode/client/package.json new file mode 100644 index 0000000..2fb8421 --- /dev/null +++ b/ide/plugins/vscode/client/package.json @@ -0,0 +1,22 @@ +{ + "name": "lsp-sample-client", + "description": "VSCode part of a language server", + "author": "Microsoft Corporation", + "license": "MIT", + "version": "0.0.1", + "publisher": "vscode", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/vscode-extension-samples" + }, + "engines": { + "vscode": "^1.63.0" + }, + "dependencies": { + "vscode-languageclient": "^7.0.0" + }, + "devDependencies": { + "@types/vscode": "^1.63.0", + "@vscode/test-electron": "^2.1.2" + } +} diff --git a/ide/plugins/vscode/client/src/extension.ts b/ide/plugins/vscode/client/src/extension.ts new file mode 100644 index 0000000..799a7dd --- /dev/null +++ b/ide/plugins/vscode/client/src/extension.ts @@ -0,0 +1,65 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import * as path from 'path'; +import { workspace, ExtensionContext } from 'vscode'; + +import { + LanguageClient, + LanguageClientOptions, + ServerOptions, + TransportKind +} from 'vscode-languageclient/node'; + +let client: LanguageClient; + +export function activate(context: ExtensionContext) { + // The server is implemented in node + const serverModule = context.asAbsolutePath( + path.join('server', 'out', 'server.js') + ); + // The debug options for the server + // --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging + const debugOptions = { execArgv: ['--nolazy', '--inspect=6009'] }; + + // If the extension is launched in debug mode then the debug server options are used + // Otherwise the run options are used + const serverOptions: ServerOptions = { + run: { module: serverModule, transport: TransportKind.ipc }, + debug: { + module: serverModule, + transport: TransportKind.ipc, + options: debugOptions + } + }; + + // Options to control the language client + const clientOptions: LanguageClientOptions = { + // Register the server for plain text documents + documentSelector: [{ scheme: 'file', language: 'ppl' }], + synchronize: { + // Notify the server about file changes to '.clientrc files contained in the workspace + fileEvents: workspace.createFileSystemWatcher('**/.clientrc') + } + }; + + // Create the language client and start the client. + client = new LanguageClient( + 'languageServerExample', + 'Language Server Example', + serverOptions, + clientOptions + ); + + // Start the client. This will also launch the server + client.start(); +} + +export function deactivate(): Thenable | undefined { + if (!client) { + return undefined; + } + return client.stop(); +} diff --git a/ide/plugins/vscode/client/src/test/completion.test.ts b/ide/plugins/vscode/client/src/test/completion.test.ts new file mode 100644 index 0000000..f355078 --- /dev/null +++ b/ide/plugins/vscode/client/src/test/completion.test.ts @@ -0,0 +1,43 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import * as vscode from 'vscode'; +import * as assert from 'assert'; +import { getDocUri, activate } from './helper'; + +suite('Should do completion', () => { + const docUri = getDocUri('completion.txt'); + + test('Completes JS/TS in txt file', async () => { + await testCompletion(docUri, new vscode.Position(0, 0), { + items: [ + { label: 'JavaScript', kind: vscode.CompletionItemKind.Text }, + { label: 'TypeScript', kind: vscode.CompletionItemKind.Text } + ] + }); + }); +}); + +async function testCompletion( + docUri: vscode.Uri, + position: vscode.Position, + expectedCompletionList: vscode.CompletionList +) { + await activate(docUri); + + // Executing the command `vscode.executeCompletionItemProvider` to simulate triggering completion + const actualCompletionList = (await vscode.commands.executeCommand( + 'vscode.executeCompletionItemProvider', + docUri, + position + )) as vscode.CompletionList; + + assert.ok(actualCompletionList.items.length >= 2); + expectedCompletionList.items.forEach((expectedItem, i) => { + const actualItem = actualCompletionList.items[i]; + assert.equal(actualItem.label, expectedItem.label); + assert.equal(actualItem.kind, expectedItem.kind); + }); +} diff --git a/ide/plugins/vscode/client/src/test/diagnostics.test.ts b/ide/plugins/vscode/client/src/test/diagnostics.test.ts new file mode 100644 index 0000000..1aa8a36 --- /dev/null +++ b/ide/plugins/vscode/client/src/test/diagnostics.test.ts @@ -0,0 +1,41 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import * as vscode from 'vscode'; +import * as assert from 'assert'; +import { getDocUri, activate } from './helper'; + +suite('Should get diagnostics', () => { + const docUri = getDocUri('diagnostics.txt'); + + test('Diagnoses uppercase texts', async () => { + await testDiagnostics(docUri, [ + { message: 'ANY is all uppercase.', range: toRange(0, 0, 0, 3), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }, + { message: 'ANY is all uppercase.', range: toRange(0, 14, 0, 17), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }, + { message: 'OS is all uppercase.', range: toRange(0, 18, 0, 20), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' } + ]); + }); +}); + +function toRange(sLine: number, sChar: number, eLine: number, eChar: number) { + const start = new vscode.Position(sLine, sChar); + const end = new vscode.Position(eLine, eChar); + return new vscode.Range(start, end); +} + +async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) { + await activate(docUri); + + const actualDiagnostics = vscode.languages.getDiagnostics(docUri); + + assert.equal(actualDiagnostics.length, expectedDiagnostics.length); + + expectedDiagnostics.forEach((expectedDiagnostic, i) => { + const actualDiagnostic = actualDiagnostics[i]; + assert.equal(actualDiagnostic.message, expectedDiagnostic.message); + assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range); + assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity); + }); +} \ No newline at end of file diff --git a/ide/plugins/vscode/client/src/test/helper.ts b/ide/plugins/vscode/client/src/test/helper.ts new file mode 100644 index 0000000..6e6724d --- /dev/null +++ b/ide/plugins/vscode/client/src/test/helper.ts @@ -0,0 +1,47 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import * as vscode from 'vscode'; +import * as path from 'path'; + +export let doc: vscode.TextDocument; +export let editor: vscode.TextEditor; +export let documentEol: string; +export let platformEol: string; + +/** + * Activates the vscode.lsp-sample extension + */ +export async function activate(docUri: vscode.Uri) { + // The extensionId is `publisher.name` from package.json + const ext = vscode.extensions.getExtension('vscode-samples.lsp-sample')!; + await ext.activate(); + try { + doc = await vscode.workspace.openTextDocument(docUri); + editor = await vscode.window.showTextDocument(doc); + await sleep(2000); // Wait for server activation + } catch (e) { + console.error(e); + } +} + +async function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +export const getDocPath = (p: string) => { + return path.resolve(__dirname, '../../testFixture', p); +}; +export const getDocUri = (p: string) => { + return vscode.Uri.file(getDocPath(p)); +}; + +export async function setTestContent(content: string): Promise { + const all = new vscode.Range( + doc.positionAt(0), + doc.positionAt(doc.getText().length) + ); + return editor.edit(eb => eb.replace(all, content)); +} diff --git a/ide/plugins/vscode/client/src/test/index.ts b/ide/plugins/vscode/client/src/test/index.ts new file mode 100644 index 0000000..b9de4dc --- /dev/null +++ b/ide/plugins/vscode/client/src/test/index.ts @@ -0,0 +1,43 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +import * as path from 'path'; +import * as Mocha from 'mocha'; +import * as glob from 'glob'; + +export function run(): Promise { + // Create the mocha test + const mocha = new Mocha({ + ui: 'tdd', + color: true + }); + mocha.timeout(100000); + + const testsRoot = __dirname; + + return new Promise((resolve, reject) => { + glob('**.test.js', { cwd: testsRoot }, (err, files) => { + if (err) { + return reject(err); + } + + // Add files to the test suite + files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run(failures => { + if (failures > 0) { + reject(new Error(`${failures} tests failed.`)); + } else { + resolve(); + } + }); + } catch (err) { + console.error(err); + reject(err); + } + }); + }); +} \ No newline at end of file diff --git a/ide/plugins/vscode/client/src/test/runTest.ts b/ide/plugins/vscode/client/src/test/runTest.ts new file mode 100644 index 0000000..9d8189a --- /dev/null +++ b/ide/plugins/vscode/client/src/test/runTest.ts @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import * as path from 'path'; + +import { runTests } from '@vscode/test-electron'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../../../'); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './index'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error('Failed to run tests'); + process.exit(1); + } +} + +main(); diff --git a/ide/plugins/vscode/client/testFixture/completion.txt b/ide/plugins/vscode/client/testFixture/completion.txt new file mode 100644 index 0000000..e69de29 diff --git a/ide/plugins/vscode/client/testFixture/diagnostics.txt b/ide/plugins/vscode/client/testFixture/diagnostics.txt new file mode 100644 index 0000000..d910cfb --- /dev/null +++ b/ide/plugins/vscode/client/testFixture/diagnostics.txt @@ -0,0 +1 @@ +ANY browsers, ANY OS. \ No newline at end of file diff --git a/ide/plugins/vscode/client/tsconfig.json b/ide/plugins/vscode/client/tsconfig.json new file mode 100644 index 0000000..bc08aa2 --- /dev/null +++ b/ide/plugins/vscode/client/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2020", + "lib": ["es2020"], + "outDir": "out", + "rootDir": "src", + "sourceMap": true + }, + "include": ["src"], + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/ide/plugins/vscode/language-configuration.json b/ide/plugins/vscode/language-configuration.json new file mode 100644 index 0000000..8f162a0 --- /dev/null +++ b/ide/plugins/vscode/language-configuration.json @@ -0,0 +1,30 @@ +{ + "comments": { + // symbol used for single line comment. Remove this entry if your language does not support line comments + "lineComment": "//", + // symbols used for start and end a block comment. Remove this entry if your language does not support block comments + "blockComment": [ "/*", "*/" ] + }, + // symbols used as brackets + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + // symbols that are auto closed when typing + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ], + // symbols that can be used to surround a selection + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ] +} \ No newline at end of file diff --git a/ide/plugins/vscode/package-lock.json b/ide/plugins/vscode/package-lock.json new file mode 100644 index 0000000..b7e03b4 --- /dev/null +++ b/ide/plugins/vscode/package-lock.json @@ -0,0 +1,4736 @@ +{ + "name": "ppl-vscode", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ppl-vscode", + "version": "0.0.1", + "hasInstallScript": true, + "license": "Apache License 2.0", + "dependencies": { + "tree-sitter": "^0.20.1", + "tree-sitter-javascript": "^0.19.0", + "tree-sitter-ppl": "file:../../grammars", + "web-tree-sitter": "^0.20.7" + }, + "devDependencies": { + "@types/mocha": "^9.1.0", + "@types/node": "^16.11.7", + "@typescript-eslint/eslint-plugin": "^5.42.0", + "@typescript-eslint/parser": "^5.42.0", + "eslint": "^8.26.0", + "mocha": "^9.2.1", + "typescript": "^4.8.4" + }, + "engines": { + "vscode": "^1.63.0" + } + }, + "../../grammars": { + "name": "tree-sitter-ppl", + "version": "1.0.0", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "nan": "^2.17.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", + "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", + "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz", + "integrity": "sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/type-utils": "5.42.0", + "@typescript-eslint/utils": "5.42.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.0.tgz", + "integrity": "sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", + "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz", + "integrity": "sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/utils": "5.42.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", + "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.0.tgz", + "integrity": "sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mocha": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", + "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.2.0", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + }, + "node_modules/nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tree-sitter": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.1.tgz", + "integrity": "sha512-Cmb8V0ocamHbgWMVhZIa+78k/7r8VCQ6+ePG8eYEAO7AccwWi06Ct4ATNiI94KwhIkRl0+OwZ42/5nk3GnEMpQ==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.14.0", + "prebuild-install": "^6.0.1" + } + }, + "node_modules/tree-sitter-javascript": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/tree-sitter-javascript/-/tree-sitter-javascript-0.19.0.tgz", + "integrity": "sha512-SNykDdNgmlJZhX02ZIu0TQF9P7t847jV7769SxA9XrZ2QXjofQsVTMEi9+LpXZKsI0UoFYI25FnZm3fFm0z2yw==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.12.1" + } + }, + "node_modules/tree-sitter-ppl": { + "resolved": "../../grammars", + "link": true + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/web-tree-sitter": { + "version": "0.20.7", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.7.tgz", + "integrity": "sha512-flC9JJmTII9uAeeYpWF8hxDJ7bfY+leldQryetll8Nv4WgI+MXc6h7TiyAZASWl9uC9TvmfdgOjZn1DAQecb3A==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/y18n": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.6.tgz", + "integrity": "sha512-PlVX4Y0lDTN6E2V4ES2tEdyvXkeKzxa8c/vo0pxPr/TqbztddTP0yn7zZylIyiAuxerqj0Q5GhpJ1YJCP8LaZQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mocha": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", + "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "dev": true + }, + "@types/node": { + "version": "16.11.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", + "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "dev": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz", + "integrity": "sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/type-utils": "5.42.0", + "@typescript-eslint/utils": "5.42.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.0.tgz", + "integrity": "sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", + "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz", + "integrity": "sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/utils": "5.42.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", + "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.0.tgz", + "integrity": "sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.42.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mocha": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", + "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.2.0", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + }, + "nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "dev": true + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "requires": { + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tree-sitter": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.1.tgz", + "integrity": "sha512-Cmb8V0ocamHbgWMVhZIa+78k/7r8VCQ6+ePG8eYEAO7AccwWi06Ct4ATNiI94KwhIkRl0+OwZ42/5nk3GnEMpQ==", + "requires": { + "nan": "^2.14.0", + "prebuild-install": "^6.0.1" + } + }, + "tree-sitter-javascript": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/tree-sitter-javascript/-/tree-sitter-javascript-0.19.0.tgz", + "integrity": "sha512-SNykDdNgmlJZhX02ZIu0TQF9P7t847jV7769SxA9XrZ2QXjofQsVTMEi9+LpXZKsI0UoFYI25FnZm3fFm0z2yw==", + "requires": { + "nan": "^2.12.1" + } + }, + "tree-sitter-ppl": { + "version": "file:../../grammars", + "requires": { + "nan": "^2.17.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "web-tree-sitter": { + "version": "0.20.7", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.7.tgz", + "integrity": "sha512-flC9JJmTII9uAeeYpWF8hxDJ7bfY+leldQryetll8Nv4WgI+MXc6h7TiyAZASWl9uC9TvmfdgOjZn1DAQecb3A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.6.tgz", + "integrity": "sha512-PlVX4Y0lDTN6E2V4ES2tEdyvXkeKzxa8c/vo0pxPr/TqbztddTP0yn7zZylIyiAuxerqj0Q5GhpJ1YJCP8LaZQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/ide/plugins/vscode/package.json b/ide/plugins/vscode/package.json new file mode 100644 index 0000000..3fc1a41 --- /dev/null +++ b/ide/plugins/vscode/package.json @@ -0,0 +1,84 @@ +{ + "name": "ppl-vscode", + "description": "A language server for PPL (Pipeline Processor Language)", + "author": "Guance Cloud", + "license": "Apache License 2.0", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/GuanceCloud/ppl.git" + }, + "publisher": "Guance Cloud", + "categories": [ + "Programming Languages" + ], + "keywords": [ + "ppl" + ], + "engines": { + "vscode": "^1.63.0" + }, + "activationEvents": [ + "onLanguage:ppl" + ], + "main": "./client/out/extension", + "contributes": { + "configuration": { + "type": "object", + "title": "Example configuration", + "properties": { + "languageServerExample.maxNumberOfProblems": { + "scope": "resource", + "type": "number", + "default": 100, + "description": "Controls the maximum number of problems produced by the server." + }, + "languageServerExample.trace.server": { + "scope": "window", + "type": "string", + "enum": [ + "off", + "messages", + "verbose" + ], + "default": "off", + "description": "Traces the communication between VS Code and the language server." + } + } + }, + "languages": [{ + "id": "ppl", + "aliases": ["ppl"], + "extensions": [".p", ".ppl"], + "configuration": "./language-configuration.json" + }], + "grammars": [{ + "language": "ppl", + "scopeName": "source.ppl", + "path": "./syntaxes/ppl.tmLanguage.json" + }] + }, + "scripts": { + "vscode:prepublish": "npm run compile", + "compile": "tsc -b", + "watch": "tsc -b -w", + "lint": "eslint ./client/src ./server/src --ext .ts,.tsx", + "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", + "test": "sh ./scripts/e2e.sh" + }, + "devDependencies": { + "@types/mocha": "^9.1.0", + "@types/node": "^16.11.7", + "@typescript-eslint/eslint-plugin": "^5.42.0", + "@typescript-eslint/parser": "^5.42.0", + "eslint": "^8.26.0", + "mocha": "^9.2.1", + "typescript": "^4.8.4" + }, + "dependencies": { + "tree-sitter": "^0.20.1", + "tree-sitter-javascript": "^0.19.0", + "tree-sitter-ppl": "file:../../grammars", + "web-tree-sitter": "^0.20.7" + } +} diff --git a/ide/plugins/vscode/scripts/e2e.sh b/ide/plugins/vscode/scripts/e2e.sh new file mode 100755 index 0000000..860c62e --- /dev/null +++ b/ide/plugins/vscode/scripts/e2e.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +export CODE_TESTS_PATH="$(pwd)/client/out/test" +export CODE_TESTS_WORKSPACE="$(pwd)/client/testFixture" + +node "$(pwd)/client/out/test/runTest" \ No newline at end of file diff --git a/ide/plugins/vscode/server/package-lock.json b/ide/plugins/vscode/server/package-lock.json new file mode 100644 index 0000000..b8585d2 --- /dev/null +++ b/ide/plugins/vscode/server/package-lock.json @@ -0,0 +1,92 @@ +{ + "name": "lsp-sample-server", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "lsp-sample-server", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "dependencies": { + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz", + "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + } + }, + "dependencies": { + "vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==" + }, + "vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "requires": { + "vscode-languageserver-protocol": "3.16.0" + } + }, + "vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "requires": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz", + "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==" + }, + "vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + } + } +} diff --git a/ide/plugins/vscode/server/package.json b/ide/plugins/vscode/server/package.json new file mode 100644 index 0000000..d176fbf --- /dev/null +++ b/ide/plugins/vscode/server/package.json @@ -0,0 +1,19 @@ +{ + "name": "lsp-sample-server", + "description": "Example implementation of a language server in node.", + "version": "1.0.0", + "author": "Microsoft Corporation", + "license": "MIT", + "engines": { + "node": "*" + }, + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/vscode-extension-samples" + }, + "dependencies": { + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.4" + }, + "scripts": {} +} diff --git a/ide/plugins/vscode/server/src/data.ts b/ide/plugins/vscode/server/src/data.ts new file mode 100644 index 0000000..bd34f2d --- /dev/null +++ b/ide/plugins/vscode/server/src/data.ts @@ -0,0 +1,559 @@ + +const functionsData: { + version: string; + docs: string; + functions: { + [name: string]: { + doc: string; + prototype: string; + description: string; + deprecated: boolean; + required_version: string; + fn_category: { + 'zh-CN': string[]; + }; + }; + }; +} = { + "version":"1.4.10-10-pl", + "docs":"经过 base64 编码的 pipeline 函数文档,包括各函数原型、函数说明、使用示例", + "functions":{ + "add_key()":{ + "doc":"IyMjIGBhZGRfa2V5KClgIHsjZm4tYWRkLWtleX0KCuWHveaVsOWOn+Wei++8mmBmbiBhZGRfa2V5KGtleSwgdmFsdWUpYAoK5Ye95pWw6K+05piO77ya5b6AIHBvaW50IOS4reWinuWKoOS4gOS4quWtl+autQoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDmlrDlop7nmoQga2V5IOWQjeensAotIGB2YWx1ZWDvvJrkvZzkuLoga2V5IOeahOWAvAoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiB7ImFnZSI6IDE3LCAibmFtZSI6ICJ6aGFuZ3NhbiIsICJoZWlnaHQiOiAxODB9CgojIOWkhOeQhuiEmuacrAphZGRfa2V5KGNpdHksICJzaGFuZ2hhaSIpCgojIOWkhOeQhue7k+aenAp7CiAgICAiYWdlIjogMTcsCiAgICAiaGVpZ2h0IjogMTgwLAogICAgIm5hbWUiOiAiemhhbmdzYW4iLAogICAgImNpdHkiOiAic2hhbmdoYWkiCn0KYGBgCg==", + "prototype":"Zm4gYWRkX2tleShrZXksIHZhbHVlKQ==", + "description":"5b6AIHBvaW50IOS4reWinuWKoOS4gOS4quWtl+autQ==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "add_pattern()":{ + "doc":"IyMjIGBhZGRfcGF0dGVybigpYCB7I2ZuLWFkZC1wYXR0ZXJufQoK5Ye95pWw5Y6f5Z6L77yaYGZuIGFkZF9wYXR0ZXJuKG5hbWU6IHN0ciwgcGF0dGVybjogc3RyKWAKCuWHveaVsOivtOaYju+8muWIm+W7uuiHquWumuS5iSBncm9rIOaooeW8j+OAgmdyb2sg5qih5byP5pyJ5L2c55So5Z+f6ZmQ5Yi2LCDlpoLlnKggaWYgZWxzZSDor63lj6XlhoXlsIbkuqfnlJ/mlrDnmoTkvZznlKjln58sIOivpSBwYXR0ZXJuIOS7heWcqOatpOS9nOeUqOWfn+WGheacieaViOOAguivpeWHveaVsOS4jeWPr+imhuebluWQjOS4gOS9nOeUqOWfn+aIluiAheS4iuS4gOS9nOeUqOWfn+W3sue7j+WtmOWcqOeahCBncm9rIOaooeW8jwoK5Y+C5pWwOgoKLSBgbmFtZWDvvJrmqKHlvI/lkb3lkI0KLSBgcGF0dGVybmA6IOiHquWumuS5ieaooeW8j+WGheWuuQoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiAiMTEsYWJjLGVuZDEiLCAiMjIsYWJjLGVuZDEiLCAiMzMsYWJjLGVuZDMiCgojIHBpcGxpbmXohJrmnKwKYWRkX3BhdHRlcm4oImFhIiwgIlxcZHsyfSIpCmdyb2soXywgIiV7YWE6YWF9IikKaWYgZmFsc2UgewoKfSBlbHNlIHsKICAgIGFkZF9wYXR0ZXJuKCJiYiIsICJbYS16XXszfSIpCiAgICBpZiBhYSA9PSAiMTEiIHsKICAgICAgICBhZGRfcGF0dGVybigiY2MiLCAiZW5kMSIpCiAgICAgICAgZ3JvayhfLCAiJXthYTphYX0sJXtiYjpiYn0sJXtjYzpjY30iKQogICAgfSBlbGlmIGFhID09ICIyMiIgewogICAgICAgICMg5q2k5aSE5L2/55SoIHBhdHRlcm4gY2Mg5bCG5a+86Ie057yW6K+R5aSx6LSlOiBubyBwYXR0ZXJuIGZvdW5kIGZvciAle2NjfQogICAgICAgIGdyb2soXywgIiV7YWE6YWF9LCV7YmI6YmJ9LCV7SU5UOmNjfSIpCiAgICB9IGVsaWYgYWEgPT0gIjMzIiB7CiAgICAgICAgYWRkX3BhdHRlcm4oImJiIiwgIltcXGRdezV9IikJIyDmraTlpITopobnm5YgYmIg5aSx6LSlCiAgICAgICAgYWRkX3BhdHRlcm4oImNjIiwgImVuZDMiKQogICAgICAgIGdyb2soXywgIiV7YWE6YWF9LCV7YmI6YmJ9LCV7Y2M6Y2N9IikKICAgIH0KfQoKIyDlpITnkIbnu5PmnpwKewogICAgImFhIjogICAgICAiMTEiCiAgICAiYmIiOiAgICAgICJhYmMiCiAgICAiY2MiOiAgICAgICJlbmQxIgogICAgIm1lc3NhZ2UiOiAiMTEsYWJjLGVuZDEiCn0KewogICAgImFhIjogICAgICAiMjIiCgkgIm1lc3NhZ2UiOiAiMjIsYWJjLGVuZDEiCn0KewogICAgImFhIjogICAgICAiMzMiCiAgICAiYmIiOiAgICAgICJhYmMiCiAgICAiY2MiOiAgICAgICJlbmQzIgogICAgIm1lc3NhZ2UiOiAiMzMsYWJjLGVuZDMiCn0KYGBgCg==", + "prototype":"Zm4gYWRkX3BhdHRlcm4obmFtZTogc3RyLCBwYXR0ZXJuOiBzdHIp", + "description":"5Yib5bu66Ieq5a6a5LmJIGdyb2sg5qih5byP44CCZ3JvayDmqKHlvI/mnInkvZznlKjln5/pmZDliLYsIOWmguWcqCBpZiBlbHNlIOivreWPpeWGheWwhuS6p+eUn+aWsOeahOS9nOeUqOWfnywg6K+lIHBhdHRlcm4g5LuF5Zyo5q2k5L2c55So5Z+f5YaF5pyJ5pWI44CC6K+l5Ye95pWw5LiN5Y+v6KaG55uW5ZCM5LiA5L2c55So5Z+f5oiW6ICF5LiK5LiA5L2c55So5Z+f5bey57uP5a2Y5Zyo55qEIGdyb2sg5qih5byP", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "Grok" + ] + } + }, + "adjust_timezone()":{ + "doc":"IyMjIGBhZGp1c3RfdGltZXpvbmUoKWAgeyNmbi1hZGp1c3QtdGltZXpvbmV9Cgrlh73mlbDljp/lnovvvJpgZm4gYWRqdXN0X3RpbWV6b25lKGtleTogaW50LCBtaW51dGU6IGludClgCgrlh73mlbDlj4LmlbAKCi0gYGtleWA6IOe6s+enkuaXtumXtOaIs++8jOWmgiBgZGVmYXVsdF90aW1lKHRpbWUpYCDlh73mlbDlpITnkIblkI7lvpfliLDnmoTml7bpl7TmiLMKLSBgbWludXRlYDog6L+U5Zue5YC85YWB6K646LaF5Ye65b2T5YmN5pe26Ze055qE5YiG6ZKf5pWw77yI5pW05pWw77yJ77yM5Y+W5YC86IyD5Zu0IFswLCAxNV0sIOm7mOiupOWAvOS4uiAyIOWIhumSnwoK5Ye95pWw6K+05piO77yaIOS9v+W+l+S8oOWFpeeahOaXtumXtOaIs+WHj+WOu+WHveaVsOaJp+ihjOaXtuWIu+eahOaXtumXtOaIs+eahOW3ruWAvOWcqO+8iC02MCttaW51dGUsIG1pbnV0ZV0g5YiG6ZKf5YaF77yb5LiN6YCC55So5LqO5pe26Ze05beu6LaF5Ye65q2k6IyD5Zu055qE5pWw5o2u77yM5ZCm5YiZ5bCG5a+86Ie06I635Y+W5Yiw6ZSZ6K+v55qE5pWw5o2u44CC6K6h566X5rWB56iL77yaCgoxLiDkuLoga2V5IOeahOWAvOWKoOS4iuaVsOWwj+aXtuS9v+WFtuWkhOS6juW9k+WJjeWwj+aXtuWGhQoyLiDmraTml7borqHnrpfkuKTogIXliIbpkp/lt67vvIzkuKTogIXliIbpkp/mlbDlgLzojIPlm7TkuLogWzAsIDYwKe+8jOW3ruWAvOiMg+WbtOWcqCAoLTYwLDBdIOWSjCBbMCwgNjApCjMuIOW3ruWAvOWwj+S6juetieS6jiAtNjAgKyBtaW51dGUg55qE5YqgIDEg5bCP5pe277yM5aSn5LqOIG1pbnV0ZSDnmoTlh48gMSDlsI/ml7YKNC4gbWludXRlIOm7mOiupOWAvOS4uiAy77yM5YiZ5beu55qE6IyD5Zu05YWB6K645ZyoICgtNTgsIDJd77yM6Iul5q2k5pe25Li6IDExOjEw77yM5pel5b+X5pe26Ze05Li6IDM6MTI6MDAuMDAx77yM5pyA57uI57uT5p6c5Li6IDEwOjEyOjAwLjAwMe+8m+iLpeatpOaXtuS4uiAxMTo1OToxLjAwMCwg5pel5b+X5pe26Ze05Li6IDM6MDE6MS4wMDDvvIzmnIDnu4jnu5PmnpzkuLogMTI6MDE6MS4wMDAKCuekuuS+izoKCmBgYGpzb24KIyDovpPlhaUgMSAKewogICAgInRpbWUiOiIxMSBKdWwgMjAyMiAxMjo0OToyMC45MzciLCAKICAgICJzZWNvbmQiOjIsCiAgICAidGhpcmQiOiJhYmMiLAogICAgImZvcnRoIjp0cnVlCn0KYGBgCgrohJrmnKzvvJoKCmBgYHB5dGhvbgpqc29uKF8sIHRpbWUpICAgICAgIyDmj5Dlj5YgdGltZSDlrZfmrrUgKOiLpeWuueWZqOS4reaXtuWMuiBVVEMrMDAwMCkKZGVmYXVsdF90aW1lKHRpbWUpICMg5bCG5o+Q5Y+W5Yiw55qEIHRpbWUg5a2X5q616L2s5o2i5oiQ5pe26Ze05oizCiAgICAgICAgICAgICAgICAgICAjICjlr7nml6Dml7bljLrmlbDmja7kvb/nlKjmnKzlnLDml7bljLogVVRDKzA4MDAvVVRDKzA5MDAuLi7op6PmnpApCmFkanVzdF90aW1lem9uZSh0aW1lKQogICAgICAgICAgICAgICAgICAgIyDoh6rliqgo6YeN5pawKemAieaLqeaXtuWMuu+8jOagoeWHhuaXtumXtOWBj+W3rgoKYGBgCgrmiafooYwgYGRhdGFraXQgcGlwZWxpbmUgPG5hbWU+LnAgLUYgPGlucHV0X2ZpbGVfbmFtZT4gIC0tZGF0ZWA6CgpgYGBqc29uCiMg6L6T5Ye6IDEKewogICJtZXNzYWdlIjogIntcbiAgICBcInRpbWVcIjpcIjExIEp1bCAyMDIyIDEyOjQ5OjIwLjkzN1wiLFxuICAgIFwic2Vjb25kXCI6MixcbiAgICBcInRoaXJkXCI6XCJhYmNcIixcbiAgICBcImZvcnRoXCI6dHJ1ZVxufSIsCiAgInN0YXR1cyI6ICJ1bmtub3duIiwKICAidGltZSI6ICIyMDIyLTA3LTExVDIwOjQ5OjIwLjkzNyswODowMCIKfQpgYGAKCuacrOacuuaXtumXtDogYDIwMjItMDctMTFUMjA6NTU6MTAuNTIxKzA4OjAwYAoK5LuF5L2/55SoIGRlZmF1bHRfdGltZSDmjInnhafpu5jorqTmnKzmnLrml7bljLrvvIhVVEMrOO+8ieino+aekOW+l+WIsOeahOaXtumXtOWIhuWIq+S4uu+8mgogIC0g6L6T5YWlIDEg57uT5p6c77yaIGAyMDIyLTA3LTExVDEyOjQ5OjIwLjkzNyswODowMGAKCuS9v+eUqCBhZGp1c3RfdGltZXpvbmUg5ZCO5bCG5b6X5Yiw77yaCiAgLSDovpPlhaUgMSDnu5PmnpzvvJogYDIwMjItMDctMTFUMjA6NDk6MjAuOTM3KzA4OjAwYAo=", + "prototype":"Zm4gYWRqdXN0X3RpbWV6b25lKGtleTogaW50LCBtaW51dGU6IGludCk=", + "description":"IOS9v+W+l+S8oOWFpeeahOaXtumXtOaIs+WHj+WOu+WHveaVsOaJp+ihjOaXtuWIu+eahOaXtumXtOaIs+eahOW3ruWAvOWcqO+8iC02MCttaW51dGUsIG1pbnV0ZV0g5YiG6ZKf5YaF77yb5LiN6YCC55So5LqO5pe26Ze05beu6LaF5Ye65q2k6IyD5Zu055qE5pWw5o2u77yM5ZCm5YiZ5bCG5a+86Ie06I635Y+W5Yiw6ZSZ6K+v55qE5pWw5o2u44CC6K6h566X5rWB56iL77ya", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "时间操作" + ] + } + }, + "cast()":{ + "doc":"IyMjIGBjYXN0KClgIHsjZm4tY2FzdH0KCuWHveaVsOWOn+Wei++8mmBmbiBjYXN0KGtleSwgZHN0X3R5cGU6IHN0cilgCgrlh73mlbDor7TmmI7vvJrlsIYga2V5IOWAvOi9rOaNouaIkOaMh+Wumuexu+WeiwoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDlt7Lmj5Dlj5bnmoTmn5DlrZfmrrUKLSBgdHlwZWDvvJrovazmjaLnmoTnm67moIfnsbvlnovvvIzmlK/mjIEgYFwic3RyXCIsIFwiZmxvYXRcIiwgXCJpbnRcIiwgXCJib29sXCJgIOi/meWHoOenje+8jOebruagh+exu+Wei+mcgOimgeeUqOiLseaWh+eKtuaAgeWPjOW8leWPt+aLrOi1t+adpQoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiB7ImZpcnN0IjogMSwic2Vjb25kIjoyLCJ0aGlyZCI6ImFCQyIsImZvcnRoIjp0cnVlfQoKIyDlpITnkIbohJrmnKwKanNvbihfLCBmaXJzdCkgCmNhc3QoZmlyc3QsICJzdHIiKQoKIyDlpITnkIbnu5PmnpwKewogICJmaXJzdCI6ICIxIgp9CmBgYAo=", + "prototype":"Zm4gY2FzdChrZXksIGRzdF90eXBlOiBzdHIp", + "description":"5bCGIGtleSDlgLzovazmjaLmiJDmjIflrprnsbvlnos=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "类型转换" + ] + } + }, + "cidr()":{ + "doc":"IyMjIGBjaWRyKClgIHsjZm4tY2lkcn0KCuWHveaVsOWOn+Wei++8mmBmbiBjaWRyKGlwOiBzdHIsIHByZWZpeDogc3RyKSBib29sYAoK5Ye95pWw6K+05piO77yaIOWIpOaWrSBJUCDmmK/lkKblnKjmn5DkuKogQ0lEUiDlnZcKCuWHveaVsOWPguaVsAoKLSBgaXBgOiBJUCDlnLDlnYAKLSBgcHJlZml4YO+8miBJUCDliY3nvIDvvIzlpoIgYDE5Mi4wLjIuMS8yNGAKCuekuuS+izoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogCgojIOWkhOeQhuiEmuacrAoKaXAgPSAiMTkyLjAuMi4yMzMiCmlmIGNpZHIoaXAsICIxOTIuMC4yLjEvMjQiKSB7CiAgICBhZGRfa2V5KGlwX3ByZWZpeCwgIjE5Mi4wLjIuMS8yNCIpCn0KCiMg5aSE55CG57uT5p6cCnsKICAiaXBfcHJlZml4IjogIjE5Mi4wLjIuMS8yNCIKfQpgYGAK", + "prototype":"Zm4gY2lkcihpcDogc3RyLCBwcmVmaXg6IHN0cikgYm9vbA==", + "description":"IOWIpOaWrSBJUCDmmK/lkKblnKjmn5DkuKogQ0lEUiDlnZc=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "网络" + ] + } + }, + "cover()":{ + "doc":"IyMjIGBjb3ZlcigpYCB7I2ZuLWNvdmVyfQoK5Ye95pWw5Y6f5Z6L77yaYGZuIGNvdmVyKGtleTogc3RyLCByYW5nZTogbGlzdClgCgrlh73mlbDor7TmmI7vvJrlr7nmjIflrprlrZfmrrXkuIrojrflj5bnmoTlrZfnrKbkuLLmlbDmja7vvIzmjInojIPlm7Tov5vooYzmlbDmja7ohLHmlY/lpITnkIYKCuWHveaVsOWPguaVsAoKLSBga2V5YDog5b6F5o+Q5Y+W5a2X5q61Ci0gYHJhbmdlYDog6ISx5pWP5a2X56ym5Liy55qE57Si5byV6IyD5Zu077yIYFtzdGFydCxlbmRdYO+8iSBzdGFydOWSjGVuZOWdh+aUr+aMgei0n+aVsOS4i+agh++8jOeUqOadpeihqOi+vuS7juWwvumDqOW+gOWJjei/vea6r+eahOivreS5ieOAguWMuumXtOWQiOeQhuWNs+WPr++8jGVuZOWmguaenOWkp+S6juWtl+espuS4suacgOWkp+mVv+W6puS8mum7mOiupOaIkOacgOWkp+mVv+W6pgoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uIHsic3RyIjogIjEzNzg5MTIzMDE0In0KanNvbihfLCBgc3RyYCkKY292ZXIoYHN0cmAsIFs4LCA5XSkKCiMg5b6F5aSE55CG5pWw5o2uIHsiYWJjIjogIjEzNzg5MTIzMDE0In0KanNvbihfLCBhYmMpCmNvdmVyKGFiYywgWzIsIDRdKQpgYGAK", + "prototype":"Zm4gY292ZXIoa2V5OiBzdHIsIHJhbmdlOiBsaXN0KQ==", + "description":"5a+55oyH5a6a5a2X5q615LiK6I635Y+W55qE5a2X56ym5Liy5pWw5o2u77yM5oyJ6IyD5Zu06L+b6KGM5pWw5o2u6ISx5pWP5aSE55CG", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "字符串操作", + "脱敏" + ] + } + }, + "datetime()":{ + "doc":"IyMjIGBkYXRldGltZSgpYCB7I2ZuLWRhdGV0aW1lfQoK5Ye95pWw5Y6f5Z6L77yaYGZuIGRhdGV0aW1lKGtleSwgcHJlY2lzaW9uOiBzdHIsIGZtdDogc3RyKWAKCuWHveaVsOivtOaYju+8muWwhuaXtumXtOaIs+i9rOaIkOaMh+WumuaXpeacn+agvOW8jwoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDlt7Lnu4/mj5Dlj5bnmoTml7bpl7TmiLMgKOW/hemAieWPguaVsCkKLSBgcHJlY2lzaW9uYO+8mui+k+WFpeeahOaXtumXtOaIs+eyvuW6pihzLCBtcykKLSBgZm10YO+8muaXpeacn+agvOW8j++8jOaXtumXtOagvOW8jywg5pSv5oyB5Lul5LiL5qih54mICgpgYGBweXRob24KQU5TSUMgICAgICAgPSAiTW9uIEphbiBfMiAxNTowNDowNSAyMDA2IgpVbml4RGF0ZSAgICA9ICJNb24gSmFuIF8yIDE1OjA0OjA1IE1TVCAyMDA2IgpSdWJ5RGF0ZSAgICA9ICJNb24gSmFuIDAyIDE1OjA0OjA1IC0wNzAwIDIwMDYiClJGQzgyMiAgICAgID0gIjAyIEphbiAwNiAxNTowNCBNU1QiClJGQzgyMlogICAgID0gIjAyIEphbiAwNiAxNTowNCAtMDcwMCIgLy8gUkZDODIyIHdpdGggbnVtZXJpYyB6b25lClJGQzg1MCAgICAgID0gIk1vbmRheSwgMDItSmFuLTA2IDE1OjA0OjA1IE1TVCIKUkZDMTEyMyAgICAgPSAiTW9uLCAwMiBKYW4gMjAwNiAxNTowNDowNSBNU1QiClJGQzExMjNaICAgID0gIk1vbiwgMDIgSmFuIDIwMDYgMTU6MDQ6MDUgLTA3MDAiIC8vIFJGQzExMjMgd2l0aCBudW1lcmljIHpvbmUKUkZDMzMzOSAgICAgPSAiMjAwNi0wMS0wMlQxNTowNDowNVowNzowMCIKUkZDMzMzOU5hbm8gPSAiMjAwNi0wMS0wMlQxNTowNDowNS45OTk5OTk5OTlaMDc6MDAiCktpdGNoZW4gICAgID0gIjM6MDRQTSIKYGBgCgrnpLrkvos6CgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja46CiMgICAgewojICAgICAgICAiYSI6ewojICAgICAgICAgICAgInRpbWVzdGFtcCI6ICIxNjEwOTYwNjA1MDAwIiwKIyAgICAgICAgICAgICJzZWNvbmQiOjIKIyAgICAgICAgfSwKIyAgICAgICAgImFnZSI6NDcKIyAgICB9CgojIOWkhOeQhuiEmuacrApqc29uKF8sIGEudGltZXN0YW1wKSBkYXRldGltZShhLnRpbWVzdGFtcCwgJ21zJywgJ1JGQzMzMzknKQpgYGAK", + "prototype":"Zm4gZGF0ZXRpbWUoa2V5LCBwcmVjaXNpb246IHN0ciwgZm10OiBzdHIp", + "description":"5bCG5pe26Ze05oiz6L2s5oiQ5oyH5a6a5pel5pyf5qC85byP", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "时间操作" + ] + } + }, + "decode":{ + "doc":"IyMjIGBkZWNvZGUoKWAgeyNmbi1kZWNvZGV9Cgrlh73mlbDljp/lnovvvJpgZm4gZGVjb2RlKHRleHQ6IHN0ciwgdGV4dF9lbmNvZGU6IHN0cilgCgrlh73mlbDor7TmmI7vvJrmioogdGV4dCDlj5jmiJAgVVRGOCDnvJbnoIHvvIzku6XlpITnkIbljp/lp4vml6Xlv5fkuLrpnZ4gVVRGOCDnvJbnoIHnmoTpl67popjjgILnm67liY3mlK/mjIHnmoTnvJbnoIHkuLogdXRmLTE2bGUvdXRmLTE2YmUvZ2JrL2diMTgwMzDvvIjov5nkupvnvJbnoIHlkI3lj6rog73lsI/lhpnvvIkKCmBgYHB5dGhvbgpkZWNvZGUoInd3d3d3dyIsICJnYmsiKQoKIyBFeHRyYWN0ZWQgZGF0YShkcm9wOiBmYWxzZSwgY29zdDogMzMuMjc5wrVzKToKIyB7CiMgICAibWVzc2FnZSI6ICJ3d3d3d3ciLAojIH0KYGBgCg==", + "prototype":"Zm4gZGVjb2RlKHRleHQ6IHN0ciwgdGV4dF9lbmNvZGU6IHN0cik=", + "description":"5oqKIHRleHQg5Y+Y5oiQIFVURjgg57yW56CB77yM5Lul5aSE55CG5Y6f5aeL5pel5b+X5Li66Z2eIFVURjgg57yW56CB55qE6Zeu6aKY44CC55uu5YmN5pSv5oyB55qE57yW56CB5Li6IHV0Zi0xNmxlL3V0Zi0xNmJlL2diay9nYjE4MDMw77yI6L+Z5Lqb57yW56CB5ZCN5Y+q6IO95bCP5YaZ77yJ", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "编解码" + ] + } + }, + "default_time()":{ + "doc":"IyMjIGBkZWZhdWx0X3RpbWUoKWAgeyNmbi1kZWZhbHQtdGltZX0KCuWHveaVsOWOn+Wei++8mmBmbiBkZWZhdWx0X3RpbWUoa2V5OiBzdHIsIHRpbWV6b25lOiBzdHIgPSAiIilgCgrlh73mlbDor7TmmI7vvJrku6Xmj5Dlj5bnmoTmn5DkuKrlrZfmrrXkvZzkuLrmnIDnu4jmlbDmja7nmoTml7bpl7TmiLMKCuWHveaVsOWPguaVsAoKLSBga2V5YDog5oyH5a6a55qEIGtlee+8jCBrZXkg55qE5pWw5o2u57G75Z6L6ZyA6KaB5Li65a2X56ym5Liy57G75Z6LCi0gYHRpbWV6b25lYDog5oyH5a6a5b6F5qC85byP5YyW55qE5pe26Ze05paH5pys5omA5L2/55So55qE5pe25Yy677yM5Y+v6YCJ5Y+C5pWw77yM6buY6K6k5Li65b2T5YmN57O757uf5pe25Yy677yM5pe25Yy656S65L6LIGArOC8tOC8rODozMGAKCuW+heWkhOeQhuaVsOaNruaUr+aMgeS7peS4i+agvOW8j+WMluaXtumXtAoKfCDml6XmnJ/moLzlvI8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCDml6XmnJ/moLzlvI8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IOaXpeacn+agvOW8jyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg5pel5pyf5qC85byPICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAtLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYDIwMTQtMDQtMjYgMTc6MjQ6MzcuMzE4NjM2OWAgICAgICAgICAgICAgICAgICAgICAgfCBgTWF5IDgsIDIwMDkgNTo1Nzo1MSBQTWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTItMDgtMDMgMTg6MzE6NTkuMjU3MDAwMDAwYCAgICAgICAgICAgICAgICB8IGBvY3QgNywgMTk3MGAgICAgICAgICAgICAgICAgICAgICB8CnwgYDIwMTQtMDQtMjYgMTc6MjQ6MzcuMTIzYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgb2N0IDcsICc3MGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTMtMDQtMDEgMjI6NDNgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBvY3QuIDcsIDE5NzBgICAgICAgICAgICAgICAgICAgICB8CnwgYDIwMTMtMDQtMDEgMjI6NDM6MjJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgb2N0LiA3LCA3MGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTQtMTItMTYgMDY6MjA6MDAgVVRDYCAgICAgICAgICAgICAgICAgICAgICB8IGBNb24gSmFuICAyIDE1OjA0OjA1IDIwMDZgICAgICAgICB8CnwgYDIwMTQtMTItMTYgMDY6MjA6MDAgR01UYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTW9uIEphbiAgMiAxNTowNDowNSBNU1QgMjAwNmAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTQtMDQtMjYgMDU6MjQ6MzcgUE1gICAgICAgICAgICAgICAgICAgICAgICB8IGBNb24gSmFuIDAyIDE1OjA0OjA1IC0wNzAwIDIwMDZgICB8CnwgYDIwMTQtMDQtMjYgMTM6MTM6NDMgKzA4MDBgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTW9uZGF5LCAwMi1KYW4tMDYgMTU6MDQ6MDUgTVNUYCAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTQtMDQtMjYgMTM6MTM6NDMgKzA4MDAgKzA4YCAgICAgICAgICAgICAgICB8IGBNb24sIDAyIEphbiAyMDA2IDE1OjA0OjA1IE1TVGAgICB8CnwgYDIwMTQtMDQtMjYgMTM6MTM6NDQgKzA5OjAwYCAgICAgICAgICAgICAgICAgICAgICAgfCBgVHVlLCAxMSBKdWwgMjAxNyAxNjoyODoxMyArMDIwMCAoQ0VTVClgICAgICAgICAgICAgICAgIHwgYDIwMTItMDgtMDMgMTg6MzE6NTkuMjU3MDAwMDAwICswMDAwIFVUQ2AgICAgICB8IGBNb24sIDAyIEphbiAyMDA2IDE1OjA0OjA1IC0wNzAwYCB8CnwgYDIwMTUtMDktMzAgMTg6NDg6NTYuMzUyNzI3MTUgKzAwMDAgVVRDYCAgICAgICAgICAgfCBgVGh1LCA0IEphbiAyMDE4IDE3OjUzOjM2ICswMDAwYCAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTUtMDItMTggMDA6MTI6MDAgKzAwMDAgR01UYCAgICAgICAgICAgICAgICB8IGBNb24gMzAgU2VwIDIwMTggMDk6MDk6MDkgUE0gVVRDYCB8CnwgYDIwMTUtMDItMTggMDA6MTI6MDAgKzAwMDAgVVRDYCAgICAgICAgICAgICAgICAgICAgfCBgTW9uIEF1ZyAxMCAxNTo0NDoxMSBVVEMrMDEwMCAyMDE1YCAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTUtMDItMDggMDM6MDI6MDAgKzAzMDAgTVNLIG09KzAuMDAwMDAwMDAxYCB8IGBUaHUsIDQgSmFuIDIwMTggMTc6NTM6MzYgKzAwMDBgICB8CnwgYDIwMTUtMDItMDggMDM6MDI6MDAuMDAxICswMzAwIE1TSyBtPSswLjAwMDAwMDAwMWAgfCBgRnJpIEp1bCAwMyAyMDE1IDE4OjA0OjA3IEdNVCswMTAwIChHTVQgRGF5bGlnaHQgVGltZSlgIHwgYDIwMTctMDctMTkgMDM6MjE6NTErMDA6MDBgICAgICAgICAgICAgICAgICAgICB8IGBTZXB0ZW1iZXIgMTcsIDIwMTIgMTA6MDlhbWAgICAgICB8CnwgYDIwMTQtMDQtMjZgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgU2VwdGVtYmVyIDE3LCAyMDEyIGF0IDEwOjA5YW0gUFNULTA4YCAgICAgICAgICAgICAgICAgIHwgYDIwMTQtMDRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBTZXB0ZW1iZXIgMTcsIDIwMTIsIDEwOjEwOjA5YCAgICB8CnwgYDIwMTRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAxNDozOjMxYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTQtMDUtMTEgMDg6MjA6MTMsNzg3YCAgICAgICAgICAgICAgICAgICAgICB8IGAyMDE0OjAzOjMxYCAgICAgICAgICAgICAgICAgICAgICB8CnwgYDMuMzEuMjAxNGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAxNDo0OjggMjI6MDVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDAzLjMxLjIwMTRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAyMDE0OjA0OjA4IDIyOjA1YCAgICAgICAgICAgICAgICB8CnwgYDA4LjIxLjcxYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAxNDowNDoyIDAzOjAwOjUxYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTQuMDNgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAyMDE0OjQ6MDIgMDM6MDA6NTFgICAgICAgICAgICAgICB8CnwgYDIwMTQuMDMuMzBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAxMjowMzoxOSAxMDoxMTo1OWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDIwMTQwNjAxYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAyMDEyOjAzOjE5IDEwOjExOjU5LjMxODYzNjlgICAgICB8CnwgYDIwMTQwNzIyMTA1MjAzYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAxNOW5tDA05pyIMDjml6VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDEzMzIxNTE5MTlgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAyMDA2LTAxLTAyVDE1OjA0OjA1KzAwMDBgICAgICAgICB8CnwgYDEzODQyMTYzNjcxODlgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAwOS0wOC0xMlQyMjoxNTowOS0wNzowMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDEzODQyMTYzNjcxMTEyMjJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAyMDA5LTA4LTEyVDIyOjE1OjA5YCAgICAgICAgICAgICB8CnwgYDEzODQyMTYzNjcxMTEyMjIzMzNgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMjAwOS0wOC0xMlQyMjoxNTowOVpgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCkpTT04g5o+Q5Y+W56S65L6LOgoKYGBgcHl0aG9uCiMg5Y6f5aeLIGpzb24KewogICAgInRpbWUiOiIwNi9KYW4vMjAxNzoxNjoxNjozNyArMDAwMCIsCiAgICAic2Vjb25kIjoyLAogICAgInRoaXJkIjoiYWJjIiwKICAgICJmb3J0aCI6dHJ1ZQp9CgojIHBpcGVsaW5lIOiEmuacrApqc29uKF8sIHRpbWUpICAgICAgIyDmj5Dlj5YgdGltZSDlrZfmrrUKZGVmYXVsdF90aW1lKHRpbWUpICMg5bCG5o+Q5Y+W5Yiw55qEIHRpbWUg5a2X5q616L2s5o2i5oiQ5pe26Ze05oizCgojIOWkhOeQhue7k+aenAp7CiAgInRpbWUiOiAxNDgzNzE5Mzk3MDAwMDAwMDAwLAp9CmBgYAoK5paH5pys5o+Q5Y+W56S65L6LOgoKYGBgcHl0aG9uCiMg5Y6f5aeL5pel5b+X5paH5pysCjIwMjEtMDEtMTFUMTc6NDM6NTEuODg3KzA4MDAgIERFQlVHIGlvICBpby9pby5nbzo0NTggIHBvc3QgY29zdCA2Ljg3MDIxbXMKCiMgcGlwZWxpbmUg6ISa5pysCmdyb2soXywgJyV7VElNRVNUQU1QX0lTTzg2MDE6bG9nX3RpbWV9JykgICAjIOaPkOWPluaXpeW/l+aXtumXtO+8jOW5tuWwhuWtl+auteWRveWQjeS4uiBsb2dfdGltZQpkZWZhdWx0X3RpbWUobG9nX3RpbWUpICAgICAgICAgICAgICAgICAgICAgIyDlsIbmj5Dlj5bliLDnmoQgbG9nX3RpbWUg5a2X5q616L2s5o2i5oiQ5pe26Ze05oizCgojIOWkhOeQhue7k+aenAp7CiAgImxvZ190aW1lIjogMTYxMDM1ODIzMTg4NzAwMDAwMCwKfQoKIyDlr7nkuo4gbG9nZ2luZyDph4fpm4bnmoTmlbDmja7vvIzmnIDlpb3lsIbml7bpl7TlrZfmrrXlkb3lkI3kuLogdGltZe+8jOWQpuWImSBsb2dnaW5nIOmHh+mbhuWZqOS8muS7peW9k+WJjeaXtumXtOWhq+WFhQpyZW5hbWUoInRpbWUiLCBsb2dfdGltZSkKCiMg5aSE55CG57uT5p6cCnsKICAidGltZSI6IDE2MTAzNTgyMzE4ODcwMDAwMDAsCn0KYGBgCgo=", + "prototype":"Zm4gZGVmYXVsdF90aW1lKGtleTogc3RyLCB0aW1lem9uZTogc3RyID0gIiIp", + "description":"5Lul5o+Q5Y+W55qE5p+Q5Liq5a2X5q615L2c5Li65pyA57uI5pWw5o2u55qE5pe26Ze05oiz", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "时间操作", + "行协议操作" + ] + } + }, + "drop()":{ + "doc":"IyMjIGBkcm9wKClgIHsjZm4tZHJvcH0KCuWHveaVsOWOn+Wei++8mmBmbiBkcm9wKClgCgrlh73mlbDor7TmmI7vvJrkuKLlvIPmlbTmnaHml6Xlv5fvvIzkuI3ov5vooYzkuIrkvKAKCmBgYHB5dGhvbgojIGluIDw8IHsic3RyX2EiOiAiMiIsICJzdHJfYiI6ICIzIn0KanNvbihfLCBzdHJfYSkKaWYgc3RyX2EgPT0gIjIiewogIGRyb3AoKQogIGV4aXQoKQp9Cmpzb24oXywgc3RyX2IpCgojIEV4dHJhY3RlZCBkYXRhKGRyb3A6IHRydWUsIGNvc3Q6IDMwLjAywrVzKToKIyB7CiMgICAibWVzc2FnZSI6ICJ7XCJzdHJfYVwiOiBcIjJcIiwgXCJzdHJfYlwiOiBcIjNcIn0iLAojICAgInN0cl9hIjogIjIiCiMgfQpgYGAKCg==", + "prototype":"Zm4gZHJvcCgp", + "description":"5Lii5byD5pW05p2h5pel5b+X77yM5LiN6L+b6KGM5LiK5Lyg", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "drop_key()":{ + "doc":"IyMjIGBkcm9wX2tleSgpYCB7I2ZuLWRyb3Ata2V5fQoK5Ye95pWw5Y6f5Z6L77yaYGZuIGRyb3Bfa2V5KGtleSlgCgrlh73mlbDor7TmmI7vvJrliKDpmaTlt7Lmj5Dlj5blrZfmrrUKCuWHveaVsOWPguaVsAoKLSBga2V5YDog5b6F5Yig6Zmk5a2X5q615ZCNCgrnpLrkvos6CgpgYGBweXRob24KZGF0YSA9IGB7XCJhZ2VcIjogMTcsIFwibmFtZVwiOiBcInpoYW5nc2FuXCIsIFwiaGVpZ2h0XCI6IDE4MH1gCgojIOWkhOeQhuiEmuacrApqc29uKF8sIGFnZSwpCmpzb24oXywgbmFtZSkKanNvbihfLCBoZWlnaHQpCmRyb3Bfa2V5KGhlaWdodCkKCiMg5aSE55CG57uT5p6cCnsKICAgICJhZ2UiOiAxNywKICAgICJuYW1lIjogInpoYW5nc2FuIgp9CmBgYAoK", + "prototype":"Zm4gZHJvcF9rZXkoa2V5KQ==", + "description":"5Yig6Zmk5bey5o+Q5Y+W5a2X5q61", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "drop_origin_data()":{ + "doc":"IyMjIGBkcm9wX29yaWdpbl9kYXRhKClgIHsjZm4tZHJvcC1vcmlnaW4tZGF0YX0KCuWHveaVsOWOn+Wei++8mmBmbiBkcm9wX29yaWdpbl9kYXRhKClgCgrlh73mlbDor7TmmI7vvJrkuKLlvIPliJ3lp4vljJbmlofmnKzvvIzlkKbliJnliJ3lp4vmlofmnKzmlL7lnKggbWVzc2FnZSDlrZfmrrXkuK0KCuekuuS+izoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogeyJhZ2UiOiAxNywgIm5hbWUiOiAiemhhbmdzYW4iLCAiaGVpZ2h0IjogMTgwfQoKIyDnu5Pmnpzpm4bkuK3liKDpmaQgbWVzc2FnZSDlhoXlrrkKZHJvcF9vcmlnaW5fZGF0YSgpCmBgYAoK", + "prototype":"Zm4gZHJvcF9vcmlnaW5fZGF0YSgp", + "description":"5Lii5byD5Yid5aeL5YyW5paH5pys77yM5ZCm5YiZ5Yid5aeL5paH5pys5pS+5ZyoIG1lc3NhZ2Ug5a2X5q615Lit", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "duration_precision()":{ + "doc":"IyMjIGBkdXJhdGlvbl9wcmVjaXNpb24oKWAgeyNmbi1kdXJhdGlvbi1wcmVjaXNpb259Cgrlh73mlbDljp/lnovvvJpgZm4gZHVyYXRpb25fcHJlY2lzaW9uKGtleSwgb2xkX3ByZWNpc2lvbjogc3RyLCBuZXdfcHJlY2lzaW9uOiBzdHIpYAoK5Ye95pWw6K+05piO77ya6L+b6KGMIGR1cmF0aW9uIOeyvuW6pueahOi9rOaNou+8jOmAmui/h+WPguaVsOaMh+WumuW9k+WJjeeyvuW6puWSjOebruagh+eyvuW6puOAguaUr+aMgeWcqCBzLCBtcywgdXMsIG5zIOmXtOi9rOaNouOAggoKYGBgcHl0aG9uCiMgaW4gPDwgeyJ0cyI6MTIzNDV9Cmpzb24oXywgdHMpCmNhc3QodHMsICJpbnQiKQpkdXJhdGlvbl9wcmVjaXNpb24odHMsICJtcyIsICJucyIpCgojIEV4dHJhY3RlZCBkYXRhKGRyb3A6IGZhbHNlLCBjb3N0OiAzMy4yNznCtXMpOgojIHsKIyAgICJtZXNzYWdlIjogIntcInRzXCI6MTIzNDV9IiwKIyAgICJ0cyI6IDEyMzQ1MDAwMDAwCiMgfQpgYGAK", + "prototype":"Zm4gZHVyYXRpb25fcHJlY2lzaW9uKGtleSwgb2xkX3ByZWNpc2lvbjogc3RyLCBuZXdfcHJlY2lzaW9uOiBzdHIp", + "description":"6L+b6KGMIGR1cmF0aW9uIOeyvuW6pueahOi9rOaNou+8jOmAmui/h+WPguaVsOaMh+WumuW9k+WJjeeyvuW6puWSjOebruagh+eyvuW6puOAguaUr+aMgeWcqCBzLCBtcywgdXMsIG5zIOmXtOi9rOaNouOAgg==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "时间操作" + ] + } + }, + "exit()":{ + "doc":"IyMjIGBleGl0KClgIHsjZm4tZXhpdH0KCuWHveaVsOWOn+Wei++8mmBmbiBleGl0KClgCgrlh73mlbDor7TmmI7vvJrnu5PmnZ/lvZPliY3kuIDmnaHml6Xlv5fnmoTop6PmnpDvvIzoi6XmnKrosIPnlKjlh73mlbAgZHJvcCgpIOS7jeS8mui+k+WHuuW3sue7j+ino+aekOeahOmDqOWIhgoKYGBgcHl0aG9uCiMgaW4gPDwgeyJzdHJfYSI6ICIyIiwgInN0cl9iIjogIjMifQpqc29uKF8sIHN0cl9hKQppZiBzdHJfYSA9PSAiMiJ7CiAgZXhpdCgpCn0KanNvbihfLCBzdHJfYikKCiMgRXh0cmFjdGVkIGRhdGEoZHJvcDogZmFsc2UsIGNvc3Q6IDQ4LjIzM8K1cyk6CiMgewojICAgIm1lc3NhZ2UiOiAie1wic3RyX2FcIjogXCIyXCIsIFwic3RyX2JcIjogXCIzXCJ9IiwKIyAgICJzdHJfYSI6ICIyIgojIH0KYGBgCgo=", + "prototype":"Zm4gZXhpdCgp", + "description":"57uT5p2f5b2T5YmN5LiA5p2h5pel5b+X55qE6Kej5p6Q77yM6Iul5pyq6LCD55So5Ye95pWwIGRyb3AoKSDku43kvJrovpPlh7rlt7Lnu4/op6PmnpDnmoTpg6jliIY=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "geoip()":{ + "doc":"IyMjIGBnZW9pcCgpYCB7I2ZuLWdlb2lwfQoK5Ye95pWw5Y6f5Z6L77yaYGZuIGdlb2lwKGlwOiBzdHIpYAoK5Ye95pWw6K+05piO77ya5ZyoIElQIOS4iui/veWKoOabtOWkmiBJUCDkv6Hmga/jgIIgYGdlb2lwKClgIOS8mumineWkluS6p+eUn+WkmuS4quWtl+aute+8jOWmgu+8mgoKLSBgaXNwYDog6L+Q6JCl5ZWGCi0gYGNpdHlgOiDln47luIIKLSBgcHJvdmluY2VgOiDnnIHku70KLSBgY291bnRyeWA6IOWbveWutgoK5Y+C5pWwOgoKLSBgaXBgOiDlt7Lnu4/mj5Dlj5blh7rmnaXnmoQgSVAg5a2X5q6177yM5pSv5oyBIElQdjQvNgoK56S65L6L77yaCgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja46IHsiaXAiOiIxLjIuMy40In0KCiMg5aSE55CG6ISa5pysCmpzb24oXywgaXApCmdlb2lwKGlwKQoKIyDlpITnkIbnu5PmnpwKewogICJjaXR5IiAgICAgOiAiQnJpc2JhbmUiLAogICJjb3VudHJ5IiAgOiAiQVUiLAogICJpcCIgICAgICAgOiAiMS4yLjMuNCIsCiAgInByb3ZpbmNlIiA6ICJRdWVlbnNsYW5kIiwKICAiaXNwIiAgICAgIDogInVua25vd24iCiAgIm1lc3NhZ2UiICA6ICJ7XCJpcFwiOiBcIjEuMi4zLjRcIn0iLAp9CmBgYAo=", + "prototype":"Zm4gZ2VvaXAoaXA6IHN0cik=", + "description":"5ZyoIElQIOS4iui/veWKoOabtOWkmiBJUCDkv6Hmga/jgIIgYGdlb2lwKClgIOS8mumineWkluS6p+eUn+WkmuS4quWtl+aute+8jOWmgu+8mg==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "网络" + ] + } + }, + "get_key()":{ + "doc":"IyMjIGBnZXRfa2V5KClgIHsjZm4tZ2V0LWtleX0KCuWHveaVsOWOn+Wei++8mmBmbiBnZXRfa2V5KGtleSlgCgrlh73mlbDor7TmmI7vvJrku44gcG9pbnQg5Lit6K+75Y+WIGtleSDnmoTlgLzvvIzogIzkuI3mmK/loIbmoIjkuIrnmoTlj5jph4/nmoTlgLwKCuWHveaVsOWPguaVsAoKLSBga2V5X25hbWVgOiBrZXkg55qE5ZCN56ewCgrnpLrkvovkuIA6CgpgYGBweXRob24KIyBzY2lwdCAxCmtleSA9ICJzaGFuZ2hhaSIKYWRkX2tleShrZXkpCmtleSA9ICJ0b2t5byIgCmFkZF9rZXkoYWRkX25ld19rZXksIGtleSkKCiMg5aSE55CG57uT5p6cCnsKICAiYWRkX25ld19rZXkiOiAidG9reW8iLAogICJrZXkiOiAic2hhbmdoYWkiLAp9CgpgYGAKCuekuuS+i+S6jDoKCmBgYHB5dGhvbgojIHNjaXB0IDIKa2V5ID0gInNoYW5naGFpIgphZGRfa2V5KGtleSkKa2V5ID0gInRva3lvIiAKYWRkX2tleShhZGRfbmV3X2tleSwgZ2V0X2tleShrZXkpKQoKI+WkhOeQhue7k+aenAp7CiAgImFkZF9uZXdfa2V5IjogInNoYW5naGFpIiwKICAia2V5IjogInNoYW5naGFpIiwKfQpgYGAK", + "prototype":"Zm4gZ2V0X2tleShrZXkp", + "description":"5LuOIHBvaW50IOS4reivu+WPliBrZXkg55qE5YC877yM6ICM5LiN5piv5aCG5qCI5LiK55qE5Y+Y6YeP55qE5YC8", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "grok()":{ + "doc":"IyMjIGBncm9rKClgIHsjZm4tZ3Jva30KCuWHveaVsOWOn+Wei++8mmBmbiBncm9rKGlucHV0OiBzdHIsIHBhdHRlcm46IHN0ciwgdHJpbV9zcGFjZTogYm9vbCA9IHRydWUpIGJvb2xgCgrlh73mlbDor7TmmI7vvJrpgJrov4cgYHBhdHRlcm5gIOaPkOWPluaWh+acrOS4siBgaW5wdXRgIOS4reeahOWGheWuue+8jOW9kyBwYXR0ZXJuIOWMuemFjSBpbnB1dCDmiJDlip/ml7bov5Tlm54gdHJ1ZSDlkKbliJnov5Tlm54gZmFsc2XjgIIKCuWPguaVsDoKCi0gYGlucHV0YO+8muW+heaPkOWPluaWh+acrO+8jOWPr+S7peaYr+WOn+Wni+aWh+acrO+8iGBfYO+8ieaIlue7j+i/h+WIneasoeaPkOWPluS5i+WQjueahOafkOS4qiBga2V5YAotIGBwYXR0ZXJuYDogZ3JvayDooajovr7lvI/vvIzooajovr7lvI/kuK3mlK/mjIHmjIflrpoga2V5IOeahOaVsOaNruexu+Wei++8mmJvb2wsIGZsb2F0LCBpbnQsIHN0cmluZyjlr7nlupQgcHBsIOeahCBzdHLvvIzkuqblj6/lhpnkuLogc3RyKe+8jOm7mOiupOS4uiBzdHJpbmcKLSBgdHJpbV9zcGFjZWA6IOWIoOmZpOaPkOWPluWHuueahOWtl+espuS4reeahOepuueZvemmluWwvuWtl+espu+8jOm7mOiupOWAvOS4uiB0cnVlCgpgYGBweXRob24KZ3JvayhfLCBwYXR0ZXJuKSAgICAjIOebtOaOpeS9v+eUqOi+k+WFpeeahOaWh+acrOS9nOS4uuWOn+Wni+aVsOaNrgpncm9rKGtleSwgcGF0dGVybikgICMg5a+55LmL5YmN5bey57uP5o+Q5Y+W5Ye65p2l55qE5p+Q5LiqIGtlee+8jOWBmuWGjeasoSBncm9rCmBgYAoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiAiMTIvMDEvMjAyMSAyMToxMzoxNC4xMjMiCgojIHBpcGxpbmXohJrmnKwKYWRkX3BhdHRlcm4oIl9zZWNvbmQiLCAiKD86KD86WzAtNV0/WzAtOV18NjApKD86WzouLF1bMC05XSspPykiKQphZGRfcGF0dGVybigiX21pbnV0ZSIsICIoPzpbMC01XVswLTldKSIpCmFkZF9wYXR0ZXJuKCJfaG91ciIsICIoPzoyWzAxMjNdfFswMV0/WzAtOV0pIikKYWRkX3BhdHRlcm4oInRpbWUiLCAiKFteMC05XT8pJXtfaG91cjpob3VyOnN0cmluZ306JXtfbWludXRlOm1pbnV0ZTppbnR9KD86OiV7X3NlY29uZDpzZWNvbmQ6ZmxvYXR9KShbXjAtOV0/KSIpCgpncm9rX21hdGNoX29rID0gZ3JvayhfLCAiJXtEQVRFX1VTOmRhdGV9ICV7dGltZX0iKQoKYWRkX2tleShncm9rX21hdGNoX29rKQoKIyDlpITnkIbnu5PmnpwKewogICJkYXRlIjogIjEyLzAxLzIwMjEiLAogICJob3VyIjogIjIxIiwKICAibWVzc2FnZSI6ICIxMi8wMS8yMDIxIDIxOjEzOjE0LjEyMyIsCiAgIm1pbnV0ZSI6IDEzLAogICJzZWNvbmQiOiAxNC4xMjMKfQoKewogICJkYXRlIjogIjEyLzAxLzIwMjEiLAogICJncm9rX21hdGNoX29rIjogdHJ1ZSwKICAiaG91ciI6ICIyMSIsCiAgIm1lc3NhZ2UiOiAiMTIvMDEvMjAyMSAyMToxMzoxNC4xMjMiLAogICJtaW51dGUiOiAxMywKICAic2Vjb25kIjogMTQuMTIzLAogICJzdGF0dXMiOiAidW5rbm93biIsCiAgInRpbWUiOiAxNjY1OTk0MTg3NDczOTE3NzI0Cn0KYGBgCg==", + "prototype":"Zm4gZ3JvayhpbnB1dDogc3RyLCBwYXR0ZXJuOiBzdHIsIHRyaW1fc3BhY2U6IGJvb2wgPSB0cnVlKSBib29s", + "description":"6YCa6L+HIGBwYXR0ZXJuYCDmj5Dlj5bmlofmnKzkuLIgYGlucHV0YCDkuK3nmoTlhoXlrrnvvIzlvZMgcGF0dGVybiDljLnphY0gaW5wdXQg5oiQ5Yqf5pe26L+U5ZueIHRydWUg5ZCm5YiZ6L+U5ZueIGZhbHNl44CC", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "Grok", + "RegExp" + ] + } + }, + "group_between()":{ + "doc":"IyMjIGBncm91cF9iZXR3ZWVuKClgIHsjZm4tZ3JvdXAtYmV0d2Vlbn0KCuWHveaVsOWOn+Wei++8mmBmbiBncm91cF9iZXR3ZWVuKGtleTogaW50LCBiZXR3ZWVuOiBsaXN0LCBuZXdfdmFsdWU6IGludHxmbG9hdHxib29sfHN0cnxtYXB8bGlzdHxuaWwsIG5ld19rZXkpYAoK5Ye95pWw6K+05piO77ya5aaC5p6cIGBrZXlgIOWAvOWcqOaMh+WumuiMg+WbtCBgYmV0d2VlbmAg5YaF77yI5rOo5oSP77ya5Y+q6IO95piv5Y2V5Liq5Yy66Ze077yM5aaCIGBbMCwxMDBdYO+8ie+8jOWImeWPr+WIm+W7uuS4gOS4quaWsOWtl+aute+8jOW5tui1i+S6iOaWsOWAvOOAguiLpeS4jeaPkOS+m+aWsOWtl+aute+8jOWImeimhuebluWOn+Wtl+auteWAvAoK56S65L6L5LiAOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiB7Imh0dHBfc3RhdHVzIjogMjAwLCAiY29kZSI6ICJzdWNjZXNzIn0KCmpzb24oXywgaHR0cF9zdGF0dXMpCgojIOWmguaenOWtl+autSBodHRwX3N0YXR1cyDlgLzlnKjmjIflrprojIPlm7TlhoXvvIzliJnlsIblhbblgLzmlLnkuLogIk9LIgpncm91cF9iZXR3ZWVuKGh0dHBfc3RhdHVzLCBbMjAwLCAzMDBdLCAiT0siKQpgCgojIOWkhOeQhue7k+aenAp7CiAgICAiaHR0cF9zdGF0dXMiOiAiT0siCn0KYGBgCgrnpLrkvovkuow6CgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja46IHsiaHR0cF9zdGF0dXMiOiAyMDAsICJjb2RlIjogInN1Y2Nlc3MifQoKanNvbihfLCBodHRwX3N0YXR1cykKCiMg5aaC5p6c5a2X5q61IGh0dHBfc3RhdHVzIOWAvOWcqOaMh+WumuiMg+WbtOWGhe+8jOWImeaWsOW7uiBzdGF0dXMg5a2X5q6177yM5YW25YC85Li6ICJPSyIKZ3JvdXBfYmV0d2VlbihodHRwX3N0YXR1cywgWzIwMCwgMzAwXSwgIk9LIiwgc3RhdHVzKQoKIyDlpITnkIbnu5PmnpwKewogICAgImh0dHBfc3RhdHVzIjogMjAwLAogICAgInN0YXR1cyI6ICJPSyIKfQpgYGAK", + "prototype":"Zm4gZ3JvdXBfYmV0d2VlbihrZXk6IGludCwgYmV0d2VlbjogbGlzdCwgbmV3X3ZhbHVlOiBpbnR8ZmxvYXR8Ym9vbHxzdHJ8bWFwfGxpc3R8bmlsLCBuZXdfa2V5KQ==", + "description":"5aaC5p6cIGBrZXlgIOWAvOWcqOaMh+WumuiMg+WbtCBgYmV0d2VlbmAg5YaF77yI5rOo5oSP77ya5Y+q6IO95piv5Y2V5Liq5Yy66Ze077yM5aaCIGBbMCwxMDBdYO+8ie+8jOWImeWPr+WIm+W7uuS4gOS4quaWsOWtl+aute+8jOW5tui1i+S6iOaWsOWAvOOAguiLpeS4jeaPkOS+m+aWsOWtl+aute+8jOWImeimhuebluWOn+Wtl+auteWAvA==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "group_in()":{ + "doc":"IyMjIGBncm91cF9pbigpYCB7I2ZuLWdyb3VwLWlufQoK5Ye95pWw5Y6f5Z6L77yaYGZuIGdyb3VwX2luKGtleTogaW50fGZsb2F0fGJvb2x8c3RyLCByYW5nZTogbGlzdCwgbmV3X3ZhbHVlOiBpbnR8ZmxvYXR8Ym9vbHxzdHJ8bWFwfGxpc3R8bmlsLCBuZXcta2V5ID0gIiIpYAoK5Ye95pWw6K+05piO77ya5aaC5p6cIGBrZXlgIOWAvOWcqOWIl+ihqCBgaW5gIOS4re+8jOWImeWPr+WIm+W7uuS4gOS4quaWsOWtl+aute+8jOW5tui1i+S6iOaWsOWAvOOAguiLpeS4jeaPkOS+m+aWsOWtl+aute+8jOWImeimhuebluWOn+Wtl+auteWAvAoK56S65L6LOgoKYGBgcHl0aG9uCiMg5aaC5p6c5a2X5q61IGxvZ19sZXZlbCDlgLzlnKjliJfooajkuK3vvIzliJnlsIblhbblgLzmlLnkuLogIk9LIgpncm91cF9pbihsb2dfbGV2ZWwsIFsiaW5mbyIsICJkZWJ1ZyJdLCAiT0siKQoKIyDlpoLmnpzlrZfmrrUgaHR0cF9zdGF0dXMg5YC85Zyo5oyH5a6a5YiX6KGo5Lit77yM5YiZ5paw5bu6IHN0YXR1cyDlrZfmrrXvvIzlhbblgLzkuLogIm5vdC1vayIKZ3JvdXBfaW4obG9nX2xldmVsLCBbImVycm9yIiwgInBhbmljIl0sICJub3Qtb2siLCBzdGF0dXMpCmBgYAo=", + "prototype":"Zm4gZ3JvdXBfaW4oa2V5OiBpbnR8ZmxvYXR8Ym9vbHxzdHIsIHJhbmdlOiBsaXN0LCBuZXdfdmFsdWU6IGludHxmbG9hdHxib29sfHN0cnxtYXB8bGlzdHxuaWwsIG5ldy1rZXkgPSAiIik=", + "description":"5aaC5p6cIGBrZXlgIOWAvOWcqOWIl+ihqCBgaW5gIOS4re+8jOWImeWPr+WIm+W7uuS4gOS4quaWsOWtl+aute+8jOW5tui1i+S6iOaWsOWAvOOAguiLpeS4jeaPkOS+m+aWsOWtl+aute+8jOWImeimhuebluWOn+Wtl+auteWAvA==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "json()":{ + "doc":"IyMjIGBqc29uKClgIHsjZm4tanNvbn0KCuWHveaVsOWOn+Wei++8mmBmbiBqc29uKGlucHV0OiBzdHIsIGpzb25fcGF0aCwgbmV3a2V5LCB0cmltX3NwYWNlOiBib29sID0gdHJ1ZSlgCgrlh73mlbDor7TmmI7vvJrmj5Dlj5YganNvbiDkuK3nmoTmjIflrprlrZfmrrXvvIzlubblj6/lsIblhbblkb3lkI3miJDmlrDnmoTlrZfmrrXjgIIKCuWPguaVsDoKCi0gYGlucHV0YDog5b6F5o+Q5Y+WIGpzb27vvIzlj6/ku6XmmK/ljp/lp4vmlofmnKzvvIhgX2DvvInmiJbnu4/ov4fliJ3mrKHmj5Dlj5bkuYvlkI7nmoTmn5DkuKogYGtleWAKLSBganNvbl9wYXRoYDoganNvbiDot6/lvoTkv6Hmga8KLSBgbmV3a2V5YO+8muaPkOWPluWQjuaVsOaNruWGmeWFpeaWsCBrZXkKLSBgdHJpbV9zcGFjZWA6IOWIoOmZpOaPkOWPluWHuueahOWtl+espuS4reeahOepuueZvemmluWwvuWtl+espu+8jOm7mOiupOWAvOS4uiB0cnVlCgpgYGBweXRob24KIyDnm7TmjqXmj5Dlj5bljp/lp4vovpPlhaUganNvbiDkuK3nmoR4LnnlrZfmrrXvvIzlubblj6/lsIblhbblkb3lkI3miJDmlrDlrZfmrrVhYmMKanNvbihfLCB4LnksIGFiYykKCiMg5bey5o+Q5Y+W5Ye655qE5p+Q5LiqIGBrZXlg77yM5a+55YW25YaN5o+Q5Y+W5LiA5qyhIGB4Lnlg77yM5o+Q5Y+W5ZCO5a2X5q615ZCN5Li6IGB4LnlgCmpzb24oa2V5LCB4LnkpIApgYGAKCuekuuS+i+S4gDoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogeyJpbmZvIjogeyJhZ2UiOiAxNywgIm5hbWUiOiAiemhhbmdzYW4iLCAiaGVpZ2h0IjogMTgwfX0KCiMg5aSE55CG6ISa5pysCmpzb24oXywgaW5mbywgInpoYW5nc2FuIikKanNvbih6aGFuZ3NhbiwgbmFtZSkKanNvbih6aGFuZ3NhbiwgYWdlLCAi5bm06b6EIikKCiMg5aSE55CG57uT5p6cCnsKICAgICJtZXNzYWdlIjogIntcImluZm9cIjoge1wiYWdlXCI6IDE3LCBcIm5hbWVcIjogXCJ6aGFuZ3NhblwiLCBcImhlaWdodFwiOiAxODB9fQogICAgInpoYW5nc2FuIjogewogICAgICAgICJhZ2UiOiAxNywKICAgICAgICAiaGVpZ2h0IjogMTgwLAogICAgICAgICJuYW1lIjogInpoYW5nc2FuIgogICAgfQp9CmBgYAoK56S65L6L5LqMOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uCiMgICAgZGF0YSA9IHsKIyAgICAgICAgIm5hbWUiOiB7ImZpcnN0IjogIlRvbSIsICJsYXN0IjogIkFuZGVyc29uIn0sCiMgICAgICAgICJhZ2UiOjM3LAojICAgICAgICAiY2hpbGRyZW4iOiBbIlNhcmEiLCJBbGV4IiwiSmFjayJdLAojICAgICAgICAiZmF2Lm1vdmllIjogIkRlZXIgSHVudGVyIiwKIyAgICAgICAgImZyaWVuZHMiOiBbCiMgICAgICAgICAgICB7ImZpcnN0IjogIkRhbGUiLCAibGFzdCI6ICJNdXJwaHkiLCAiYWdlIjogNDQsICJuZXRzIjogWyJpZyIsICJmYiIsICJ0dyJdfSwKIyAgICAgICAgICAgIHsiZmlyc3QiOiAiUm9nZXIiLCAibGFzdCI6ICJDcmFpZyIsICJhZ2UiOiA2OCwgIm5ldHMiOiBbImZiIiwgInR3Il19LAojICAgICAgICAgICAgeyJmaXJzdCI6ICJKYW5lIiwgImxhc3QiOiAiTXVycGh5IiwgImFnZSI6IDQ3LCAibmV0cyI6IFsiaWciLCAidHciXX0KIyAgICAgICAgXQojICAgIH0KCiMg5aSE55CG6ISa5pysCmpzb24oXywgbmFtZSkganNvbihuYW1lLCBmaXJzdCkKYGBgCgrnpLrkvovkuIk6CgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja4KIyAgICBbCiMgICAgICAgICAgICB7ImZpcnN0IjogIkRhbGUiLCAibGFzdCI6ICJNdXJwaHkiLCAiYWdlIjogNDQsICJuZXRzIjogWyJpZyIsICJmYiIsICJ0dyJdfSwKIyAgICAgICAgICAgIHsiZmlyc3QiOiAiUm9nZXIiLCAibGFzdCI6ICJDcmFpZyIsICJhZ2UiOiA2OCwgIm5ldHMiOiBbImZiIiwgInR3Il19LAojICAgICAgICAgICAgeyJmaXJzdCI6ICJKYW5lIiwgImxhc3QiOiAiTXVycGh5IiwgImFnZSI6IDQ3LCAibmV0cyI6IFsiaWciLCAidHciXX0KIyAgICBdCiAgICAKIyDlpITnkIbohJrmnKwsIGpzb27mlbDnu4TlpITnkIYKanNvbihfLCBbMF0ubmV0c1stMV0pCmBgYAo=", + "prototype":"Zm4ganNvbihpbnB1dDogc3RyLCBqc29uX3BhdGgsIG5ld2tleSwgdHJpbV9zcGFjZTogYm9vbCA9IHRydWUp", + "description":"5o+Q5Y+WIGpzb24g5Lit55qE5oyH5a6a5a2X5q6177yM5bm25Y+v5bCG5YW25ZG95ZCN5oiQ5paw55qE5a2X5q6144CC", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "JSON" + ] + } + }, + "len()":{ + "doc":"IyMjIGBsZW4oKWAgeyNmbi1sZW59Cgrlh73mlbDljp/lnovvvJpgZm4gbGVuKHZhbDogc3RyfG1hcHxsaXN0KSBpbnRgCgrlh73mlbDor7TmmI7vvJrorqHnrpcgc3RyaW5nIOWtl+iKguaVsO+8jG1hcCDlkowgbGlzdCDnmoTlhYPntKDkuKrmlbDjgIIKCuWPguaVsDoKCi0gYHZhbGA6IOWPr+S7peaYryBtYXDjgIFsaXN0IOaIliBzdHJpbmcKCuekuuS+izoKCmBgYHB5dGhvbgojIOS+iyAxCmFkZF9rZXkoYWJjLCBsZW4oImFiYyIpKQojIOi+k+WHugp7CiAiYWJjIjogMywKfQoKIyDkvosgMgphZGRfa2V5KGFiYywgbGVuKFsiYWJjIl0pKQoj5aSE55CG57uT5p6cCnsKICAiYWJjIjogMSwKfQpgYGAK", + "prototype":"Zm4gbGVuKHZhbDogc3RyfG1hcHxsaXN0KSBpbnQ=", + "description":"6K6h566XIHN0cmluZyDlrZfoioLmlbDvvIxtYXAg5ZKMIGxpc3Qg55qE5YWD57Sg5Liq5pWw44CC", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "load_json()":{ + "doc":"IyMjIGBsb2FkX2pzb24oKWAgeyNmbi1sb2FkX2pzb259Cgrlh73mlbDljp/lnovvvJpgZm4gbG9hZF9qc29uKHZhbDogc3RyKSBuaWx8Ym9vbHxmbG9hdHxtYXB8bGlzdGAKCuWHveaVsOivtOaYju+8muWwhiBqc29uIOWtl+espuS4sui9rOaNouaIkCBtYXDjgIFsaXN044CBbmls44CBYm9vbOOAgWZsb2F0IOeahOWFtuS4reS4gOenje+8jOWPr+mAmui/hyBpbmRleCDooajovr7lvI/lj5blgLzlj4rkv67mlLnlgLzjgIIKCuWPguaVsDoKCi0gYHZhbGA6IOimgeaxguaYryBzdHJpbmcg57G75Z6L55qE5pWw5o2uCgrnpLrkvos6CgpgYGBweXRob24KIyBfOiB7ImEiOnsiZmlyc3QiOiBbMi4yLCAxLjFdLCAiZmYiOiAiWzIuMiwgMS4xXSIsInNlY29uZCI6MiwidGhpcmQiOiJhQkMiLCJmb3J0aCI6dHJ1ZX0sImFnZSI6NDd9CmFiYyA9IGxvYWRfanNvbihfKQoKYWRkX2tleShhYmMsIGFiY1siYSJdWyJmaXJzdCJdWy0xXSkKCmFiY1siYSJdWyJmaXJzdCJdWy0xXSA9IDExCgojIOmcgOimgeWwhuWghuagiOS4iueahOaVsOaNruWQjOatpeWIsCBwb2ludCDkuK0KYWRkX2tleShhYmMsIGFiY1siYSJdWyJmaXJzdCJdWy0xXSkKCmFkZF9rZXkobGVuX2FiYywgbGVuKGFiYykpCgphZGRfa2V5KGxlbl9hYmMsIGxlbihsb2FkX2pzb24oYWJjWyJhIl1bImZmIl0pKSkKYGBgCg==", + "prototype":"Zm4gbG9hZF9qc29uKHZhbDogc3RyKSBuaWx8Ym9vbHxmbG9hdHxtYXB8bGlzdA==", + "description":"5bCGIGpzb24g5a2X56ym5Liy6L2s5o2i5oiQIG1hcOOAgWxpc3TjgIFuaWzjgIFib29s44CBZmxvYXQg55qE5YW25Lit5LiA56eN77yM5Y+v6YCa6L+HIGluZGV4IOihqOi+vuW8j+WPluWAvOWPiuS/ruaUueWAvOOAgg==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "JSON" + ] + } + }, + "lowercase()":{ + "doc":"IyMjIGBsb3dlcmNhc2UoKWAgeyNmbi1sb3dlcmNhc2V9Cgrlh73mlbDljp/lnovvvJpgZm4gbG93ZXJjYXNlKGtleTogc3RyKWAKCuWHveaVsOivtOaYju+8muWwhuW3suaPkOWPliBrZXkg5Lit5YaF5a656L2s5o2i5oiQ5bCP5YaZCgrlh73mlbDlj4LmlbAKCi0gYGtleWA6IOaMh+WumuW3suaPkOWPlueahOW+hei9rOaNouWtl+auteWQjQoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiB7ImZpcnN0IjogIkhlTExvIiwic2Vjb25kIjoyLCJ0aGlyZCI6ImFCQyIsImZvcnRoIjp0cnVlfQoKIyDlpITnkIbohJrmnKwKanNvbihfLCBmaXJzdCkgbG93ZXJjYXNlKGZpcnN0KQoKIyDlpITnkIbnu5PmnpwKewoJCSJmaXJzdCI6ICJoZWxsbyIKfQpgYGAKCg==", + "prototype":"Zm4gbG93ZXJjYXNlKGtleTogc3RyKQ==", + "description":"5bCG5bey5o+Q5Y+WIGtleSDkuK3lhoXlrrnovazmjaLmiJDlsI/lhpk=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "match()":{ + "doc":"IyMjIGBtYXRjaCgpYCB7I2ZuLW1hdGNofQoK5Ye95pWw5Y6f5Z6L77yaYGZuIG1hdGNoKHBhdHRlcm46IHN0ciwgczogc3RyKSBib29sYAoK5Ye95pWw6K+05piO77ya5L2/55So5oyH5a6a55qE5q2j5YiZ6KGo6L6+5byP5Yy56YWN5a2X56ym5Liy77yM5Yy56YWN5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2UKCuWPguaVsDoKCi0gYHBhdHRlcm5gOiDmraPliJnooajovr7lvI8KLSBgc2A6IOW+heWMuemFjeeahOWtl+espuS4sgoK56S65L6LOgoKYGBgcHl0aG9uCiMg6ISa5pysCnRlc3RfMSA9ICJwYXR0ZXJuIDEsYSIKdGVzdF8yID0gInBhdHRlcm4gLTEsIgoKYWRkX2tleShtYXRjaF8xLCBtYXRjaCgnJydcdytcc1ssXHddKycnJywgdGVzdF8xKSkgCgphZGRfa2V5KG1hdGNoXzIsIG1hdGNoKCcnJ1x3K1xzWyxcd10rJycnLCB0ZXN0XzIpKSAKCiMg5aSE55CG57uT5p6cCnsKICAgICJtYXRjaF8xIjogdHJ1ZSwKICAgICJtYXRjaF8yIjogZmFsc2UKfQpgYGAK", + "prototype":"Zm4gbWF0Y2gocGF0dGVybjogc3RyLCBzOiBzdHIpIGJvb2w=", + "description":"5L2/55So5oyH5a6a55qE5q2j5YiZ6KGo6L6+5byP5Yy56YWN5a2X56ym5Liy77yM5Yy56YWN5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2U=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "RegExp" + ] + } + }, + "mquery_refer_table()":{ + "doc":"IyMjIGBtcXVlcnlfcmVmZXJfdGFibGUoKWAgeyNmbi1tcXVlcnktcmVmZXItdGFibGV9Cgrlh73mlbDljp/lnovvvJpgZm4gbXF1ZXJ5X3JlZmVyX3RhYmxlKHRhYmxlX25hbWU6IHN0ciwga2V5czogbGlzdCwgdmFsdWVzOiBsaXN0KWAKCuWHveaVsOivtOaYju+8mumAmui/h+aMh+WumuWkmuS4qiBrZXkg5p+l6K+i5aSW6YOo5byV55So6KGo77yM5bm25bCG5p+l6K+i57uT5p6c55qE6aaW6KGM55qE5omA5pyJ5YiX6L+95Yqg5YiwIGZpZWxkIOS4reOAggoK5Y+C5pWwOgoKLSBgdGFibGVfbmFtZWA6IOW+heafpeaJvueahOihqOWQjQotIGBrZXlzYDog5aSa5Liq5YiX5ZCN5p6E5oiQ55qE5YiX6KGoCi0gYHZhbHVlc2A6IOavj+S4quWIl+WvueW6lOeahOWAvAoK56S65L6LOgoKYGBgcHl0aG9uCmpzb24oXywgdGFibGUpCmpzb24oXywga2V5KQpqc29uKF8sIHZhbHVlKQoKIyDmn6Xor6Llubbov73liqDlvZPliY3liJfnmoTmlbDmja7vvIzpu5jorqTkvZzkuLogZmllbGQg5re75Yqg5Yiw5pWw5o2u5LitCm1xdWVyeV9yZWZlcl90YWJsZSh0YWJsZSwgdmFsdWVzPVt2YWx1ZSwgZmFsc2VdLCBrZXlzPVtrZXksICJjb2w0Il0pCmBgYAoK56S65L6L57uT5p6cOgoKYGBganNvbgp7CiAgImNvbCI6ICJhYiIsCiAgImNvbDIiOiAxMjM0LAogICJjb2wzIjogMTIzNSwKICAiY29sNCI6IGZhbHNlLAogICJrZXkiOiAiY29sMiIsCiAgIm1lc3NhZ2UiOiAie1widGFibGVcIjogXCJ0YWJsZV9hYmNcIiwgXCJrZXlcIjogXCJjb2wyXCIsIFwidmFsdWVcIjogMTIzNC4wfSIsCiAgInN0YXR1cyI6ICJ1bmtub3duIiwKICAidGFibGUiOiAidGFibGVfYWJjIiwKICAidGltZSI6ICIyMDIyLTA4LTE2VDE2OjIzOjMxLjk0MDYwMDI4MSswODowMCIsCiAgInZhbHVlIjogMTIzNAp9CgpgYGAK", + "prototype":"Zm4gbXF1ZXJ5X3JlZmVyX3RhYmxlKHRhYmxlX25hbWU6IHN0ciwga2V5czogbGlzdCwgdmFsdWVzOiBsaXN0KQ==", + "description":"6YCa6L+H5oyH5a6a5aSa5LiqIGtleSDmn6Xor6LlpJbpg6jlvJXnlKjooajvvIzlubblsIbmn6Xor6Lnu5PmnpznmoTpppbooYznmoTmiYDmnInliJfov73liqDliLAgZmllbGQg5Lit44CC", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "nullif()":{ + "doc":"IyMjIGBudWxsaWYoKWAgeyNmbi1udWxsaWZ9Cgrlh73mlbDljp/lnovvvJpgZm4gbnVsbGlmKGtleSwgdmFsdWUpYAoK5Ye95pWw6K+05piO77ya6Iul5bey5o+Q5Y+WIGBrZXlgIOaMh+WumueahOWtl+auteWGheWuueetieS6jiBgdmFsdWVgIOWAvO+8jOWImeWIoOmZpOatpOWtl+autQoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDmjIflrprlrZfmrrUKLSBgdmFsdWVgOiDnm67moIflgLwKCuekuuS+izoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogeyJmaXJzdCI6IDEsInNlY29uZCI6MiwidGhpcmQiOiJhQkMiLCJmb3J0aCI6dHJ1ZX0KCiMg5aSE55CG6ISa5pysCmpzb24oXywgZmlyc3QpIGpzb24oXywgc2Vjb25kKSBudWxsaWYoZmlyc3QsICIxIikKCiMg5aSE55CG57uT5p6cCnsKICAgICJzZWNvbmQiOjIKfQpgYGAKCj4g5rOo77ya6K+l5Yqf6IO95Y+v6YCa6L+HIGBpZi9lbHNlYCDor63kuYnmnaXlrp7njrDvvJoKCmBgYHB5dGhvbgppZiBmaXJzdCA9PSAiMSIgewoJZHJvcF9rZXkoZmlyc3QpCn0KYGBgCgo=", + "prototype":"Zm4gbnVsbGlmKGtleSwgdmFsdWUp", + "description":"6Iul5bey5o+Q5Y+WIGBrZXlgIOaMh+WumueahOWtl+auteWGheWuueetieS6jiBgdmFsdWVgIOWAvO+8jOWImeWIoOmZpOatpOWtl+autQ==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "parse_date()":{ + "doc":"IyMjIGBwYXJzZV9kYXRlKClgIHsjZm4tcGFyc2UtZGF0ZX0KCuWHveaVsOWOn+Wei++8mmBmbiBwYXJzZV9kYXRlKGtleTogc3RyLCB5eTogc3RyLCBNTTogc3RyLCBkZDogc3RyLCBoaDogc3RyLCBtbTogc3RyLCBzczogc3RyLCBtczogc3RyLCB6b25lOiBzdHIpYAoK5Ye95pWw6K+05piO77ya5bCG5Lyg5YWl55qE5pel5pyf5a2X5q615ZCE6YOo5YiG55qE5YC86L2s5YyW5Li65pe26Ze05oizCgrlh73mlbDlj4LmlbAKCi0gYGtleWA6IOaWsOaPkuWFpeeahOWtl+autQotIGB5eWAgOiDlubTku73mlbDlrZflrZfnrKbkuLLvvIzmlK/mjIHlm5vkvY3miJbkuKTkvY3mlbDlrZflrZfnrKbkuLLvvIzkuLrnqbrlrZfnrKbkuLLvvIzliJnlpITnkIbml7blj5blvZPliY3lubTku70KLSBgTU1gOiAg5pyI5Lu95a2X56ym5LiyLCDmlK/mjIHmlbDlrZfvvIzoi7HmlofvvIzoi7HmlofnvKnlhpkKLSBgZGRgOiDml6XlrZfnrKbkuLIKLSBgaGhgOiDlsI/ml7blrZfnrKbkuLIKLSBgbW1gOiDliIbpkp/lrZfnrKbkuLIKLSBgc3NgOiDnp5LlrZfnrKbkuLIKLSBgbXNgOiDmr6vnp5LlrZfnrKbkuLIKLSBgdXNgOiDlvq7np5LlrZfnrKbkuLIKLSBgbnNgOiDnurPnp5LlrZfnrKbkuLIKLSBgem9uZWA6IOaXtuWMuuWtl+espuS4su+8jOKAnCs44oCd5oiWXCJBc2lhL1NoYW5naGFpXCLlvaLlvI8KCuekuuS+izoKCmBgYHB5dGhvbgpwYXJzZV9kYXRlKGFhLCAiMjAyMSIsICJNYXkiLCAiMTIiLCAiMTAiLCAiMTAiLCAiMzQiLCAiIiwgIkFzaWEvU2hhbmdoYWkiKSAjIOe7k+aenCBhYT0xNjIwNzg1NDM0MDAwMDAwMDAwCgpwYXJzZV9kYXRlKGFhLCAiMjAyMSIsICIxMiIsICIxMiIsICIxMCIsICIxMCIsICIzNCIsICIiLCAiQXNpYS9TaGFuZ2hhaSIpICMg57uT5p6cIGFhPTE2MzkyNzUwMzQwMDAwMDAwMDAKCnBhcnNlX2RhdGUoYWEsICIyMDIxIiwgIjEyIiwgIjEyIiwgIjEwIiwgIjEwIiwgIjM0IiwgIjEwMCIsICJBc2lhL1NoYW5naGFpIikgIyDnu5PmnpwgYWE9MTYzOTI3NTAzNDAwMDAwMDEwMAoKcGFyc2VfZGF0ZShhYSwgIjIwIiwgIkZlYnJ1YXJ5IiwgIjEyIiwgIjEwIiwgIjEwIiwgIjM0IiwgIiIsICIrOCIpIOe7k+aenCBhYT0xNTgxNDczNDM0MDAwMDAwMDAwCmBgYAo=", + "prototype":"Zm4gcGFyc2VfZGF0ZShrZXk6IHN0ciwgeXk6IHN0ciwgTU06IHN0ciwgZGQ6IHN0ciwgaGg6IHN0ciwgbW06IHN0ciwgc3M6IHN0ciwgbXM6IHN0ciwgem9uZTogc3RyKQ==", + "description":"5bCG5Lyg5YWl55qE5pel5pyf5a2X5q615ZCE6YOo5YiG55qE5YC86L2s5YyW5Li65pe26Ze05oiz", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "时间操作" + ] + } + }, + "parse_duration()":{ + "doc":"IyMjIGBwYXJzZV9kdXJhdGlvbigpYCB7I2ZuLXBhcnNlLWR1cmF0aW9ufQoK5Ye95pWw5Y6f5Z6L77yaYGZuIHBhcnNlX2R1cmF0aW9uKGtleTogc3RyKWAKCuWHveaVsOivtOaYju+8muWmguaenCBga2V5YCDnmoTlgLzmmK/kuIDkuKogZ29sYW5nIOeahCBkdXJhdGlvbiDlrZfnrKbkuLLvvIjlpoIgYDEyM21zYO+8ie+8jOWImeiHquWKqOWwhiBga2V5YCDop6PmnpDmiJDnurPnp5LkuLrljZXkvY3nmoTmlbTmlbAKCuebruWJjSBnb2xhbmcg5Lit55qEIGR1cmF0aW9uIOWNleS9jeWmguS4i++8mgoKLSBgbnNgIOe6s+enkgotIGB1cy/CtXNgIOW+ruenkgotIGBtc2Ag5q+r56eSCi0gYHNgIOenkgotIGBtYCDliIbpkp8KLSBgaGAg5bCP5pe2Cgrlh73mlbDlj4LmlbAKCi0gYGtleWA6IOW+heino+aekOeahOWtl+autQoK56S65L6LOgoKYGBgcHl0aG9uCiMg5YGH5a6aIGFiYyA9ICIzLjVzIgpwYXJzZV9kdXJhdGlvbihhYmMpICMg57uT5p6cIGFiYyA9IDM1MDAwMDAwMDAKCiMg5pSv5oyB6LSf5pWwOiBhYmMgPSAiLTMuNXMiCnBhcnNlX2R1cmF0aW9uKGFiYykgIyDnu5PmnpwgYWJjID0gLTM1MDAwMDAwMDAKCiMg5pSv5oyB5rWu54K5OiBhYmMgPSAiLTIuM3MiCnBhcnNlX2R1cmF0aW9uKGFiYykgIyDnu5PmnpwgYWJjID0gLTIzMDAwMDAwMDAKCmBgYAoK", + "prototype":"Zm4gcGFyc2VfZHVyYXRpb24oa2V5OiBzdHIp", + "description":"5aaC5p6cIGBrZXlgIOeahOWAvOaYr+S4gOS4qiBnb2xhbmcg55qEIGR1cmF0aW9uIOWtl+espuS4su+8iOWmgiBgMTIzbXNg77yJ77yM5YiZ6Ieq5Yqo5bCGIGBrZXlgIOino+aekOaIkOe6s+enkuS4uuWNleS9jeeahOaVtOaVsA==", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "时间操作" + ] + } + }, + "query_refer_table()":{ + "doc":"IyMjIGBxdWVyeV9yZWZlcl90YWJsZSgpYCB7I2ZuLXF1ZXJ5LXJlZmVyLXRhYmxlfQoK5Ye95pWw5Y6f5Z6L77yaYGZuIHF1ZXJ5X3JlZmVyX3RhYmxlKHRhYmxlX25hbWU6IHN0ciwga2V5OiBzdHIsIHZhbHVlKWAKCuWHveaVsOivtOaYju+8mumAmui/h+aMh+WumueahCBrZXkg5p+l6K+i5aSW6YOo5byV55So6KGo77yM5bm25bCG5p+l6K+i57uT5p6c55qE6aaW6KGM55qE5omA5pyJ5YiX6L+95Yqg5YiwIGZpZWxkIOS4reOAggoK5Y+C5pWwOgoKLSBgdGFibGVfbmFtZWA6IOW+heafpeaJvueahOihqOWQjQotIGBrZXlgOiDliJflkI0KLSBgdmFsdWVgOiDliJflr7nlupTnmoTlgLwKCuekuuS+izoKCmBgYHB5dGhvbgojIOS7jui+k+WFpeS4reaPkOWPliDooajlkI3vvIzliJflkI3vvIzliJflgLwKanNvbihfLCB0YWJsZSkKanNvbihfLCBrZXkpCmpzb24oXywgdmFsdWUpCgojIOafpeivouW5tui/veWKoOW9k+WJjeWIl+eahOaVsOaNru+8jOm7mOiupOS9nOS4uiBmaWVsZCDmt7vliqDliLDmlbDmja7kuK0KcXVlcnlfcmVmZXJfdGFibGUodGFibGUsIGtleSwgdmFsdWUpCgpgYGAKCuekuuS+i+e7k+aenDoKCmBgYGpzb24KewogICJjb2wiOiAiYWIiLAogICJjb2wyIjogMTIzNCwKICAiY29sMyI6IDEyMywKICAiY29sNCI6IHRydWUsCiAgImtleSI6ICJjb2wyIiwKICAibWVzc2FnZSI6ICJ7XCJ0YWJsZVwiOiBcInRhYmxlX2FiY1wiLCBcImtleVwiOiBcImNvbDJcIiwgXCJ2YWx1ZVwiOiAxMjM0LjB9IiwKICAic3RhdHVzIjogInVua25vd24iLAogICJ0YWJsZSI6ICJ0YWJsZV9hYmMiLAogICJ0aW1lIjogIjIwMjItMDgtMTZUMTU6MDI6MTQuMTU4NDUyNTkyKzA4OjAwIiwKICAidmFsdWUiOiAxMjM0Cn0KYGBgCg==", + "prototype":"Zm4gcXVlcnlfcmVmZXJfdGFibGUodGFibGVfbmFtZTogc3RyLCBrZXk6IHN0ciwgdmFsdWUp", + "description":"6YCa6L+H5oyH5a6a55qEIGtleSDmn6Xor6LlpJbpg6jlvJXnlKjooajvvIzlubblsIbmn6Xor6Lnu5PmnpznmoTpppbooYznmoTmiYDmnInliJfov73liqDliLAgZmllbGQg5Lit44CC", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "rename()":{ + "doc":"IyMjIGByZW5hbWUoKWAgeyNmbi1yZW5hbWV9Cgrlh73mlbDljp/lnovvvJpgZm4gcmVuYW1lKG5ld19rZXksIG9sZF9rZXkpYAoK5Ye95pWw6K+05piO77ya5bCG5bey5o+Q5Y+W55qE5a2X5q616YeN5paw5ZG95ZCNCgrlj4LmlbA6CgotIGBuZXdfa2V5YDog5paw5a2X5q615ZCNCi0gYG9sZF9rZXlgOiDlt7Lmj5Dlj5bnmoTlrZfmrrXlkI0KCmBgYHB5dGhvbgojIOaKiuW3suaPkOWPlueahCBhYmMg5a2X5q616YeN5paw5ZG95ZCN5Li6IGFiYzEKcmVuYW1lKCdhYmMxJywgYWJjKQoKIyBvciAKCnJlbmFtZShhYmMxLCBhYmMpCmBgYAoK56S65L6L77yaCgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja46IHsiaW5mbyI6IHsiYWdlIjogMTcsICJuYW1lIjogInpoYW5nc2FuIiwgImhlaWdodCI6IDE4MH19CgojIOWkhOeQhuiEmuacrApqc29uKF8sIGluZm8ubmFtZSwgIuWnk+WQjSIpCgojIOWkhOeQhue7k+aenAp7CiAgIm1lc3NhZ2UiOiAie1wiaW5mb1wiOiB7XCJhZ2VcIjogMTcsIFwibmFtZVwiOiBcInpoYW5nc2FuXCIsIFwiaGVpZ2h0XCI6IDE4MH19IiwKICAiemhhbmdzYW4iOiB7CiAgICAiYWdlIjogMTcsCiAgICAiaGVpZ2h0IjogMTgwLAogICAgIuWnk+WQjSI6ICJ6aGFuZ3NhbiIKICB9Cn0KYGBgCgo=", + "prototype":"Zm4gcmVuYW1lKG5ld19rZXksIG9sZF9rZXkp", + "description":"5bCG5bey5o+Q5Y+W55qE5a2X5q616YeN5paw5ZG95ZCN", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "replace()":{ + "doc":"IyMjIGByZXBsYWNlKClgIHsjZm4tcmVwbGFjZX0KCuWHveaVsOWOn+Wei++8mmBmbiByZXBsYWNlKGtleTogc3RyLCByZWdleDogc3RyLCByZXBsYWNlX3N0cjogc3RyKWAKCuWHveaVsOivtOaYju+8muWvueaMh+WumuWtl+auteS4iuiOt+WPlueahOWtl+espuS4suaVsOaNruaMieato+WImei/m+ihjOabv+aNogoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDlvoXmj5Dlj5blrZfmrrUKLSBgcmVnZXhgOiDmraPliJnooajovr7lvI8KLSBgcmVwbGFjZV9zdHJgOiDmm7/mjaLnmoTlrZfnrKbkuLIKCuekuuS+izoKCmBgYHB5dGhvbgojIOeUteivneWPt+egge+8mnsic3RyIjogIjEzNzg5MTIzMDE0In0KanNvbihfLCBzdHIpCnJlcGxhY2Uoc3RyLCAiKDFbMC05XXsyfSlbMC05XXs0fShbMC05XXs0fSkiLCAiJDEqKioqJDIiKQoKIyDoi7HmloflkI0geyJzdHIiOiAiemhhbmcgc2FuIn0KanNvbihfLCBzdHIpCnJlcGxhY2Uoc3RyLCAiKFthLXpdKikgXFx3KiIsICIkMSAqKioiKQoKIyDouqvku73or4Hlj7cgeyJzdHIiOiAiMzYyMjAxMjAwMDA1MzAyNTY1In0KanNvbihfLCBzdHIpCnJlcGxhY2Uoc3RyLCAiKFsxLTldezR9KVswLTldezEwfShbMC05XXs0fSkiLCAiJDEqKioqKioqKioqJDIiKQoKIyDkuK3mloflkI0geyJzdHIiOiAi5bCP6Zi/5Y2hIn0KanNvbihfLCBzdHIpCnJlcGxhY2Uoc3RyLCAnKFtcdTRlMDAtXHU5ZmE1XSlbXHU0ZTAwLVx1OWZhNV0oW1x1NGUwMC1cdTlmYTVdKScsICIkMe+8iiQyIikKYGBgCgo=", + "prototype":"Zm4gcmVwbGFjZShrZXk6IHN0ciwgcmVnZXg6IHN0ciwgcmVwbGFjZV9zdHI6IHN0cik=", + "description":"5a+55oyH5a6a5a2X5q615LiK6I635Y+W55qE5a2X56ym5Liy5pWw5o2u5oyJ5q2j5YiZ6L+b6KGM5pu/5o2i", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "RegExp" + ] + } + }, + "set_measurement()":{ + "doc":"IyMjIGBzZXRfbWVhc3VyZW1lbnQoKWAgeyNmbi1zZXQtbWVhc3VyZW1lbnR9Cgrlh73mlbDljp/lnovvvJpgZm4gc2V0X21lYXN1cmVtZW50KG5hbWU6IHN0ciwgZGVsZXRlX2tleTogYm9vbCA9IGZhbHNlKWAKCuWHveaVsOivtOaYju+8muaUueWPmOihjOWNj+iurueahCBuYW1lCgrlh73mlbDlj4LmlbAKCi0gYG5hbWVgOiDlgLzkvZzkuLogbWVzYXVyZW1lbnQgbmFtZe+8jOWPr+S8oOWFpeWtl+espuS4suW4uOmHj+aIluWPmOmHjwotIGBkZWxldGVfa2V5YDog5aaC5p6c5ZyoIHBvaW50IOS4reWtmOWcqOS4juWPmOmHj+WQjOWQjeeahCB0YWcg5oiWIGZpZWxkIOWImeWIoOmZpOWugwo=", + "prototype":"Zm4gc2V0X21lYXN1cmVtZW50KG5hbWU6IHN0ciwgZGVsZXRlX2tleTogYm9vbCA9IGZhbHNlKQ==", + "description":"5pS55Y+Y6KGM5Y2P6K6u55qEIG5hbWU=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "set_tag()":{ + "doc":"IyMjIGBzZXRfdGFnKClgIHsjZm4tc2V0LXRhZ30KCuWHveaVsOWOn+Wei++8mmBmbiBzZXRfdGFnKGtleSwgdmFsdWU6IHN0cilgCgrlh73mlbDor7TmmI7vvJrlr7nmjIflrprlrZfmrrXmoIforrDkuLogdGFnIOi+k+WHuu+8jOiuvue9ruS4uiB0YWcg5ZCO77yM5YW25LuW5Ye95pWw5LuN5Y+v5a+56K+l5Y+Y6YeP5pON5L2c44CC5aaC5p6c6KKr572u5Li6IHRhZyDnmoQga2V5IOaYr+W3sue7j+WIh+WJsuWHuuadpeeahCBmaWVsZO+8jOmCo+S5iOWug+WwhuS4jeS8muWcqCBmaWVsZCDkuK3lh7rnjrDvvIzov5nmoLflj6/ku6Xpgb/lhY3liIflibLlh7rmnaXnmoQgZmllbGQga2V5IOi3n+W3suacieaVsOaNruS4iueahCB0YWcga2V5IOmHjeWQjQoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDlvoXmoIforrDkuLogdGFnIOeahOWtl+autQotIGB2YWx1ZWA6IOWPr+S7peS4uuWtl+espuS4suWtl+mdoumHj+aIluiAheWPmOmHjwoKYGBgcHl0aG9uCiMgaW4gPDwgeyJzdHIiOiAiMTM3ODkxMjMwMTQifQpzZXRfdGFnKHN0cikKanNvbihfLCBzdHIpICAgICAgICAgICMgc3RyID09ICIxMzc4OTEyMzAxNCIKcmVwbGFjZShzdHIsICIoMVswLTldezJ9KVswLTldezR9KFswLTldezR9KSIsICIkMSoqKiokMiIpCiMgRXh0cmFjdGVkIGRhdGEoZHJvcDogZmFsc2UsIGNvc3Q6IDQ5LjI0OMK1cyk6CiMgewojICAgIm1lc3NhZ2UiOiAie1wic3RyXCI6IFwiMTM3ODkxMjMwMTRcIiwgXCJzdHJfYlwiOiBcIjNcIn0iLAojICAgInN0ciMiOiAiMTM3KioqKjMwMTQiCiMgfQojICog5a2X56ymIGAjYCDku4XkuLogZGF0YWtpdCAtLXBsIDxwYXRoPiAtLXR4dCA8c3RyPiDovpPlh7rlsZXnpLrml7blrZfmrrXkuLogdGFnIOeahOagh+iusAoKIyBpbiA8PCB7InN0cl9hIjogIjIiLCAic3RyX2IiOiAiMyJ9Cmpzb24oXywgc3RyX2EpCnNldF90YWcoc3RyX2EsICIzIikgICAjIHN0cl9hID09IDMKIyBFeHRyYWN0ZWQgZGF0YShkcm9wOiBmYWxzZSwgY29zdDogMzAuMDY5wrVzKToKIyB7CiMgICAibWVzc2FnZSI6ICJ7XCJzdHJfYVwiOiBcIjJcIiwgXCJzdHJfYlwiOiBcIjNcIn0iLAojICAgInN0cl9hIyI6ICIzIgojIH0KCgojIGluIDw8IHsic3RyX2EiOiAiMiIsICJzdHJfYiI6ICIzIn0KanNvbihfLCBzdHJfYSkKanNvbihfLCBzdHJfYikKc2V0X3RhZyhzdHJfYSwgc3RyX2IpICMgc3RyX2EgPT0gc3RyX2IgPT0gIjMiCiMgRXh0cmFjdGVkIGRhdGEoZHJvcDogZmFsc2UsIGNvc3Q6IDMyLjkwM8K1cyk6CiMgewojICAgIm1lc3NhZ2UiOiAie1wic3RyX2FcIjogXCIyXCIsIFwic3RyX2JcIjogXCIzXCJ9IiwKIyAgICJzdHJfYSMiOiAiMyIsCiMgICAic3RyX2IiOiAiMyIKIyB9CmBgYAo=", + "prototype":"Zm4gc2V0X3RhZyhrZXksIHZhbHVlOiBzdHIp", + "description":"5a+55oyH5a6a5a2X5q615qCH6K6w5Li6IHRhZyDovpPlh7rvvIzorr7nva7kuLogdGFnIOWQju+8jOWFtuS7luWHveaVsOS7jeWPr+WvueivpeWPmOmHj+aTjeS9nOOAguWmguaenOiiq+e9ruS4uiB0YWcg55qEIGtleSDmmK/lt7Lnu4/liIflibLlh7rmnaXnmoQgZmllbGTvvIzpgqPkuYjlroPlsIbkuI3kvJrlnKggZmllbGQg5Lit5Ye6546w77yM6L+Z5qC35Y+v5Lul6YG/5YWN5YiH5Ymy5Ye65p2l55qEIGZpZWxkIGtleSDot5/lt7LmnInmlbDmja7kuIrnmoQgdGFnIGtleSDph43lkI0=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "行协议操作" + ] + } + }, + "sql_cover":{ + "doc":"IyMjIGBzcWxfY292ZXIoKWAgeyNmbi1zcWwtY292ZXJ9Cgrlh73mlbDljp/lnovvvJpgZm4gc3FsX2NvdmVyKHNxbF90ZXN0OiBzdHIpYAoK5Ye95pWw6K+05piO77ya6ISx5pWPc3Fs6K+t5Y+lCgpgYGBweXRob24KIyBpbiA8PCB7InNlbGVjdCBhYmMgZnJvbSBkZWYgd2hlcmUgeCA+IDMgYW5kIHkgPCA1In0Kc3FsX2NvdmVyKF8pCgojIEV4dHJhY3RlZCBkYXRhKGRyb3A6IGZhbHNlLCBjb3N0OiAzMy4yNznCtXMpOgojIHsKIyAgICJtZXNzYWdlIjogInNlbGVjdCBhYmMgZnJvbSBkZWYgd2hlcmUgeCA+ID8gYW5kIHkgPCA/IgojIH0KYGBgCg==", + "prototype":"Zm4gc3FsX2NvdmVyKHNxbF90ZXN0OiBzdHIp", + "description":"6ISx5pWPc3Fs6K+t5Y+l", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "脱敏" + ] + } + }, + "strfmt()":{ + "doc":"IyMjIGBzdHJmbXQoKWAgeyNmbi1zdHJmbXR9Cgrlh73mlbDljp/lnovvvJpgZm4gc3RyZm10KGtleSwgZm10OiBzdHIsIGFyZ3MgLi4uOiBpbnR8ZmxvYXR8Ym9vbHxzdHJ8bGlzdHxtYXB8bmlsKWAKCuWHveaVsOivtOaYju+8muWvueW3suaPkOWPliBgYXJnMSwgYXJnMiwgLi4uYCDmjIflrprnmoTlrZfmrrXlhoXlrrnmoLnmja4gYGZtdGAg6L+b6KGM5qC85byP5YyW77yM5bm25oqK5qC85byP5YyW5ZCO55qE5YaF5a655YaZ5YWlIGBrZXlgIOWtl+auteS4rQoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDmjIflrprmoLzlvI/ljJblkI7mlbDmja7lhpnlhaXlrZfmrrXlkI0KLSBgZm10YDog5qC85byP5YyW5a2X56ym5Liy5qih5p2/Ci0gYGFyZ3NgOuWPr+WPmOWPguaVsO+8jOWPr+S7peaYr+WkmuS4quW3suaPkOWPlueahOW+heagvOW8j+WMluWtl+auteWQjQoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uOiB7ImEiOnsiZmlyc3QiOjIuMywic2Vjb25kIjoyLCJ0aGlyZCI6ImFiYyIsImZvcnRoIjp0cnVlfSwiYWdlIjo0N30KCiMg5aSE55CG6ISa5pysCmpzb24oXywgYS5zZWNvbmQpCmpzb24oXywgYS50aHJpZCkKY2FzdChhLnNlY29uZCwgImludCIpCmpzb24oXywgYS5mb3J0aCkKc3RyZm10KGJiLCAiJXYgJXMgJXYiLCBhLnNlY29uZCwgYS50aHJpZCwgYS5mb3J0aCkKYGBgCg==", + "prototype":"Zm4gc3RyZm10KGtleSwgZm10OiBzdHIsIGFyZ3MgLi4uOiBpbnR8ZmxvYXR8Ym9vbHxzdHJ8bGlzdHxtYXB8bmlsKQ==", + "description":"5a+55bey5o+Q5Y+WIGBhcmcxLCBhcmcyLCAuLi5gIOaMh+WumueahOWtl+auteWGheWuueagueaNriBgZm10YCDov5vooYzmoLzlvI/ljJbvvIzlubbmiormoLzlvI/ljJblkI7nmoTlhoXlrrnlhpnlhaUgYGtleWAg5a2X5q615Lit", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "字符串操作" + ] + } + }, + "trim()":{ + "doc":"IyMjIGB0cmltKClgIHsjZm4tdHJpbX0KCuWHveaVsOWOn+Wei++8mmBmbiB0cmltKGtleSwgY3V0c2V0OiBzdHIgPSAiIilgCgrlh73mlbDor7TmmI7vvJrliKDpmaQga2V5IOS4remmluWwvuS4reaMh+WumueahOWtl+espu+8jGN1dHNldCDkuLrnqbrlrZfnrKbkuLLml7bpu5jorqTliKDpmaTmiYDmnInnqbrnmb3nrKYKCuWHveaVsOWPguaVsO+8mgoKLSBga2V5YDog5bey5o+Q5Y+W55qE5p+Q5a2X5q6177yM5a2X56ym5Liy57G75Z6LCi0gYGN1dHNldGA6IOWIoOmZpCBrZXkg5Lit5Ye6546w5ZyoIGN1dHNldCDlrZfnrKbkuLLnmoTkuK3pppblsL7lrZfnrKYKCuekuuS+izoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogInRyaW0oa2V5LCBjdXRzZXQpIgoKIyDlpITnkIbohJrmnKwKYWRkX2tleSh0ZXN0X2RhdGEsICJBQ0NBQV90ZXN0X0RhdGFBX0FDQkEiKQp0cmltKHRlc3RfZGF0YSwgIkFCQ18iKQoKIyDlpITnkIbnu5PmnpwKewogICJ0ZXN0X2RhdGEiOiAidGVzdF9EYXRhIgp9CmBgYAo=", + "prototype":"Zm4gdHJpbShrZXksIGN1dHNldDogc3RyID0gIiIp", + "description":"5Yig6ZmkIGtleSDkuK3pppblsL7kuK3mjIflrprnmoTlrZfnrKbvvIxjdXRzZXQg5Li656m65a2X56ym5Liy5pe26buY6K6k5Yig6Zmk5omA5pyJ56m655m956ym", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "字符串操作" + ] + } + }, + "uppercase()":{ + "doc":"IyMjIGB1cHBlcmNhc2UoKWAgeyNmbi11cHBlcmNhc2V9Cgrlh73mlbDljp/lnovvvJpgZm4gdXBwZXJjYXNlKGtleTogc3RyKWAKCuWHveaVsOivtOaYju+8muWwhuW3suaPkOWPliBrZXkg5Lit5YaF5a656L2s5o2i5oiQ5aSn5YaZCgrlh73mlbDlj4LmlbAKCi0gYGtleWA6IOaMh+WumuW3suaPkOWPlueahOW+hei9rOaNouWtl+auteWQje+8jOWwhiBga2V5YCDlhoXlrrnovazmiJDlpKflhpkKCuekuuS+izoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogeyJmaXJzdCI6ICJoZWxsbyIsInNlY29uZCI6MiwidGhpcmQiOiJhQkMiLCJmb3J0aCI6dHJ1ZX0KCiMg5aSE55CG6ISa5pysCmpzb24oXywgZmlyc3QpIHVwcGVyY2FzZShmaXJzdCkKCiMg5aSE55CG57uT5p6cCnsKICAgImZpcnN0IjogIkhFTExPIgp9CmBgYAoK", + "prototype":"Zm4gdXBwZXJjYXNlKGtleTogc3RyKQ==", + "description":"5bCG5bey5o+Q5Y+WIGtleSDkuK3lhoXlrrnovazmjaLmiJDlpKflhpk=", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "字符串操作" + ] + } + }, + "url_decode()":{ + "doc":"IyMjIGB1cmxfZGVjb2RlKClgIHsjZm4tdXJsLWRlY29kZX0KCuWHveaVsOWOn+Wei++8mmBmbiB1cmxfZGVjb2RlKGtleTogc3RyKWAKCuWHveaVsOivtOaYju+8muWwhuW3suaPkOWPliBga2V5YCDkuK3nmoQgVVJMIOino+aekOaIkOaYjuaWhwoK5Y+C5pWwOgoKLSBga2V5YDog5bey57uP5o+Q5Y+W55qE5p+Q5LiqIGBrZXlgCgrnpLrkvovvvJoKCmBgYHB5dGhvbgojIOW+heWkhOeQhuaVsOaNrjogeyJ1cmwiOiJodHRwJTNhJTJmJTJmd3d3LmJhaWR1LmNvbSUyZnMlM2Z3ZCUzZCVlNiViNSU4YiVlOCVhZiU5NSJ9CgojIOWkhOeQhuiEmuacrApqc29uKF8sIHVybCkgdXJsX2RlY29kZSh1cmwpCgojIOWkhOeQhue7k+aenAp7CiAgIm1lc3NhZ2UiOiAieyJ1cmwiOiJodHRwJTNhJTJmJTJmd3d3LmJhaWR1LmNvbSUyZnMlM2Z3ZCUzZCVlNiViNSU4YiVlOCVhZiU5NSJ9IiwKICAidXJsIjogImh0dHA6Ly93d3cuYmFpZHUuY29tL3M/d2Q95rWL6K+VIgp9CmBgYAoK", + "prototype":"Zm4gdXJsX2RlY29kZShrZXk6IHN0cik=", + "description":"5bCG5bey5o+Q5Y+WIGBrZXlgIOS4reeahCBVUkwg6Kej5p6Q5oiQ5piO5paH", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "编解码", + "网络" + ] + } + }, + "use()":{ + "doc":"IyMjIGB1c2UoKWAgeyNmbi11c2V9Cgrlh73mlbDljp/lnovvvJpgZm4gdXNlKG5hbWU6IHN0cilgCgrlj4LmlbA6CgotIGBuYW1lYDog6ISa5pys5ZCN77yM5aaCIGFicC5wCgrlh73mlbDor7TmmI7vvJrosIPnlKjlhbbku5bohJrmnKzvvIzlj6/lnKjooqvosIPnlKjnmoTohJrmnKzorr/pl67lvZPliY3nmoTmiYDmnInmlbDmja4K56S65L6L77yaCgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja46IHsiaXAiOiIxLjIuMy40In0KCiMg5aSE55CG6ISa5pysIGEucAp1c2UoXCJiLnBcIikKCiMg5aSE55CG6ISa5pysIGIucApqc29uKF8sIGlwKQpnZW9pcChpcCkKCiMg5omn6KGM6ISa5pysIGEucCDnmoTlpITnkIbnu5PmnpwKewogICJjaXR5IiAgICAgOiAiQnJpc2JhbmUiLAogICJjb3VudHJ5IiAgOiAiQVUiLAogICJpcCIgICAgICAgOiAiMS4yLjMuNCIsCiAgInByb3ZpbmNlIiA6ICJRdWVlbnNsYW5kIiwKICAiaXNwIiAgICAgIDogInVua25vd24iCiAgIm1lc3NhZ2UiICA6ICJ7XCJpcFwiOiBcIjEuMi4zLjRcIn0iLAp9CmBgYAo=", + "prototype":"Zm4gdXNlKG5hbWU6IHN0cik=", + "description":"6LCD55So5YW25LuW6ISa5pys77yM5Y+v5Zyo6KKr6LCD55So55qE6ISa5pys6K6/6Zeu5b2T5YmN55qE5omA5pyJ5pWw5o2u", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "user_agent()":{ + "doc":"IyMjIGB1c2VyX2FnZW50KClgIHsjZm4tdXNlci1hZ2VudH0KCuWHveaVsOWOn+Wei++8mmBmbiB1c2VyX2FnZW50KGtleTogc3RyKWAKCuWHveaVsOivtOaYju+8muWvueaMh+WumuWtl+auteS4iuiOt+WPluWuouaIt+err+S/oeaBrwoK5Ye95pWw5Y+C5pWwCgotIGBrZXlgOiDlvoXmj5Dlj5blrZfmrrUKCmB1c2VyX2FnZW50KClgIOS8mueUn+S6p+WkmuS4quWtl+aute+8jOWmgu+8mgoKLSBgb3NgOiDmk43kvZzns7vnu58KLSBgYnJvd3NlcmA6IOa1j+iniOWZqAoK56S65L6LOgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uCiMgICAgewojICAgICAgICAidXNlckFnZW50IiA6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMzYuMC4xOTg1LjEyNSBTYWZhcmkvNTM3LjM2IiwKIyAgICAgICAgInNlY29uZCIgICAgOiAyLAojICAgICAgICAidGhpcmQiICAgICA6ICJhYmMiLAojICAgICAgICAiZm9ydGgiICAgICA6IHRydWUKIyAgICB9Cgpqc29uKF8sIHVzZXJBZ2VudCkgdXNlcl9hZ2VudCh1c2VyQWdlbnQpCmBgYAo=", + "prototype":"Zm4gdXNlcl9hZ2VudChrZXk6IHN0cik=", + "description":"5a+55oyH5a6a5a2X5q615LiK6I635Y+W5a6i5oi356uv5L+h5oGv", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "其他" + ] + } + }, + "xml()":{ + "doc":"IyMjIGB4bWwoKWAgeyNmbi14bWx9Cgrlh73mlbDljp/lnovvvJpgZm4geG1sKGlucHV0OiBzdHIsIHhwYXRoX2V4cHI6IHN0ciwga2V5X25hbWUpYAoK5Ye95pWw6K+05piO77ya6YCa6L+HIHhwYXRoIOihqOi+vuW8j++8jOS7jiBYTUwg5Lit5o+Q5Y+W5a2X5q6144CCCgrlj4LmlbDvvJoKCi0gaW5wdXQ6IOW+heaPkOWPlueahCBYTUwKLSB4cGF0aF9leHByOiB4cGF0aCDooajovr7lvI8KLSBrZXlfbmFtZTog5o+Q5Y+W5ZCO5pWw5o2u5YaZ5YWl5pawIGtleQoK56S65L6L5LiA77yaCgpgYGBweXRob24KIyDlvoXlpITnkIbmlbDmja4KICAgICAgIDxlbnRyeT4KICAgICAgICA8ZmllbGR4PnZhbHVleDwvZmllbGR4PgogICAgICAgIDxmaWVsZHk+Li4uPC9maWVsZHk+CiAgICAgICAgPGZpZWxkej4uLi48L2ZpZWxkej4KICAgICAgICA8ZmllbGRhcnJheT4KICAgICAgICAgICAgPGZpZWxkYT5lbGVtZW50X2FfMTwvZmllbGRhPgogICAgICAgICAgICA8ZmllbGRhPmVsZW1lbnRfYV8yPC9maWVsZGE+CiAgICAgICAgPC9maWVsZGFycmF5PgogICAgPC9lbnRyeT4KCiMg5aSE55CG6ISa5pysCnhtbChfLCAnL2VudHJ5L2ZpZWxkYXJyYXkvL2ZpZWxkYVsxXS90ZXh0KCknLCBmaWVsZF9hXzEpCgojIOWkhOeQhue7k+aenAp7CiAgImZpZWxkX2FfMSI6ICJlbGVtZW50X2FfMSIsICAjIOaPkOWPluS6hiBlbGVtZW50X2FfMQogICJtZXNzYWdlIjogIlx0XHRcdTAwM2NlbnRyeVx1MDAzZVxuICAgICAgICBcdTAwM2NmaWVsZHhcdTAwM2V2YWx1ZXhcdTAwM2MvZmllbGR4XHUwMDNlXG4gICAgICAgIFx1MDAzY2ZpZWxkeVx1MDAzZS4uLlx1MDAzYy9maWVsZHlcdTAwM2VcbiAgICAgICAgXHUwMDNjZmllbGR6XHUwMDNlLi4uXHUwMDNjL2ZpZWxkelx1MDAzZVxuICAgICAgICBcdTAwM2NmaWVsZGFycmF5XHUwMDNlXG4gICAgICAgICAgICBcdTAwM2NmaWVsZGFcdTAwM2VlbGVtZW50X2FfMVx1MDAzYy9maWVsZGFcdTAwM2VcbiAgICAgICAgICAgIFx1MDAzY2ZpZWxkYVx1MDAzZWVsZW1lbnRfYV8yXHUwMDNjL2ZpZWxkYVx1MDAzZVxuICAgICAgICBcdTAwM2MvZmllbGRhcnJheVx1MDAzZVxuICAgIFx1MDAzYy9lbnRyeVx1MDAzZSIsCiAgInN0YXR1cyI6ICJ1bmtub3duIiwKICAidGltZSI6IDE2NTU1MjI5ODkxMDQ5MTYwMDAKfQpgYGAKCuekuuS+i+S6jO+8mgoKYGBgcHl0aG9uCiMg5b6F5aSE55CG5pWw5o2uCjxPcmRlckV2ZW50IGFjdGlvbkNvZGUgPSAiNSI+CiA8T3JkZXJOdW1iZXI+T1JEMTIzNDU8L09yZGVyTnVtYmVyPgogPFZlbmRvck51bWJlcj5WMTExMTE8L1ZlbmRvck51bWJlcj4KPC9PcmRlckV2ZW50PgoKIyDlpITnkIbohJrmnKwKeG1sKF8sICcvT3JkZXJFdmVudC9AYWN0aW9uQ29kZScsIGFjdGlvbl9jb2RlKQp4bWwoXywgJy9PcmRlckV2ZW50L09yZGVyTnVtYmVyL3RleHQoKScsIE9yZGVyTnVtYmVyKQoKIyDlpITnkIbnu5PmnpwKewogICJPcmRlck51bWJlciI6ICJPUkQxMjM0NSIsCiAgImFjdGlvbl9jb2RlIjogIjUiLAogICJtZXNzYWdlIjogIlx1MDAzY09yZGVyRXZlbnQgYWN0aW9uQ29kZSA9IFwiNVwiXHUwMDNlXG4gXHUwMDNjT3JkZXJOdW1iZXJcdTAwM2VPUkQxMjM0NVx1MDAzYy9PcmRlck51bWJlclx1MDAzZVxuIFx1MDAzY1ZlbmRvck51bWJlclx1MDAzZVYxMTExMVx1MDAzYy9WZW5kb3JOdW1iZXJcdTAwM2Vcblx1MDAzYy9PcmRlckV2ZW50XHUwMDNlIiwKICAic3RhdHVzIjogInVua25vd24iLAogICJ0aW1lIjogMTY1NTUyMzE5MzYzMjQ3MTAwMAp9CmBgYAo=", + "prototype":"Zm4geG1sKGlucHV0OiBzdHIsIHhwYXRoX2V4cHI6IHN0ciwga2V5X25hbWUp", + "description":"6YCa6L+HIHhwYXRoIOihqOi+vuW8j++8jOS7jiBYTUwg5Lit5o+Q5Y+W5a2X5q6144CC", + "deprecated":false, + "required_version":"", + "fn_category":{ + "zh-CN":[ + "XML" + ] + } + } + } +}; + +export interface FunctionSepcification { + name: string; + doc: string; + prototype: string; + description: string; + deprecated: boolean; + required_version: string; + categories: { + 'zh-CN': string[]; + }; +} + +export const functions: FunctionSepcification[] = Object.keys(functionsData.functions).map((name: string) => { + const fn = functionsData.functions[name]; + return { + name: name, + doc: new Buffer(fn.doc, 'base64').toString(), + prototype: new Buffer(fn.prototype, 'base64').toString(), + description: new Buffer(fn.description, 'base64').toString(), + deprecated: fn.deprecated, + required_version: fn.required_version, + categories: fn.fn_category, + }; +}); + +export const keywords = [ + "if", + "elif", + "else", + "for", + "in", + "break", + "continue", + "use", +]; + +export default { + functions, + keywords, +}; diff --git a/ide/plugins/vscode/server/src/server.ts b/ide/plugins/vscode/server/src/server.ts new file mode 100644 index 0000000..a7b94ac --- /dev/null +++ b/ide/plugins/vscode/server/src/server.ts @@ -0,0 +1,286 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +import { + createConnection, + TextDocuments, + Diagnostic, + DiagnosticSeverity, + ProposedFeatures, + InitializeParams, + DidChangeConfigurationNotification, + CompletionItem, + CompletionItemKind, + DocumentFormattingParams, + TextDocumentPositionParams, + TextDocumentSyncKind, + InitializeResult, + Position, + HoverParams, + Hover, + MarkupKind, +} from 'vscode-languageserver/node'; + +import { + TextDocument, + TextEdit, +} from 'vscode-languageserver-textdocument'; + +import data, {FunctionSepcification} from './data'; + + +// import Parser = require("tree-sitter"); +// import PPL = require("tree-sitter-ppl"); + +import Parser = require('web-tree-sitter'); +import { SlowBuffer } from 'buffer'; + +// Create a connection for the server, using Node's IPC as a transport. +// Also include all preview / proposed LSP features. +const connection = createConnection(ProposedFeatures.all); + +// Create a simple text document manager. +const documents: TextDocuments = new TextDocuments(TextDocument); + +// const parser = new Parser(); +// parser.setLanguage(PPL); + +let hasConfigurationCapability = false; +let hasWorkspaceFolderCapability = false; +let hasDiagnosticRelatedInformationCapability = false; + +connection.onInitialize(async (params: InitializeParams) => { + const capabilities = params.capabilities; + + // Does the client support the `workspace/configuration` request? + // If not, we fall back using global settings. + hasConfigurationCapability = !!( + capabilities.workspace && !!capabilities.workspace.configuration + ); + hasWorkspaceFolderCapability = !!( + capabilities.workspace && !!capabilities.workspace.workspaceFolders + ); + hasDiagnosticRelatedInformationCapability = !!( + capabilities.textDocument && + capabilities.textDocument.publishDiagnostics && + capabilities.textDocument.publishDiagnostics.relatedInformation + ); + + const result: InitializeResult = { + capabilities: { + textDocumentSync: TextDocumentSyncKind.Incremental, + // Tell the client that this server supports code completion. + completionProvider: { + resolveProvider: true, + }, + // hoverProvider: true, + documentFormattingProvider: true, + } + }; + if (hasWorkspaceFolderCapability) { + result.capabilities.workspace = { + workspaceFolders: { + supported: true + } + }; + } + return result; +}); + +connection.onInitialized(() => { + if (hasConfigurationCapability) { + // Register for all configuration changes. + connection.client.register(DidChangeConfigurationNotification.type, undefined); + } + if (hasWorkspaceFolderCapability) { + connection.workspace.onDidChangeWorkspaceFolders(_event => { + connection.console.log('Workspace folder change event received.'); + }); + } +}); + +// The example settings +interface ExtensionSettings { + maxNumberOfProblems: number; +} + +// The global settings, used when the `workspace/configuration` request is not supported by the client. +// Please note that this is not the case when using this server with the client provided in this example +// but could happen with other clients. +const defaultSettings: ExtensionSettings = { maxNumberOfProblems: 1000 }; +let globalSettings: ExtensionSettings = defaultSettings; + +// Cache the settings of all open documents +const documentSettings: Map> = new Map(); + +connection.onDidChangeConfiguration(change => { + if (hasConfigurationCapability) { + // Reset all cached document settings + documentSettings.clear(); + } else { + globalSettings = ( + (change.settings.languageServerExample || defaultSettings) + ); + } + + // Revalidate all open text documents + documents.all().forEach(validateTextDocument); +}); + +function getDocumentSettings(resource: string): Thenable { + if (!hasConfigurationCapability) { + return Promise.resolve(globalSettings); + } + let result = documentSettings.get(resource); + if (!result) { + result = connection.workspace.getConfiguration({ + scopeUri: resource, + section: 'languageServerExample' + }); + documentSettings.set(resource, result); + } + return result; +} + +// Only keep settings for open documents +documents.onDidClose(e => { + documentSettings.delete(e.document.uri); +}); + +// The content of a text document has changed. This event is emitted +// when the text document first opened or when its content has changed. +documents.onDidChangeContent(change => { + validateTextDocument(change.document); +}); + +let languageParser: Parser; + +async function validateTextDocument(textDocument: TextDocument): Promise { + if (!languageParser) { + await Parser.init(); + languageParser = new Parser(); + const Lang = await Parser.Language.load('/Users/yufei/workspace/github/yufeiminds/ppl/ide/grammars/tree-sitter-ppl.wasm'); + languageParser.setLanguage(Lang); + } + + // In this simple example we get the settings for every validate run. + const settings = await getDocumentSettings(textDocument.uri); + + // The validator creates diagnostics for all uppercase words length 2 and more + const text = textDocument.getText(); + const tree = languageParser.parse(text); + console.debug(tree.rootNode.toString()); + + const query: Parser.Query = languageParser.getLanguage().query(`(ERROR) @error`); + + const diagnostics: Diagnostic[] = query.captures(tree.rootNode).map(item => { + console.debug('capture error', item.name, item.node.toString()); + const posRange = { + start: Position.create(item.node.startPosition.row, item.node.startPosition.column), + end: Position.create(item.node.endPosition.row, item.node.endPosition.column), + }; + const diagnostic: Diagnostic = { + severity: DiagnosticSeverity.Warning, + range: posRange, + message: 'Syntax error', + source: 'ppl', + relatedInformation: [ + { + location: { + uri: textDocument.uri, + range: Object.assign({}, posRange) + }, + message: `Unexpect token "${item.node.text}"`, + }, + ], + }; + return diagnostic; + }); + + // Send the computed diagnostics to VSCode. + connection.sendDiagnostics({ uri: textDocument.uri, diagnostics }); +} + +connection.onDidChangeWatchedFiles(_change => { + // Monitored files have change in VSCode + connection.console.log('We received an file change event'); +}); + +// This handler provides the initial list of the completion items. +connection.onCompletion( + (_textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => { + // The pass parameter contains the position of the text document in + // which code complete got requested. For the example we ignore this + // info and always provide the same completion items. + const functionsItems: CompletionItem[] = data.functions.map((fn: FunctionSepcification, index: number) => ({ + label: fn.name, + kind: CompletionItemKind.Function, + data: index + })); + const keywordsItems: CompletionItem[] = data.keywords.map((keyword: string, index: number) => ({ + label: keyword, + kind: CompletionItemKind.Keyword, + data: index + })); + return [...functionsItems, ...keywordsItems]; + } +); + +// This handler resolves additional information for the item selected in +// the completion list. +connection.onCompletionResolve( + (item: CompletionItem): CompletionItem => { + if (item.kind === CompletionItemKind.Function) { + const fn = data.functions[item.data]; + item.detail = fn.description; + item.documentation = fn.doc; + } + return item; + } +); + +// connection.onHover((params: HoverParams): Hover => { +// const textDocument = documents.get(params.textDocument.uri); + +// const token = textDocument?.getText({ +// start: params.position, +// end: params.position, +// }); + +// const text = textDocument.getText(); +// const tree = languageParser.parse(text); +// console.debug(tree.rootNode.toString()); + + +// const query: Parser.Query = languageParser.getLanguage().query(`(call_expr name: (identifier) @name)`); + +// query.captures(tree.rootNode).forEach(item => { +// const slug = `${item.node.startPosition.row}-${item.node.startPosition.column}`; +// { +// contents: { +// kind: MarkupKind.Markdown, +// value: `Hello World, ${token}` +// } +// }; +// }); + +// }); + +connection.onDocumentFormatting((params: DocumentFormattingParams): TextEdit[] => { + const document = documents.get(params.textDocument.uri); + if (!document) { + return []; + } + + const text = document.getText(); + const result: TextEdit[] = []; + return result; +}); + +// Make the text document manager listen on the connection +// for open, change and close text document events +documents.listen(connection); + +// Listen on the connection +connection.listen(); diff --git a/ide/plugins/vscode/server/tsconfig.json b/ide/plugins/vscode/server/tsconfig.json new file mode 100644 index 0000000..19b0775 --- /dev/null +++ b/ide/plugins/vscode/server/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "es2020", + "lib": ["es2020"], + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "strict": true, + "outDir": "out", + "rootDir": "src" + }, + "include": ["src"], + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/ide/plugins/vscode/syntaxes/ppl.tmLanguage.json b/ide/plugins/vscode/syntaxes/ppl.tmLanguage.json new file mode 100644 index 0000000..effbc36 --- /dev/null +++ b/ide/plugins/vscode/syntaxes/ppl.tmLanguage.json @@ -0,0 +1,82 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "scopeName": "source.ppl", + "name": "ppl", + "foldingStartMarker": "\\{\\s*$", + "foldingStopMarker": "^\\s*\\}", + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#keywords" + }, + { + "include": "#literals" + }, + { + "include": "#number" + }, + { + "include": "#single-quoted-strings" + }, + { + "include": "#double-quoted-strings" + }, + { + "include": "#function-call" + } + ], + "repository": { + "comment": { + "name": "comment.line.number-sign.ppl", + "match": "#.*" + }, + "keywords": { + "patterns": [{ + "name": "keyword.control.ppl", + "match": "\\b(as|assert|if|elif|else|lambda|for|import|schema|protocol|rule|mixin|relaxed|check|and|in|is|not|or|all|any|map|filter|type)\\b" + }] + }, + "number": { + "patterns": [{ + "name": "constant.numeric.ppl", + "match": "(?x)-?(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)?" + }] + }, + "literals": { + "patterns": [{ + "name": "constant.language.ppl", + "match": "\\b(true|false|nil|null)\\b" + }] + }, + "single-quoted-strings": { + "name": "string.quoted.single.ppl", + "begin": "'", + "end": "'", + "patterns": [ + { + "name": "constant.character.escape.ppl", + "match": "\\\\." + } + ] + }, + "double-quoted-strings": { + "name": "string.quoted.double.ppl", + "begin": "\"", + "end": "\"", + "patterns": [ + { + "name": "constant.character.escape.ppl", + "match": "\\\\." + } + ] + }, + "function-call": { + "patterns": [{ + "name": "meta.function-call.ppl support.function.ppl", + "match": "\\b([a-zA-Z_]+)\\s*\\(" + }] + } + } +} \ No newline at end of file diff --git a/ide/plugins/vscode/tsconfig.json b/ide/plugins/vscode/tsconfig.json new file mode 100644 index 0000000..dfdeee4 --- /dev/null +++ b/ide/plugins/vscode/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2020", + "lib": ["es2020"], + "outDir": "out", + "rootDir": "src", + "sourceMap": true + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules", + ".vscode-test" + ], + "references": [ + { "path": "./client" }, + { "path": "./server" } + ] +} \ No newline at end of file diff --git a/proposals/A001-add-developer-toolchain.md b/proposals/A001-add-developer-toolchain.md new file mode 100644 index 0000000..fb7b9e4 --- /dev/null +++ b/proposals/A001-add-developer-toolchain.md @@ -0,0 +1,156 @@ +Add compiler toolchain for developers +---- +* Author(s): @yufeiminds +* Approver: @coanor +* Status: Working Draft +* Last updated: 2022-11-24 +* Discussion at: - + +## Abstract + +PPL currently supports its own compiler frontend implementation, which is based on the goyacc parser generator to build AST from code. However, the popular tree-sitter is more suitable for IDE integraion and static analysis tools development. In order to converge with this industry trend, PPL will based on the tree-sitter solution to build framework of complier front-end and middle-end. Such as the parser, CST, semantic checker, and so on. + +The tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. It can also be used to build code analysis tools. + +Tree-sitter is used by many popular programming languages, such as JavaScript, Python, C, C++, Java, Go, PHP, Ruby, C#, Rust, and so on. + +We need to add a compiler toolchain for developers to improve the development efficiency of PPL. Include the fowllowing features: + +* The language features: + 1. Support for **syntax highlighting** + 2. Support for **code completion** + 3. Support for **code formatting** + 4. Support for **code navigation** + 5. Support for **code refactoring** +* The static analysis: + 1. Support for **code linting** + 2. Support for **vunerability detection** +* The software integration: + 1. Integration to Editor: [VSCode](https://code.visualstudio.com/) / [JetBrains IDE](https://www.jetbrains.com/) / [NeoVim](https://neovim.io/) + 2. Integration to Git provider: [GitHub Linguist](https://github.com/github/linguist) + 3. Integration to Tools: [Prettier](https://prettier.io/) + +This proposal is a working draft for adding a compiler toolchain for developers. It will describe the motivation, the design, and the implementation of the compiler toolchain. + +## Background + +The compiler backend focuses on the compilation of the source code, and the front/middle end focuses on the development of the language toolchain. + +Tree-sitter is a modern parsing framework for programming tools. It developed by GitHub and is used to build code analysis tools like syntax highlighting, code completion, code navigation, and refactoring tools. It can also be used to build programming languages and language servers. + +The key differences between tree-sitter and other parsing frameworks: + +* **Concret syntax tree**: tree-sitter builds a concrete syntax tree (CST) for source code. This is different from an abstract syntax tree (AST), which is a tree representation of the program's abstract syntax. The CST contains all of the source code's tokens, including comments and whitespace. The CST is useful for building tools that need to understand the source code's exact structure, such as syntax highlighting and refactoring tools. +* **Incremental parsing**: tree-sitter can parse a file incrementally, which means that it can re-parse only the changed parts of the file. This is much faster than re-parsing the entire file from scratch. +2. **Sandboxing**: tree-sitter is designed to be safe to run in untrusted environments. It can be used to build code analysis tools that run in editors or other applications. +3. **Error recovery**: tree-sitter can recover from parse errors in a way that is tolerant of syntax errors and edits in progress. + +Recently, tree-sitter be used in many projects, such as: + +* [Linguist](https://github.com/github/linguist). GitHub use it to detect the language of a source code file. It is used to *generate language statistics* and *highlight code* on GitHub. +* [CodeQL](https://github.com/github/codeql). CodeQL is a static analysis engine for finding security vulnerabilities in your code. It is used to *detect security vulnerabilities* in your code. +* [NeoVim](). NeoVim use it to provide syntax highlighting, code completion, code navigation, and refactoring tools. + +## Proposal + +### Architecture + +In our solution, we will use the tree-sitter to build the compiler toolchain. The typical workflow is as follows: + +```mermaid +sequenceDiagram + autonumber + + rect rgba(191, 223, 255, 0.6) + IDE Plugin->>LSP Server: Initialize + LSP Server->>Parser: Load + IDE Plugin->>Source Code (CST) : Code highlight by TextMate bundle + note left of IDE Plugin: IDE launching + end + IDE Plugin->>LSP Server: Watch events + rect rgba(100, 60, 255, 0.6) + Parser->>Source Code (CST): Parse + Parser->>LSP Server: Return CST + Parser->>Source Code (CST): Query by S-exp + Parser->>LSP Server: Return extra info + LSP Server->>Semantic Model: Build Semantic Model + note right of Semantic Model: Syntax parsing + end + LSP Server->>IDE Plugin: Initialized + rect rgba(200, 60, 255, 0.6) + LSP Server->>Semantic Model: Build Basic Block + LSP Server->>Semantic Model: Build Data/Control Flow Graph + LSP Server->>Lint Rules: Load linters and rules + Lint Rules->>Semantic Model: Lint + note right of Semantic Model: Static analysing + end +``` + +There are three main components in our solution: + +* **Parser**: The parser is the core part of the compiler toolchain, it is used to parse the source code to the concrete syntax tree (CST). It also provider the tree query engine, which is used to query the CST. It use S-expression liked query syntax. +* **IDE Plugin**: The IDE plugin is the client part of the compiler toolchain, which is used to provide the IDE features, it use TextMate bundle to implement token highlight in pure-client side. +* **LSP server**: The LSP server is the server part of the compiler toolchain, it is used to provide the language server protocol, such as code completion, code navigation, code refactoring, and so on. It is also used to provide the static analysis tools, such as code linting, vunerability detection, and so on. The LSP server is a server of the LSP protocol. + +### Code highlight + +There are two ways to implement the code highlight: + +* **Pure-client side**: The IDE plugin use the TextMate bundle to implement the code highlight. The TextMate bundle is a collection of TextMate grammar files, which is used to describe the syntax of a programming language. The TextMate bundle is used to implement the code highlight in the IDE plugin without extra calculation. +* **Server side**: The LSP server use the parser to parse the source code to the CST, and then use the CST to implement the code highlight. The LSP server can provide more accurate code highlight, such as the consistent colorize of the same token related to scopes. + +In production pratice, we will use all the ways together. When IDE ready, the IDE plugin will use the TextMate bundle to implement the code highlight in pure-client side. When the LSP server is ready, the IDE plugin will use the LSP server to correct the color with the semantic information. + +### Code completion + +We build the code completion information in the LSP server. The LSP server will use the parser to parse the source code to the CST, and then use the CST to build the semantic model. The semantic model is used to provide the code completion information. + +Semantic model includes: + +* **Symbol table**: The symbol table is used to store the symbol information, such as the symbol name, the symbol type, the symbol location, and so on. The symbol table is used to provide the code completion information. +* **Function signatures**: The functions is loaded from the standard library, such as the `grok`, the `use`, and so on. The functions is used to provide the code completion/hover information. + + +### Code navigation + +Because the PPL doesn't have the concept of the function definition, we can't provide the code navigation information. But we can provide the function information for the standard library. + +* **Function Call**: hover the function call, we can provide the function information, such as the function name, the function description, the function parameters, and so on. +* **Identifier**: click the identifier, we can jump to the first definition of the identifier. + +### Code formatting + +CST is the representation of the source code, so we can use the CST to implement the code formatting. The LSP server will use the parser to parse the source code to the CST, and then use the SDT (Syntax-directed translation) method to implement the code formatting. + +### Code refactoring + +Code refactoring is a very important feature of the IDE. We can use the CST to implement the code refactoring. We only support rename identifier in our plan. The LSP server will walk the CST by S-expression, and rename the identifier to re-build the semantic model. + +### Code linting & vunerability detection + +Code linting and vunerability detection are both code scanning tools. We implement it based on one of the static analysis engine: + +If contributor will create a new linter, they can use one of the methods: + +* **Tree query + policy engine**: Tree-sitter provider the tree query engine, It can use S-expression the fetch information from CST. The policy engine is used to implement the linter rules. We can use PPL or OPA(Rego) as the policy engine. +* **CodeQL**: When parsing complete, the LSP server will build the CST by tree-sitter, and based on it. We can build the basic block, the data/control flow graph, and so on. Then we can use the CodeQL to implement the code scanning tools. + +We will implement code tree query method first, and then implement the CodeQL method if we have enought time. + +## Rationale + +### Related Materials + +1. [Tree-sitter Homepage](https://tree-sitter.github.io/tree-sitter/) +2. *[Incremental Analysis of Real Programming Languages](http://harmonia.cs.berkeley.edu/papers/twagner-glr.pdf)* +3. *[Error Detection and Recovery in LR Parsers](http://what-when-how.com/compiler-writing/bottom-up-parsing-compiler-writing-part-13/)* + +## Implementation + +We will use the tree-sitter to build the compiler toolchain for PPL. The following is the implementation plan: + +1. Create a shared grammar folder for CST(Concrete Syntax Tree). +2. Create textmate grammar for basiclly *token highlighting* about primitive types and keyword. +2. Implement LSP(Language Server Protocol) with *semantic highlight*, *syntax checking*, *code completion* for PPL. +3. Integrate the LSP to Editor, such as VSCode, JetBrains IDE, NeoVim. +4. Improving the language tools, implement *code linting*, *code formatting*, *vunerability detection* for PPL. diff --git a/proposals/README.md b/proposals/README.md new file mode 100644 index 0000000..711f62d --- /dev/null +++ b/proposals/README.md @@ -0,0 +1,12 @@ +# Project Proposals + +## Motivation + +Proposal is a important + + +## Categoris + +There is only 1 category now: + +1. `An`: The \ No newline at end of file From b4094dfd9366ee789f1f741fa8d45f90f962dd53 Mon Sep 17 00:00:00 2001 From: "yufei.li" Date: Mon, 28 Nov 2022 22:04:54 +0800 Subject: [PATCH 2/5] docs: fix README.md for proposals --- proposals/README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/proposals/README.md b/proposals/README.md index 711f62d..11e6b2f 100644 --- a/proposals/README.md +++ b/proposals/README.md @@ -1,12 +1,11 @@ -# Project Proposals +# Proposals -## Motivation +Proposals are the way to propose changes to the project. They are the way to propose new features, changes to existing features, and changes to the project itself. -Proposal is a important +## Proposal Process - -## Categoris - -There is only 1 category now: - -1. `An`: The \ No newline at end of file +1. Create a new branch in your fork +2. Create a new `.md` file in the `proposals` directory +3. Write your proposal, every proposal should includes POC (Proof of Concept) code. This [example](https://github.com/GuanceCloud/ppl/pull/18) is a good start. +4. Submit a pull request to the `main` branch of the main repository +5. The proposal will be discussed and, if accepted, merged into the `main` branch From 13e6f48d3c87861a697c668ca83827f11ecbb89f Mon Sep 17 00:00:00 2001 From: "yufei.li" Date: Mon, 28 Nov 2022 22:29:32 +0800 Subject: [PATCH 3/5] docs: Add PR link to proposal --- proposals/A001-add-developer-toolchain.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/A001-add-developer-toolchain.md b/proposals/A001-add-developer-toolchain.md index fb7b9e4..7d4b620 100644 --- a/proposals/A001-add-developer-toolchain.md +++ b/proposals/A001-add-developer-toolchain.md @@ -4,7 +4,7 @@ Add compiler toolchain for developers * Approver: @coanor * Status: Working Draft * Last updated: 2022-11-24 -* Discussion at: - +* Discussion at: [#18](https://github.com/GuanceCloud/ppl/pull/18) ## Abstract From d5e21409b3e26d19e846c1c7408c624ce0c96ea2 Mon Sep 17 00:00:00 2001 From: "yufei.li" Date: Sat, 3 Dec 2022 00:14:53 +0800 Subject: [PATCH 4/5] feat: add linter and publish to market --- ide/grammars/package.json | 35 - ide/plugins/vscode/LICENSE | 21 + ide/plugins/vscode/README.md | 18 +- ide/plugins/vscode/client/src/extension.ts | 2 +- ide/plugins/vscode/images/icon.png | 3 + ide/plugins/vscode/images/logo.png | 3 + ide/plugins/vscode/package-lock.json | 12 +- ide/plugins/vscode/package.json | 53 +- ide/plugins/vscode/server/src/ide/format.ts | 7 + .../server/src/ide/formatter/formatter.ts} | 0 .../vscode/server/src/ide/formatter/index.ts} | 0 ide/plugins/vscode/server/src/ide/index.ts | 73 + ide/plugins/vscode/server/src/ide/lint.ts | 9 + .../vscode/server/src/ide/linter/S0001.ts | 34 + .../vscode/server/src/ide/linter/index.ts | 3 + .../vscode/server/src/ide/linter/linter.ts | 43 + .../vscode/server/src/ide/linter/rule.ts | 28 + .../src/{data.ts => ide/semantic/builtins.ts} | 22 +- .../vscode/server/src/ide/semantic/index.ts | 6 + .../server/src/ide/semantic/keywords.ts | 16 + .../server/src/ide/semantic/semantic.ts | 21 + .../vscode/server/src/ide/semantic/symbol.ts | 38 + ide/plugins/vscode/server/src/server.ts | 79 +- ...Language.json => platypus.tmLanguage.json} | 22 +- .../.gitignore | 0 .../Cargo.toml | 8 +- .../binding.gyp | 2 +- .../bindings/node/binding.cc | 8 +- .../bindings/node/index.js | 4 +- .../bindings/rust/build.rs | 0 .../bindings/rust/lib.rs | 10 +- .../grammar.js | 4 +- .../package-lock.json | 4 +- ide/tree-sitter-platypus/package.json | 35 + .../queries/highlights.scm | 0 .../queries/locals.scm} | 0 ide/tree-sitter-platypus/queries/tags.scm | 0 .../src/grammar.json | 6 +- .../src/node-types.json | 0 .../src/parser.c | 2248 +++++++++-------- .../src/tree_sitter/parser.h | 0 .../test/corpus/debug.txt | 2 +- .../test/highlight/statements.txt | 2 +- .../test/nginx.p} | 3 +- proposals/A001-add-developer-toolchain.md | 16 +- proposals/README.md | 2 +- 46 files changed, 1646 insertions(+), 1256 deletions(-) delete mode 100644 ide/grammars/package.json create mode 100644 ide/plugins/vscode/LICENSE create mode 100644 ide/plugins/vscode/images/icon.png create mode 100644 ide/plugins/vscode/images/logo.png create mode 100644 ide/plugins/vscode/server/src/ide/format.ts rename ide/{grammars/.editorconfig => plugins/vscode/server/src/ide/formatter/formatter.ts} (100%) rename ide/{grammars/queries/locals.scm => plugins/vscode/server/src/ide/formatter/index.ts} (100%) create mode 100644 ide/plugins/vscode/server/src/ide/index.ts create mode 100644 ide/plugins/vscode/server/src/ide/lint.ts create mode 100644 ide/plugins/vscode/server/src/ide/linter/S0001.ts create mode 100644 ide/plugins/vscode/server/src/ide/linter/index.ts create mode 100644 ide/plugins/vscode/server/src/ide/linter/linter.ts create mode 100644 ide/plugins/vscode/server/src/ide/linter/rule.ts rename ide/plugins/vscode/server/src/{data.ts => ide/semantic/builtins.ts} (99%) create mode 100644 ide/plugins/vscode/server/src/ide/semantic/index.ts create mode 100644 ide/plugins/vscode/server/src/ide/semantic/keywords.ts create mode 100644 ide/plugins/vscode/server/src/ide/semantic/semantic.ts create mode 100644 ide/plugins/vscode/server/src/ide/semantic/symbol.ts rename ide/plugins/vscode/syntaxes/{ppl.tmLanguage.json => platypus.tmLanguage.json} (71%) rename ide/{grammars => tree-sitter-platypus}/.gitignore (100%) rename ide/{grammars => tree-sitter-platypus}/Cargo.toml (59%) rename ide/{grammars => tree-sitter-platypus}/binding.gyp (86%) rename ide/{grammars => tree-sitter-platypus}/bindings/node/binding.cc (74%) rename ide/{grammars => tree-sitter-platypus}/bindings/node/index.js (63%) rename ide/{grammars => tree-sitter-platypus}/bindings/rust/build.rs (100%) rename ide/{grammars => tree-sitter-platypus}/bindings/rust/lib.rs (80%) rename ide/{grammars => tree-sitter-platypus}/grammar.js (97%) rename ide/{grammars => tree-sitter-platypus}/package-lock.json (90%) create mode 100644 ide/tree-sitter-platypus/package.json rename ide/{grammars => tree-sitter-platypus}/queries/highlights.scm (100%) rename ide/{grammars/queries/tags.scm => tree-sitter-platypus/queries/locals.scm} (100%) create mode 100644 ide/tree-sitter-platypus/queries/tags.scm rename ide/{grammars => tree-sitter-platypus}/src/grammar.json (99%) rename ide/{grammars => tree-sitter-platypus}/src/node-types.json (100%) rename ide/{grammars => tree-sitter-platypus}/src/parser.c (80%) rename ide/{grammars => tree-sitter-platypus}/src/tree_sitter/parser.h (100%) rename ide/{grammars => tree-sitter-platypus}/test/corpus/debug.txt (90%) rename ide/{grammars => tree-sitter-platypus}/test/highlight/statements.txt (94%) rename ide/{grammars/test/nginx.ppl => tree-sitter-platypus/test/nginx.p} (99%) diff --git a/ide/grammars/package.json b/ide/grammars/package.json deleted file mode 100644 index ee519ce..0000000 --- a/ide/grammars/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "tree-sitter-ppl", - "version": "1.0.0", - "description": "Tree sitter grammar for PPL (Pipeline Processor Language)", - "main": "bindings/node", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/GuanceCloud/ppl.git" - }, - "keywords": [ - "ppl" - ], - "author": "Guance Cloud", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/GuanceCloud/ppl/issues" - }, - "homepage": "https://github.com/GuanceCloud/ppl#readme", - "dependencies": { - "nan": "^2.17.0" - }, - "tree-sitter": [ - { - "scope": "source.ppl", - "file-types": [ - "p", - "ppl" - ], - "injection-regex": "ppl" - } - ] -} diff --git a/ide/plugins/vscode/LICENSE b/ide/plugins/vscode/LICENSE new file mode 100644 index 0000000..a2ede84 --- /dev/null +++ b/ide/plugins/vscode/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Guance Cloud for Observability + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ide/plugins/vscode/README.md b/ide/plugins/vscode/README.md index 4c85fc7..d5d2f08 100644 --- a/ide/plugins/vscode/README.md +++ b/ide/plugins/vscode/README.md @@ -1,14 +1,16 @@ -# LSP Example +# Platypus extension for Visual Studio Code -Heavily documented sample code for https://code.visualstudio.com/api/language-extensions/language-server-extension-guide +Here is the proposal for Language Server of [Platypus Programming Language](https://platypus.guance.io/). -## Functionality +## Features -This Language Server works for plain text file. It has the following language features: -- Completions -- Diagnostics regenerated on each file change or configuration change - -It also includes an End-to-End test. +* [x] Support for **syntax highlighting** +* [x] Support for **code completion** +* [x] Support for **code linting** +* [ ] Support for **code formatting** +* [ ] Support for **code navigation** +* [ ] Support for **code refactoring** +* [ ] Support for **vunerability detection** ## Structure diff --git a/ide/plugins/vscode/client/src/extension.ts b/ide/plugins/vscode/client/src/extension.ts index 799a7dd..3a0ef8c 100644 --- a/ide/plugins/vscode/client/src/extension.ts +++ b/ide/plugins/vscode/client/src/extension.ts @@ -38,7 +38,7 @@ export function activate(context: ExtensionContext) { // Options to control the language client const clientOptions: LanguageClientOptions = { // Register the server for plain text documents - documentSelector: [{ scheme: 'file', language: 'ppl' }], + documentSelector: [{ scheme: 'file', language: 'platypus' }], synchronize: { // Notify the server about file changes to '.clientrc files contained in the workspace fileEvents: workspace.createFileSystemWatcher('**/.clientrc') diff --git a/ide/plugins/vscode/images/icon.png b/ide/plugins/vscode/images/icon.png new file mode 100644 index 0000000..a1b1a35 --- /dev/null +++ b/ide/plugins/vscode/images/icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfcc75696818fcd08882ddae45899287ea5671c816e8a7402e30aa0216523c03 +size 24793 diff --git a/ide/plugins/vscode/images/logo.png b/ide/plugins/vscode/images/logo.png new file mode 100644 index 0000000..4c0e430 --- /dev/null +++ b/ide/plugins/vscode/images/logo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:896c8991b86911c0ed07c54b6a83fe18c1aa8e826759acae63514e97d115265e +size 31200 diff --git a/ide/plugins/vscode/package-lock.json b/ide/plugins/vscode/package-lock.json index b7e03b4..b84d8a1 100644 --- a/ide/plugins/vscode/package-lock.json +++ b/ide/plugins/vscode/package-lock.json @@ -1,18 +1,18 @@ { - "name": "ppl-vscode", + "name": "platypus-vscode", "version": "0.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "ppl-vscode", + "name": "platypus-vscode", "version": "0.0.1", "hasInstallScript": true, "license": "Apache License 2.0", "dependencies": { "tree-sitter": "^0.20.1", "tree-sitter-javascript": "^0.19.0", - "tree-sitter-ppl": "file:../../grammars", + "tree-sitter-platypus": "file:../../grammars", "web-tree-sitter": "^0.20.7" }, "devDependencies": { @@ -29,7 +29,7 @@ } }, "../../grammars": { - "name": "tree-sitter-ppl", + "name": "tree-sitter-platypus", "version": "1.0.0", "hasInstallScript": true, "license": "Apache-2.0", @@ -2542,7 +2542,7 @@ "nan": "^2.12.1" } }, - "node_modules/tree-sitter-ppl": { + "node_modules/tree-sitter-platypus": { "resolved": "../../grammars", "link": true }, @@ -4567,7 +4567,7 @@ "nan": "^2.12.1" } }, - "tree-sitter-ppl": { + "tree-sitter-platypus": { "version": "file:../../grammars", "requires": { "nan": "^2.17.0" diff --git a/ide/plugins/vscode/package.json b/ide/plugins/vscode/package.json index 3fc1a41..9a72e61 100644 --- a/ide/plugins/vscode/package.json +++ b/ide/plugins/vscode/package.json @@ -1,25 +1,28 @@ { - "name": "ppl-vscode", - "description": "A language server for PPL (Pipeline Processor Language)", - "author": "Guance Cloud", - "license": "Apache License 2.0", - "version": "0.0.1", + "name": "platypus-vscode", + "displayName": "Platypus Programming Language", + "description": "A language server for Platypus Programming Language", + "icon": "images/icon.png", + "author": "dev-bot@guance.com", + "license": "MIT", + "version": "0.0.2", "repository": { "type": "git", - "url": "https://github.com/GuanceCloud/ppl.git" + "url": "https://github.com/GuanceCloud/platypus.git" }, - "publisher": "Guance Cloud", + "publisher": "GuanceCloud", "categories": [ "Programming Languages" ], "keywords": [ - "ppl" + "observerbility", + "platypus" ], "engines": { "vscode": "^1.63.0" }, "activationEvents": [ - "onLanguage:ppl" + "onLanguage:platypus" ], "main": "./client/out/extension", "contributes": { @@ -46,17 +49,26 @@ } } }, - "languages": [{ - "id": "ppl", - "aliases": ["ppl"], - "extensions": [".p", ".ppl"], - "configuration": "./language-configuration.json" - }], - "grammars": [{ - "language": "ppl", - "scopeName": "source.ppl", - "path": "./syntaxes/ppl.tmLanguage.json" - }] + "languages": [ + { + "id": "platypus", + "aliases": [ + "platypus" + ], + "extensions": [ + ".p", + ".platypus" + ], + "configuration": "./language-configuration.json" + } + ], + "grammars": [ + { + "language": "platypus", + "scopeName": "source.platypus", + "path": "./syntaxes/platypus.tmLanguage.json" + } + ] }, "scripts": { "vscode:prepublish": "npm run compile", @@ -78,7 +90,6 @@ "dependencies": { "tree-sitter": "^0.20.1", "tree-sitter-javascript": "^0.19.0", - "tree-sitter-ppl": "file:../../grammars", "web-tree-sitter": "^0.20.7" } } diff --git a/ide/plugins/vscode/server/src/ide/format.ts b/ide/plugins/vscode/server/src/ide/format.ts new file mode 100644 index 0000000..9b92395 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/format.ts @@ -0,0 +1,7 @@ +export interface FormatOptions { + fileId: string +} + +export interface FormatResult { + code: string +} diff --git a/ide/grammars/.editorconfig b/ide/plugins/vscode/server/src/ide/formatter/formatter.ts similarity index 100% rename from ide/grammars/.editorconfig rename to ide/plugins/vscode/server/src/ide/formatter/formatter.ts diff --git a/ide/grammars/queries/locals.scm b/ide/plugins/vscode/server/src/ide/formatter/index.ts similarity index 100% rename from ide/grammars/queries/locals.scm rename to ide/plugins/vscode/server/src/ide/formatter/index.ts diff --git a/ide/plugins/vscode/server/src/ide/index.ts b/ide/plugins/vscode/server/src/ide/index.ts new file mode 100644 index 0000000..ad069f7 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/index.ts @@ -0,0 +1,73 @@ +import path = require('path'); +import TParser = require('web-tree-sitter'); + +import { File, ISemanticModel, newSemanticModel } from './semantic'; +import { Diagnostic, ILinter, Linter, LintResult } from './linter'; +import { LintOptions } from './lint'; +import { FormatOptions, FormatResult } from './format'; + + +export interface IDE { + acceptFile(sourceFile: File): IDE; + + format(opts: FormatOptions): FormatResult; + + lint(opts: LintOptions): LintResult; + + info(): ISemanticModel; +} + +export class IDEProvider implements IDE { + private parser?: TParser; + private linter: ILinter; + private csts: { [fileId: string]: TParser.Tree }; + + constructor() { + this.parser = undefined; + this.linter = new Linter(); + this.csts = {}; + return this; + } + + async init(): Promise { + await TParser.init(); + this.parser = new TParser(); + const lang = await TParser.Language.load(path.join(__dirname, "..", "..", "src", 'tree-sitter-platypus.wasm')); + this.parser.setLanguage(lang); + return this; + } + + acceptFile(source: File): IDE { + if (!this.parser) { + throw new Error("Parser not initialized"); + } + const tree = this.parser.parse(source.content); + this.csts[source.fileId] = tree; + return this; + } + + format(opts: FormatOptions): FormatResult { + throw new Error('Method not implemented.'); + } + + lint(opts: LintOptions): LintResult { + if (!this.parser) { + throw new Error("Parser not initialized"); + } + + const tree = this.csts[opts.fileId]; + const result = this.linter.lint({ + fileId: opts.fileId, + tree: tree, + parser: this.parser, + }); + + return { + diagnostics: result.diagnostics, + }; + } + + info(): ISemanticModel { + return newSemanticModel(); + } +} diff --git a/ide/plugins/vscode/server/src/ide/lint.ts b/ide/plugins/vscode/server/src/ide/lint.ts new file mode 100644 index 0000000..1f72a71 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/lint.ts @@ -0,0 +1,9 @@ +import { Diagnostic } from './linter'; + +export interface LintOptions { + fileId: string +} + +export interface LintResult { + diagnostics: Diagnostic[] +} diff --git a/ide/plugins/vscode/server/src/ide/linter/S0001.ts b/ide/plugins/vscode/server/src/ide/linter/S0001.ts new file mode 100644 index 0000000..051e687 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/linter/S0001.ts @@ -0,0 +1,34 @@ +import { ILinterRule, DiagnosticLevel, Diagnostic } from './rule'; + +export const LinterRuleS0001: ILinterRule = { + ruleId: 'S0001', + name: 'Syntax error', + description: 'S0001', + documentation: 'S0001', + query: `(ERROR) @error`, + lint: (captures, rule, fileId) => { + return captures.map(capture => { + const node = capture.node; + const range = { + start: { + row: node.startPosition.row, + column: node.startPosition.column, + }, + end: { + row: node.endPosition.row, + column: node.endPosition.column, + }, + }; + + const diagnostic: Diagnostic = { + fileId: fileId, + range, + ruleId: rule.ruleId, + level: DiagnosticLevel.Error, + message: `Unexpect token "${node.text}"`, + documentation: rule.documentation, + }; + return diagnostic; + }); + } +}; diff --git a/ide/plugins/vscode/server/src/ide/linter/index.ts b/ide/plugins/vscode/server/src/ide/linter/index.ts new file mode 100644 index 0000000..9d5fce3 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/linter/index.ts @@ -0,0 +1,3 @@ +export { ILinter, LintOptions, LintResult, Linter } from './linter'; +export { ILinterRule, Diagnostic, DiagnosticLevel } from './rule'; +export { LinterRuleS0001 } from './S0001'; diff --git a/ide/plugins/vscode/server/src/ide/linter/linter.ts b/ide/plugins/vscode/server/src/ide/linter/linter.ts new file mode 100644 index 0000000..13a4d7c --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/linter/linter.ts @@ -0,0 +1,43 @@ +import TParser = require('web-tree-sitter'); + +import { ILinterRule, Diagnostic } from './rule'; +import { LinterRuleS0001 } from './S0001'; + +export interface ILinter { + lint(opts?: LintOptions): LintResult +} + +export interface LintOptions { + fileId: string + tree: TParser.Tree; + parser: TParser; + rules?: ILinterRule[]; +} + +export interface LintResult { + diagnostics: Diagnostic[]; +} + +export const defaultRules: ILinterRule[] = [ + LinterRuleS0001, +]; + +export class Linter implements ILinter { + lint(opts: LintOptions): LintResult { + const rules = [LinterRuleS0001]; + if (opts.rules) { + rules.push(...opts.rules); + } + + const diagnostics: Diagnostic[] = []; + rules.forEach(rule => { + const query = opts.parser.getLanguage().query(rule.query); + const captures = query.captures(opts.tree.rootNode); + diagnostics.push(...rule.lint(captures, rule, opts.fileId)); + }); + + return { + diagnostics, + }; + } +} diff --git a/ide/plugins/vscode/server/src/ide/linter/rule.ts b/ide/plugins/vscode/server/src/ide/linter/rule.ts new file mode 100644 index 0000000..fa19b7d --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/linter/rule.ts @@ -0,0 +1,28 @@ +import Parser = require('web-tree-sitter'); +import { File, Range } from '../semantic'; + +export interface Diagnostic { + // The position information about source code. + fileId: string; + range: Range; + + // The diagnostic of linter. + ruleId: string; + level: DiagnosticLevel; + message: string; + documentation?: string; +} + +export enum DiagnosticLevel { + Error, + Warning, +} + +export interface ILinterRule { + ruleId: string; + name: string + description: string; + documentation: string; + query: string; + lint: (captures: Parser.QueryCapture[], rule: ILinterRule, fileId: string) => Diagnostic[]; +} diff --git a/ide/plugins/vscode/server/src/data.ts b/ide/plugins/vscode/server/src/ide/semantic/builtins.ts similarity index 99% rename from ide/plugins/vscode/server/src/data.ts rename to ide/plugins/vscode/server/src/ide/semantic/builtins.ts index bd34f2d..db105ab 100644 --- a/ide/plugins/vscode/server/src/data.ts +++ b/ide/plugins/vscode/server/src/ide/semantic/builtins.ts @@ -1,4 +1,3 @@ - const functionsData: { version: string; docs: string; @@ -517,7 +516,8 @@ const functionsData: { } }; -export interface FunctionSepcification { + +export interface IFunction { name: string; doc: string; prototype: string; @@ -529,7 +529,7 @@ export interface FunctionSepcification { }; } -export const functions: FunctionSepcification[] = Object.keys(functionsData.functions).map((name: string) => { +export const functions: IFunction[] = Object.keys(functionsData.functions).map((name: string) => { const fn = functionsData.functions[name]; return { name: name, @@ -542,18 +542,4 @@ export const functions: FunctionSepcification[] = Object.keys(functionsData.func }; }); -export const keywords = [ - "if", - "elif", - "else", - "for", - "in", - "break", - "continue", - "use", -]; - -export default { - functions, - keywords, -}; +export default functions; diff --git a/ide/plugins/vscode/server/src/ide/semantic/index.ts b/ide/plugins/vscode/server/src/ide/semantic/index.ts new file mode 100644 index 0000000..de6d178 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/semantic/index.ts @@ -0,0 +1,6 @@ +/* +Semantic Model for Platypus Programming Language +*/ + +export { ISemanticModel, newSemanticModel } from './semantic'; +export { Position, Range, File } from './symbol'; diff --git a/ide/plugins/vscode/server/src/ide/semantic/keywords.ts b/ide/plugins/vscode/server/src/ide/semantic/keywords.ts new file mode 100644 index 0000000..0e083a2 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/semantic/keywords.ts @@ -0,0 +1,16 @@ +export interface IKeyword { + name: string; +} + +export const keywords = [ + {name: "if"}, + {name: "elif"}, + {name: "else"}, + {name: "for"}, + {name: "in"}, + {name: "break"}, + {name: "continue"}, + {name: "use"}, +]; + +export default keywords; diff --git a/ide/plugins/vscode/server/src/ide/semantic/semantic.ts b/ide/plugins/vscode/server/src/ide/semantic/semantic.ts new file mode 100644 index 0000000..f82925a --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/semantic/semantic.ts @@ -0,0 +1,21 @@ +import functions, { IFunction } from './builtins'; +import keywords, { IKeyword } from './keywords'; + +export interface ISemanticModel { + builtins: {[name: string]: IFunction}; + + keywords: {[name: string]: IKeyword}; +} + +export const newSemanticModel = (): ISemanticModel => { + return { + keywords: keywords.reduce((target: { [name: string]: IKeyword }, item: IKeyword) => { + target[item.name] = item; + return target; + }, {}), + builtins: functions.reduce((target: { [name: string]: IFunction }, item: IFunction) => { + target[item.name] = item; + return target; + }, {}), + }; +}; diff --git a/ide/plugins/vscode/server/src/ide/semantic/symbol.ts b/ide/plugins/vscode/server/src/ide/semantic/symbol.ts new file mode 100644 index 0000000..d7bc490 --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/semantic/symbol.ts @@ -0,0 +1,38 @@ +// import TParser = require('web-tree-sitter'); + +// export interface ISymbol { +// name: string +// kind: SymbolKind; +// type: SymbolType; +// declare: TParser.SyntaxNode; +// properties: object; +// } + +// export enum SymbolType { +// global, +// } + +// export enum SymbolKind { +// Const, +// Function, +// } + +// export interface SymbolTable { +// free(): void; +// lookup(name: string): ISymbol | undefined; +// } + +export interface File { + fileId: string; + content: string; +} + +export interface Position { + row: number; + column: number; +} + +export interface Range { + start: Position; + end: Position; +} diff --git a/ide/plugins/vscode/server/src/server.ts b/ide/plugins/vscode/server/src/server.ts index a7b94ac..a7697d0 100644 --- a/ide/plugins/vscode/server/src/server.ts +++ b/ide/plugins/vscode/server/src/server.ts @@ -27,15 +27,11 @@ import { TextEdit, } from 'vscode-languageserver-textdocument'; -import data, {FunctionSepcification} from './data'; - +import { IDE, IDEProvider } from './ide'; // import Parser = require("tree-sitter"); // import PPL = require("tree-sitter-ppl"); -import Parser = require('web-tree-sitter'); -import { SlowBuffer } from 'buffer'; - // Create a connection for the server, using Node's IPC as a transport. // Also include all preview / proposed LSP features. const connection = createConnection(ProposedFeatures.all); @@ -154,48 +150,40 @@ documents.onDidChangeContent(change => { validateTextDocument(change.document); }); -let languageParser: Parser; +let ide: IDE; async function validateTextDocument(textDocument: TextDocument): Promise { - if (!languageParser) { - await Parser.init(); - languageParser = new Parser(); - const Lang = await Parser.Language.load('/Users/yufei/workspace/github/yufeiminds/ppl/ide/grammars/tree-sitter-ppl.wasm'); - languageParser.setLanguage(Lang); + if (!ide) { + ide = await new IDEProvider().init(); } - // In this simple example we get the settings for every validate run. - const settings = await getDocumentSettings(textDocument.uri); - - // The validator creates diagnostics for all uppercase words length 2 and more - const text = textDocument.getText(); - const tree = languageParser.parse(text); - console.debug(tree.rootNode.toString()); + ide.acceptFile({ fileId: textDocument.uri, content: textDocument.getText() }); - const query: Parser.Query = languageParser.getLanguage().query(`(ERROR) @error`); + // In this simple example we get the settings for every validate run. + // const settings = await getDocumentSettings(textDocument.uri); - const diagnostics: Diagnostic[] = query.captures(tree.rootNode).map(item => { - console.debug('capture error', item.name, item.node.toString()); - const posRange = { - start: Position.create(item.node.startPosition.row, item.node.startPosition.column), - end: Position.create(item.node.endPosition.row, item.node.endPosition.column), + // Send the computed diagnostics to VSCode. + const lintResult = ide.lint({fileId: textDocument.uri}); + const diagnostics: Diagnostic[] = lintResult.diagnostics.map(diagnostic => { + const rangeInfo = { + start: Position.create(diagnostic.range.start.row, diagnostic.range.start.column), + end: Position.create(diagnostic.range.end.row, diagnostic.range.end.column) }; - const diagnostic: Diagnostic = { - severity: DiagnosticSeverity.Warning, - range: posRange, - message: 'Syntax error', - source: 'ppl', + return { + severity: DiagnosticSeverity.Error, + range: rangeInfo, + message: diagnostic.message, + source: 'platypus', relatedInformation: [ { location: { uri: textDocument.uri, - range: Object.assign({}, posRange) + range: Object.assign({}, rangeInfo) }, - message: `Unexpect token "${item.node.text}"`, + message: diagnostic.message, }, ], }; - return diagnostic; }); // Send the computed diagnostics to VSCode. @@ -210,18 +198,21 @@ connection.onDidChangeWatchedFiles(_change => { // This handler provides the initial list of the completion items. connection.onCompletion( (_textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => { + const semantic = ide.info(); // The pass parameter contains the position of the text document in // which code complete got requested. For the example we ignore this // info and always provide the same completion items. - const functionsItems: CompletionItem[] = data.functions.map((fn: FunctionSepcification, index: number) => ({ - label: fn.name, + const functionsItems: CompletionItem[] = Object.keys(semantic.builtins).map((name: string) => ({ + label: name, kind: CompletionItemKind.Function, - data: index + detail: semantic.builtins[name].description, + documentation: semantic.builtins[name].doc, + data: name, })); - const keywordsItems: CompletionItem[] = data.keywords.map((keyword: string, index: number) => ({ - label: keyword, + const keywordsItems: CompletionItem[] = Object.keys(semantic.keywords).map((name: string) => ({ + label: name, kind: CompletionItemKind.Keyword, - data: index + data: name, })); return [...functionsItems, ...keywordsItems]; } @@ -231,11 +222,11 @@ connection.onCompletion( // the completion list. connection.onCompletionResolve( (item: CompletionItem): CompletionItem => { - if (item.kind === CompletionItemKind.Function) { - const fn = data.functions[item.data]; - item.detail = fn.description; - item.documentation = fn.doc; - } + // if (item.kind === CompletionItemKind.Function) { + // const fn = data.functions[item.data]; + // item.detail = fn.description; + // item.documentation = fn.doc; + // } return item; } ); @@ -264,7 +255,7 @@ connection.onCompletionResolve( // } // }; // }); - + // }); connection.onDocumentFormatting((params: DocumentFormattingParams): TextEdit[] => { diff --git a/ide/plugins/vscode/syntaxes/ppl.tmLanguage.json b/ide/plugins/vscode/syntaxes/platypus.tmLanguage.json similarity index 71% rename from ide/plugins/vscode/syntaxes/ppl.tmLanguage.json rename to ide/plugins/vscode/syntaxes/platypus.tmLanguage.json index effbc36..f566b3b 100644 --- a/ide/plugins/vscode/syntaxes/ppl.tmLanguage.json +++ b/ide/plugins/vscode/syntaxes/platypus.tmLanguage.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "scopeName": "source.ppl", - "name": "ppl", + "scopeName": "source.platypus", + "name": "platypus", "foldingStartMarker": "\\{\\s*$", "foldingStopMarker": "^\\s*\\}", "patterns": [ @@ -29,52 +29,52 @@ ], "repository": { "comment": { - "name": "comment.line.number-sign.ppl", + "name": "comment.line.number-sign.platypus", "match": "#.*" }, "keywords": { "patterns": [{ - "name": "keyword.control.ppl", + "name": "keyword.control.platypus", "match": "\\b(as|assert|if|elif|else|lambda|for|import|schema|protocol|rule|mixin|relaxed|check|and|in|is|not|or|all|any|map|filter|type)\\b" }] }, "number": { "patterns": [{ - "name": "constant.numeric.ppl", + "name": "constant.numeric.platypus", "match": "(?x)-?(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)?" }] }, "literals": { "patterns": [{ - "name": "constant.language.ppl", + "name": "constant.language.platypus", "match": "\\b(true|false|nil|null)\\b" }] }, "single-quoted-strings": { - "name": "string.quoted.single.ppl", + "name": "string.quoted.single.platypus", "begin": "'", "end": "'", "patterns": [ { - "name": "constant.character.escape.ppl", + "name": "constant.character.escape.platypus", "match": "\\\\." } ] }, "double-quoted-strings": { - "name": "string.quoted.double.ppl", + "name": "string.quoted.double.platypus", "begin": "\"", "end": "\"", "patterns": [ { - "name": "constant.character.escape.ppl", + "name": "constant.character.escape.platypus", "match": "\\\\." } ] }, "function-call": { "patterns": [{ - "name": "meta.function-call.ppl support.function.ppl", + "name": "meta.function-call.platypus support.function.platypus", "match": "\\b([a-zA-Z_]+)\\s*\\(" }] } diff --git a/ide/grammars/.gitignore b/ide/tree-sitter-platypus/.gitignore similarity index 100% rename from ide/grammars/.gitignore rename to ide/tree-sitter-platypus/.gitignore diff --git a/ide/grammars/Cargo.toml b/ide/tree-sitter-platypus/Cargo.toml similarity index 59% rename from ide/grammars/Cargo.toml rename to ide/tree-sitter-platypus/Cargo.toml index 99ba05f..e4c5087 100644 --- a/ide/grammars/Cargo.toml +++ b/ide/tree-sitter-platypus/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "tree-sitter-ppl" -description = "ppl grammar for the tree-sitter parsing library" +name = "tree-sitter-platypus" +description = "platypus grammar for the tree-sitter parsing library" version = "0.0.1" -keywords = ["incremental", "parsing", "ppl"] +keywords = ["incremental", "parsing", "platypus"] categories = ["parsing", "text-editors"] -repository = "https://github.com/tree-sitter/tree-sitter-ppl" +repository = "https://github.com/tree-sitter/tree-sitter-platypus" edition = "2018" license = "MIT" diff --git a/ide/grammars/binding.gyp b/ide/tree-sitter-platypus/binding.gyp similarity index 86% rename from ide/grammars/binding.gyp rename to ide/tree-sitter-platypus/binding.gyp index a1d3329..2125f92 100644 --- a/ide/grammars/binding.gyp +++ b/ide/tree-sitter-platypus/binding.gyp @@ -1,7 +1,7 @@ { "targets": [ { - "target_name": "tree_sitter_ppl_binding", + "target_name": "tree_sitter_platypus_binding", "include_dirs": [ " exports, Local module) { Local constructor = Nan::GetFunction(tpl).ToLocalChecked(); Local instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked(); - Nan::SetInternalFieldPointer(instance, 0, tree_sitter_YOUR_LANGUAGE_NAME()); + Nan::SetInternalFieldPointer(instance, 0, tree_sitter_platypus()); - Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("YOUR_LANGUAGE_NAME").ToLocalChecked()); + Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("platypus").ToLocalChecked()); Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); } -NODE_MODULE(tree_sitter_YOUR_LANGUAGE_NAME_binding, Init) +NODE_MODULE(tree_sitter_platypus_binding, Init) } // namespace diff --git a/ide/grammars/bindings/node/index.js b/ide/tree-sitter-platypus/bindings/node/index.js similarity index 63% rename from ide/grammars/bindings/node/index.js rename to ide/tree-sitter-platypus/bindings/node/index.js index 814d8b0..a1e0939 100644 --- a/ide/grammars/bindings/node/index.js +++ b/ide/tree-sitter-platypus/bindings/node/index.js @@ -1,11 +1,11 @@ try { - module.exports = require("../../build/Release/tree_sitter_YOUR_LANGUAGE_NAME_binding"); + module.exports = require("../../build/Release/tree_sitter_platypus_binding"); } catch (error1) { if (error1.code !== 'MODULE_NOT_FOUND') { throw error1; } try { - module.exports = require("../../build/Debug/tree_sitter_YOUR_LANGUAGE_NAME_binding"); + module.exports = require("../../build/Debug/tree_sitter_platypus_binding"); } catch (error2) { if (error2.code !== 'MODULE_NOT_FOUND') { throw error2; diff --git a/ide/grammars/bindings/rust/build.rs b/ide/tree-sitter-platypus/bindings/rust/build.rs similarity index 100% rename from ide/grammars/bindings/rust/build.rs rename to ide/tree-sitter-platypus/bindings/rust/build.rs diff --git a/ide/grammars/bindings/rust/lib.rs b/ide/tree-sitter-platypus/bindings/rust/lib.rs similarity index 80% rename from ide/grammars/bindings/rust/lib.rs rename to ide/tree-sitter-platypus/bindings/rust/lib.rs index b3d2209..cd8ad8b 100644 --- a/ide/grammars/bindings/rust/lib.rs +++ b/ide/tree-sitter-platypus/bindings/rust/lib.rs @@ -1,4 +1,4 @@ -//! This crate provides YOUR_LANGUAGE_NAME language support for the [tree-sitter][] parsing library. +//! This crate provides platypus 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: @@ -6,7 +6,7 @@ //! ``` //! let code = ""; //! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(tree_sitter_YOUR_LANGUAGE_NAME::language()).expect("Error loading YOUR_LANGUAGE_NAME grammar"); +//! parser.set_language(tree_sitter_platypus::language()).expect("Error loading platypus grammar"); //! let tree = parser.parse(code, None).unwrap(); //! ``` //! @@ -18,14 +18,14 @@ use tree_sitter::Language; extern "C" { - fn tree_sitter_YOUR_LANGUAGE_NAME() -> Language; + fn tree_sitter_platypus() -> 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_YOUR_LANGUAGE_NAME() } + unsafe { tree_sitter_platypus() } } /// The content of the [`node-types.json`][] file for this grammar. @@ -47,6 +47,6 @@ mod tests { let mut parser = tree_sitter::Parser::new(); parser .set_language(super::language()) - .expect("Error loading YOUR_LANGUAGE_NAME language"); + .expect("Error loading platypus language"); } } diff --git a/ide/grammars/grammar.js b/ide/tree-sitter-platypus/grammar.js similarity index 97% rename from ide/grammars/grammar.js rename to ide/tree-sitter-platypus/grammar.js index cbf311b..e2ba943 100644 --- a/ide/grammars/grammar.js +++ b/ide/tree-sitter-platypus/grammar.js @@ -14,11 +14,11 @@ const PREC = { } module.exports = grammar({ - name: 'ppl', + name: 'platypus', rules: { // TODO: error? - // See: https://github.com/GuanceCloud/ppl/blob/main/pkg/parser/gram.y#LL131C9-L131C9 + // See: https://github.com/GuanceCloud/platypus/blob/main/pkg/parser/gram.y#LL131C9-L131C9 source_file: $ => repeat($._stmt), // Statements diff --git a/ide/grammars/package-lock.json b/ide/tree-sitter-platypus/package-lock.json similarity index 90% rename from ide/grammars/package-lock.json rename to ide/tree-sitter-platypus/package-lock.json index 1b0c8a5..8ce9f34 100644 --- a/ide/grammars/package-lock.json +++ b/ide/tree-sitter-platypus/package-lock.json @@ -1,11 +1,11 @@ { - "name": "tree-sitter-ppl", + "name": "tree-sitter-platypus", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "tree-sitter-ppl", + "name": "tree-sitter-platypus", "version": "1.0.0", "license": "Apache-2.0", "dependencies": { diff --git a/ide/tree-sitter-platypus/package.json b/ide/tree-sitter-platypus/package.json new file mode 100644 index 0000000..3659181 --- /dev/null +++ b/ide/tree-sitter-platypus/package.json @@ -0,0 +1,35 @@ +{ + "name": "tree-sitter-platypus", + "version": "1.0.0", + "description": "Tree sitter grammar for Platypus Programming Language", + "main": "bindings/node", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/GuanceCloud/platypus.git" + }, + "keywords": [ + "platypus" + ], + "author": "Guance Cloud", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/GuanceCloud/platypus/issues" + }, + "homepage": "https://github.com/GuanceCloud/platypus#readme", + "dependencies": { + "nan": "^2.17.0" + }, + "tree-sitter": [ + { + "scope": "source.platypus", + "file-types": [ + "p", + "platypus" + ], + "injection-regex": "platypus" + } + ] +} diff --git a/ide/grammars/queries/highlights.scm b/ide/tree-sitter-platypus/queries/highlights.scm similarity index 100% rename from ide/grammars/queries/highlights.scm rename to ide/tree-sitter-platypus/queries/highlights.scm diff --git a/ide/grammars/queries/tags.scm b/ide/tree-sitter-platypus/queries/locals.scm similarity index 100% rename from ide/grammars/queries/tags.scm rename to ide/tree-sitter-platypus/queries/locals.scm diff --git a/ide/tree-sitter-platypus/queries/tags.scm b/ide/tree-sitter-platypus/queries/tags.scm new file mode 100644 index 0000000..e69de29 diff --git a/ide/grammars/src/grammar.json b/ide/tree-sitter-platypus/src/grammar.json similarity index 99% rename from ide/grammars/src/grammar.json rename to ide/tree-sitter-platypus/src/grammar.json index 7ab7096..5d0985d 100644 --- a/ide/grammars/src/grammar.json +++ b/ide/tree-sitter-platypus/src/grammar.json @@ -1,5 +1,5 @@ { - "name": "ppl", + "name": "platypus", "rules": { "source_file": { "type": "REPEAT", @@ -141,6 +141,10 @@ "type": "STRING", "value": "in" }, + { + "type": "SYMBOL", + "name": "identifier" + }, { "type": "SYMBOL", "name": "block_stmts" diff --git a/ide/grammars/src/node-types.json b/ide/tree-sitter-platypus/src/node-types.json similarity index 100% rename from ide/grammars/src/node-types.json rename to ide/tree-sitter-platypus/src/node-types.json diff --git a/ide/grammars/src/parser.c b/ide/tree-sitter-platypus/src/parser.c similarity index 80% rename from ide/grammars/src/parser.c rename to ide/tree-sitter-platypus/src/parser.c index e813797..84329ee 100644 --- a/ide/grammars/src/parser.c +++ b/ide/tree-sitter-platypus/src/parser.c @@ -6,7 +6,7 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 141 +#define STATE_COUNT 142 #define LARGE_STATE_COUNT 3 #define SYMBOL_COUNT 72 #define ALIAS_COUNT 0 @@ -668,34 +668,34 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [63] = 63, [64] = 64, [65] = 65, - [66] = 31, - [67] = 19, - [68] = 32, + [66] = 24, + [67] = 30, + [68] = 33, [69] = 10, - [70] = 29, - [71] = 26, - [72] = 20, - [73] = 14, - [74] = 30, - [75] = 33, - [76] = 15, - [77] = 28, - [78] = 25, - [79] = 12, - [80] = 17, - [81] = 18, - [82] = 11, - [83] = 24, - [84] = 8, - [85] = 21, - [86] = 22, - [87] = 23, + [70] = 25, + [71] = 29, + [72] = 26, + [73] = 20, + [74] = 17, + [75] = 18, + [76] = 19, + [77] = 21, + [78] = 22, + [79] = 23, + [80] = 28, + [81] = 8, + [82] = 12, + [83] = 15, + [84] = 11, + [85] = 32, + [86] = 31, + [87] = 14, [88] = 88, [89] = 89, - [90] = 65, - [91] = 63, + [90] = 90, + [91] = 65, [92] = 92, - [93] = 93, + [93] = 63, [94] = 94, [95] = 95, [96] = 95, @@ -707,8 +707,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [102] = 102, [103] = 103, [104] = 103, - [105] = 102, - [106] = 101, + [105] = 101, + [106] = 100, [107] = 107, [108] = 108, [109] = 109, @@ -716,23 +716,23 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [111] = 111, [112] = 112, [113] = 112, - [114] = 111, - [115] = 115, - [116] = 115, - [117] = 110, + [114] = 109, + [115] = 110, + [116] = 116, + [117] = 111, [118] = 118, [119] = 119, [120] = 120, [121] = 121, [122] = 122, - [123] = 120, - [124] = 122, + [123] = 123, + [124] = 124, [125] = 125, [126] = 121, - [127] = 127, - [128] = 127, - [129] = 119, - [130] = 130, + [127] = 118, + [128] = 125, + [129] = 120, + [130] = 122, [131] = 131, [132] = 132, [133] = 133, @@ -743,6 +743,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [138] = 138, [139] = 139, [140] = 140, + [141] = 141, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -750,173 +751,248 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(26); + if (eof) ADVANCE(52); if (lookahead == '!') ADVANCE(11); - if (lookahead == '"') ADVANCE(108); - if (lookahead == '#') ADVANCE(27); - if (lookahead == '%') ADVANCE(79); + if (lookahead == '"') ADVANCE(140); + if (lookahead == '#') ADVANCE(53); + if (lookahead == '%') ADVANCE(109); if (lookahead == '&') ADVANCE(6); - if (lookahead == '\'') ADVANCE(111); - if (lookahead == '(') ADVANCE(70); - if (lookahead == ')') ADVANCE(71); - if (lookahead == '*') ADVANCE(77); - if (lookahead == '+') ADVANCE(74); - if (lookahead == ',') ADVANCE(72); - if (lookahead == '-') ADVANCE(76); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '/') ADVANCE(78); - if (lookahead == '0') ADVANCE(97); - if (lookahead == ':') ADVANCE(90); - if (lookahead == '<') ADVANCE(87); - if (lookahead == '=') ADVANCE(38); - if (lookahead == '>') ADVANCE(84); - if (lookahead == '[') ADVANCE(88); - if (lookahead == '\\') ADVANCE(16); - if (lookahead == ']') ADVANCE(89); - if (lookahead == 'b') ADVANCE(62); - if (lookahead == 'c') ADVANCE(61); - if (lookahead == 'e') ADVANCE(54); - if (lookahead == 'f') ADVANCE(40); - if (lookahead == 'i') ADVANCE(47); - if (lookahead == 'n') ADVANCE(52); - if (lookahead == 't') ADVANCE(63); - if (lookahead == '{') ADVANCE(34); - if (lookahead == '|') ADVANCE(14); - if (lookahead == '}') ADVANCE(35); + if (lookahead == '\'') ADVANCE(143); + if (lookahead == '(') ADVANCE(100); + if (lookahead == ')') ADVANCE(101); + if (lookahead == '*') ADVANCE(107); + if (lookahead == '+') ADVANCE(104); + if (lookahead == ',') ADVANCE(102); + if (lookahead == '-') ADVANCE(106); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(108); + if (lookahead == '0') ADVANCE(129); + if (lookahead == ':') ADVANCE(120); + if (lookahead == '<') ADVANCE(117); + if (lookahead == '=') ADVANCE(69); + if (lookahead == '>') ADVANCE(114); + if (lookahead == '[') ADVANCE(118); + if (lookahead == '\\') ADVANCE(42); + if (lookahead == ']') ADVANCE(119); + if (lookahead == 'b') ADVANCE(34); + if (lookahead == 'c') ADVANCE(33); + if (lookahead == 'e') ADVANCE(26); + if (lookahead == 'f') ADVANCE(14); + if (lookahead == 'i') ADVANCE(20); + if (lookahead == 'n') ADVANCE(24); + if (lookahead == 't') ADVANCE(35); + if (lookahead == '{') ADVANCE(63); + if (lookahead == '|') ADVANCE(41); + if (lookahead == '}') ADVANCE(64); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(23) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + lookahead == ' ') SKIP(49) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); case 1: - if (lookahead == '\n') SKIP(5) - if (lookahead == '"') ADVANCE(108); - if (lookahead == '\\') ADVANCE(16); + if (lookahead == '\n') SKIP(7) + if (lookahead == '\'') ADVANCE(143); + if (lookahead == '\\') ADVANCE(42); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(109); - if (lookahead != 0) ADVANCE(110); + lookahead == ' ') ADVANCE(144); + if (lookahead != 0) ADVANCE(145); END_STATE(); case 2: - if (lookahead == '\n') SKIP(7) - if (lookahead == '\'') ADVANCE(111); - if (lookahead == '\\') ADVANCE(16); + if (lookahead == '\n') SKIP(5) + if (lookahead == '"') ADVANCE(140); + if (lookahead == '\\') ADVANCE(42); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(112); - if (lookahead != 0) ADVANCE(113); + lookahead == ' ') ADVANCE(141); + if (lookahead != 0) ADVANCE(142); END_STATE(); case 3: if (lookahead == '!') ADVANCE(11); - if (lookahead == '%') ADVANCE(79); + if (lookahead == '%') ADVANCE(109); if (lookahead == '&') ADVANCE(6); - if (lookahead == '(') ADVANCE(70); - if (lookahead == ')') ADVANCE(71); - if (lookahead == '*') ADVANCE(77); - if (lookahead == '+') ADVANCE(73); - if (lookahead == ',') ADVANCE(72); - if (lookahead == '-') ADVANCE(75); - if (lookahead == '/') ADVANCE(78); - if (lookahead == ':') ADVANCE(90); - if (lookahead == '<') ADVANCE(87); + if (lookahead == '(') ADVANCE(100); + if (lookahead == ')') ADVANCE(101); + if (lookahead == '*') ADVANCE(107); + if (lookahead == '+') ADVANCE(103); + if (lookahead == ',') ADVANCE(102); + if (lookahead == '-') ADVANCE(105); + if (lookahead == '/') ADVANCE(108); + if (lookahead == ':') ADVANCE(120); + if (lookahead == '<') ADVANCE(117); if (lookahead == '=') ADVANCE(12); - if (lookahead == '>') ADVANCE(84); - if (lookahead == '[') ADVANCE(88); - if (lookahead == ']') ADVANCE(89); - if (lookahead == 'i') ADVANCE(13); - if (lookahead == '{') ADVANCE(34); - if (lookahead == '|') ADVANCE(14); - if (lookahead == '}') ADVANCE(35); + if (lookahead == '>') ADVANCE(114); + if (lookahead == '[') ADVANCE(118); + if (lookahead == ']') ADVANCE(119); + if (lookahead == '{') ADVANCE(63); + if (lookahead == '|') ADVANCE(41); + if (lookahead == '}') ADVANCE(64); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(3) + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); case 4: - if (lookahead == '"') ADVANCE(108); - if (lookahead == '\'') ADVANCE(111); - if (lookahead == '(') ADVANCE(70); - if (lookahead == ')') ADVANCE(71); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(97); - if (lookahead == '[') ADVANCE(88); - if (lookahead == ']') ADVANCE(89); - if (lookahead == 'f') ADVANCE(41); - if (lookahead == 'n') ADVANCE(52); - if (lookahead == 't') ADVANCE(63); - if (lookahead == '{') ADVANCE(34); - if (lookahead == '}') ADVANCE(35); + if (lookahead == '"') ADVANCE(140); + if (lookahead == '\'') ADVANCE(143); + if (lookahead == '(') ADVANCE(100); + if (lookahead == ')') ADVANCE(101); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(129); + if (lookahead == '[') ADVANCE(118); + if (lookahead == ']') ADVANCE(119); + if (lookahead == 'f') ADVANCE(71); + if (lookahead == 'n') ADVANCE(82); + if (lookahead == 't') ADVANCE(93); + if (lookahead == '{') ADVANCE(63); + if (lookahead == '}') ADVANCE(64); if (lookahead == '+' || lookahead == '-') ADVANCE(8); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(4) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); case 5: - if (lookahead == '"') ADVANCE(108); + if (lookahead == '"') ADVANCE(140); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(5) END_STATE(); case 6: - if (lookahead == '&') ADVANCE(81); + if (lookahead == '&') ADVANCE(111); END_STATE(); case 7: - if (lookahead == '\'') ADVANCE(111); + if (lookahead == '\'') ADVANCE(143); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(7) END_STATE(); case 8: - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(97); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(129); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); case 9: - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(95); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(96); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(127); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); if (('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(136); END_STATE(); case 10: - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(98); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(130); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); case 11: - if (lookahead == '=') ADVANCE(83); + if (lookahead == '=') ADVANCE(113); END_STATE(); case 12: - if (lookahead == '=') ADVANCE(82); + if (lookahead == '=') ADVANCE(112); END_STATE(); case 13: - if (lookahead == 'n') ADVANCE(32); + if (lookahead == 'a') ADVANCE(25); END_STATE(); case 14: - if (lookahead == '|') ADVANCE(80); + if (lookahead == 'a') ADVANCE(27); + if (lookahead == 'o') ADVANCE(36); END_STATE(); case 15: - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(15) - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + if (lookahead == 'e') ADVANCE(13); END_STATE(); case 16: + if (lookahead == 'e') ADVANCE(58); + END_STATE(); + case 17: + if (lookahead == 'e') ADVANCE(146); + END_STATE(); + case 18: + if (lookahead == 'e') ADVANCE(148); + END_STATE(); + case 19: + if (lookahead == 'e') ADVANCE(65); + END_STATE(); + case 20: + if (lookahead == 'f') ADVANCE(54); + if (lookahead == 'n') ADVANCE(62); + END_STATE(); + case 21: + if (lookahead == 'f') ADVANCE(56); + END_STATE(); + case 22: + if (lookahead == 'i') ADVANCE(21); + if (lookahead == 's') ADVANCE(16); + END_STATE(); + case 23: + if (lookahead == 'i') ADVANCE(32); + END_STATE(); + case 24: + if (lookahead == 'i') ADVANCE(28); + if (lookahead == 'u') ADVANCE(30); + END_STATE(); + case 25: + if (lookahead == 'k') ADVANCE(67); + END_STATE(); + case 26: + if (lookahead == 'l') ADVANCE(22); + END_STATE(); + case 27: + if (lookahead == 'l') ADVANCE(37); + END_STATE(); + case 28: + if (lookahead == 'l') ADVANCE(121); + END_STATE(); + case 29: + if (lookahead == 'l') ADVANCE(123); + END_STATE(); + case 30: + if (lookahead == 'l') ADVANCE(29); + END_STATE(); + case 31: + if (lookahead == 'n') ADVANCE(38); + END_STATE(); + case 32: + if (lookahead == 'n') ADVANCE(40); + END_STATE(); + case 33: + if (lookahead == 'o') ADVANCE(31); + END_STATE(); + case 34: + if (lookahead == 'r') ADVANCE(15); + END_STATE(); + case 35: + if (lookahead == 'r') ADVANCE(39); + END_STATE(); + case 36: + if (lookahead == 'r') ADVANCE(60); + END_STATE(); + case 37: + if (lookahead == 's') ADVANCE(18); + END_STATE(); + case 38: + if (lookahead == 't') ADVANCE(23); + END_STATE(); + case 39: + if (lookahead == 'u') ADVANCE(17); + END_STATE(); + case 40: + if (lookahead == 'u') ADVANCE(19); + END_STATE(); + case 41: + if (lookahead == '|') ADVANCE(110); + END_STATE(); + case 42: if (lookahead == '"' || lookahead == '/' || lookahead == '\\' || @@ -925,854 +1001,865 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 'n' || lookahead == 'r' || lookahead == 't' || - lookahead == 'u') ADVANCE(116); + lookahead == 'u') ADVANCE(150); END_STATE(); - case 17: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + case 43: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 18: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); + case 44: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(125); END_STATE(); - case 19: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + case 45: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); if (('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(136); END_STATE(); - case 20: + case 46: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(101); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(133); END_STATE(); - case 21: + case 47: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(104); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(136); END_STATE(); - case 22: + case 48: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(94); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(126); END_STATE(); - case 23: - if (eof) ADVANCE(26); + case 49: + if (eof) ADVANCE(52); if (lookahead == '!') ADVANCE(11); - if (lookahead == '"') ADVANCE(108); - if (lookahead == '#') ADVANCE(27); - if (lookahead == '%') ADVANCE(79); + if (lookahead == '"') ADVANCE(140); + if (lookahead == '#') ADVANCE(53); + if (lookahead == '%') ADVANCE(109); if (lookahead == '&') ADVANCE(6); - if (lookahead == '\'') ADVANCE(111); - if (lookahead == '(') ADVANCE(70); - if (lookahead == ')') ADVANCE(71); - if (lookahead == '*') ADVANCE(77); - if (lookahead == '+') ADVANCE(74); - if (lookahead == ',') ADVANCE(72); - if (lookahead == '-') ADVANCE(76); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '/') ADVANCE(78); - if (lookahead == '0') ADVANCE(97); - if (lookahead == ':') ADVANCE(90); - if (lookahead == '<') ADVANCE(87); - if (lookahead == '=') ADVANCE(38); - if (lookahead == '>') ADVANCE(84); - if (lookahead == '[') ADVANCE(88); - if (lookahead == ']') ADVANCE(89); - if (lookahead == 'b') ADVANCE(62); - if (lookahead == 'c') ADVANCE(61); - if (lookahead == 'e') ADVANCE(54); - if (lookahead == 'f') ADVANCE(40); - if (lookahead == 'i') ADVANCE(47); - if (lookahead == 'n') ADVANCE(52); - if (lookahead == 't') ADVANCE(63); - if (lookahead == '{') ADVANCE(34); - if (lookahead == '|') ADVANCE(14); - if (lookahead == '}') ADVANCE(35); + if (lookahead == '\'') ADVANCE(143); + if (lookahead == '(') ADVANCE(100); + if (lookahead == ')') ADVANCE(101); + if (lookahead == '*') ADVANCE(107); + if (lookahead == '+') ADVANCE(104); + if (lookahead == ',') ADVANCE(102); + if (lookahead == '-') ADVANCE(106); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(108); + if (lookahead == '0') ADVANCE(129); + if (lookahead == ':') ADVANCE(120); + if (lookahead == '<') ADVANCE(117); + if (lookahead == '=') ADVANCE(69); + if (lookahead == '>') ADVANCE(114); + if (lookahead == '[') ADVANCE(118); + if (lookahead == ']') ADVANCE(119); + if (lookahead == 'b') ADVANCE(34); + if (lookahead == 'c') ADVANCE(33); + if (lookahead == 'e') ADVANCE(26); + if (lookahead == 'f') ADVANCE(14); + if (lookahead == 'i') ADVANCE(20); + if (lookahead == 'n') ADVANCE(24); + if (lookahead == 't') ADVANCE(35); + if (lookahead == '{') ADVANCE(63); + if (lookahead == '|') ADVANCE(41); + if (lookahead == '}') ADVANCE(64); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(23) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + lookahead == ' ') SKIP(49) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 24: - if (eof) ADVANCE(26); + case 50: + if (eof) ADVANCE(52); if (lookahead == '!') ADVANCE(11); - if (lookahead == '"') ADVANCE(108); - if (lookahead == '#') ADVANCE(27); - if (lookahead == '%') ADVANCE(79); + if (lookahead == '"') ADVANCE(140); + if (lookahead == '#') ADVANCE(53); + if (lookahead == '%') ADVANCE(109); if (lookahead == '&') ADVANCE(6); - if (lookahead == '\'') ADVANCE(111); - if (lookahead == '(') ADVANCE(70); - if (lookahead == '*') ADVANCE(77); - if (lookahead == '+') ADVANCE(74); - if (lookahead == ',') ADVANCE(72); - if (lookahead == '-') ADVANCE(76); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '/') ADVANCE(78); - if (lookahead == '0') ADVANCE(97); - if (lookahead == '<') ADVANCE(87); - if (lookahead == '=') ADVANCE(38); - if (lookahead == '>') ADVANCE(84); - if (lookahead == '[') ADVANCE(88); - if (lookahead == ']') ADVANCE(89); - if (lookahead == 'b') ADVANCE(62); - if (lookahead == 'c') ADVANCE(61); - if (lookahead == 'f') ADVANCE(40); - if (lookahead == 'i') ADVANCE(48); - if (lookahead == 'n') ADVANCE(52); - if (lookahead == 't') ADVANCE(63); - if (lookahead == '{') ADVANCE(34); - if (lookahead == '|') ADVANCE(14); - if (lookahead == '}') ADVANCE(35); + if (lookahead == '\'') ADVANCE(143); + if (lookahead == '(') ADVANCE(100); + if (lookahead == '*') ADVANCE(107); + if (lookahead == '+') ADVANCE(104); + if (lookahead == ',') ADVANCE(102); + if (lookahead == '-') ADVANCE(106); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '/') ADVANCE(108); + if (lookahead == '0') ADVANCE(129); + if (lookahead == '<') ADVANCE(117); + if (lookahead == '=') ADVANCE(69); + if (lookahead == '>') ADVANCE(114); + if (lookahead == '[') ADVANCE(118); + if (lookahead == ']') ADVANCE(119); + if (lookahead == 'b') ADVANCE(92); + if (lookahead == 'c') ADVANCE(91); + if (lookahead == 'f') ADVANCE(70); + if (lookahead == 'i') ADVANCE(78); + if (lookahead == 'n') ADVANCE(82); + if (lookahead == 't') ADVANCE(93); + if (lookahead == '{') ADVANCE(63); + if (lookahead == '|') ADVANCE(41); + if (lookahead == '}') ADVANCE(64); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(24) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + lookahead == ' ') SKIP(50) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 25: - if (eof) ADVANCE(26); - if (lookahead == '"') ADVANCE(108); - if (lookahead == '#') ADVANCE(27); - if (lookahead == '\'') ADVANCE(111); - if (lookahead == '(') ADVANCE(70); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(97); - if (lookahead == '[') ADVANCE(88); - if (lookahead == 'b') ADVANCE(62); - if (lookahead == 'c') ADVANCE(61); - if (lookahead == 'e') ADVANCE(54); - if (lookahead == 'f') ADVANCE(40); - if (lookahead == 'i') ADVANCE(48); - if (lookahead == 'n') ADVANCE(52); - if (lookahead == 't') ADVANCE(63); - if (lookahead == '{') ADVANCE(34); - if (lookahead == '}') ADVANCE(35); + case 51: + if (eof) ADVANCE(52); + if (lookahead == '"') ADVANCE(140); + if (lookahead == '#') ADVANCE(53); + if (lookahead == '\'') ADVANCE(143); + if (lookahead == '(') ADVANCE(100); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(129); + if (lookahead == '[') ADVANCE(118); + if (lookahead == 'b') ADVANCE(92); + if (lookahead == 'c') ADVANCE(91); + if (lookahead == 'e') ADVANCE(87); + if (lookahead == 'f') ADVANCE(70); + if (lookahead == 'i') ADVANCE(78); + if (lookahead == 'n') ADVANCE(82); + if (lookahead == 't') ADVANCE(93); + if (lookahead == '{') ADVANCE(63); + if (lookahead == '}') ADVANCE(64); if (lookahead == '+' || lookahead == '-') ADVANCE(8); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(25) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + lookahead == ' ') SKIP(51) + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 26: + case 52: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 27: + case 53: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(27); + lookahead != '\n') ADVANCE(53); END_STATE(); - case 28: + case 54: + ACCEPT_TOKEN(anon_sym_if); + END_STATE(); + case 55: ACCEPT_TOKEN(anon_sym_if); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 29: + case 56: + ACCEPT_TOKEN(anon_sym_elif); + END_STATE(); + case 57: ACCEPT_TOKEN(anon_sym_elif); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 30: + case 58: + ACCEPT_TOKEN(anon_sym_else); + END_STATE(); + case 59: ACCEPT_TOKEN(anon_sym_else); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 31: + case 60: + ACCEPT_TOKEN(anon_sym_for); + END_STATE(); + case 61: ACCEPT_TOKEN(anon_sym_for); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); - END_STATE(); - case 32: - ACCEPT_TOKEN(anon_sym_in); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 33: + case 62: ACCEPT_TOKEN(anon_sym_in); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); END_STATE(); - case 34: + case 63: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); - case 35: + case 64: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); - case 36: + case 65: + ACCEPT_TOKEN(anon_sym_continue); + END_STATE(); + case 66: ACCEPT_TOKEN(anon_sym_continue); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 37: + case 67: + ACCEPT_TOKEN(anon_sym_break); + END_STATE(); + case 68: ACCEPT_TOKEN(anon_sym_break); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 38: + case 69: ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(82); - END_STATE(); - case 39: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(53); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(69); + if (lookahead == '=') ADVANCE(112); END_STATE(); - case 40: + case 70: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(55); - if (lookahead == 'o') ADVANCE(64); + if (lookahead == 'a') ADVANCE(84); + if (lookahead == 'o') ADVANCE(94); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 41: + case 71: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(55); + if (lookahead == 'a') ADVANCE(84); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 42: + case 72: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(39); + if (lookahead == 'a') ADVANCE(83); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 43: + case 73: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(30); + if (lookahead == 'e') ADVANCE(72); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 44: + case 74: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(114); + if (lookahead == 'e') ADVANCE(147); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 45: + case 75: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(115); + if (lookahead == 'e') ADVANCE(149); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 46: + case 76: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(36); + if (lookahead == 'e') ADVANCE(66); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 47: + case 77: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'f') ADVANCE(28); - if (lookahead == 'n') ADVANCE(33); + if (lookahead == 'e') ADVANCE(59); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 48: + case 78: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'f') ADVANCE(28); + if (lookahead == 'f') ADVANCE(55); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 49: + case 79: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'f') ADVANCE(29); + if (lookahead == 'f') ADVANCE(57); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 50: + case 80: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'i') ADVANCE(49); - if (lookahead == 's') ADVANCE(43); + if (lookahead == 'i') ADVANCE(79); + if (lookahead == 's') ADVANCE(77); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 51: + case 81: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'i') ADVANCE(60); + if (lookahead == 'i') ADVANCE(90); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 52: + case 82: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'i') ADVANCE(56); - if (lookahead == 'u') ADVANCE(58); + if (lookahead == 'i') ADVANCE(85); + if (lookahead == 'u') ADVANCE(88); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 53: + case 83: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'k') ADVANCE(37); + if (lookahead == 'k') ADVANCE(68); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 54: + case 84: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(50); + if (lookahead == 'l') ADVANCE(95); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 55: + case 85: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(65); + if (lookahead == 'l') ADVANCE(122); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 56: + case 86: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(91); + if (lookahead == 'l') ADVANCE(124); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 57: + case 87: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(92); + if (lookahead == 'l') ADVANCE(80); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 58: + case 88: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(57); + if (lookahead == 'l') ADVANCE(86); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 59: + case 89: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'n') ADVANCE(66); + if (lookahead == 'n') ADVANCE(96); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 60: + case 90: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'n') ADVANCE(68); + if (lookahead == 'n') ADVANCE(98); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 61: + case 91: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'o') ADVANCE(59); + if (lookahead == 'o') ADVANCE(89); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 62: + case 92: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(42); + if (lookahead == 'r') ADVANCE(73); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 63: + case 93: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(67); + if (lookahead == 'r') ADVANCE(97); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 64: + case 94: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(31); + if (lookahead == 'r') ADVANCE(61); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 65: + case 95: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 's') ADVANCE(45); + if (lookahead == 's') ADVANCE(75); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 66: + case 96: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 't') ADVANCE(51); + if (lookahead == 't') ADVANCE(81); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 67: + case 97: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(44); + if (lookahead == 'u') ADVANCE(74); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 68: + case 98: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(46); + if (lookahead == 'u') ADVANCE(76); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 69: + case 99: ACCEPT_TOKEN(sym_identifier); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 70: + case 100: ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); - case 71: + case 101: ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); - case 72: + case 102: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 73: + case 103: ACCEPT_TOKEN(anon_sym_PLUS); END_STATE(); - case 74: + case 104: ACCEPT_TOKEN(anon_sym_PLUS); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(97); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(129); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 75: + case 105: ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); - case 76: + case 106: ACCEPT_TOKEN(anon_sym_DASH); - if (lookahead == '.') ADVANCE(18); - if (lookahead == '0') ADVANCE(97); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(99); + if (lookahead == '.') ADVANCE(44); + if (lookahead == '0') ADVANCE(129); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 77: + case 107: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 78: + case 108: ACCEPT_TOKEN(anon_sym_SLASH); END_STATE(); - case 79: + case 109: ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); - case 80: + case 110: ACCEPT_TOKEN(anon_sym_PIPE_PIPE); END_STATE(); - case 81: + case 111: ACCEPT_TOKEN(anon_sym_AMP_AMP); END_STATE(); - case 82: + case 112: ACCEPT_TOKEN(anon_sym_EQ_EQ); END_STATE(); - case 83: + case 113: ACCEPT_TOKEN(anon_sym_BANG_EQ); END_STATE(); - case 84: + case 114: ACCEPT_TOKEN(anon_sym_GT); - if (lookahead == '=') ADVANCE(85); + if (lookahead == '=') ADVANCE(115); END_STATE(); - case 85: + case 115: ACCEPT_TOKEN(anon_sym_GT_EQ); END_STATE(); - case 86: + case 116: ACCEPT_TOKEN(anon_sym_LT_EQ); END_STATE(); - case 87: + case 117: ACCEPT_TOKEN(anon_sym_LT); - if (lookahead == '=') ADVANCE(86); + if (lookahead == '=') ADVANCE(116); END_STATE(); - case 88: + case 118: ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); - case 89: + case 119: ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); - case 90: + case 120: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 91: + case 121: + ACCEPT_TOKEN(anon_sym_nil); + END_STATE(); + case 122: ACCEPT_TOKEN(anon_sym_nil); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 92: + case 123: + ACCEPT_TOKEN(anon_sym_null); + END_STATE(); + case 124: ACCEPT_TOKEN(anon_sym_null); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 93: + case 125: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(18); + if (lookahead == '\'') ADVANCE(44); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(106); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); + lookahead == 'p') ADVANCE(138); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(125); END_STATE(); - case 94: + case 126: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(22); + if (lookahead == '\'') ADVANCE(48); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(94); + lookahead == 'f') ADVANCE(126); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'E') || - ('a' <= lookahead && lookahead <= 'e')) ADVANCE(94); + ('a' <= lookahead && lookahead <= 'e')) ADVANCE(126); END_STATE(); - case 95: + case 127: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(19); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(45); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(104); + lookahead == 'f') ADVANCE(136); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); - if (lookahead == 'b') ADVANCE(103); - if (lookahead == 'x') ADVANCE(21); + lookahead == 'u') ADVANCE(139); + if (lookahead == 'b') ADVANCE(135); + if (lookahead == 'x') ADVANCE(47); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(102); + lookahead == 'e') ADVANCE(134); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); END_STATE(); - case 96: + case 128: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(19); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(45); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(104); + lookahead == 'f') ADVANCE(136); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(102); + lookahead == 'e') ADVANCE(134); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); END_STATE(); - case 97: + case 129: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(17); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(43); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'b') ADVANCE(10); if (lookahead == 'x') ADVANCE(9); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(106); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + lookahead == 'p') ADVANCE(138); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 98: + case 130: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(17); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(43); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); - if (lookahead == 'b') ADVANCE(17); - if (lookahead == 'x') ADVANCE(21); + lookahead == 'u') ADVANCE(139); + if (lookahead == 'b') ADVANCE(43); + if (lookahead == 'x') ADVANCE(47); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(106); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + lookahead == 'p') ADVANCE(138); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 99: + case 131: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(17); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(43); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(106); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(99); + lookahead == 'p') ADVANCE(138); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 100: + case 132: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(20); + if (lookahead == '\'') ADVANCE(46); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(101); + lookahead == 'f') ADVANCE(133); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == '+' || - lookahead == '-') ADVANCE(22); + lookahead == '-') ADVANCE(48); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(100); + lookahead == 'e') ADVANCE(132); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(101); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(133); END_STATE(); - case 101: + case 133: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(20); + if (lookahead == '\'') ADVANCE(46); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(101); + lookahead == 'f') ADVANCE(133); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(100); + lookahead == 'e') ADVANCE(132); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(101); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(133); END_STATE(); - case 102: + case 134: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(21); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(47); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(104); + lookahead == 'f') ADVANCE(136); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == '+' || - lookahead == '-') ADVANCE(22); + lookahead == '-') ADVANCE(48); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(102); + lookahead == 'e') ADVANCE(134); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); END_STATE(); - case 103: + case 135: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(21); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(47); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(104); + lookahead == 'f') ADVANCE(136); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(102); + lookahead == 'e') ADVANCE(134); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(96); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); END_STATE(); - case 104: + case 136: ACCEPT_TOKEN(sym_number_lit); - if (lookahead == '\'') ADVANCE(21); - if (lookahead == '.') ADVANCE(105); + if (lookahead == '\'') ADVANCE(47); + if (lookahead == '.') ADVANCE(137); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(104); + lookahead == 'f') ADVANCE(136); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(102); + lookahead == 'e') ADVANCE(134); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(104); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); END_STATE(); - case 105: + case 137: ACCEPT_TOKEN(sym_number_lit); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(101); + lookahead == 'f') ADVANCE(133); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(100); + lookahead == 'e') ADVANCE(132); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(106); + lookahead == 'p') ADVANCE(138); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(101); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(133); END_STATE(); - case 106: + case 138: ACCEPT_TOKEN(sym_number_lit); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(94); + lookahead == 'f') ADVANCE(126); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); if (lookahead == '+' || - lookahead == '-') ADVANCE(22); + lookahead == '-') ADVANCE(48); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'E') || - ('a' <= lookahead && lookahead <= 'e')) ADVANCE(94); + ('a' <= lookahead && lookahead <= 'e')) ADVANCE(126); END_STATE(); - case 107: + case 139: ACCEPT_TOKEN(sym_number_lit); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(107); + lookahead == 'u') ADVANCE(139); END_STATE(); - case 108: + case 140: ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); - case 109: + case 141: ACCEPT_TOKEN(aux_sym_string_lit_token1); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(109); + lookahead == ' ') ADVANCE(141); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(110); + lookahead != '\\') ADVANCE(142); END_STATE(); - case 110: + case 142: ACCEPT_TOKEN(aux_sym_string_lit_token1); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(110); + lookahead != '\\') ADVANCE(142); END_STATE(); - case 111: + case 143: ACCEPT_TOKEN(anon_sym_SQUOTE); END_STATE(); - case 112: + case 144: ACCEPT_TOKEN(aux_sym_string_lit_token2); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(112); + lookahead == ' ') ADVANCE(144); if (lookahead != 0 && lookahead != '\n' && lookahead != '\'' && - lookahead != '\\') ADVANCE(113); + lookahead != '\\') ADVANCE(145); END_STATE(); - case 113: + case 145: ACCEPT_TOKEN(aux_sym_string_lit_token2); if (lookahead != 0 && lookahead != '\n' && lookahead != '\'' && - lookahead != '\\') ADVANCE(113); + lookahead != '\\') ADVANCE(145); END_STATE(); - case 114: + case 146: + ACCEPT_TOKEN(anon_sym_true); + END_STATE(); + case 147: ACCEPT_TOKEN(anon_sym_true); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 115: + case 148: + ACCEPT_TOKEN(anon_sym_false); + END_STATE(); + case 149: ACCEPT_TOKEN(anon_sym_false); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(69); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); - case 116: + case 150: ACCEPT_TOKEN(sym_escape_sequence); END_STATE(); default: @@ -1782,39 +1869,39 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static const TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 24}, - [2] = {.lex_state = 24}, - [3] = {.lex_state = 24}, - [4] = {.lex_state = 24}, - [5] = {.lex_state = 24}, - [6] = {.lex_state = 24}, - [7] = {.lex_state = 24}, - [8] = {.lex_state = 24}, - [9] = {.lex_state = 24}, - [10] = {.lex_state = 24}, - [11] = {.lex_state = 24}, - [12] = {.lex_state = 24}, - [13] = {.lex_state = 24}, - [14] = {.lex_state = 24}, - [15] = {.lex_state = 24}, - [16] = {.lex_state = 24}, - [17] = {.lex_state = 24}, - [18] = {.lex_state = 24}, - [19] = {.lex_state = 24}, - [20] = {.lex_state = 24}, - [21] = {.lex_state = 24}, - [22] = {.lex_state = 24}, - [23] = {.lex_state = 24}, - [24] = {.lex_state = 24}, - [25] = {.lex_state = 24}, - [26] = {.lex_state = 24}, - [27] = {.lex_state = 24}, - [28] = {.lex_state = 24}, - [29] = {.lex_state = 24}, - [30] = {.lex_state = 24}, - [31] = {.lex_state = 24}, - [32] = {.lex_state = 24}, - [33] = {.lex_state = 24}, + [1] = {.lex_state = 50}, + [2] = {.lex_state = 50}, + [3] = {.lex_state = 50}, + [4] = {.lex_state = 50}, + [5] = {.lex_state = 50}, + [6] = {.lex_state = 50}, + [7] = {.lex_state = 50}, + [8] = {.lex_state = 50}, + [9] = {.lex_state = 50}, + [10] = {.lex_state = 50}, + [11] = {.lex_state = 50}, + [12] = {.lex_state = 50}, + [13] = {.lex_state = 50}, + [14] = {.lex_state = 50}, + [15] = {.lex_state = 50}, + [16] = {.lex_state = 50}, + [17] = {.lex_state = 50}, + [18] = {.lex_state = 50}, + [19] = {.lex_state = 50}, + [20] = {.lex_state = 50}, + [21] = {.lex_state = 50}, + [22] = {.lex_state = 50}, + [23] = {.lex_state = 50}, + [24] = {.lex_state = 50}, + [25] = {.lex_state = 50}, + [26] = {.lex_state = 50}, + [27] = {.lex_state = 50}, + [28] = {.lex_state = 50}, + [29] = {.lex_state = 50}, + [30] = {.lex_state = 50}, + [31] = {.lex_state = 50}, + [32] = {.lex_state = 50}, + [33] = {.lex_state = 50}, [34] = {.lex_state = 4}, [35] = {.lex_state = 4}, [36] = {.lex_state = 4}, @@ -1841,12 +1928,12 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [57] = {.lex_state = 4}, [58] = {.lex_state = 4}, [59] = {.lex_state = 4}, - [60] = {.lex_state = 25}, - [61] = {.lex_state = 25}, - [62] = {.lex_state = 25}, - [63] = {.lex_state = 25}, - [64] = {.lex_state = 25}, - [65] = {.lex_state = 25}, + [60] = {.lex_state = 51}, + [61] = {.lex_state = 51}, + [62] = {.lex_state = 51}, + [63] = {.lex_state = 51}, + [64] = {.lex_state = 51}, + [65] = {.lex_state = 51}, [66] = {.lex_state = 3}, [67] = {.lex_state = 3}, [68] = {.lex_state = 3}, @@ -1869,25 +1956,25 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [85] = {.lex_state = 3}, [86] = {.lex_state = 3}, [87] = {.lex_state = 3}, - [88] = {.lex_state = 24}, - [89] = {.lex_state = 24}, - [90] = {.lex_state = 24}, - [91] = {.lex_state = 24}, - [92] = {.lex_state = 24}, - [93] = {.lex_state = 24}, - [94] = {.lex_state = 24}, + [88] = {.lex_state = 50}, + [89] = {.lex_state = 50}, + [90] = {.lex_state = 50}, + [91] = {.lex_state = 50}, + [92] = {.lex_state = 50}, + [93] = {.lex_state = 50}, + [94] = {.lex_state = 50}, [95] = {.lex_state = 3}, [96] = {.lex_state = 3}, [97] = {.lex_state = 3}, [98] = {.lex_state = 3}, [99] = {.lex_state = 3}, [100] = {.lex_state = 3}, - [101] = {.lex_state = 4}, + [101] = {.lex_state = 3}, [102] = {.lex_state = 3}, - [103] = {.lex_state = 3}, - [104] = {.lex_state = 3}, + [103] = {.lex_state = 4}, + [104] = {.lex_state = 4}, [105] = {.lex_state = 3}, - [106] = {.lex_state = 4}, + [106] = {.lex_state = 3}, [107] = {.lex_state = 4}, [108] = {.lex_state = 1}, [109] = {.lex_state = 2}, @@ -1896,9 +1983,9 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [112] = {.lex_state = 1}, [113] = {.lex_state = 1}, [114] = {.lex_state = 2}, - [115] = {.lex_state = 2}, + [115] = {.lex_state = 1}, [116] = {.lex_state = 2}, - [117] = {.lex_state = 1}, + [117] = {.lex_state = 2}, [118] = {.lex_state = 0}, [119] = {.lex_state = 0}, [120] = {.lex_state = 0}, @@ -1920,8 +2007,9 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [136] = {.lex_state = 0}, [137] = {.lex_state = 0}, [138] = {.lex_state = 3}, - [139] = {.lex_state = 15}, - [140] = {.lex_state = 0}, + [139] = {.lex_state = 0}, + [140] = {.lex_state = 3}, + [141] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -1938,7 +2026,6 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_continue] = ACTIONS(1), [anon_sym_break] = ACTIONS(1), [anon_sym_EQ] = ACTIONS(1), - [sym_identifier] = ACTIONS(1), [anon_sym_LPAREN] = ACTIONS(1), [anon_sym_RPAREN] = ACTIONS(1), [anon_sym_COMMA] = ACTIONS(1), @@ -1968,7 +2055,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_escape_sequence] = ACTIONS(1), }, [1] = { - [sym_source_file] = STATE(140), + [sym_source_file] = STATE(139), [sym__stmt] = STATE(7), [sym_if_stmt] = STATE(7), [sym_for_in_stmt] = STATE(7), @@ -3269,7 +3356,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(209), 1, anon_sym_SQUOTE, - STATE(121), 1, + STATE(118), 1, sym_map_elem, ACTIONS(203), 2, anon_sym_nil, @@ -3277,7 +3364,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(100), 11, + STATE(102), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3306,7 +3393,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SQUOTE, ACTIONS(213), 1, anon_sym_RBRACE, - STATE(126), 1, + STATE(127), 1, sym_map_elem, ACTIONS(203), 2, anon_sym_nil, @@ -3314,7 +3401,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(100), 11, + STATE(102), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3376,7 +3463,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(209), 1, anon_sym_SQUOTE, - STATE(136), 1, + STATE(135), 1, sym_map_elem, ACTIONS(203), 2, anon_sym_nil, @@ -3384,7 +3471,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(100), 11, + STATE(102), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3452,7 +3539,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(86), 11, + STATE(78), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3485,7 +3572,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(85), 11, + STATE(77), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3502,7 +3589,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(229), 1, anon_sym_LBRACK, - STATE(71), 1, + STATE(72), 1, sym_argument_list, ACTIONS(99), 2, anon_sym_GT, @@ -3546,7 +3633,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(80), 11, + STATE(74), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3579,7 +3666,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(81), 11, + STATE(75), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3612,7 +3699,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(98), 11, + STATE(99), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3711,7 +3798,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(67), 11, + STATE(76), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3876,7 +3963,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(104), 11, + STATE(105), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3942,7 +4029,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(103), 11, + STATE(101), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3975,7 +4062,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(99), 11, + STATE(98), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4008,7 +4095,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(102), 11, + STATE(106), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4041,7 +4128,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(87), 11, + STATE(79), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4074,7 +4161,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(211), 2, anon_sym_true, anon_sym_false, - STATE(105), 11, + STATE(100), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4269,10 +4356,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_true, anon_sym_false, [2678] = 2, - ACTIONS(183), 2, + ACTIONS(155), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(181), 17, + ACTIONS(153), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4290,36 +4377,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2702] = 5, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(306), 2, + [2702] = 2, + ACTIONS(179), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 10, + ACTIONS(177), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2732] = 2, - ACTIONS(187), 2, + [2726] = 2, + ACTIONS(191), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(185), 17, + ACTIONS(189), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4337,7 +4421,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2756] = 2, + [2750] = 2, ACTIONS(109), 2, anon_sym_GT, anon_sym_LT, @@ -4359,11 +4443,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2780] = 2, - ACTIONS(175), 2, + [2774] = 2, + ACTIONS(159), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(173), 17, + ACTIONS(157), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4381,11 +4465,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2804] = 2, - ACTIONS(163), 2, + [2798] = 2, + ACTIONS(175), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(161), 17, + ACTIONS(173), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4403,11 +4487,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2828] = 2, - ACTIONS(151), 2, + [2822] = 2, + ACTIONS(163), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(149), 17, + ACTIONS(161), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4425,11 +4509,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2852] = 2, - ACTIONS(121), 2, + [2846] = 2, + ACTIONS(151), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(119), 17, + ACTIONS(149), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4447,20 +4531,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2876] = 2, - ACTIONS(179), 2, + [2870] = 4, + ACTIONS(147), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(177), 17, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, + ACTIONS(304), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, + ACTIONS(145), 12, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, @@ -4469,55 +4555,89 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2900] = 2, - ACTIONS(191), 2, + [2898] = 7, + ACTIONS(306), 1, + anon_sym_PIPE_PIPE, + ACTIONS(308), 1, + anon_sym_AMP_AMP, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(189), 17, + ACTIONS(312), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 8, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [2932] = 5, + ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, + ACTIONS(310), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(312), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(304), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, + ACTIONS(145), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2924] = 2, - ACTIONS(125), 2, + [2962] = 6, + ACTIONS(308), 1, + anon_sym_AMP_AMP, + ACTIONS(302), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(123), 17, + ACTIONS(312), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 9, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2948] = 2, - ACTIONS(171), 2, + [2994] = 2, + ACTIONS(147), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(169), 17, + ACTIONS(145), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4535,20 +4655,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2972] = 2, - ACTIONS(159), 2, + [3018] = 3, + ACTIONS(147), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(157), 17, + ACTIONS(304), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(145), 14, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_PLUS, anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, @@ -4557,11 +4678,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2996] = 2, - ACTIONS(117), 2, + [3044] = 2, + ACTIONS(171), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(115), 17, + ACTIONS(169), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4579,62 +4700,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3020] = 4, - ACTIONS(147), 2, + [3068] = 2, + ACTIONS(95), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 12, + ACTIONS(93), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_RBRACK, - anon_sym_COLON, - [3048] = 7, - ACTIONS(310), 1, - anon_sym_PIPE_PIPE, - ACTIONS(312), 1, - anon_sym_AMP_AMP, - ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(308), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(304), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - ACTIONS(145), 8, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_RPAREN, - anon_sym_COMMA, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3082] = 2, - ACTIONS(113), 2, + [3092] = 2, + ACTIONS(117), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(111), 17, + ACTIONS(115), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4652,11 +4744,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3106] = 2, - ACTIONS(155), 2, + [3116] = 2, + ACTIONS(125), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(153), 17, + ACTIONS(123), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4674,11 +4766,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3130] = 2, - ACTIONS(95), 2, + [3140] = 2, + ACTIONS(113), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(93), 17, + ACTIONS(111), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4696,37 +4788,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3154] = 6, - ACTIONS(312), 1, - anon_sym_AMP_AMP, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(306), 2, + [3164] = 2, + ACTIONS(187), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 9, + ACTIONS(185), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3186] = 2, - ACTIONS(147), 2, + [3188] = 2, + ACTIONS(183), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(145), 17, + ACTIONS(181), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4744,21 +4832,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3210] = 3, - ACTIONS(147), 2, + [3212] = 2, + ACTIONS(121), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 14, + ACTIONS(119), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_PLUS, anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, @@ -4810,7 +4897,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_true, anon_sym_false, [3282] = 2, - ACTIONS(298), 9, + ACTIONS(322), 9, ts_builtin_sym_end, sym_comment, anon_sym_LBRACE, @@ -4820,7 +4907,7 @@ static const uint16_t ts_small_parse_table[] = { sym_number_lit, anon_sym_DQUOTE, anon_sym_SQUOTE, - ACTIONS(300), 9, + ACTIONS(324), 9, anon_sym_if, anon_sym_for, anon_sym_continue, @@ -4831,7 +4918,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_true, anon_sym_false, [3305] = 2, - ACTIONS(290), 9, + ACTIONS(298), 9, ts_builtin_sym_end, sym_comment, anon_sym_LBRACE, @@ -4841,7 +4928,7 @@ static const uint16_t ts_small_parse_table[] = { sym_number_lit, anon_sym_DQUOTE, anon_sym_SQUOTE, - ACTIONS(292), 9, + ACTIONS(300), 9, anon_sym_if, anon_sym_for, anon_sym_continue, @@ -4852,7 +4939,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_true, anon_sym_false, [3328] = 2, - ACTIONS(322), 9, + ACTIONS(326), 9, ts_builtin_sym_end, sym_comment, anon_sym_LBRACE, @@ -4862,7 +4949,7 @@ static const uint16_t ts_small_parse_table[] = { sym_number_lit, anon_sym_DQUOTE, anon_sym_SQUOTE, - ACTIONS(324), 9, + ACTIONS(328), 9, anon_sym_if, anon_sym_for, anon_sym_continue, @@ -4873,7 +4960,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_true, anon_sym_false, [3351] = 2, - ACTIONS(326), 9, + ACTIONS(290), 9, ts_builtin_sym_end, sym_comment, anon_sym_LBRACE, @@ -4883,7 +4970,7 @@ static const uint16_t ts_small_parse_table[] = { sym_number_lit, anon_sym_DQUOTE, anon_sym_SQUOTE, - ACTIONS(328), 9, + ACTIONS(292), 9, anon_sym_if, anon_sym_for, anon_sym_continue, @@ -4915,23 +5002,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_true, anon_sym_false, [3397] = 10, - ACTIONS(310), 1, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, ACTIONS(334), 1, anon_sym_RPAREN, ACTIONS(336), 1, anon_sym_COMMA, - STATE(123), 1, + STATE(129), 1, aux_sym_argument_list_repeat1, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -4942,9 +5029,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_PERCENT, [3434] = 10, - ACTIONS(310), 1, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, ACTIONS(336), 1, anon_sym_COMMA, @@ -4955,10 +5042,10 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -4969,17 +5056,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_PERCENT, [3471] = 8, - ACTIONS(310), 1, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -4992,69 +5079,69 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3503] = 8, - ACTIONS(310), 1, + [3503] = 9, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, + ACTIONS(344), 1, + anon_sym_LBRACE, + STATE(62), 1, + sym_block_stmts, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(344), 2, - anon_sym_RBRACE, - anon_sym_COMMA, ACTIONS(304), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3535] = 9, - ACTIONS(310), 1, + [3537] = 8, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(346), 1, - anon_sym_LBRACE, - STATE(62), 1, - sym_block_stmts, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + ACTIONS(346), 2, + anon_sym_RBRACE, + anon_sym_COMMA, ACTIONS(304), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, [3569] = 8, - ACTIONS(310), 1, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, ACTIONS(348), 1, - anon_sym_COLON, + anon_sym_RBRACK, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -5064,44 +5151,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3600] = 9, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(29), 1, - anon_sym_SQUOTE, - ACTIONS(350), 1, - sym_identifier, - ACTIONS(352), 1, - anon_sym_RBRACK, - ACTIONS(354), 1, - sym_number_lit, - STATE(119), 1, - sym_list_elem, - ACTIONS(23), 2, - anon_sym_nil, - anon_sym_null, - ACTIONS(31), 2, - anon_sym_true, - anon_sym_false, - STATE(133), 4, - sym__literal, - sym_nil_lit, - sym_string_lit, - sym_bool_lit, - [3633] = 8, - ACTIONS(310), 1, + [3600] = 8, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(356), 1, - anon_sym_RBRACK, + ACTIONS(350), 1, + anon_sym_RPAREN, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -5111,20 +5174,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3664] = 8, - ACTIONS(310), 1, + [3631] = 8, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(358), 1, - anon_sym_RPAREN, + ACTIONS(352), 1, + anon_sym_COLON, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -5134,20 +5197,68 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3695] = 8, - ACTIONS(310), 1, + [3662] = 9, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(354), 1, + sym_identifier, + ACTIONS(356), 1, + anon_sym_RBRACK, + ACTIONS(358), 1, + sym_number_lit, + STATE(122), 1, + sym_list_elem, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(134), 4, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [3695] = 9, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(354), 1, + sym_identifier, + ACTIONS(358), 1, + sym_number_lit, + ACTIONS(360), 1, + anon_sym_RBRACK, + STATE(130), 1, + sym_list_elem, + ACTIONS(23), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(31), 2, + anon_sym_true, + anon_sym_false, + STATE(134), 4, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [3728] = 8, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(360), 1, + ACTIONS(362), 1, anon_sym_RPAREN, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -5157,20 +5268,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3726] = 8, - ACTIONS(310), 1, + [3759] = 8, + ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(312), 1, + ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(362), 1, + ACTIONS(364), 1, anon_sym_RBRACK, ACTIONS(302), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(306), 2, + ACTIONS(310), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(308), 2, + ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, ACTIONS(338), 2, @@ -5180,38 +5291,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3757] = 9, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(29), 1, - anon_sym_SQUOTE, - ACTIONS(350), 1, - sym_identifier, - ACTIONS(354), 1, - sym_number_lit, - ACTIONS(364), 1, - anon_sym_RBRACK, - STATE(129), 1, - sym_list_elem, - ACTIONS(23), 2, - anon_sym_nil, - anon_sym_null, - ACTIONS(31), 2, - anon_sym_true, - anon_sym_false, - STATE(133), 4, - sym__literal, - sym_nil_lit, - sym_string_lit, - sym_bool_lit, [3790] = 8, ACTIONS(27), 1, anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(350), 1, - sym_identifier, ACTIONS(354), 1, + sym_identifier, + ACTIONS(358), 1, sym_number_lit, STATE(131), 1, sym_list_elem, @@ -5221,87 +5308,87 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(133), 4, + STATE(134), 4, sym__literal, sym_nil_lit, sym_string_lit, sym_bool_lit, [3820] = 3, ACTIONS(366), 1, - anon_sym_DQUOTE, + anon_sym_SQUOTE, STATE(108), 1, - aux_sym_string_lit_repeat1, + aux_sym_string_lit_repeat2, ACTIONS(368), 2, - aux_sym_string_lit_token1, + aux_sym_string_lit_token2, sym_escape_sequence, [3831] = 3, ACTIONS(371), 1, - anon_sym_SQUOTE, - STATE(109), 1, - aux_sym_string_lit_repeat2, - ACTIONS(373), 2, - aux_sym_string_lit_token2, - sym_escape_sequence, - [3842] = 3, - ACTIONS(376), 1, anon_sym_DQUOTE, - STATE(112), 1, + STATE(116), 1, aux_sym_string_lit_repeat1, - ACTIONS(378), 2, + ACTIONS(373), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3853] = 3, - ACTIONS(380), 1, + [3842] = 3, + ACTIONS(371), 1, anon_sym_SQUOTE, - STATE(109), 1, + STATE(108), 1, aux_sym_string_lit_repeat2, - ACTIONS(382), 2, + ACTIONS(375), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3864] = 3, - ACTIONS(384), 1, - anon_sym_DQUOTE, - STATE(108), 1, - aux_sym_string_lit_repeat1, - ACTIONS(386), 2, - aux_sym_string_lit_token1, - sym_escape_sequence, - [3875] = 3, - ACTIONS(380), 1, + [3853] = 3, + ACTIONS(377), 1, anon_sym_DQUOTE, - STATE(108), 1, + STATE(114), 1, aux_sym_string_lit_repeat1, - ACTIONS(386), 2, + ACTIONS(379), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3886] = 3, - ACTIONS(384), 1, + [3864] = 3, + ACTIONS(377), 1, anon_sym_SQUOTE, - STATE(109), 1, + STATE(115), 1, aux_sym_string_lit_repeat2, - ACTIONS(382), 2, + ACTIONS(381), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3897] = 3, - ACTIONS(376), 1, + [3875] = 3, + ACTIONS(383), 1, anon_sym_SQUOTE, - STATE(114), 1, + STATE(110), 1, aux_sym_string_lit_repeat2, - ACTIONS(388), 2, + ACTIONS(385), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3908] = 3, - ACTIONS(390), 1, + [3886] = 3, + ACTIONS(387), 1, + anon_sym_DQUOTE, + STATE(116), 1, + aux_sym_string_lit_repeat1, + ACTIONS(373), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, + [3897] = 3, + ACTIONS(387), 1, anon_sym_SQUOTE, - STATE(111), 1, + STATE(108), 1, aux_sym_string_lit_repeat2, - ACTIONS(392), 2, + ACTIONS(375), 2, aux_sym_string_lit_token2, sym_escape_sequence, + [3908] = 3, + ACTIONS(389), 1, + anon_sym_DQUOTE, + STATE(116), 1, + aux_sym_string_lit_repeat1, + ACTIONS(391), 2, + aux_sym_string_lit_token1, + sym_escape_sequence, [3919] = 3, - ACTIONS(390), 1, + ACTIONS(383), 1, anon_sym_DQUOTE, - STATE(113), 1, + STATE(109), 1, aux_sym_string_lit_repeat1, ACTIONS(394), 2, aux_sym_string_lit_token1, @@ -5311,133 +5398,136 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, ACTIONS(398), 1, anon_sym_COMMA, - STATE(118), 1, + STATE(128), 1, aux_sym_map_expr_repeat1, [3940] = 3, - ACTIONS(401), 1, + ACTIONS(400), 1, anon_sym_COMMA, ACTIONS(403), 1, anon_sym_RBRACK, - STATE(124), 1, + STATE(119), 1, aux_sym_list_expr_repeat1, [3950] = 3, ACTIONS(336), 1, anon_sym_COMMA, ACTIONS(405), 1, anon_sym_RPAREN, - STATE(130), 1, + STATE(124), 1, aux_sym_argument_list_repeat1, [3960] = 3, ACTIONS(407), 1, - anon_sym_RBRACE, - ACTIONS(409), 1, anon_sym_COMMA, - STATE(127), 1, - aux_sym_map_expr_repeat1, + ACTIONS(409), 1, + anon_sym_RBRACK, + STATE(119), 1, + aux_sym_list_expr_repeat1, [3970] = 3, - ACTIONS(401), 1, + ACTIONS(407), 1, anon_sym_COMMA, ACTIONS(411), 1, anon_sym_RBRACK, - STATE(125), 1, + STATE(126), 1, aux_sym_list_expr_repeat1, [3980] = 3, - ACTIONS(336), 1, - anon_sym_COMMA, ACTIONS(413), 1, - anon_sym_RPAREN, - STATE(130), 1, - aux_sym_argument_list_repeat1, + anon_sym_RBRACE, + ACTIONS(415), 1, + anon_sym_COMMA, + STATE(123), 1, + aux_sym_map_expr_repeat1, [3990] = 3, - ACTIONS(401), 1, + ACTIONS(342), 1, + anon_sym_RPAREN, + ACTIONS(418), 1, anon_sym_COMMA, - ACTIONS(415), 1, - anon_sym_RBRACK, - STATE(125), 1, - aux_sym_list_expr_repeat1, + STATE(124), 1, + aux_sym_argument_list_repeat1, [4000] = 3, - ACTIONS(417), 1, - anon_sym_COMMA, - ACTIONS(420), 1, - anon_sym_RBRACK, - STATE(125), 1, - aux_sym_list_expr_repeat1, - [4010] = 3, - ACTIONS(409), 1, + ACTIONS(398), 1, anon_sym_COMMA, - ACTIONS(422), 1, + ACTIONS(421), 1, anon_sym_RBRACE, - STATE(128), 1, + STATE(123), 1, aux_sym_map_expr_repeat1, + [4010] = 3, + ACTIONS(407), 1, + anon_sym_COMMA, + ACTIONS(423), 1, + anon_sym_RBRACK, + STATE(119), 1, + aux_sym_list_expr_repeat1, [4020] = 3, - ACTIONS(409), 1, + ACTIONS(398), 1, anon_sym_COMMA, - ACTIONS(424), 1, + ACTIONS(425), 1, anon_sym_RBRACE, - STATE(118), 1, + STATE(125), 1, aux_sym_map_expr_repeat1, [4030] = 3, - ACTIONS(409), 1, + ACTIONS(398), 1, anon_sym_COMMA, - ACTIONS(426), 1, + ACTIONS(427), 1, anon_sym_RBRACE, - STATE(118), 1, + STATE(123), 1, aux_sym_map_expr_repeat1, [4040] = 3, - ACTIONS(401), 1, + ACTIONS(336), 1, anon_sym_COMMA, - ACTIONS(428), 1, - anon_sym_RBRACK, - STATE(122), 1, - aux_sym_list_expr_repeat1, - [4050] = 3, - ACTIONS(342), 1, + ACTIONS(429), 1, anon_sym_RPAREN, - ACTIONS(430), 1, - anon_sym_COMMA, - STATE(130), 1, + STATE(124), 1, aux_sym_argument_list_repeat1, + [4050] = 3, + ACTIONS(407), 1, + anon_sym_COMMA, + ACTIONS(431), 1, + anon_sym_RBRACK, + STATE(121), 1, + aux_sym_list_expr_repeat1, [4060] = 1, - ACTIONS(420), 2, + ACTIONS(403), 2, anon_sym_COMMA, anon_sym_RBRACK, [4065] = 2, + ACTIONS(344), 1, + anon_sym_LBRACE, + STATE(64), 1, + sym_block_stmts, + [4072] = 2, ACTIONS(433), 1, anon_sym_LBRACE, - STATE(92), 1, + STATE(89), 1, sym_block_stmts, - [4072] = 1, + [4079] = 1, ACTIONS(435), 2, anon_sym_COMMA, anon_sym_RBRACK, - [4077] = 2, + [4084] = 1, + ACTIONS(413), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [4089] = 2, ACTIONS(433), 1, anon_sym_LBRACE, - STATE(89), 1, - sym_block_stmts, - [4084] = 2, - ACTIONS(346), 1, - anon_sym_LBRACE, - STATE(64), 1, + STATE(88), 1, sym_block_stmts, - [4091] = 1, - ACTIONS(396), 2, - anon_sym_RBRACE, - anon_sym_COMMA, [4096] = 2, ACTIONS(433), 1, anon_sym_LBRACE, - STATE(88), 1, + STATE(90), 1, sym_block_stmts, [4103] = 1, ACTIONS(437), 1, - anon_sym_in, + sym_identifier, [4107] = 1, ACTIONS(439), 1, - sym_identifier, + ts_builtin_sym_end, [4111] = 1, ACTIONS(441), 1, - ts_builtin_sym_end, + sym_identifier, + [4115] = 1, + ACTIONS(443), 1, + anon_sym_in, }; static const uint32_t ts_small_parse_table_map[] = { @@ -5506,26 +5596,26 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(65)] = 2653, [SMALL_STATE(66)] = 2678, [SMALL_STATE(67)] = 2702, - [SMALL_STATE(68)] = 2732, - [SMALL_STATE(69)] = 2756, - [SMALL_STATE(70)] = 2780, - [SMALL_STATE(71)] = 2804, - [SMALL_STATE(72)] = 2828, - [SMALL_STATE(73)] = 2852, - [SMALL_STATE(74)] = 2876, - [SMALL_STATE(75)] = 2900, - [SMALL_STATE(76)] = 2924, - [SMALL_STATE(77)] = 2948, - [SMALL_STATE(78)] = 2972, - [SMALL_STATE(79)] = 2996, - [SMALL_STATE(80)] = 3020, - [SMALL_STATE(81)] = 3048, - [SMALL_STATE(82)] = 3082, - [SMALL_STATE(83)] = 3106, - [SMALL_STATE(84)] = 3130, - [SMALL_STATE(85)] = 3154, - [SMALL_STATE(86)] = 3186, - [SMALL_STATE(87)] = 3210, + [SMALL_STATE(68)] = 2726, + [SMALL_STATE(69)] = 2750, + [SMALL_STATE(70)] = 2774, + [SMALL_STATE(71)] = 2798, + [SMALL_STATE(72)] = 2822, + [SMALL_STATE(73)] = 2846, + [SMALL_STATE(74)] = 2870, + [SMALL_STATE(75)] = 2898, + [SMALL_STATE(76)] = 2932, + [SMALL_STATE(77)] = 2962, + [SMALL_STATE(78)] = 2994, + [SMALL_STATE(79)] = 3018, + [SMALL_STATE(80)] = 3044, + [SMALL_STATE(81)] = 3068, + [SMALL_STATE(82)] = 3092, + [SMALL_STATE(83)] = 3116, + [SMALL_STATE(84)] = 3140, + [SMALL_STATE(85)] = 3164, + [SMALL_STATE(86)] = 3188, + [SMALL_STATE(87)] = 3212, [SMALL_STATE(88)] = 3236, [SMALL_STATE(89)] = 3259, [SMALL_STATE(90)] = 3282, @@ -5537,14 +5627,14 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(96)] = 3434, [SMALL_STATE(97)] = 3471, [SMALL_STATE(98)] = 3503, - [SMALL_STATE(99)] = 3535, + [SMALL_STATE(99)] = 3537, [SMALL_STATE(100)] = 3569, [SMALL_STATE(101)] = 3600, - [SMALL_STATE(102)] = 3633, - [SMALL_STATE(103)] = 3664, + [SMALL_STATE(102)] = 3631, + [SMALL_STATE(103)] = 3662, [SMALL_STATE(104)] = 3695, - [SMALL_STATE(105)] = 3726, - [SMALL_STATE(106)] = 3757, + [SMALL_STATE(105)] = 3728, + [SMALL_STATE(106)] = 3759, [SMALL_STATE(107)] = 3790, [SMALL_STATE(108)] = 3820, [SMALL_STATE(109)] = 3831, @@ -5572,13 +5662,14 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(131)] = 4060, [SMALL_STATE(132)] = 4065, [SMALL_STATE(133)] = 4072, - [SMALL_STATE(134)] = 4077, + [SMALL_STATE(134)] = 4079, [SMALL_STATE(135)] = 4084, - [SMALL_STATE(136)] = 4091, + [SMALL_STATE(136)] = 4089, [SMALL_STATE(137)] = 4096, [SMALL_STATE(138)] = 4103, [SMALL_STATE(139)] = 4107, [SMALL_STATE(140)] = 4111, + [SMALL_STATE(141)] = 4115, }; static const TSParseActionEntry ts_parse_actions[] = { @@ -5587,40 +5678,40 @@ static const TSParseActionEntry ts_parse_actions[] = { [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(55), - [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(94), - [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(93), + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92), [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(2), [38] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(55), - [41] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(139), + [41] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(140), [44] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(34), [47] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(94), - [50] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(93), + [50] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(92), [53] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(9), [56] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(54), - [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(101), + [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(103), [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(11), [65] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(16), - [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(110), - [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(115), + [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(117), + [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(113), [74] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(12), [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), - [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), [95] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 3), @@ -5676,47 +5767,47 @@ static const TSParseActionEntry ts_parse_actions[] = { [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), [197] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), [199] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), - [205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), - [209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(79), - [213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(84), + [205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), + [213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), [217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), [219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), [221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), - [223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), [237] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), [241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), [245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), [247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), [255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), [267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), [271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), - [273] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), SHIFT_REPEAT(135), + [273] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), SHIFT_REPEAT(132), [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 4, .production_id = 4), [278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 4, .production_id = 4), - [280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), - [282] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), + [280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(132), + [282] = {.entry = {.count = 1, .reusable = false}}, SHIFT(133), [284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 3, .production_id = 2), [286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 3, .production_id = 2), [288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), @@ -5728,16 +5819,16 @@ static const TSParseActionEntry ts_parse_actions[] = { [300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 2), [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [306] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), - [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), - [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [314] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5, .production_id = 6), - [316] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 5, .production_id = 6), + [306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [310] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), + [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [314] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_stmt, 5), + [316] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_stmt, 5), [318] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 6, .production_id = 8), [320] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 6, .production_id = 8), - [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_stmt, 4), - [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_stmt, 4), + [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5, .production_id = 6), + [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 5, .production_id = 6), [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_stmt, 1), [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_stmt, 1), [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_stmt, 1), @@ -5745,55 +5836,56 @@ static const TSParseActionEntry ts_parse_actions[] = { [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), - [344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_elem, 3), - [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [350] = {.entry = {.count = 1, .reusable = false}}, SHIFT(133), - [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), - [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), - [368] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(108), - [371] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat2, 2), - [373] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat2, 2), SHIFT_REPEAT(109), - [376] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), - [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [380] = {.entry = {.count = 1, .reusable = false}}, SHIFT(84), - [382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [384] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), - [386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [390] = {.entry = {.count = 1, .reusable = false}}, SHIFT(69), - [392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), - [398] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), SHIFT_REPEAT(37), - [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [417] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), SHIFT_REPEAT(107), - [420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), - [422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [430] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), SHIFT_REPEAT(53), + [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_elem, 3), + [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [354] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), + [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat2, 2), + [368] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat2, 2), SHIFT_REPEAT(108), + [371] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), + [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [377] = {.entry = {.count = 1, .reusable = false}}, SHIFT(69), + [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [383] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [387] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81), + [389] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), + [391] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(116), + [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [400] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), SHIFT_REPEAT(107), + [403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [413] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), + [415] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), SHIFT_REPEAT(37), + [418] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), SHIFT_REPEAT(53), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), [435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_elem, 1), - [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), - [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), - [441] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [439] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), }; #ifdef __cplusplus @@ -5803,7 +5895,7 @@ extern "C" { #define extern __declspec(dllexport) #endif -extern const TSLanguage *tree_sitter_ppl(void) { +extern const TSLanguage *tree_sitter_platypus(void) { static const TSLanguage language = { .version = LANGUAGE_VERSION, .symbol_count = SYMBOL_COUNT, diff --git a/ide/grammars/src/tree_sitter/parser.h b/ide/tree-sitter-platypus/src/tree_sitter/parser.h similarity index 100% rename from ide/grammars/src/tree_sitter/parser.h rename to ide/tree-sitter-platypus/src/tree_sitter/parser.h diff --git a/ide/grammars/test/corpus/debug.txt b/ide/tree-sitter-platypus/test/corpus/debug.txt similarity index 90% rename from ide/grammars/test/corpus/debug.txt rename to ide/tree-sitter-platypus/test/corpus/debug.txt index 0d2e288..dd2f138 100644 --- a/ide/grammars/test/corpus/debug.txt +++ b/ide/tree-sitter-platypus/test/corpus/debug.txt @@ -15,7 +15,7 @@ if b { add_key(b) } -use("s.ppl") +use("s.platypus") # drop() --- diff --git a/ide/grammars/test/highlight/statements.txt b/ide/tree-sitter-platypus/test/highlight/statements.txt similarity index 94% rename from ide/grammars/test/highlight/statements.txt rename to ide/tree-sitter-platypus/test/highlight/statements.txt index 84c791f..f12b5c1 100644 --- a/ide/grammars/test/highlight/statements.txt +++ b/ide/tree-sitter-platypus/test/highlight/statements.txt @@ -15,7 +15,7 @@ if b { add_key(b) } -use("s.ppl") +use("s.platypus") # drop() --- diff --git a/ide/grammars/test/nginx.ppl b/ide/tree-sitter-platypus/test/nginx.p similarity index 99% rename from ide/grammars/test/nginx.ppl rename to ide/tree-sitter-platypus/test/nginx.p index 48aac50..2c9628f 100644 --- a/ide/grammars/test/nginx.ppl +++ b/ide/tree-sitter-platypus/test/nginx.p @@ -1,4 +1,3 @@ - add_pattern("date2", "%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME}") asd@@ @@ -46,4 +45,4 @@ if b { add_key(b) } -use("s.ppl") +use("s.platypus") diff --git a/proposals/A001-add-developer-toolchain.md b/proposals/A001-add-developer-toolchain.md index 7d4b620..9cd5c29 100644 --- a/proposals/A001-add-developer-toolchain.md +++ b/proposals/A001-add-developer-toolchain.md @@ -4,17 +4,17 @@ Add compiler toolchain for developers * Approver: @coanor * Status: Working Draft * Last updated: 2022-11-24 -* Discussion at: [#18](https://github.com/GuanceCloud/ppl/pull/18) +* Discussion at: [#18](https://github.com/GuanceCloud/platypus/pull/18) ## Abstract -PPL currently supports its own compiler frontend implementation, which is based on the goyacc parser generator to build AST from code. However, the popular tree-sitter is more suitable for IDE integraion and static analysis tools development. In order to converge with this industry trend, PPL will based on the tree-sitter solution to build framework of complier front-end and middle-end. Such as the parser, CST, semantic checker, and so on. +Platypus currently supports its own compiler frontend implementation, which is based on the goyacc parser generator to build AST from code. However, the popular tree-sitter is more suitable for IDE integraion and static analysis tools development. In order to converge with this industry trend, Platypus will based on the tree-sitter solution to build framework of complier front-end and middle-end. Such as the parser, CST, semantic checker, and so on. The tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. It can also be used to build code analysis tools. Tree-sitter is used by many popular programming languages, such as JavaScript, Python, C, C++, Java, Go, PHP, Ruby, C#, Rust, and so on. -We need to add a compiler toolchain for developers to improve the development efficiency of PPL. Include the fowllowing features: +We need to add a compiler toolchain for developers to improve the development efficiency of Platypus. Include the fowllowing features: * The language features: 1. Support for **syntax highlighting** @@ -113,7 +113,7 @@ Semantic model includes: ### Code navigation -Because the PPL doesn't have the concept of the function definition, we can't provide the code navigation information. But we can provide the function information for the standard library. +Because the Platypus doesn't have the concept of the function definition, we can't provide the code navigation information. But we can provide the function information for the standard library. * **Function Call**: hover the function call, we can provide the function information, such as the function name, the function description, the function parameters, and so on. * **Identifier**: click the identifier, we can jump to the first definition of the identifier. @@ -132,7 +132,7 @@ Code linting and vunerability detection are both code scanning tools. We impleme If contributor will create a new linter, they can use one of the methods: -* **Tree query + policy engine**: Tree-sitter provider the tree query engine, It can use S-expression the fetch information from CST. The policy engine is used to implement the linter rules. We can use PPL or OPA(Rego) as the policy engine. +* **Tree query + policy engine**: Tree-sitter provider the tree query engine, It can use S-expression the fetch information from CST. The policy engine is used to implement the linter rules. We can use Platypus or OPA(Rego) as the policy engine. * **CodeQL**: When parsing complete, the LSP server will build the CST by tree-sitter, and based on it. We can build the basic block, the data/control flow graph, and so on. Then we can use the CodeQL to implement the code scanning tools. We will implement code tree query method first, and then implement the CodeQL method if we have enought time. @@ -147,10 +147,10 @@ We will implement code tree query method first, and then implement the CodeQL me ## Implementation -We will use the tree-sitter to build the compiler toolchain for PPL. The following is the implementation plan: +We will use the tree-sitter to build the compiler toolchain for Platypus. The following is the implementation plan: 1. Create a shared grammar folder for CST(Concrete Syntax Tree). 2. Create textmate grammar for basiclly *token highlighting* about primitive types and keyword. -2. Implement LSP(Language Server Protocol) with *semantic highlight*, *syntax checking*, *code completion* for PPL. +2. Implement LSP(Language Server Protocol) with *semantic highlight*, *syntax checking*, *code completion* for Platypus. 3. Integrate the LSP to Editor, such as VSCode, JetBrains IDE, NeoVim. -4. Improving the language tools, implement *code linting*, *code formatting*, *vunerability detection* for PPL. +4. Improving the language tools, implement *code linting*, *code formatting*, *vunerability detection* for Platypus. diff --git a/proposals/README.md b/proposals/README.md index 11e6b2f..d87281b 100644 --- a/proposals/README.md +++ b/proposals/README.md @@ -6,6 +6,6 @@ Proposals are the way to propose changes to the project. They are the way to pro 1. Create a new branch in your fork 2. Create a new `.md` file in the `proposals` directory -3. Write your proposal, every proposal should includes POC (Proof of Concept) code. This [example](https://github.com/GuanceCloud/ppl/pull/18) is a good start. +3. Write your proposal, every proposal should includes POC (Proof of Concept) code. This [example](https://github.com/GuanceCloud/platypus/pull/18) is a good start. 4. Submit a pull request to the `main` branch of the main repository 5. The proposal will be discussed and, if accepted, merged into the `main` branch From 3d3b899a62ce321083b6cf11512e26be255fdc73 Mon Sep 17 00:00:00 2001 From: "yufei.li" Date: Fri, 9 Dec 2022 23:45:32 +0800 Subject: [PATCH 5/5] feat: Add formatter to platypus toolchain --- ide/Makefile | 3 + ide/plugins/vscode/.gitignore | 4 +- ide/plugins/vscode/README.md | 28 +- ide/plugins/vscode/images/icon.png | 4 +- ide/plugins/vscode/package.json | 7 +- ide/plugins/vscode/server/src/ide/format.ts | 5 +- .../server/src/ide/formatter/context.ts | 47 + .../server/src/ide/formatter/formatter.ts | 302 + .../vscode/server/src/ide/formatter/index.ts | 1 + ide/plugins/vscode/server/src/ide/index.ts | 28 +- .../vscode/server/src/ide/linter/rule.ts | 2 +- ide/plugins/vscode/server/src/server.ts | 48 +- ide/tree-sitter-platypus/grammar.js | 37 +- ide/tree-sitter-platypus/src/grammar.json | 100 +- ide/tree-sitter-platypus/src/node-types.json | 203 +- ide/tree-sitter-platypus/src/parser.c | 5909 ++++++++--------- ide/tree-sitter-platypus/test/debug.p | 17 + ide/tree-sitter-platypus/test/nginx.p | 32 +- 18 files changed, 3335 insertions(+), 3442 deletions(-) create mode 100644 ide/Makefile create mode 100644 ide/plugins/vscode/server/src/ide/formatter/context.ts create mode 100644 ide/tree-sitter-platypus/test/debug.p diff --git a/ide/Makefile b/ide/Makefile new file mode 100644 index 0000000..134d4fc --- /dev/null +++ b/ide/Makefile @@ -0,0 +1,3 @@ +build: + cd tree-sitter-platypus && tree-sitter build-wasm --docker && mv ./tree-sitter-platypus.wasm ../plugins/vscode/server/src/tree-sitter-platypus.wasm + diff --git a/ide/plugins/vscode/.gitignore b/ide/plugins/vscode/.gitignore index 7f8a48e..5c7b1e8 100644 --- a/ide/plugins/vscode/.gitignore +++ b/ide/plugins/vscode/.gitignore @@ -1,5 +1,5 @@ -out -node_modules +out/ +node_modules/ client/server .vscode-test *.wasm diff --git a/ide/plugins/vscode/README.md b/ide/plugins/vscode/README.md index d5d2f08..acd6b72 100644 --- a/ide/plugins/vscode/README.md +++ b/ide/plugins/vscode/README.md @@ -1,16 +1,15 @@ # Platypus extension for Visual Studio Code -Here is the proposal for Language Server of [Platypus Programming Language](https://platypus.guance.io/). +The Language Server of [Platypus Programming Language](https://platypus.guance.io/). + +See [Platypus proposal A001](https://github.com/GuanceCloud/ppl/blob/13e6f48d3c87861a697c668ca83827f11ecbb89f/proposals/A001-add-developer-toolchain.md) for details. ## Features -* [x] Support for **syntax highlighting** -* [x] Support for **code completion** -* [x] Support for **code linting** -* [ ] Support for **code formatting** -* [ ] Support for **code navigation** -* [ ] Support for **code refactoring** -* [ ] Support for **vunerability detection** +* Support for **syntax highlighting** +* Support for **code completion** +* Support for **code linting** +* Support for **code formatting** ## Structure @@ -25,16 +24,3 @@ Here is the proposal for Language Server of [Platypus Programming Language](http └── src └── server.ts // Language Server entry point ``` - -## Running the Sample - -- Run `npm install` in this folder. This installs all necessary npm modules in both the client and server folder -- Open VS Code on this folder. -- Press Ctrl+Shift+B to start compiling the client and server in [watch mode](https://code.visualstudio.com/docs/editor/tasks#:~:text=The%20first%20entry%20executes,the%20HelloWorld.js%20file.). -- Switch to the Run and Debug View in the Sidebar (Ctrl+Shift+D). -- Select `Launch Client` from the drop down (if it is not already). -- Press ▷ to run the launch config (F5). -- If you want to debug the server as well, use the launch configuration `Attach to Server` -- In the [Extension Development Host](https://code.visualstudio.com/api/get-started/your-first-extension#:~:text=Then%2C%20inside%20the%20editor%2C%20press%20F5.%20This%20will%20compile%20and%20run%20the%20extension%20in%20a%20new%20Extension%20Development%20Host%20window.) instance of VSCode, open a document in 'plain text' language mode. - - Type `j` or `t` to see `Javascript` and `TypeScript` completion. - - Enter text content such as `AAA aaa BBB`. The extension will emit diagnostics for all words in all-uppercase. diff --git a/ide/plugins/vscode/images/icon.png b/ide/plugins/vscode/images/icon.png index a1b1a35..a6f052f 100644 --- a/ide/plugins/vscode/images/icon.png +++ b/ide/plugins/vscode/images/icon.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfcc75696818fcd08882ddae45899287ea5671c816e8a7402e30aa0216523c03 -size 24793 +oid sha256:341d25adbb63db1747d8d6668f561de7ce5f07284d1876c1faead11d6792da99 +size 49749 diff --git a/ide/plugins/vscode/package.json b/ide/plugins/vscode/package.json index 9a72e61..0e53eaa 100644 --- a/ide/plugins/vscode/package.json +++ b/ide/plugins/vscode/package.json @@ -5,7 +5,7 @@ "icon": "images/icon.png", "author": "dev-bot@guance.com", "license": "MIT", - "version": "0.0.2", + "version": "0.0.4", "repository": { "type": "git", "url": "https://github.com/GuanceCloud/platypus.git" @@ -15,7 +15,7 @@ "Programming Languages" ], "keywords": [ - "observerbility", + "observability", "platypus" ], "engines": { @@ -76,7 +76,8 @@ "watch": "tsc -b -w", "lint": "eslint ./client/src ./server/src --ext .ts,.tsx", "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", - "test": "sh ./scripts/e2e.sh" + "test": "sh ./scripts/e2e.sh", + "clean": "rm -rf ./server/out && rm -rf ./client/out" }, "devDependencies": { "@types/mocha": "^9.1.0", diff --git a/ide/plugins/vscode/server/src/ide/format.ts b/ide/plugins/vscode/server/src/ide/format.ts index 9b92395..8dfe251 100644 --- a/ide/plugins/vscode/server/src/ide/format.ts +++ b/ide/plugins/vscode/server/src/ide/format.ts @@ -1,7 +1,10 @@ +import { Range } from './semantic'; + export interface FormatOptions { fileId: string } export interface FormatResult { - code: string + formatted: string + range: Range } diff --git a/ide/plugins/vscode/server/src/ide/formatter/context.ts b/ide/plugins/vscode/server/src/ide/formatter/context.ts new file mode 100644 index 0000000..6f2c1ba --- /dev/null +++ b/ide/plugins/vscode/server/src/ide/formatter/context.ts @@ -0,0 +1,47 @@ +export interface IContext { + space(): void + newline(token?: string): void + writeIndent(): void + write(token: string): void + build(): string + indent(): void + unindent(): void +} + +export class Context implements IContext { + private _output: string; + private _indent: number; + + constructor() { + this._output = ''; + this._indent = 0; + } + + space(): void { + this.write(' '); + } + + newline(): void { + this.write('\n'); + } + + writeIndent(): void { + this._output += ' '.repeat(this._indent); + } + + write(token: string): void { + this._output += token; + } + + indent(): void { + this._indent += 1; + } + + unindent(): void { + this._indent -= 1; + } + + build(): string { + return this._output; + } +} diff --git a/ide/plugins/vscode/server/src/ide/formatter/formatter.ts b/ide/plugins/vscode/server/src/ide/formatter/formatter.ts index e69de29..2db5412 100644 --- a/ide/plugins/vscode/server/src/ide/formatter/formatter.ts +++ b/ide/plugins/vscode/server/src/ide/formatter/formatter.ts @@ -0,0 +1,302 @@ +import { assert } from 'console'; +import TParser = require('web-tree-sitter'); +import { Range } from '../semantic'; +import { IContext, Context } from './context'; + +export interface FormatOptions { + tree: TParser.Tree; +} + +export interface FormatResult { + formatted: string + range: Range +} + +export interface IFormatter { + format(opts?: FormatOptions): FormatResult +} + +export class Formatter implements IFormatter { + format(opts: FormatOptions): FormatResult { + // Format the syntax tree by traversing it and generating a new string + // Use syntax direction translation to map from the tree to the string + const ctx = new Context(); + opts.tree.rootNode.children.forEach(child => { + this.formatInlineStmt(child, ctx); + }); + console.log("[DEBUG]", ctx.build()); + return { + formatted: ctx.build(), + range: { + start: opts.tree.rootNode.startPosition, + end: opts.tree.rootNode.endPosition, + }, + }; + } + + formatInlineStmt(node: TParser.SyntaxNode, ctx: IContext) { + const stmt = node.children[0]; + const newlines = node.children[1]; + ctx.writeIndent(); + this.formatStmt(stmt, ctx); + if (newlines.text.length > 1) { + ctx.newline(); + } + } + + formatStmt(node: TParser.SyntaxNode, ctx: IContext) { + switch (node.type) { + case "comment": + this.formatComment(node, ctx); + break; + case "if_stmt": + this.formatIfStmt(node, ctx); + break; + case "for_in_stmt": + this.formatForInStmt(node, ctx); + break; + case "continue_stmt": + this.formatContinueStmt(node, ctx); + break; + case "break_stmt": + this.formatBreakStmt(node, ctx); + break; + case "expr_stmt": + this.formatExprStmt(node, ctx); + break; + case "assign_stmt": + this.formatAssignStmt(node, ctx); + break; + default: + ctx.write(node.text); + break; + } + ctx.newline(); + } + + formatComment(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.text); + } + + formatIfStmt(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('if'); + ctx.space(); + this.formatExpr(node.children[1], ctx); + ctx.space(); + this.formatBlockStmts(node.children[2], ctx); + for (let i = 3; i < node.children.length; i += 3) { + const keyword = node.children[i].text; + ctx.space(); + ctx.write(keyword); + ctx.space(); + if (keyword == 'elif') { + this.formatExpr(node.children[i + 1], ctx); + ctx.space(); + this.formatBlockStmts(node.children[i + 2], ctx); + } else { + this.formatBlockStmts(node.children[i + 1], ctx); + } + } + } + + formatForInStmt(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('for '); + ctx.write(node.children[1].text); + ctx.write(' in '); + ctx.write(node.children[3].text); + ctx.space(); + this.formatBlockStmts(node.children[4], ctx); + } + + formatBlockStmts(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('{'); + ctx.newline(); + ctx.indent(); + const stmts = node.children.slice(1, -1); + stmts.forEach((child, index) => { + this.formatInlineStmt(child, ctx); + }); + ctx.unindent(); + ctx.write('}'); + } + + formatContinueStmt(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('continue'); + } + + formatBreakStmt(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('break'); + } + + formatAssignStmt(node: TParser.SyntaxNode, ctx: IContext) { + assert(node.type === "assign_stmt"); + this.formatIdentifier(node.children[0], ctx); + ctx.space(); + ctx.write('='); + ctx.space(); + this.formatExpr(node.children[2], ctx); + } + + formatCallExpr(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.children[0].text); + this.formatArgumentList(node.children[1], ctx); + } + + formatArgumentList(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('('); + if (node.text.length >= 80) { + ctx.indent(); + ctx.newline(); + node.children.slice(1, -1).forEach((child, index) => { + if (index % 2 !== 0) { + return; + } + ctx.writeIndent(); + this.formatExpr(child, ctx); + ctx.write(','); + ctx.newline(); + }); + ctx.unindent(); + } else { + node.children.slice(1, -1).forEach((child, index) => { + if (index % 2 !== 0) { + return; + } + if (index > 0) { + ctx.write(','); + ctx.space(); + } + this.formatExpr(child, ctx); + }); + } + ctx.write(')'); + } + + formatExprStmt(node: TParser.SyntaxNode, ctx: IContext) { + node.firstChild && this.formatExpr(node.firstChild, ctx); + } + + formatExpr(node: TParser.SyntaxNode, ctx: IContext) { + switch (node.type) { + case "call_expr": + this.formatCallExpr(node, ctx); + break; + case "binary_expr": + this.formatBinaryExpr(node, ctx); + break; + case "paren_expr": + this.formatParenExpr(node, ctx); + break; + case "list_expr": + this.formatListExpr(node, ctx); + break; + case "map_expr": + this.formatMapExpr(node, ctx); + break; + case "index_expr": + this.formatIndexExpr(node, ctx); + break; + case "identifier": + this.formatIdentifier(node, ctx); + break; + + // Literals + case "nil_lit": + this.formatNilLit(node, ctx); + break; + case "number_lit": + this.formatNumberLit(node, ctx); + break; + case "string_lit": + this.formatStringLit(node, ctx); + break; + case "bool_lit": + this.formatBoolLit(node, ctx); + break; + + default: + ctx.write(node.text); + break; + } + } + + formatBinaryExpr(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.children[0].text); + ctx.space(); + ctx.write(node.children[1].text); + ctx.space(); + ctx.write(node.children[2].text); + } + + formatParenExpr(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('('); + this.formatExprStmt(node.children[1], ctx); + ctx.write(')'); + } + + formatListExpr(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('['); + node.children.slice(1, -1).forEach((child, index) => { + if (index % 2 !== 0) { + return; + } + if (index > 0) { + ctx.write(','); + ctx.space(); + } + this.formatExprStmt(child, ctx); + }); + ctx.write(']'); + } + + formatMapExpr(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('{'); + node.children.slice(1, -1).forEach((child, index) => { + if (index % 2 !== 0) { + return; + } + if (index > 0) { + ctx.write(','); + ctx.space(); + } + this.formatMapElem(child, ctx); + }); + ctx.write('}'); + } + + formatMapElem(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.children[0].text); + ctx.write(': '); + this.formatExprStmt(node.children[2], ctx); + ctx.write(','); + ctx.space(); + } + + formatIndexExpr(node: TParser.SyntaxNode, ctx: IContext) { + this.formatIdentifier(node.children[0], ctx); + ctx.write('['); + this.formatExprStmt(node.children[2], ctx); + ctx.write(']'); + } + + formatNilLit(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write('nil'); + } + + formatNumberLit(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.text); + } + + formatStringLit(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.text); + } + + formatBoolLit(node: TParser.SyntaxNode, ctx: IContext) { + ctx.write(node.text); + } + + formatIdentifier(node: TParser.SyntaxNode, ctx: IContext) { + assert(node.type === "identifier"); + ctx.write(node.text); + } +} diff --git a/ide/plugins/vscode/server/src/ide/formatter/index.ts b/ide/plugins/vscode/server/src/ide/formatter/index.ts index e69de29..c1fdfe6 100644 --- a/ide/plugins/vscode/server/src/ide/formatter/index.ts +++ b/ide/plugins/vscode/server/src/ide/formatter/index.ts @@ -0,0 +1 @@ +export { IFormatter, Formatter } from './formatter'; diff --git a/ide/plugins/vscode/server/src/ide/index.ts b/ide/plugins/vscode/server/src/ide/index.ts index ad069f7..bbb2fc9 100644 --- a/ide/plugins/vscode/server/src/ide/index.ts +++ b/ide/plugins/vscode/server/src/ide/index.ts @@ -2,10 +2,10 @@ import path = require('path'); import TParser = require('web-tree-sitter'); import { File, ISemanticModel, newSemanticModel } from './semantic'; -import { Diagnostic, ILinter, Linter, LintResult } from './linter'; +import { ILinter, Linter, LintResult } from './linter'; import { LintOptions } from './lint'; import { FormatOptions, FormatResult } from './format'; - +import { Formatter, IFormatter } from './formatter'; export interface IDE { acceptFile(sourceFile: File): IDE; @@ -20,11 +20,13 @@ export interface IDE { export class IDEProvider implements IDE { private parser?: TParser; private linter: ILinter; + private formatter: IFormatter; private csts: { [fileId: string]: TParser.Tree }; constructor() { this.parser = undefined; this.linter = new Linter(); + this.formatter = new Formatter(); this.csts = {}; return this; } @@ -32,22 +34,30 @@ export class IDEProvider implements IDE { async init(): Promise { await TParser.init(); this.parser = new TParser(); - const lang = await TParser.Language.load(path.join(__dirname, "..", "..", "src", 'tree-sitter-platypus.wasm')); - this.parser.setLanguage(lang); + const lang = await TParser.Language.load(path.join(__dirname, "..", "..", "src", 'tree-sitter-platypus.wasm')); + this.parser.setLanguage(lang); return this; - } + } acceptFile(source: File): IDE { if (!this.parser) { throw new Error("Parser not initialized"); } + const tree = this.parser.parse(source.content); this.csts[source.fileId] = tree; return this; } format(opts: FormatOptions): FormatResult { - throw new Error('Method not implemented.'); + const tree = this.csts[opts.fileId]; + if (!tree) { + throw new Error("File not found"); + } + + return this.formatter.format({ + tree, + }); } lint(opts: LintOptions): LintResult { @@ -56,7 +66,11 @@ export class IDEProvider implements IDE { } const tree = this.csts[opts.fileId]; - const result = this.linter.lint({ + if (!tree) { + throw new Error("File not found"); + } + + const result = this.linter.lint({ fileId: opts.fileId, tree: tree, parser: this.parser, diff --git a/ide/plugins/vscode/server/src/ide/linter/rule.ts b/ide/plugins/vscode/server/src/ide/linter/rule.ts index fa19b7d..6a00357 100644 --- a/ide/plugins/vscode/server/src/ide/linter/rule.ts +++ b/ide/plugins/vscode/server/src/ide/linter/rule.ts @@ -1,5 +1,5 @@ import Parser = require('web-tree-sitter'); -import { File, Range } from '../semantic'; +import { Range } from '../semantic'; export interface Diagnostic { // The position information about source code. diff --git a/ide/plugins/vscode/server/src/server.ts b/ide/plugins/vscode/server/src/server.ts index a7697d0..0619681 100644 --- a/ide/plugins/vscode/server/src/server.ts +++ b/ide/plugins/vscode/server/src/server.ts @@ -20,6 +20,8 @@ import { HoverParams, Hover, MarkupKind, + Range, + CancellationToken, } from 'vscode-languageserver/node'; import { @@ -28,6 +30,7 @@ import { } from 'vscode-languageserver-textdocument'; import { IDE, IDEProvider } from './ide'; +import { Range as IDERange } from './ide/semantic'; // import Parser = require("tree-sitter"); // import PPL = require("tree-sitter-ppl"); @@ -163,7 +166,7 @@ async function validateTextDocument(textDocument: TextDocument): Promise { // const settings = await getDocumentSettings(textDocument.uri); // Send the computed diagnostics to VSCode. - const lintResult = ide.lint({fileId: textDocument.uri}); + const lintResult = ide.lint({ fileId: textDocument.uri }); const diagnostics: Diagnostic[] = lintResult.diagnostics.map(diagnostic => { const rangeInfo = { start: Position.create(diagnostic.range.start.row, diagnostic.range.start.column), @@ -231,32 +234,13 @@ connection.onCompletionResolve( } ); -// connection.onHover((params: HoverParams): Hover => { -// const textDocument = documents.get(params.textDocument.uri); - -// const token = textDocument?.getText({ -// start: params.position, -// end: params.position, -// }); - -// const text = textDocument.getText(); -// const tree = languageParser.parse(text); -// console.debug(tree.rootNode.toString()); - - -// const query: Parser.Query = languageParser.getLanguage().query(`(call_expr name: (identifier) @name)`); - -// query.captures(tree.rootNode).forEach(item => { -// const slug = `${item.node.startPosition.row}-${item.node.startPosition.column}`; -// { -// contents: { -// kind: MarkupKind.Markdown, -// value: `Hello World, ${token}` -// } -// }; -// }); - -// }); +// Convert Range to vscode Position +const buildRange = (range: IDERange): Range => { + return { + start: Position.create(range.start.row, range.start.column), + end: Position.create(range.end.row, range.end.column), + }; +}; connection.onDocumentFormatting((params: DocumentFormattingParams): TextEdit[] => { const document = documents.get(params.textDocument.uri); @@ -264,9 +248,13 @@ connection.onDocumentFormatting((params: DocumentFormattingParams): TextEdit[] = return []; } - const text = document.getText(); - const result: TextEdit[] = []; - return result; + const formatResult = ide.format({ fileId: params.textDocument.uri }); + return [ + { + range: buildRange(formatResult.range), + newText: formatResult.formatted, + }, + ]; }); // Make the text document manager listen on the connection diff --git a/ide/tree-sitter-platypus/grammar.js b/ide/tree-sitter-platypus/grammar.js index e2ba943..a3d4db1 100644 --- a/ide/tree-sitter-platypus/grammar.js +++ b/ide/tree-sitter-platypus/grammar.js @@ -19,7 +19,13 @@ module.exports = grammar({ rules: { // TODO: error? // See: https://github.com/GuanceCloud/platypus/blob/main/pkg/parser/gram.y#LL131C9-L131C9 - source_file: $ => repeat($._stmt), + source_file: $ => repeat($.inline_statement), + + inline_statement: $ => seq( + $._stmt, + $.newline, + repeat($.newline), + ), // Statements _stmt: $ => choice( @@ -34,6 +40,8 @@ module.exports = grammar({ $.assign_stmt, ), + newline: $ => /\n+/, + comment: $ => token(prec(-10, /#.*/)), if_stmt: $ => prec.right(seq( @@ -42,11 +50,12 @@ module.exports = grammar({ field('consequence', $.block_stmts), repeat(seq( 'elif', - field('alternative', $.block_stmts) + $._expr, + $.block_stmts )), optional(seq( 'else', - field('alternative', $.block_stmts) + $.block_stmts )) )), @@ -54,13 +63,13 @@ module.exports = grammar({ 'for', $.identifier, 'in', - $.identifier, + $._expr, $.block_stmts, ), block_stmts: $ => seq( '{', - repeat($._stmt), + repeat($.inline_statement), '}', ), @@ -149,23 +158,7 @@ module.exports = grammar({ $._expr, ']', )), - - // Expr: condition - cond_expr: $ => seq( - $._expr, - choice( - '>=', - '>', - '||', - '&&', - '<', - '<=', - '!=', - '==', - ), - $._expr, - ), - + // Expr: list list_expr: $ => seq( '[', diff --git a/ide/tree-sitter-platypus/src/grammar.json b/ide/tree-sitter-platypus/src/grammar.json index 5d0985d..f54e709 100644 --- a/ide/tree-sitter-platypus/src/grammar.json +++ b/ide/tree-sitter-platypus/src/grammar.json @@ -5,9 +5,29 @@ "type": "REPEAT", "content": { "type": "SYMBOL", - "name": "_stmt" + "name": "inline_statement" } }, + "inline_statement": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_stmt" + }, + { + "type": "SYMBOL", + "name": "newline" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "newline" + } + } + ] + }, "_stmt": { "type": "CHOICE", "members": [ @@ -41,6 +61,10 @@ } ] }, + "newline": { + "type": "PATTERN", + "value": "\\n+" + }, "comment": { "type": "TOKEN", "content": { @@ -88,12 +112,12 @@ "value": "elif" }, { - "type": "FIELD", - "name": "alternative", - "content": { - "type": "SYMBOL", - "name": "block_stmts" - } + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block_stmts" } ] } @@ -109,12 +133,8 @@ "value": "else" }, { - "type": "FIELD", - "name": "alternative", - "content": { - "type": "SYMBOL", - "name": "block_stmts" - } + "type": "SYMBOL", + "name": "block_stmts" } ] }, @@ -143,7 +163,7 @@ }, { "type": "SYMBOL", - "name": "identifier" + "name": "_expr" }, { "type": "SYMBOL", @@ -162,7 +182,7 @@ "type": "REPEAT", "content": { "type": "SYMBOL", - "name": "_stmt" + "name": "inline_statement" } }, { @@ -794,56 +814,6 @@ ] } }, - "cond_expr": { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_expr" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": ">=" - }, - { - "type": "STRING", - "value": ">" - }, - { - "type": "STRING", - "value": "||" - }, - { - "type": "STRING", - "value": "&&" - }, - { - "type": "STRING", - "value": "<" - }, - { - "type": "STRING", - "value": "<=" - }, - { - "type": "STRING", - "value": "!=" - }, - { - "type": "STRING", - "value": "==" - } - ] - }, - { - "type": "SYMBOL", - "name": "_expr" - } - ] - }, "list_expr": { "type": "SEQ", "members": [ diff --git a/ide/tree-sitter-platypus/src/node-types.json b/ide/tree-sitter-platypus/src/node-types.json index e30f71b..8a66830 100644 --- a/ide/tree-sitter-platypus/src/node-types.json +++ b/ide/tree-sitter-platypus/src/node-types.json @@ -282,31 +282,7 @@ "required": false, "types": [ { - "type": "assign_stmt", - "named": true - }, - { - "type": "break_stmt", - "named": true - }, - { - "type": "comment", - "named": true - }, - { - "type": "continue_stmt", - "named": true - }, - { - "type": "expr_stmt", - "named": true - }, - { - "type": "for_in_stmt", - "named": true - }, - { - "type": "if_stmt", + "type": "inline_statement", "named": true } ] @@ -416,13 +392,53 @@ "multiple": true, "required": true, "types": [ + { + "type": "binary_expr", + "named": true + }, { "type": "block_stmts", "named": true }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, { "type": "identifier", "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true } ] } @@ -431,16 +447,6 @@ "type": "if_stmt", "named": true, "fields": { - "alternative": { - "multiple": true, - "required": false, - "types": [ - { - "type": "block_stmts", - "named": true - } - ] - }, "condition": { "multiple": false, "required": true, @@ -501,6 +507,60 @@ } ] } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "binary_expr", + "named": true + }, + { + "type": "block_stmts", + "named": true + }, + { + "type": "bool_lit", + "named": true + }, + { + "type": "call_expr", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "index_expr", + "named": true + }, + { + "type": "list_expr", + "named": true + }, + { + "type": "map_expr", + "named": true + }, + { + "type": "nil_lit", + "named": true + }, + { + "type": "number_lit", + "named": true + }, + { + "type": "paren_expr", + "named": true + }, + { + "type": "string_lit", + "named": true + } + ] } }, { @@ -558,6 +618,49 @@ ] } }, + { + "type": "inline_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "assign_stmt", + "named": true + }, + { + "type": "break_stmt", + "named": true + }, + { + "type": "comment", + "named": true + }, + { + "type": "continue_stmt", + "named": true + }, + { + "type": "expr_stmt", + "named": true + }, + { + "type": "for_in_stmt", + "named": true + }, + { + "type": "if_stmt", + "named": true + }, + { + "type": "newline", + "named": true + } + ] + } + }, { "type": "list_elem", "named": true, @@ -743,31 +846,7 @@ "required": false, "types": [ { - "type": "assign_stmt", - "named": true - }, - { - "type": "break_stmt", - "named": true - }, - { - "type": "comment", - "named": true - }, - { - "type": "continue_stmt", - "named": true - }, - { - "type": "expr_stmt", - "named": true - }, - { - "type": "for_in_stmt", - "named": true - }, - { - "type": "if_stmt", + "type": "inline_statement", "named": true } ] @@ -916,6 +995,10 @@ "type": "in", "named": false }, + { + "type": "newline", + "named": true + }, { "type": "nil", "named": false diff --git a/ide/tree-sitter-platypus/src/parser.c b/ide/tree-sitter-platypus/src/parser.c index 84329ee..ad5eb5c 100644 --- a/ide/tree-sitter-platypus/src/parser.c +++ b/ide/tree-sitter-platypus/src/parser.c @@ -6,92 +6,96 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 142 -#define LARGE_STATE_COUNT 3 -#define SYMBOL_COUNT 72 +#define STATE_COUNT 148 +#define LARGE_STATE_COUNT 2 +#define SYMBOL_COUNT 75 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 42 +#define TOKEN_COUNT 43 #define EXTERNAL_TOKEN_COUNT 0 -#define FIELD_COUNT 7 +#define FIELD_COUNT 6 #define MAX_ALIAS_SEQUENCE_LENGTH 6 -#define PRODUCTION_ID_COUNT 9 +#define PRODUCTION_ID_COUNT 4 enum { - sym_comment = 1, - anon_sym_if = 2, - anon_sym_elif = 3, - anon_sym_else = 4, - anon_sym_for = 5, - anon_sym_in = 6, - anon_sym_LBRACE = 7, - anon_sym_RBRACE = 8, - anon_sym_continue = 9, - anon_sym_break = 10, - anon_sym_EQ = 11, - sym_identifier = 12, - anon_sym_LPAREN = 13, - anon_sym_RPAREN = 14, - anon_sym_COMMA = 15, - anon_sym_PLUS = 16, - anon_sym_DASH = 17, - anon_sym_STAR = 18, - anon_sym_SLASH = 19, - anon_sym_PERCENT = 20, - anon_sym_PIPE_PIPE = 21, - anon_sym_AMP_AMP = 22, - anon_sym_EQ_EQ = 23, - anon_sym_BANG_EQ = 24, - anon_sym_GT = 25, - anon_sym_GT_EQ = 26, - anon_sym_LT_EQ = 27, - anon_sym_LT = 28, - anon_sym_LBRACK = 29, - anon_sym_RBRACK = 30, - anon_sym_COLON = 31, - anon_sym_nil = 32, - anon_sym_null = 33, - sym_number_lit = 34, - anon_sym_DQUOTE = 35, - aux_sym_string_lit_token1 = 36, - anon_sym_SQUOTE = 37, - aux_sym_string_lit_token2 = 38, - anon_sym_true = 39, - anon_sym_false = 40, - sym_escape_sequence = 41, - sym_source_file = 42, - sym__stmt = 43, - sym_if_stmt = 44, - sym_for_in_stmt = 45, - sym_block_stmts = 46, - sym_continue_stmt = 47, - sym_break_stmt = 48, - sym_assign_stmt = 49, - sym_expr_stmt = 50, - sym__expr = 51, - sym_paren_expr = 52, - sym_call_expr = 53, - sym_argument_list = 54, - sym_binary_expr = 55, - sym_index_expr = 56, - sym_list_expr = 57, - sym_list_elem = 58, - sym_map_expr = 59, - sym_map_elem = 60, - sym__literal = 61, - sym_nil_lit = 62, - sym_string_lit = 63, - sym_bool_lit = 64, - aux_sym_source_file_repeat1 = 65, - aux_sym_if_stmt_repeat1 = 66, - aux_sym_argument_list_repeat1 = 67, - aux_sym_list_expr_repeat1 = 68, - aux_sym_map_expr_repeat1 = 69, - aux_sym_string_lit_repeat1 = 70, - aux_sym_string_lit_repeat2 = 71, + sym_newline = 1, + sym_comment = 2, + anon_sym_if = 3, + anon_sym_elif = 4, + anon_sym_else = 5, + anon_sym_for = 6, + anon_sym_in = 7, + anon_sym_LBRACE = 8, + anon_sym_RBRACE = 9, + anon_sym_continue = 10, + anon_sym_break = 11, + anon_sym_EQ = 12, + sym_identifier = 13, + anon_sym_LPAREN = 14, + anon_sym_RPAREN = 15, + anon_sym_COMMA = 16, + anon_sym_PLUS = 17, + anon_sym_DASH = 18, + anon_sym_STAR = 19, + anon_sym_SLASH = 20, + anon_sym_PERCENT = 21, + anon_sym_PIPE_PIPE = 22, + anon_sym_AMP_AMP = 23, + anon_sym_EQ_EQ = 24, + anon_sym_BANG_EQ = 25, + anon_sym_GT = 26, + anon_sym_GT_EQ = 27, + anon_sym_LT_EQ = 28, + anon_sym_LT = 29, + anon_sym_LBRACK = 30, + anon_sym_RBRACK = 31, + anon_sym_COLON = 32, + anon_sym_nil = 33, + anon_sym_null = 34, + sym_number_lit = 35, + anon_sym_DQUOTE = 36, + aux_sym_string_lit_token1 = 37, + anon_sym_SQUOTE = 38, + aux_sym_string_lit_token2 = 39, + anon_sym_true = 40, + anon_sym_false = 41, + sym_escape_sequence = 42, + sym_source_file = 43, + sym_inline_statement = 44, + sym__stmt = 45, + sym_if_stmt = 46, + sym_for_in_stmt = 47, + sym_block_stmts = 48, + sym_continue_stmt = 49, + sym_break_stmt = 50, + sym_assign_stmt = 51, + sym_expr_stmt = 52, + sym__expr = 53, + sym_paren_expr = 54, + sym_call_expr = 55, + sym_argument_list = 56, + sym_binary_expr = 57, + sym_index_expr = 58, + sym_list_expr = 59, + sym_list_elem = 60, + sym_map_expr = 61, + sym_map_elem = 62, + sym__literal = 63, + sym_nil_lit = 64, + sym_string_lit = 65, + sym_bool_lit = 66, + aux_sym_source_file_repeat1 = 67, + aux_sym_inline_statement_repeat1 = 68, + aux_sym_if_stmt_repeat1 = 69, + aux_sym_argument_list_repeat1 = 70, + aux_sym_list_expr_repeat1 = 71, + aux_sym_map_expr_repeat1 = 72, + aux_sym_string_lit_repeat1 = 73, + aux_sym_string_lit_repeat2 = 74, }; static const char * const ts_symbol_names[] = { [ts_builtin_sym_end] = "end", + [sym_newline] = "newline", [sym_comment] = "comment", [anon_sym_if] = "if", [anon_sym_elif] = "elif", @@ -134,6 +138,7 @@ static const char * const ts_symbol_names[] = { [anon_sym_false] = "false", [sym_escape_sequence] = "escape_sequence", [sym_source_file] = "source_file", + [sym_inline_statement] = "inline_statement", [sym__stmt] = "_stmt", [sym_if_stmt] = "if_stmt", [sym_for_in_stmt] = "for_in_stmt", @@ -157,6 +162,7 @@ static const char * const ts_symbol_names[] = { [sym_string_lit] = "string_lit", [sym_bool_lit] = "bool_lit", [aux_sym_source_file_repeat1] = "source_file_repeat1", + [aux_sym_inline_statement_repeat1] = "inline_statement_repeat1", [aux_sym_if_stmt_repeat1] = "if_stmt_repeat1", [aux_sym_argument_list_repeat1] = "argument_list_repeat1", [aux_sym_list_expr_repeat1] = "list_expr_repeat1", @@ -167,6 +173,7 @@ static const char * const ts_symbol_names[] = { static const TSSymbol ts_symbol_map[] = { [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_newline] = sym_newline, [sym_comment] = sym_comment, [anon_sym_if] = anon_sym_if, [anon_sym_elif] = anon_sym_elif, @@ -209,6 +216,7 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_false] = anon_sym_false, [sym_escape_sequence] = sym_escape_sequence, [sym_source_file] = sym_source_file, + [sym_inline_statement] = sym_inline_statement, [sym__stmt] = sym__stmt, [sym_if_stmt] = sym_if_stmt, [sym_for_in_stmt] = sym_for_in_stmt, @@ -232,6 +240,7 @@ static const TSSymbol ts_symbol_map[] = { [sym_string_lit] = sym_string_lit, [sym_bool_lit] = sym_bool_lit, [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, + [aux_sym_inline_statement_repeat1] = aux_sym_inline_statement_repeat1, [aux_sym_if_stmt_repeat1] = aux_sym_if_stmt_repeat1, [aux_sym_argument_list_repeat1] = aux_sym_argument_list_repeat1, [aux_sym_list_expr_repeat1] = aux_sym_list_expr_repeat1, @@ -245,6 +254,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = true, }, + [sym_newline] = { + .visible = true, + .named = true, + }, [sym_comment] = { .visible = true, .named = true, @@ -413,6 +426,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_inline_statement] = { + .visible = true, + .named = true, + }, [sym__stmt] = { .visible = false, .named = true, @@ -505,6 +522,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, + [aux_sym_inline_statement_repeat1] = { + .visible = false, + .named = false, + }, [aux_sym_if_stmt_repeat1] = { .visible = false, .named = false, @@ -532,18 +553,16 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { }; enum { - field_alternative = 1, - field_condition = 2, - field_consequence = 3, - field_left = 4, - field_name = 5, - field_operator = 6, - field_right = 7, + field_condition = 1, + field_consequence = 2, + field_left = 3, + field_name = 4, + field_operator = 5, + field_right = 6, }; static const char * const ts_field_names[] = { [0] = NULL, - [field_alternative] = "alternative", [field_condition] = "condition", [field_consequence] = "consequence", [field_left] = "left", @@ -556,11 +575,6 @@ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [1] = {.index = 0, .length = 1}, [2] = {.index = 1, .length = 2}, [3] = {.index = 3, .length = 3}, - [4] = {.index = 6, .length = 3}, - [5] = {.index = 9, .length = 1}, - [6] = {.index = 10, .length = 3}, - [7] = {.index = 13, .length = 2}, - [8] = {.index = 15, .length = 4}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -573,24 +587,6 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_left, 0}, {field_operator, 1}, {field_right, 2}, - [6] = - {field_alternative, 3, .inherited = true}, - {field_condition, 1}, - {field_consequence, 2}, - [9] = - {field_alternative, 1}, - [10] = - {field_alternative, 4}, - {field_condition, 1}, - {field_consequence, 2}, - [13] = - {field_alternative, 0, .inherited = true}, - {field_alternative, 1, .inherited = true}, - [15] = - {field_alternative, 3, .inherited = true}, - {field_alternative, 5}, - {field_condition, 1}, - {field_consequence, 2}, }; static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { @@ -607,18 +603,18 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [2] = 2, [3] = 3, [4] = 4, - [5] = 4, - [6] = 3, + [5] = 3, + [6] = 6, [7] = 7, - [8] = 8, + [8] = 7, [9] = 9, [10] = 10, - [11] = 11, + [11] = 9, [12] = 12, [13] = 13, [14] = 14, [15] = 15, - [16] = 16, + [16] = 15, [17] = 17, [18] = 18, [19] = 19, @@ -629,112 +625,112 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [24] = 24, [25] = 25, [26] = 26, - [27] = 27, + [27] = 21, [28] = 28, - [29] = 29, - [30] = 30, - [31] = 31, - [32] = 32, - [33] = 33, - [34] = 34, - [35] = 34, + [29] = 14, + [30] = 20, + [31] = 19, + [32] = 18, + [33] = 17, + [34] = 12, + [35] = 35, [36] = 36, [37] = 37, - [38] = 36, - [39] = 39, + [38] = 38, + [39] = 37, [40] = 40, - [41] = 13, + [41] = 41, [42] = 42, [43] = 43, [44] = 44, - [45] = 42, - [46] = 43, + [45] = 45, + [46] = 46, [47] = 47, - [48] = 47, - [49] = 40, - [50] = 39, - [51] = 51, + [48] = 48, + [49] = 49, + [50] = 50, + [51] = 36, [52] = 52, [53] = 53, - [54] = 52, + [54] = 54, [55] = 55, [56] = 56, - [57] = 51, - [58] = 56, - [59] = 59, + [57] = 57, + [58] = 58, + [59] = 48, [60] = 60, [61] = 61, [62] = 62, [63] = 63, - [64] = 64, + [64] = 22, [65] = 65, - [66] = 24, - [67] = 30, - [68] = 33, - [69] = 10, - [70] = 25, - [71] = 29, - [72] = 26, - [73] = 20, - [74] = 17, - [75] = 18, - [76] = 19, - [77] = 21, - [78] = 22, - [79] = 23, - [80] = 28, - [81] = 8, - [82] = 12, - [83] = 15, - [84] = 11, - [85] = 32, - [86] = 31, - [87] = 14, - [88] = 88, - [89] = 89, + [66] = 65, + [67] = 67, + [68] = 68, + [69] = 69, + [70] = 70, + [71] = 71, + [72] = 50, + [73] = 62, + [74] = 54, + [75] = 75, + [76] = 76, + [77] = 77, + [78] = 43, + [79] = 79, + [80] = 44, + [81] = 38, + [82] = 45, + [83] = 41, + [84] = 77, + [85] = 40, + [86] = 61, + [87] = 60, + [88] = 42, + [89] = 56, [90] = 90, - [91] = 65, - [92] = 92, - [93] = 63, - [94] = 94, - [95] = 95, - [96] = 95, - [97] = 97, - [98] = 98, - [99] = 99, - [100] = 100, + [91] = 35, + [92] = 58, + [93] = 79, + [94] = 75, + [95] = 55, + [96] = 53, + [97] = 57, + [98] = 46, + [99] = 47, + [100] = 49, [101] = 101, - [102] = 102, + [102] = 52, [103] = 103, - [104] = 103, - [105] = 101, - [106] = 100, + [104] = 104, + [105] = 105, + [106] = 106, [107] = 107, [108] = 108, [109] = 109, [110] = 110, - [111] = 111, - [112] = 112, - [113] = 112, - [114] = 109, - [115] = 110, + [111] = 106, + [112] = 108, + [113] = 110, + [114] = 114, + [115] = 109, [116] = 116, - [117] = 111, + [117] = 117, [118] = 118, [119] = 119, [120] = 120, [121] = 121, - [122] = 122, + [122] = 118, [123] = 123, [124] = 124, [125] = 125, [126] = 121, - [127] = 118, - [128] = 125, - [129] = 120, - [130] = 122, + [127] = 127, + [128] = 123, + [129] = 129, + [130] = 125, [131] = 131, - [132] = 132, + [132] = 129, [133] = 133, [134] = 134, [135] = 135, @@ -744,6 +740,12 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [139] = 139, [140] = 140, [141] = 141, + [142] = 142, + [143] = 143, + [144] = 139, + [145] = 145, + [146] = 146, + [147] = 147, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -753,126 +755,115 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 0: if (eof) ADVANCE(52); if (lookahead == '!') ADVANCE(11); - if (lookahead == '"') ADVANCE(140); - if (lookahead == '#') ADVANCE(53); - if (lookahead == '%') ADVANCE(109); + if (lookahead == '"') ADVANCE(133); + if (lookahead == '#') ADVANCE(54); + if (lookahead == '%') ADVANCE(102); if (lookahead == '&') ADVANCE(6); - if (lookahead == '\'') ADVANCE(143); - if (lookahead == '(') ADVANCE(100); - if (lookahead == ')') ADVANCE(101); - if (lookahead == '*') ADVANCE(107); - if (lookahead == '+') ADVANCE(104); - if (lookahead == ',') ADVANCE(102); - if (lookahead == '-') ADVANCE(106); - if (lookahead == '.') ADVANCE(44); - if (lookahead == '/') ADVANCE(108); - if (lookahead == '0') ADVANCE(129); - if (lookahead == ':') ADVANCE(120); - if (lookahead == '<') ADVANCE(117); - if (lookahead == '=') ADVANCE(69); - if (lookahead == '>') ADVANCE(114); - if (lookahead == '[') ADVANCE(118); + if (lookahead == '\'') ADVANCE(136); + if (lookahead == '(') ADVANCE(95); + if (lookahead == ')') ADVANCE(96); + if (lookahead == '*') ADVANCE(100); + if (lookahead == '+') ADVANCE(98); + if (lookahead == ',') ADVANCE(97); + if (lookahead == '-') ADVANCE(99); + if (lookahead == '/') ADVANCE(101); + if (lookahead == ':') ADVANCE(113); + if (lookahead == '<') ADVANCE(110); + if (lookahead == '=') ADVANCE(68); + if (lookahead == '>') ADVANCE(107); + if (lookahead == '[') ADVANCE(111); if (lookahead == '\\') ADVANCE(42); - if (lookahead == ']') ADVANCE(119); - if (lookahead == 'b') ADVANCE(34); - if (lookahead == 'c') ADVANCE(33); - if (lookahead == 'e') ADVANCE(26); - if (lookahead == 'f') ADVANCE(14); - if (lookahead == 'i') ADVANCE(20); - if (lookahead == 'n') ADVANCE(24); - if (lookahead == 't') ADVANCE(35); - if (lookahead == '{') ADVANCE(63); - if (lookahead == '|') ADVANCE(41); - if (lookahead == '}') ADVANCE(64); + if (lookahead == ']') ADVANCE(112); + if (lookahead == 'b') ADVANCE(33); + if (lookahead == 'c') ADVANCE(32); + if (lookahead == 'e') ADVANCE(25); + if (lookahead == 'f') ADVANCE(13); + if (lookahead == 'i') ADVANCE(19); + if (lookahead == 'n') ADVANCE(23); + if (lookahead == 't') ADVANCE(34); + if (lookahead == '{') ADVANCE(62); + if (lookahead == '|') ADVANCE(40); + if (lookahead == '}') ADVANCE(63); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(49) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); + lookahead == ' ') SKIP(50) END_STATE(); case 1: - if (lookahead == '\n') SKIP(7) - if (lookahead == '\'') ADVANCE(143); - if (lookahead == '\\') ADVANCE(42); + if (lookahead == '\n') ADVANCE(53); + if (lookahead == '!') ADVANCE(11); + if (lookahead == '%') ADVANCE(102); + if (lookahead == '&') ADVANCE(6); + if (lookahead == '(') ADVANCE(95); + if (lookahead == '*') ADVANCE(100); + if (lookahead == '+') ADVANCE(98); + if (lookahead == '-') ADVANCE(99); + if (lookahead == '/') ADVANCE(101); + if (lookahead == '<') ADVANCE(110); + if (lookahead == '=') ADVANCE(68); + if (lookahead == '>') ADVANCE(107); + if (lookahead == '[') ADVANCE(111); + if (lookahead == 'e') ADVANCE(25); + if (lookahead == '|') ADVANCE(40); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(144); - if (lookahead != 0) ADVANCE(145); + lookahead == ' ') SKIP(1) END_STATE(); case 2: - if (lookahead == '\n') SKIP(5) - if (lookahead == '"') ADVANCE(140); + if (lookahead == '\n') SKIP(7) + if (lookahead == '\'') ADVANCE(136); if (lookahead == '\\') ADVANCE(42); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(141); - if (lookahead != 0) ADVANCE(142); + lookahead == ' ') ADVANCE(137); + if (lookahead != 0) ADVANCE(138); END_STATE(); case 3: - if (lookahead == '!') ADVANCE(11); - if (lookahead == '%') ADVANCE(109); - if (lookahead == '&') ADVANCE(6); - if (lookahead == '(') ADVANCE(100); - if (lookahead == ')') ADVANCE(101); - if (lookahead == '*') ADVANCE(107); - if (lookahead == '+') ADVANCE(103); - if (lookahead == ',') ADVANCE(102); - if (lookahead == '-') ADVANCE(105); - if (lookahead == '/') ADVANCE(108); - if (lookahead == ':') ADVANCE(120); - if (lookahead == '<') ADVANCE(117); - if (lookahead == '=') ADVANCE(12); - if (lookahead == '>') ADVANCE(114); - if (lookahead == '[') ADVANCE(118); - if (lookahead == ']') ADVANCE(119); - if (lookahead == '{') ADVANCE(63); - if (lookahead == '|') ADVANCE(41); - if (lookahead == '}') ADVANCE(64); + if (lookahead == '\n') SKIP(5) + if (lookahead == '"') ADVANCE(133); + if (lookahead == '\\') ADVANCE(42); if (lookahead == '\t' || - lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(3) - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + lookahead == ' ') ADVANCE(134); + if (lookahead != 0) ADVANCE(135); END_STATE(); case 4: - if (lookahead == '"') ADVANCE(140); - if (lookahead == '\'') ADVANCE(143); - if (lookahead == '(') ADVANCE(100); - if (lookahead == ')') ADVANCE(101); + if (lookahead == '"') ADVANCE(133); + if (lookahead == '\'') ADVANCE(136); + if (lookahead == '(') ADVANCE(95); + if (lookahead == ')') ADVANCE(96); if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(129); - if (lookahead == '[') ADVANCE(118); - if (lookahead == ']') ADVANCE(119); - if (lookahead == 'f') ADVANCE(71); - if (lookahead == 'n') ADVANCE(82); - if (lookahead == 't') ADVANCE(93); - if (lookahead == '{') ADVANCE(63); - if (lookahead == '}') ADVANCE(64); + if (lookahead == '0') ADVANCE(123); + if (lookahead == '[') ADVANCE(111); + if (lookahead == ']') ADVANCE(112); + if (lookahead == 'f') ADVANCE(70); + if (lookahead == 'n') ADVANCE(78); + if (lookahead == 't') ADVANCE(88); + if (lookahead == '{') ADVANCE(62); + if (lookahead == '}') ADVANCE(63); if (lookahead == '+' || lookahead == '-') ADVANCE(8); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(4) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(124); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 5: - if (lookahead == '"') ADVANCE(140); + if (lookahead == '"') ADVANCE(133); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(5) END_STATE(); case 6: - if (lookahead == '&') ADVANCE(111); + if (lookahead == '&') ADVANCE(104); END_STATE(); case 7: - if (lookahead == '\'') ADVANCE(143); + if (lookahead == '\'') ADVANCE(136); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || @@ -880,117 +871,123 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { END_STATE(); case 8: if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(129); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); + if (lookahead == '0') ADVANCE(123); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); case 9: if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(127); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (lookahead == '0') ADVANCE(120); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(121); if (('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(136); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(129); END_STATE(); case 10: if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(130); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); + if (lookahead == '0') ADVANCE(122); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); case 11: - if (lookahead == '=') ADVANCE(113); + if (lookahead == '=') ADVANCE(106); END_STATE(); case 12: - if (lookahead == '=') ADVANCE(112); + if (lookahead == 'a') ADVANCE(24); END_STATE(); case 13: - if (lookahead == 'a') ADVANCE(25); + if (lookahead == 'a') ADVANCE(26); + if (lookahead == 'o') ADVANCE(35); END_STATE(); case 14: - if (lookahead == 'a') ADVANCE(27); - if (lookahead == 'o') ADVANCE(36); + if (lookahead == 'e') ADVANCE(12); END_STATE(); case 15: - if (lookahead == 'e') ADVANCE(13); + if (lookahead == 'e') ADVANCE(58); END_STATE(); case 16: - if (lookahead == 'e') ADVANCE(58); + if (lookahead == 'e') ADVANCE(139); END_STATE(); case 17: - if (lookahead == 'e') ADVANCE(146); + if (lookahead == 'e') ADVANCE(141); END_STATE(); case 18: - if (lookahead == 'e') ADVANCE(148); + if (lookahead == 'e') ADVANCE(64); END_STATE(); case 19: - if (lookahead == 'e') ADVANCE(65); + if (lookahead == 'f') ADVANCE(55); + if (lookahead == 'n') ADVANCE(61); END_STATE(); case 20: - if (lookahead == 'f') ADVANCE(54); - if (lookahead == 'n') ADVANCE(62); + if (lookahead == 'f') ADVANCE(57); END_STATE(); case 21: - if (lookahead == 'f') ADVANCE(56); + if (lookahead == 'i') ADVANCE(20); + if (lookahead == 's') ADVANCE(15); END_STATE(); case 22: - if (lookahead == 'i') ADVANCE(21); - if (lookahead == 's') ADVANCE(16); + if (lookahead == 'i') ADVANCE(31); END_STATE(); case 23: - if (lookahead == 'i') ADVANCE(32); + if (lookahead == 'i') ADVANCE(27); + if (lookahead == 'u') ADVANCE(29); END_STATE(); case 24: - if (lookahead == 'i') ADVANCE(28); - if (lookahead == 'u') ADVANCE(30); + if (lookahead == 'k') ADVANCE(66); END_STATE(); case 25: - if (lookahead == 'k') ADVANCE(67); + if (lookahead == 'l') ADVANCE(21); END_STATE(); case 26: - if (lookahead == 'l') ADVANCE(22); + if (lookahead == 'l') ADVANCE(36); END_STATE(); case 27: - if (lookahead == 'l') ADVANCE(37); + if (lookahead == 'l') ADVANCE(114); END_STATE(); case 28: - if (lookahead == 'l') ADVANCE(121); + if (lookahead == 'l') ADVANCE(116); END_STATE(); case 29: - if (lookahead == 'l') ADVANCE(123); + if (lookahead == 'l') ADVANCE(28); END_STATE(); case 30: - if (lookahead == 'l') ADVANCE(29); + if (lookahead == 'n') ADVANCE(37); END_STATE(); case 31: - if (lookahead == 'n') ADVANCE(38); + if (lookahead == 'n') ADVANCE(39); END_STATE(); case 32: - if (lookahead == 'n') ADVANCE(40); + if (lookahead == 'o') ADVANCE(30); END_STATE(); case 33: - if (lookahead == 'o') ADVANCE(31); + if (lookahead == 'r') ADVANCE(14); END_STATE(); case 34: - if (lookahead == 'r') ADVANCE(15); + if (lookahead == 'r') ADVANCE(38); END_STATE(); case 35: - if (lookahead == 'r') ADVANCE(39); + if (lookahead == 'r') ADVANCE(59); END_STATE(); case 36: - if (lookahead == 'r') ADVANCE(60); + if (lookahead == 's') ADVANCE(17); END_STATE(); case 37: - if (lookahead == 's') ADVANCE(18); + if (lookahead == 't') ADVANCE(22); END_STATE(); case 38: - if (lookahead == 't') ADVANCE(23); + if (lookahead == 'u') ADVANCE(16); END_STATE(); case 39: - if (lookahead == 'u') ADVANCE(17); + if (lookahead == 'u') ADVANCE(18); END_STATE(); case 40: - if (lookahead == 'u') ADVANCE(19); + if (lookahead == '|') ADVANCE(103); END_STATE(); case 41: - if (lookahead == '|') ADVANCE(110); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(41) + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 42: if (lookahead == '"' || @@ -1001,556 +998,486 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 'n' || lookahead == 'r' || lookahead == 't' || - lookahead == 'u') ADVANCE(150); + lookahead == 'u') ADVANCE(143); END_STATE(); case 43: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); case 44: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(125); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(118); END_STATE(); case 45: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121); if (('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(136); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(129); END_STATE(); case 46: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(133); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(126); END_STATE(); case 47: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(136); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(129); END_STATE(); case 48: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(126); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(119); END_STATE(); case 49: if (eof) ADVANCE(52); - if (lookahead == '!') ADVANCE(11); - if (lookahead == '"') ADVANCE(140); - if (lookahead == '#') ADVANCE(53); - if (lookahead == '%') ADVANCE(109); - if (lookahead == '&') ADVANCE(6); - if (lookahead == '\'') ADVANCE(143); - if (lookahead == '(') ADVANCE(100); - if (lookahead == ')') ADVANCE(101); - if (lookahead == '*') ADVANCE(107); - if (lookahead == '+') ADVANCE(104); - if (lookahead == ',') ADVANCE(102); - if (lookahead == '-') ADVANCE(106); + if (lookahead == '\n') ADVANCE(53); + if (lookahead == '"') ADVANCE(133); + if (lookahead == '#') ADVANCE(54); + if (lookahead == '\'') ADVANCE(136); + if (lookahead == '(') ADVANCE(95); if (lookahead == '.') ADVANCE(44); - if (lookahead == '/') ADVANCE(108); - if (lookahead == '0') ADVANCE(129); - if (lookahead == ':') ADVANCE(120); - if (lookahead == '<') ADVANCE(117); - if (lookahead == '=') ADVANCE(69); - if (lookahead == '>') ADVANCE(114); - if (lookahead == '[') ADVANCE(118); - if (lookahead == ']') ADVANCE(119); - if (lookahead == 'b') ADVANCE(34); - if (lookahead == 'c') ADVANCE(33); - if (lookahead == 'e') ADVANCE(26); - if (lookahead == 'f') ADVANCE(14); - if (lookahead == 'i') ADVANCE(20); - if (lookahead == 'n') ADVANCE(24); - if (lookahead == 't') ADVANCE(35); - if (lookahead == '{') ADVANCE(63); - if (lookahead == '|') ADVANCE(41); - if (lookahead == '}') ADVANCE(64); + if (lookahead == '0') ADVANCE(123); + if (lookahead == '[') ADVANCE(111); + if (lookahead == 'b') ADVANCE(87); + if (lookahead == 'c') ADVANCE(86); + if (lookahead == 'f') ADVANCE(69); + if (lookahead == 'i') ADVANCE(76); + if (lookahead == 'n') ADVANCE(78); + if (lookahead == 't') ADVANCE(88); + if (lookahead == '{') ADVANCE(62); + if (lookahead == '}') ADVANCE(63); + if (lookahead == '+' || + lookahead == '-') ADVANCE(8); if (lookahead == '\t' || - lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(49) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(124); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 50: if (eof) ADVANCE(52); if (lookahead == '!') ADVANCE(11); - if (lookahead == '"') ADVANCE(140); - if (lookahead == '#') ADVANCE(53); - if (lookahead == '%') ADVANCE(109); + if (lookahead == '"') ADVANCE(133); + if (lookahead == '#') ADVANCE(54); + if (lookahead == '%') ADVANCE(102); if (lookahead == '&') ADVANCE(6); - if (lookahead == '\'') ADVANCE(143); - if (lookahead == '(') ADVANCE(100); - if (lookahead == '*') ADVANCE(107); - if (lookahead == '+') ADVANCE(104); - if (lookahead == ',') ADVANCE(102); - if (lookahead == '-') ADVANCE(106); - if (lookahead == '.') ADVANCE(44); - if (lookahead == '/') ADVANCE(108); - if (lookahead == '0') ADVANCE(129); - if (lookahead == '<') ADVANCE(117); - if (lookahead == '=') ADVANCE(69); - if (lookahead == '>') ADVANCE(114); - if (lookahead == '[') ADVANCE(118); - if (lookahead == ']') ADVANCE(119); - if (lookahead == 'b') ADVANCE(92); - if (lookahead == 'c') ADVANCE(91); - if (lookahead == 'f') ADVANCE(70); - if (lookahead == 'i') ADVANCE(78); - if (lookahead == 'n') ADVANCE(82); - if (lookahead == 't') ADVANCE(93); - if (lookahead == '{') ADVANCE(63); - if (lookahead == '|') ADVANCE(41); - if (lookahead == '}') ADVANCE(64); + if (lookahead == '\'') ADVANCE(136); + if (lookahead == '(') ADVANCE(95); + if (lookahead == ')') ADVANCE(96); + if (lookahead == '*') ADVANCE(100); + if (lookahead == '+') ADVANCE(98); + if (lookahead == ',') ADVANCE(97); + if (lookahead == '-') ADVANCE(99); + if (lookahead == '/') ADVANCE(101); + if (lookahead == ':') ADVANCE(113); + if (lookahead == '<') ADVANCE(110); + if (lookahead == '=') ADVANCE(68); + if (lookahead == '>') ADVANCE(107); + if (lookahead == '[') ADVANCE(111); + if (lookahead == ']') ADVANCE(112); + if (lookahead == 'b') ADVANCE(33); + if (lookahead == 'c') ADVANCE(32); + if (lookahead == 'e') ADVANCE(25); + if (lookahead == 'f') ADVANCE(13); + if (lookahead == 'i') ADVANCE(19); + if (lookahead == 'n') ADVANCE(23); + if (lookahead == 't') ADVANCE(34); + if (lookahead == '{') ADVANCE(62); + if (lookahead == '|') ADVANCE(40); + if (lookahead == '}') ADVANCE(63); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(50) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); case 51: if (eof) ADVANCE(52); - if (lookahead == '"') ADVANCE(140); - if (lookahead == '#') ADVANCE(53); - if (lookahead == '\'') ADVANCE(143); - if (lookahead == '(') ADVANCE(100); + if (lookahead == '"') ADVANCE(133); + if (lookahead == '#') ADVANCE(54); + if (lookahead == '\'') ADVANCE(136); + if (lookahead == '(') ADVANCE(95); if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(129); - if (lookahead == '[') ADVANCE(118); - if (lookahead == 'b') ADVANCE(92); - if (lookahead == 'c') ADVANCE(91); - if (lookahead == 'e') ADVANCE(87); - if (lookahead == 'f') ADVANCE(70); - if (lookahead == 'i') ADVANCE(78); - if (lookahead == 'n') ADVANCE(82); - if (lookahead == 't') ADVANCE(93); - if (lookahead == '{') ADVANCE(63); - if (lookahead == '}') ADVANCE(64); + if (lookahead == '0') ADVANCE(123); + if (lookahead == '[') ADVANCE(111); + if (lookahead == 'b') ADVANCE(87); + if (lookahead == 'c') ADVANCE(86); + if (lookahead == 'f') ADVANCE(69); + if (lookahead == 'i') ADVANCE(76); + if (lookahead == 'n') ADVANCE(78); + if (lookahead == 't') ADVANCE(88); + if (lookahead == '{') ADVANCE(62); + if (lookahead == '}') ADVANCE(63); if (lookahead == '+' || lookahead == '-') ADVANCE(8); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(51) - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(124); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 52: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); case 53: + ACCEPT_TOKEN(sym_newline); + if (lookahead == '\n') ADVANCE(53); + END_STATE(); + case 54: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(53); + lookahead != '\n') ADVANCE(54); END_STATE(); - case 54: + case 55: ACCEPT_TOKEN(anon_sym_if); END_STATE(); - case 55: + case 56: ACCEPT_TOKEN(anon_sym_if); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 56: - ACCEPT_TOKEN(anon_sym_elif); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 57: ACCEPT_TOKEN(anon_sym_elif); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); END_STATE(); case 58: ACCEPT_TOKEN(anon_sym_else); END_STATE(); case 59: - ACCEPT_TOKEN(anon_sym_else); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 60: ACCEPT_TOKEN(anon_sym_for); END_STATE(); - case 61: + case 60: ACCEPT_TOKEN(anon_sym_for); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 62: + case 61: ACCEPT_TOKEN(anon_sym_in); END_STATE(); - case 63: + case 62: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); - case 64: + case 63: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); - case 65: + case 64: ACCEPT_TOKEN(anon_sym_continue); END_STATE(); - case 66: + case 65: ACCEPT_TOKEN(anon_sym_continue); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 67: + case 66: ACCEPT_TOKEN(anon_sym_break); END_STATE(); - case 68: + case 67: ACCEPT_TOKEN(anon_sym_break); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 69: + case 68: ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(112); + if (lookahead == '=') ADVANCE(105); + END_STATE(); + case 69: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(80); + if (lookahead == 'o') ADVANCE(89); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 70: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(84); - if (lookahead == 'o') ADVANCE(94); + if (lookahead == 'a') ADVANCE(80); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 71: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(84); + if (lookahead == 'a') ADVANCE(79); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 72: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(83); + if (lookahead == 'e') ADVANCE(71); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 73: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(72); + if (lookahead == 'e') ADVANCE(140); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 74: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(147); + if (lookahead == 'e') ADVANCE(142); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 75: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(149); + if (lookahead == 'e') ADVANCE(65); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 76: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(66); + if (lookahead == 'f') ADVANCE(56); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 77: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(59); + if (lookahead == 'i') ADVANCE(85); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 78: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'f') ADVANCE(55); + if (lookahead == 'i') ADVANCE(81); + if (lookahead == 'u') ADVANCE(83); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 79: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'f') ADVANCE(57); + if (lookahead == 'k') ADVANCE(67); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 80: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'i') ADVANCE(79); - if (lookahead == 's') ADVANCE(77); + if (lookahead == 'l') ADVANCE(90); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 81: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'i') ADVANCE(90); + if (lookahead == 'l') ADVANCE(115); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 82: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'i') ADVANCE(85); - if (lookahead == 'u') ADVANCE(88); + if (lookahead == 'l') ADVANCE(117); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 83: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'k') ADVANCE(68); + if (lookahead == 'l') ADVANCE(82); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 84: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(95); + if (lookahead == 'n') ADVANCE(91); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 85: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(122); + if (lookahead == 'n') ADVANCE(93); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 86: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(124); + if (lookahead == 'o') ADVANCE(84); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 87: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(80); + if (lookahead == 'r') ADVANCE(72); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 88: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(86); + if (lookahead == 'r') ADVANCE(92); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 89: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'n') ADVANCE(96); + if (lookahead == 'r') ADVANCE(60); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 90: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'n') ADVANCE(98); + if (lookahead == 's') ADVANCE(74); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 91: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'o') ADVANCE(89); + if (lookahead == 't') ADVANCE(77); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 92: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(73); + if (lookahead == 'u') ADVANCE(73); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 93: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(97); + if (lookahead == 'u') ADVANCE(75); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 94: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(61); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); case 95: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 's') ADVANCE(75); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 96: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 't') ADVANCE(81); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 97: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(74); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 98: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(76); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 99: - ACCEPT_TOKEN(sym_identifier); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); - END_STATE(); - case 100: ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); - case 101: + case 96: ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); - case 102: + case 97: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 103: - ACCEPT_TOKEN(anon_sym_PLUS); - END_STATE(); - case 104: + case 98: ACCEPT_TOKEN(anon_sym_PLUS); - if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(129); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); - END_STATE(); - case 105: - ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); - case 106: + case 99: ACCEPT_TOKEN(anon_sym_DASH); - if (lookahead == '.') ADVANCE(44); - if (lookahead == '0') ADVANCE(129); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(131); END_STATE(); - case 107: + case 100: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 108: + case 101: ACCEPT_TOKEN(anon_sym_SLASH); END_STATE(); - case 109: + case 102: ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); - case 110: + case 103: ACCEPT_TOKEN(anon_sym_PIPE_PIPE); END_STATE(); - case 111: + case 104: ACCEPT_TOKEN(anon_sym_AMP_AMP); END_STATE(); - case 112: + case 105: ACCEPT_TOKEN(anon_sym_EQ_EQ); END_STATE(); - case 113: + case 106: ACCEPT_TOKEN(anon_sym_BANG_EQ); END_STATE(); - case 114: + case 107: ACCEPT_TOKEN(anon_sym_GT); - if (lookahead == '=') ADVANCE(115); + if (lookahead == '=') ADVANCE(108); END_STATE(); - case 115: + case 108: ACCEPT_TOKEN(anon_sym_GT_EQ); END_STATE(); - case 116: + case 109: ACCEPT_TOKEN(anon_sym_LT_EQ); END_STATE(); - case 117: + case 110: ACCEPT_TOKEN(anon_sym_LT); - if (lookahead == '=') ADVANCE(116); + if (lookahead == '=') ADVANCE(109); END_STATE(); - case 118: + case 111: ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); - case 119: + case 112: ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); - case 120: + case 113: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 121: + case 114: ACCEPT_TOKEN(anon_sym_nil); END_STATE(); - case 122: + case 115: ACCEPT_TOKEN(anon_sym_nil); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 123: + case 116: ACCEPT_TOKEN(anon_sym_null); END_STATE(); - case 124: + case 117: ACCEPT_TOKEN(anon_sym_null); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 125: + case 118: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(44); if (lookahead == 'F' || @@ -1558,308 +1485,308 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(138); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(125); + lookahead == 'p') ADVANCE(131); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(118); END_STATE(); - case 126: + case 119: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(48); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(126); + lookahead == 'f') ADVANCE(119); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'E') || - ('a' <= lookahead && lookahead <= 'e')) ADVANCE(126); + ('a' <= lookahead && lookahead <= 'e')) ADVANCE(119); END_STATE(); - case 127: + case 120: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(45); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(136); + lookahead == 'f') ADVANCE(129); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); - if (lookahead == 'b') ADVANCE(135); + lookahead == 'u') ADVANCE(132); + if (lookahead == 'b') ADVANCE(128); if (lookahead == 'x') ADVANCE(47); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(134); + lookahead == 'e') ADVANCE(127); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(129); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121); END_STATE(); - case 128: + case 121: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(45); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(136); + lookahead == 'f') ADVANCE(129); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(134); + lookahead == 'e') ADVANCE(127); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(129); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121); END_STATE(); - case 129: + case 122: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(43); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); - if (lookahead == 'b') ADVANCE(10); - if (lookahead == 'x') ADVANCE(9); + lookahead == 'u') ADVANCE(132); + if (lookahead == 'b') ADVANCE(43); + if (lookahead == 'x') ADVANCE(47); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(138); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); + lookahead == 'p') ADVANCE(131); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); - case 130: + case 123: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(43); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); - if (lookahead == 'b') ADVANCE(43); - if (lookahead == 'x') ADVANCE(47); + lookahead == 'u') ADVANCE(132); + if (lookahead == 'b') ADVANCE(10); + if (lookahead == 'x') ADVANCE(9); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(138); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); + lookahead == 'p') ADVANCE(131); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); - case 131: + case 124: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(43); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || lookahead == 'P' || lookahead == 'e' || - lookahead == 'p') ADVANCE(138); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(131); + lookahead == 'p') ADVANCE(131); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); END_STATE(); - case 132: + case 125: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(46); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(133); + lookahead == 'f') ADVANCE(126); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == '+' || lookahead == '-') ADVANCE(48); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(132); + lookahead == 'e') ADVANCE(125); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(133); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(126); END_STATE(); - case 133: + case 126: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(46); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(133); + lookahead == 'f') ADVANCE(126); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(132); + lookahead == 'e') ADVANCE(125); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(133); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(126); END_STATE(); - case 134: + case 127: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(47); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(136); + lookahead == 'f') ADVANCE(129); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == '+' || lookahead == '-') ADVANCE(48); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(134); + lookahead == 'e') ADVANCE(127); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(129); END_STATE(); - case 135: + case 128: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(47); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(136); + lookahead == 'f') ADVANCE(129); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(134); + lookahead == 'e') ADVANCE(127); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(128); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(129); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(121); END_STATE(); - case 136: + case 129: ACCEPT_TOKEN(sym_number_lit); if (lookahead == '\'') ADVANCE(47); - if (lookahead == '.') ADVANCE(137); + if (lookahead == '.') ADVANCE(130); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(136); + lookahead == 'f') ADVANCE(129); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(134); + lookahead == 'e') ADVANCE(127); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(136); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(129); END_STATE(); - case 137: + case 130: ACCEPT_TOKEN(sym_number_lit); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(133); + lookahead == 'f') ADVANCE(126); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == 'E' || - lookahead == 'e') ADVANCE(132); + lookahead == 'e') ADVANCE(125); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(138); + lookahead == 'p') ADVANCE(131); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'D') || - ('a' <= lookahead && lookahead <= 'd')) ADVANCE(133); + ('a' <= lookahead && lookahead <= 'd')) ADVANCE(126); END_STATE(); - case 138: + case 131: ACCEPT_TOKEN(sym_number_lit); if (lookahead == 'F' || - lookahead == 'f') ADVANCE(126); + lookahead == 'f') ADVANCE(119); if (lookahead == 'L' || lookahead == 'U' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); if (lookahead == '+' || lookahead == '-') ADVANCE(48); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'E') || - ('a' <= lookahead && lookahead <= 'e')) ADVANCE(126); + ('a' <= lookahead && lookahead <= 'e')) ADVANCE(119); END_STATE(); - case 139: + case 132: ACCEPT_TOKEN(sym_number_lit); if (lookahead == 'F' || lookahead == 'L' || lookahead == 'U' || lookahead == 'f' || lookahead == 'l' || - lookahead == 'u') ADVANCE(139); + lookahead == 'u') ADVANCE(132); END_STATE(); - case 140: + case 133: ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); - case 141: + case 134: ACCEPT_TOKEN(aux_sym_string_lit_token1); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(141); + lookahead == ' ') ADVANCE(134); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(142); + lookahead != '\\') ADVANCE(135); END_STATE(); - case 142: + case 135: ACCEPT_TOKEN(aux_sym_string_lit_token1); if (lookahead != 0 && lookahead != '\n' && lookahead != '"' && - lookahead != '\\') ADVANCE(142); + lookahead != '\\') ADVANCE(135); END_STATE(); - case 143: + case 136: ACCEPT_TOKEN(anon_sym_SQUOTE); END_STATE(); - case 144: + case 137: ACCEPT_TOKEN(aux_sym_string_lit_token2); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(144); + lookahead == ' ') ADVANCE(137); if (lookahead != 0 && lookahead != '\n' && lookahead != '\'' && - lookahead != '\\') ADVANCE(145); + lookahead != '\\') ADVANCE(138); END_STATE(); - case 145: + case 138: ACCEPT_TOKEN(aux_sym_string_lit_token2); if (lookahead != 0 && lookahead != '\n' && lookahead != '\'' && - lookahead != '\\') ADVANCE(145); + lookahead != '\\') ADVANCE(138); END_STATE(); - case 146: + case 139: ACCEPT_TOKEN(anon_sym_true); END_STATE(); - case 147: + case 140: ACCEPT_TOKEN(anon_sym_true); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 148: + case 141: ACCEPT_TOKEN(anon_sym_false); END_STATE(); - case 149: + case 142: ACCEPT_TOKEN(anon_sym_false); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(99); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(94); END_STATE(); - case 150: + case 143: ACCEPT_TOKEN(sym_escape_sequence); END_STATE(); default: @@ -1869,133 +1796,133 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static const TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 50}, - [2] = {.lex_state = 50}, - [3] = {.lex_state = 50}, - [4] = {.lex_state = 50}, - [5] = {.lex_state = 50}, - [6] = {.lex_state = 50}, - [7] = {.lex_state = 50}, - [8] = {.lex_state = 50}, - [9] = {.lex_state = 50}, - [10] = {.lex_state = 50}, - [11] = {.lex_state = 50}, - [12] = {.lex_state = 50}, - [13] = {.lex_state = 50}, - [14] = {.lex_state = 50}, - [15] = {.lex_state = 50}, - [16] = {.lex_state = 50}, - [17] = {.lex_state = 50}, - [18] = {.lex_state = 50}, - [19] = {.lex_state = 50}, - [20] = {.lex_state = 50}, - [21] = {.lex_state = 50}, - [22] = {.lex_state = 50}, - [23] = {.lex_state = 50}, - [24] = {.lex_state = 50}, - [25] = {.lex_state = 50}, - [26] = {.lex_state = 50}, - [27] = {.lex_state = 50}, - [28] = {.lex_state = 50}, - [29] = {.lex_state = 50}, - [30] = {.lex_state = 50}, - [31] = {.lex_state = 50}, - [32] = {.lex_state = 50}, - [33] = {.lex_state = 50}, + [1] = {.lex_state = 51}, + [2] = {.lex_state = 51}, + [3] = {.lex_state = 51}, + [4] = {.lex_state = 51}, + [5] = {.lex_state = 51}, + [6] = {.lex_state = 51}, + [7] = {.lex_state = 4}, + [8] = {.lex_state = 4}, + [9] = {.lex_state = 4}, + [10] = {.lex_state = 4}, + [11] = {.lex_state = 4}, + [12] = {.lex_state = 4}, + [13] = {.lex_state = 4}, + [14] = {.lex_state = 4}, + [15] = {.lex_state = 4}, + [16] = {.lex_state = 4}, + [17] = {.lex_state = 4}, + [18] = {.lex_state = 4}, + [19] = {.lex_state = 4}, + [20] = {.lex_state = 4}, + [21] = {.lex_state = 4}, + [22] = {.lex_state = 0}, + [23] = {.lex_state = 4}, + [24] = {.lex_state = 4}, + [25] = {.lex_state = 4}, + [26] = {.lex_state = 4}, + [27] = {.lex_state = 4}, + [28] = {.lex_state = 4}, + [29] = {.lex_state = 4}, + [30] = {.lex_state = 4}, + [31] = {.lex_state = 4}, + [32] = {.lex_state = 4}, + [33] = {.lex_state = 4}, [34] = {.lex_state = 4}, - [35] = {.lex_state = 4}, - [36] = {.lex_state = 4}, - [37] = {.lex_state = 4}, - [38] = {.lex_state = 4}, - [39] = {.lex_state = 4}, - [40] = {.lex_state = 4}, - [41] = {.lex_state = 3}, - [42] = {.lex_state = 4}, - [43] = {.lex_state = 4}, - [44] = {.lex_state = 4}, - [45] = {.lex_state = 4}, - [46] = {.lex_state = 4}, - [47] = {.lex_state = 4}, - [48] = {.lex_state = 4}, - [49] = {.lex_state = 4}, - [50] = {.lex_state = 4}, - [51] = {.lex_state = 4}, - [52] = {.lex_state = 4}, - [53] = {.lex_state = 4}, - [54] = {.lex_state = 4}, - [55] = {.lex_state = 4}, - [56] = {.lex_state = 4}, - [57] = {.lex_state = 4}, - [58] = {.lex_state = 4}, - [59] = {.lex_state = 4}, - [60] = {.lex_state = 51}, - [61] = {.lex_state = 51}, - [62] = {.lex_state = 51}, - [63] = {.lex_state = 51}, - [64] = {.lex_state = 51}, - [65] = {.lex_state = 51}, - [66] = {.lex_state = 3}, - [67] = {.lex_state = 3}, - [68] = {.lex_state = 3}, - [69] = {.lex_state = 3}, - [70] = {.lex_state = 3}, - [71] = {.lex_state = 3}, - [72] = {.lex_state = 3}, - [73] = {.lex_state = 3}, - [74] = {.lex_state = 3}, - [75] = {.lex_state = 3}, - [76] = {.lex_state = 3}, - [77] = {.lex_state = 3}, - [78] = {.lex_state = 3}, - [79] = {.lex_state = 3}, - [80] = {.lex_state = 3}, - [81] = {.lex_state = 3}, - [82] = {.lex_state = 3}, - [83] = {.lex_state = 3}, - [84] = {.lex_state = 3}, - [85] = {.lex_state = 3}, - [86] = {.lex_state = 3}, - [87] = {.lex_state = 3}, - [88] = {.lex_state = 50}, - [89] = {.lex_state = 50}, - [90] = {.lex_state = 50}, - [91] = {.lex_state = 50}, - [92] = {.lex_state = 50}, - [93] = {.lex_state = 50}, - [94] = {.lex_state = 50}, - [95] = {.lex_state = 3}, - [96] = {.lex_state = 3}, - [97] = {.lex_state = 3}, - [98] = {.lex_state = 3}, - [99] = {.lex_state = 3}, - [100] = {.lex_state = 3}, - [101] = {.lex_state = 3}, - [102] = {.lex_state = 3}, + [35] = {.lex_state = 0}, + [36] = {.lex_state = 49}, + [37] = {.lex_state = 49}, + [38] = {.lex_state = 0}, + [39] = {.lex_state = 49}, + [40] = {.lex_state = 0}, + [41] = {.lex_state = 0}, + [42] = {.lex_state = 0}, + [43] = {.lex_state = 0}, + [44] = {.lex_state = 0}, + [45] = {.lex_state = 0}, + [46] = {.lex_state = 0}, + [47] = {.lex_state = 0}, + [48] = {.lex_state = 49}, + [49] = {.lex_state = 0}, + [50] = {.lex_state = 0}, + [51] = {.lex_state = 49}, + [52] = {.lex_state = 0}, + [53] = {.lex_state = 0}, + [54] = {.lex_state = 0}, + [55] = {.lex_state = 0}, + [56] = {.lex_state = 0}, + [57] = {.lex_state = 0}, + [58] = {.lex_state = 0}, + [59] = {.lex_state = 49}, + [60] = {.lex_state = 0}, + [61] = {.lex_state = 0}, + [62] = {.lex_state = 0}, + [63] = {.lex_state = 1}, + [64] = {.lex_state = 1}, + [65] = {.lex_state = 0}, + [66] = {.lex_state = 0}, + [67] = {.lex_state = 0}, + [68] = {.lex_state = 0}, + [69] = {.lex_state = 0}, + [70] = {.lex_state = 0}, + [71] = {.lex_state = 0}, + [72] = {.lex_state = 1}, + [73] = {.lex_state = 1}, + [74] = {.lex_state = 1}, + [75] = {.lex_state = 0}, + [76] = {.lex_state = 0}, + [77] = {.lex_state = 0}, + [78] = {.lex_state = 1}, + [79] = {.lex_state = 4}, + [80] = {.lex_state = 1}, + [81] = {.lex_state = 1}, + [82] = {.lex_state = 1}, + [83] = {.lex_state = 1}, + [84] = {.lex_state = 0}, + [85] = {.lex_state = 1}, + [86] = {.lex_state = 1}, + [87] = {.lex_state = 1}, + [88] = {.lex_state = 1}, + [89] = {.lex_state = 1}, + [90] = {.lex_state = 1}, + [91] = {.lex_state = 1}, + [92] = {.lex_state = 1}, + [93] = {.lex_state = 4}, + [94] = {.lex_state = 0}, + [95] = {.lex_state = 1}, + [96] = {.lex_state = 1}, + [97] = {.lex_state = 1}, + [98] = {.lex_state = 1}, + [99] = {.lex_state = 1}, + [100] = {.lex_state = 1}, + [101] = {.lex_state = 1}, + [102] = {.lex_state = 1}, [103] = {.lex_state = 4}, - [104] = {.lex_state = 4}, - [105] = {.lex_state = 3}, + [104] = {.lex_state = 1}, + [105] = {.lex_state = 2}, [106] = {.lex_state = 3}, - [107] = {.lex_state = 4}, - [108] = {.lex_state = 1}, - [109] = {.lex_state = 2}, - [110] = {.lex_state = 1}, - [111] = {.lex_state = 2}, - [112] = {.lex_state = 1}, - [113] = {.lex_state = 1}, - [114] = {.lex_state = 2}, - [115] = {.lex_state = 1}, - [116] = {.lex_state = 2}, - [117] = {.lex_state = 2}, + [107] = {.lex_state = 1}, + [108] = {.lex_state = 2}, + [109] = {.lex_state = 3}, + [110] = {.lex_state = 2}, + [111] = {.lex_state = 3}, + [112] = {.lex_state = 2}, + [113] = {.lex_state = 2}, + [114] = {.lex_state = 3}, + [115] = {.lex_state = 3}, + [116] = {.lex_state = 1}, + [117] = {.lex_state = 0}, [118] = {.lex_state = 0}, [119] = {.lex_state = 0}, - [120] = {.lex_state = 0}, + [120] = {.lex_state = 1}, [121] = {.lex_state = 0}, [122] = {.lex_state = 0}, [123] = {.lex_state = 0}, - [124] = {.lex_state = 0}, + [124] = {.lex_state = 1}, [125] = {.lex_state = 0}, [126] = {.lex_state = 0}, - [127] = {.lex_state = 0}, + [127] = {.lex_state = 1}, [128] = {.lex_state = 0}, [129] = {.lex_state = 0}, [130] = {.lex_state = 0}, @@ -2006,10 +1933,16 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [135] = {.lex_state = 0}, [136] = {.lex_state = 0}, [137] = {.lex_state = 0}, - [138] = {.lex_state = 3}, - [139] = {.lex_state = 0}, - [140] = {.lex_state = 3}, - [141] = {.lex_state = 0}, + [138] = {.lex_state = 49}, + [139] = {.lex_state = 49}, + [140] = {.lex_state = 49}, + [141] = {.lex_state = 41}, + [142] = {.lex_state = 49}, + [143] = {.lex_state = 0}, + [144] = {.lex_state = 49}, + [145] = {.lex_state = 49}, + [146] = {.lex_state = 0}, + [147] = {.lex_state = 49}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -2047,7 +1980,6 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_COLON] = ACTIONS(1), [anon_sym_nil] = ACTIONS(1), [anon_sym_null] = ACTIONS(1), - [sym_number_lit] = ACTIONS(1), [anon_sym_DQUOTE] = ACTIONS(1), [anon_sym_SQUOTE] = ACTIONS(1), [anon_sym_true] = ACTIONS(1), @@ -2055,26 +1987,27 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_escape_sequence] = ACTIONS(1), }, [1] = { - [sym_source_file] = STATE(139), - [sym__stmt] = STATE(7), - [sym_if_stmt] = STATE(7), - [sym_for_in_stmt] = STATE(7), - [sym_continue_stmt] = STATE(7), - [sym_break_stmt] = STATE(7), - [sym_assign_stmt] = STATE(7), - [sym_expr_stmt] = STATE(7), - [sym__expr] = STATE(16), - [sym_paren_expr] = STATE(16), - [sym_call_expr] = STATE(16), - [sym_binary_expr] = STATE(16), - [sym_index_expr] = STATE(16), - [sym_list_expr] = STATE(16), - [sym_map_expr] = STATE(16), - [sym__literal] = STATE(16), - [sym_nil_lit] = STATE(16), - [sym_string_lit] = STATE(16), - [sym_bool_lit] = STATE(16), - [aux_sym_source_file_repeat1] = STATE(7), + [sym_source_file] = STATE(143), + [sym_inline_statement] = STATE(2), + [sym__stmt] = STATE(144), + [sym_if_stmt] = STATE(144), + [sym_for_in_stmt] = STATE(144), + [sym_continue_stmt] = STATE(144), + [sym_break_stmt] = STATE(144), + [sym_assign_stmt] = STATE(144), + [sym_expr_stmt] = STATE(144), + [sym__expr] = STATE(101), + [sym_paren_expr] = STATE(101), + [sym_call_expr] = STATE(101), + [sym_binary_expr] = STATE(101), + [sym_index_expr] = STATE(101), + [sym_list_expr] = STATE(101), + [sym_map_expr] = STATE(101), + [sym__literal] = STATE(101), + [sym_nil_lit] = STATE(101), + [sym_string_lit] = STATE(101), + [sym_bool_lit] = STATE(101), + [aux_sym_source_file_repeat1] = STATE(2), [ts_builtin_sym_end] = ACTIONS(3), [sym_comment] = ACTIONS(5), [anon_sym_if] = ACTIONS(7), @@ -2093,49 +2026,12 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_true] = ACTIONS(31), [anon_sym_false] = ACTIONS(31), }, - [2] = { - [sym__stmt] = STATE(2), - [sym_if_stmt] = STATE(2), - [sym_for_in_stmt] = STATE(2), - [sym_continue_stmt] = STATE(2), - [sym_break_stmt] = STATE(2), - [sym_assign_stmt] = STATE(2), - [sym_expr_stmt] = STATE(2), - [sym__expr] = STATE(16), - [sym_paren_expr] = STATE(16), - [sym_call_expr] = STATE(16), - [sym_binary_expr] = STATE(16), - [sym_index_expr] = STATE(16), - [sym_list_expr] = STATE(16), - [sym_map_expr] = STATE(16), - [sym__literal] = STATE(16), - [sym_nil_lit] = STATE(16), - [sym_string_lit] = STATE(16), - [sym_bool_lit] = STATE(16), - [aux_sym_source_file_repeat1] = STATE(2), - [ts_builtin_sym_end] = ACTIONS(33), - [sym_comment] = ACTIONS(35), - [anon_sym_if] = ACTIONS(38), - [anon_sym_for] = ACTIONS(41), - [anon_sym_LBRACE] = ACTIONS(44), - [anon_sym_RBRACE] = ACTIONS(33), - [anon_sym_continue] = ACTIONS(47), - [anon_sym_break] = ACTIONS(50), - [sym_identifier] = ACTIONS(53), - [anon_sym_LPAREN] = ACTIONS(56), - [anon_sym_LBRACK] = ACTIONS(59), - [anon_sym_nil] = ACTIONS(62), - [anon_sym_null] = ACTIONS(62), - [sym_number_lit] = ACTIONS(65), - [anon_sym_DQUOTE] = ACTIONS(68), - [anon_sym_SQUOTE] = ACTIONS(71), - [anon_sym_true] = ACTIONS(74), - [anon_sym_false] = ACTIONS(74), - }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 17, + [0] = 18, + ACTIONS(5), 1, + sym_comment, ACTIONS(7), 1, anon_sym_if, ACTIONS(9), 1, @@ -2158,17 +2054,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(77), 1, - sym_comment, - ACTIONS(79), 1, - anon_sym_RBRACE, + ACTIONS(33), 1, + ts_builtin_sym_end, ACTIONS(23), 2, anon_sym_nil, anon_sym_null, ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(4), 8, + STATE(5), 2, + sym_inline_statement, + aux_sym_source_file_repeat1, + STATE(144), 7, sym__stmt, sym_if_stmt, sym_for_in_stmt, @@ -2176,8 +2073,7 @@ static const uint16_t ts_small_parse_table[] = { sym_break_stmt, sym_assign_stmt, sym_expr_stmt, - aux_sym_source_file_repeat1, - STATE(16), 11, + STATE(101), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -2189,40 +2085,43 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [71] = 17, - ACTIONS(7), 1, + [74] = 18, + ACTIONS(35), 1, + sym_comment, + ACTIONS(38), 1, anon_sym_if, - ACTIONS(9), 1, + ACTIONS(41), 1, anon_sym_for, - ACTIONS(11), 1, + ACTIONS(44), 1, anon_sym_LBRACE, - ACTIONS(13), 1, + ACTIONS(47), 1, + anon_sym_RBRACE, + ACTIONS(49), 1, anon_sym_continue, - ACTIONS(15), 1, + ACTIONS(52), 1, anon_sym_break, - ACTIONS(17), 1, + ACTIONS(55), 1, sym_identifier, - ACTIONS(19), 1, + ACTIONS(58), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(61), 1, anon_sym_LBRACK, - ACTIONS(25), 1, + ACTIONS(67), 1, sym_number_lit, - ACTIONS(27), 1, + ACTIONS(70), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(73), 1, anon_sym_SQUOTE, - ACTIONS(81), 1, - sym_comment, - ACTIONS(83), 1, - anon_sym_RBRACE, - ACTIONS(23), 2, + ACTIONS(64), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(76), 2, anon_sym_true, anon_sym_false, - STATE(2), 8, + STATE(3), 2, + sym_inline_statement, + aux_sym_source_file_repeat1, + STATE(139), 7, sym__stmt, sym_if_stmt, sym_for_in_stmt, @@ -2230,8 +2129,7 @@ static const uint16_t ts_small_parse_table[] = { sym_break_stmt, sym_assign_stmt, sym_expr_stmt, - aux_sym_source_file_repeat1, - STATE(16), 11, + STATE(101), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -2243,7 +2141,7 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [142] = 17, + [148] = 18, ACTIONS(7), 1, anon_sym_if, ACTIONS(9), 1, @@ -2266,9 +2164,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(81), 1, + ACTIONS(79), 1, sym_comment, - ACTIONS(85), 1, + ACTIONS(81), 1, anon_sym_RBRACE, ACTIONS(23), 2, anon_sym_nil, @@ -2276,7 +2174,10 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(2), 8, + STATE(3), 2, + sym_inline_statement, + aux_sym_source_file_repeat1, + STATE(139), 7, sym__stmt, sym_if_stmt, sym_for_in_stmt, @@ -2284,8 +2185,7 @@ static const uint16_t ts_small_parse_table[] = { sym_break_stmt, sym_assign_stmt, sym_expr_stmt, - aux_sym_source_file_repeat1, - STATE(16), 11, + STATE(101), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -2297,40 +2197,43 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [213] = 17, - ACTIONS(7), 1, + [222] = 18, + ACTIONS(38), 1, anon_sym_if, - ACTIONS(9), 1, + ACTIONS(41), 1, anon_sym_for, - ACTIONS(11), 1, + ACTIONS(44), 1, anon_sym_LBRACE, - ACTIONS(13), 1, + ACTIONS(47), 1, + ts_builtin_sym_end, + ACTIONS(49), 1, anon_sym_continue, - ACTIONS(15), 1, + ACTIONS(52), 1, anon_sym_break, - ACTIONS(17), 1, + ACTIONS(55), 1, sym_identifier, - ACTIONS(19), 1, + ACTIONS(58), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(61), 1, anon_sym_LBRACK, - ACTIONS(25), 1, + ACTIONS(67), 1, sym_number_lit, - ACTIONS(27), 1, + ACTIONS(70), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(73), 1, anon_sym_SQUOTE, - ACTIONS(87), 1, + ACTIONS(83), 1, sym_comment, - ACTIONS(89), 1, - anon_sym_RBRACE, - ACTIONS(23), 2, + ACTIONS(64), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(76), 2, anon_sym_true, anon_sym_false, - STATE(5), 8, + STATE(5), 2, + sym_inline_statement, + aux_sym_source_file_repeat1, + STATE(144), 7, sym__stmt, sym_if_stmt, sym_for_in_stmt, @@ -2338,8 +2241,7 @@ static const uint16_t ts_small_parse_table[] = { sym_break_stmt, sym_assign_stmt, sym_expr_stmt, - aux_sym_source_file_repeat1, - STATE(16), 11, + STATE(101), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -2351,7 +2253,7 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [284] = 17, + [296] = 18, ACTIONS(7), 1, anon_sym_if, ACTIONS(9), 1, @@ -2374,17 +2276,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(81), 1, + ACTIONS(79), 1, sym_comment, - ACTIONS(91), 1, - ts_builtin_sym_end, + ACTIONS(86), 1, + anon_sym_RBRACE, ACTIONS(23), 2, anon_sym_nil, anon_sym_null, ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(2), 8, + STATE(4), 2, + sym_inline_statement, + aux_sym_source_file_repeat1, + STATE(139), 7, sym__stmt, sym_if_stmt, sym_for_in_stmt, @@ -2392,8 +2297,7 @@ static const uint16_t ts_small_parse_table[] = { sym_break_stmt, sym_assign_stmt, sym_expr_stmt, - aux_sym_source_file_repeat1, - STATE(16), 11, + STATE(101), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -2405,1003 +2309,174 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [355] = 2, - ACTIONS(95), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(93), 20, - ts_builtin_sym_end, - sym_comment, + [370] = 12, + ACTIONS(88), 1, anon_sym_LBRACE, + ACTIONS(90), 1, anon_sym_RBRACE, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, + ACTIONS(96), 1, anon_sym_LBRACK, - anon_sym_RBRACK, + ACTIONS(100), 1, sym_number_lit, + ACTIONS(102), 1, anon_sym_DQUOTE, + ACTIONS(104), 1, anon_sym_SQUOTE, - [393] = 6, - ACTIONS(101), 1, - anon_sym_EQ, - ACTIONS(103), 1, - anon_sym_LPAREN, - ACTIONS(105), 1, - anon_sym_LBRACK, - STATE(26), 1, - sym_argument_list, - ACTIONS(99), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, + STATE(132), 1, + sym_map_elem, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - ACTIONS(97), 16, - ts_builtin_sym_end, - sym_comment, + STATE(76), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [419] = 12, + ACTIONS(88), 1, anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, + anon_sym_LPAREN, + ACTIONS(96), 1, + anon_sym_LBRACK, + ACTIONS(100), 1, sym_number_lit, + ACTIONS(102), 1, anon_sym_DQUOTE, + ACTIONS(104), 1, anon_sym_SQUOTE, - [439] = 2, - ACTIONS(109), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, + ACTIONS(108), 1, + anon_sym_RBRACE, + STATE(129), 1, + sym_map_elem, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - ACTIONS(107), 20, - ts_builtin_sym_end, - sym_comment, + STATE(76), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [468] = 11, + ACTIONS(88), 1, anon_sym_LBRACE, - anon_sym_RBRACE, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, + ACTIONS(96), 1, anon_sym_LBRACK, - anon_sym_RBRACK, - sym_number_lit, + ACTIONS(102), 1, anon_sym_DQUOTE, + ACTIONS(104), 1, anon_sym_SQUOTE, - [477] = 2, - ACTIONS(113), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, + ACTIONS(110), 1, + anon_sym_RPAREN, + ACTIONS(112), 1, + sym_number_lit, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - ACTIONS(111), 20, - ts_builtin_sym_end, - sym_comment, + STATE(66), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [514] = 11, + ACTIONS(88), 1, anon_sym_LBRACE, - anon_sym_RBRACE, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, + ACTIONS(96), 1, anon_sym_LBRACK, - anon_sym_RBRACK, + ACTIONS(100), 1, sym_number_lit, + ACTIONS(102), 1, anon_sym_DQUOTE, + ACTIONS(104), 1, anon_sym_SQUOTE, - [515] = 2, - ACTIONS(117), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, + STATE(133), 1, + sym_map_elem, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - ACTIONS(115), 20, - ts_builtin_sym_end, - sym_comment, + STATE(76), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [560] = 11, + ACTIONS(88), 1, anon_sym_LBRACE, - anon_sym_RBRACE, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, + ACTIONS(96), 1, anon_sym_LBRACK, - anon_sym_RBRACK, - sym_number_lit, + ACTIONS(102), 1, anon_sym_DQUOTE, + ACTIONS(104), 1, anon_sym_SQUOTE, - [553] = 5, - ACTIONS(103), 1, - anon_sym_LPAREN, - ACTIONS(105), 1, - anon_sym_LBRACK, - STATE(26), 1, - sym_argument_list, - ACTIONS(99), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(97), 16, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [596] = 2, - ACTIONS(121), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(119), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [632] = 2, - ACTIONS(125), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(123), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [668] = 9, - ACTIONS(135), 1, - anon_sym_PIPE_PIPE, - ACTIONS(137), 1, - anon_sym_AMP_AMP, - ACTIONS(131), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(139), 2, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - ACTIONS(141), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(143), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(127), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(129), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [718] = 4, - ACTIONS(131), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(147), 11, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(145), 15, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [758] = 8, - ACTIONS(135), 1, - anon_sym_PIPE_PIPE, - ACTIONS(137), 1, - anon_sym_AMP_AMP, - ACTIONS(131), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(141), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(143), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(147), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(145), 11, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [806] = 6, - ACTIONS(131), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(141), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(143), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(147), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(145), 13, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [850] = 2, - ACTIONS(151), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(149), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [886] = 7, - ACTIONS(137), 1, - anon_sym_AMP_AMP, - ACTIONS(131), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(141), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(143), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(147), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(145), 12, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_PIPE_PIPE, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [932] = 2, - ACTIONS(147), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(145), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [968] = 3, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(147), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(145), 15, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1006] = 2, - ACTIONS(155), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(153), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1042] = 2, - ACTIONS(159), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(157), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1078] = 2, - ACTIONS(163), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(161), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1114] = 9, - ACTIONS(135), 1, - anon_sym_PIPE_PIPE, - ACTIONS(137), 1, - anon_sym_AMP_AMP, - ACTIONS(131), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(139), 2, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - ACTIONS(141), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(143), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(133), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(165), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(167), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [1164] = 2, - ACTIONS(171), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(169), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1200] = 2, - ACTIONS(175), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(173), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1236] = 2, - ACTIONS(179), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(177), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1272] = 2, - ACTIONS(183), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(181), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1308] = 2, - ACTIONS(187), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(185), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1344] = 2, - ACTIONS(191), 13, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_GT, - anon_sym_LT, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - ACTIONS(189), 18, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - [1380] = 12, - ACTIONS(193), 1, - anon_sym_LBRACE, - ACTIONS(195), 1, - anon_sym_RBRACE, - ACTIONS(197), 1, - sym_identifier, - ACTIONS(199), 1, - anon_sym_LPAREN, - ACTIONS(201), 1, - anon_sym_LBRACK, - ACTIONS(205), 1, - sym_number_lit, - ACTIONS(207), 1, - anon_sym_DQUOTE, - ACTIONS(209), 1, - anon_sym_SQUOTE, - STATE(118), 1, - sym_map_elem, - ACTIONS(203), 2, - anon_sym_nil, - anon_sym_null, - ACTIONS(211), 2, - anon_sym_true, - anon_sym_false, - STATE(102), 11, - sym__expr, - sym_paren_expr, - sym_call_expr, - sym_binary_expr, - sym_index_expr, - sym_list_expr, - sym_map_expr, - sym__literal, - sym_nil_lit, - sym_string_lit, - sym_bool_lit, - [1429] = 12, - ACTIONS(193), 1, - anon_sym_LBRACE, - ACTIONS(197), 1, - sym_identifier, - ACTIONS(199), 1, - anon_sym_LPAREN, - ACTIONS(201), 1, - anon_sym_LBRACK, - ACTIONS(205), 1, + ACTIONS(114), 1, + anon_sym_RPAREN, + ACTIONS(116), 1, sym_number_lit, - ACTIONS(207), 1, - anon_sym_DQUOTE, - ACTIONS(209), 1, - anon_sym_SQUOTE, - ACTIONS(213), 1, - anon_sym_RBRACE, - STATE(127), 1, - sym_map_elem, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(102), 11, + STATE(65), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3413,30 +2488,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1478] = 11, - ACTIONS(193), 1, + [606] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(215), 1, - anon_sym_RPAREN, - ACTIONS(217), 1, + ACTIONS(118), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(96), 11, + STATE(44), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3448,30 +2521,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1524] = 11, - ACTIONS(193), 1, + [649] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(205), 1, - sym_number_lit, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - STATE(135), 1, - sym_map_elem, - ACTIONS(203), 2, + ACTIONS(120), 1, + sym_number_lit, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(102), 11, + STATE(68), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3483,30 +2554,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1570] = 11, - ACTIONS(193), 1, + [692] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(219), 1, - anon_sym_RPAREN, - ACTIONS(221), 1, + ACTIONS(122), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(95), 11, + STATE(75), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3518,28 +2587,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1616] = 10, - ACTIONS(193), 1, + [735] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(223), 1, + ACTIONS(124), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(78), 11, + STATE(77), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3551,28 +2620,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1659] = 10, - ACTIONS(193), 1, + [778] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(225), 1, + ACTIONS(126), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(77), 11, + STATE(84), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3584,56 +2653,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1702] = 5, - ACTIONS(227), 1, - anon_sym_LPAREN, - ACTIONS(229), 1, - anon_sym_LBRACK, - STATE(72), 1, - sym_argument_list, - ACTIONS(99), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(97), 17, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_PIPE_PIPE, - anon_sym_AMP_AMP, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_RBRACK, - anon_sym_COLON, - [1735] = 10, - ACTIONS(193), 1, + [821] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(231), 1, + ACTIONS(128), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(74), 11, + STATE(45), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3645,28 +2686,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1778] = 10, - ACTIONS(193), 1, + [864] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(233), 1, + ACTIONS(130), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(75), 11, + STATE(46), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3678,28 +2719,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1821] = 10, - ACTIONS(193), 1, + [907] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(235), 1, + ACTIONS(132), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(99), 11, + STATE(47), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3711,28 +2752,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1864] = 10, - ACTIONS(11), 1, + [950] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(19), 1, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(27), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, - sym_identifier, - ACTIONS(239), 1, + ACTIONS(134), 1, sym_number_lit, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(17), 11, + STATE(49), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3744,28 +2785,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1907] = 10, - ACTIONS(11), 1, + [993] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(19), 1, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(27), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, - sym_identifier, - ACTIONS(241), 1, + ACTIONS(136), 1, sym_number_lit, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(18), 11, + STATE(50), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3777,28 +2818,56 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1950] = 10, - ACTIONS(193), 1, + [1036] = 5, + ACTIONS(140), 1, + anon_sym_LPAREN, + ACTIONS(144), 1, + anon_sym_LBRACK, + STATE(62), 1, + sym_argument_list, + ACTIONS(142), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(138), 17, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [1069] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(243), 1, + ACTIONS(146), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(76), 11, + STATE(69), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3810,28 +2879,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [1993] = 10, - ACTIONS(11), 1, + [1112] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(19), 1, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(27), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, - sym_identifier, - ACTIONS(245), 1, + ACTIONS(148), 1, sym_number_lit, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(19), 11, + STATE(70), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3843,28 +2912,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2036] = 10, - ACTIONS(11), 1, + [1155] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(19), 1, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(27), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, - sym_identifier, - ACTIONS(247), 1, + ACTIONS(150), 1, sym_number_lit, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(21), 11, + STATE(71), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3876,28 +2945,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2079] = 10, - ACTIONS(11), 1, + [1198] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(19), 1, + ACTIONS(92), 1, + sym_identifier, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(21), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(27), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, - sym_identifier, - ACTIONS(249), 1, + ACTIONS(152), 1, sym_number_lit, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(22), 11, + STATE(67), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3909,7 +2978,7 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2122] = 10, + [1241] = 10, ACTIONS(11), 1, anon_sym_LBRACE, ACTIONS(19), 1, @@ -3920,9 +2989,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, + ACTIONS(154), 1, sym_identifier, - ACTIONS(251), 1, + ACTIONS(156), 1, sym_number_lit, ACTIONS(23), 2, anon_sym_nil, @@ -3930,7 +2999,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(23), 11, + STATE(72), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -3942,61 +3011,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2165] = 10, - ACTIONS(193), 1, + [1284] = 10, + ACTIONS(11), 1, anon_sym_LBRACE, - ACTIONS(197), 1, - sym_identifier, - ACTIONS(199), 1, + ACTIONS(19), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(27), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(253), 1, - sym_number_lit, - ACTIONS(203), 2, - anon_sym_nil, - anon_sym_null, - ACTIONS(211), 2, - anon_sym_true, - anon_sym_false, - STATE(105), 11, - sym__expr, - sym_paren_expr, - sym_call_expr, - sym_binary_expr, - sym_index_expr, - sym_list_expr, - sym_map_expr, - sym__literal, - sym_nil_lit, - sym_string_lit, - sym_bool_lit, - [2208] = 10, - ACTIONS(193), 1, - anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(154), 1, sym_identifier, - ACTIONS(199), 1, - anon_sym_LPAREN, - ACTIONS(201), 1, - anon_sym_LBRACK, - ACTIONS(207), 1, - anon_sym_DQUOTE, - ACTIONS(209), 1, - anon_sym_SQUOTE, - ACTIONS(255), 1, + ACTIONS(158), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(23), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(97), 11, + STATE(90), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4008,28 +3044,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2251] = 10, - ACTIONS(193), 1, + [1327] = 10, + ACTIONS(88), 1, anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(92), 1, sym_identifier, - ACTIONS(199), 1, + ACTIONS(94), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(96), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(257), 1, + ACTIONS(160), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(101), 11, + STATE(94), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4041,61 +3077,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2294] = 10, - ACTIONS(193), 1, + [1370] = 10, + ACTIONS(11), 1, anon_sym_LBRACE, - ACTIONS(197), 1, - sym_identifier, - ACTIONS(199), 1, + ACTIONS(19), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(27), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(259), 1, - sym_number_lit, - ACTIONS(203), 2, - anon_sym_nil, - anon_sym_null, - ACTIONS(211), 2, - anon_sym_true, - anon_sym_false, - STATE(98), 11, - sym__expr, - sym_paren_expr, - sym_call_expr, - sym_binary_expr, - sym_index_expr, - sym_list_expr, - sym_map_expr, - sym__literal, - sym_nil_lit, - sym_string_lit, - sym_bool_lit, - [2337] = 10, - ACTIONS(193), 1, - anon_sym_LBRACE, - ACTIONS(197), 1, + ACTIONS(154), 1, sym_identifier, - ACTIONS(199), 1, - anon_sym_LPAREN, - ACTIONS(201), 1, - anon_sym_LBRACK, - ACTIONS(207), 1, - anon_sym_DQUOTE, - ACTIONS(209), 1, - anon_sym_SQUOTE, - ACTIONS(261), 1, + ACTIONS(162), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(23), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(106), 11, + STATE(100), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4107,28 +3110,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2380] = 10, - ACTIONS(193), 1, + [1413] = 10, + ACTIONS(11), 1, anon_sym_LBRACE, - ACTIONS(197), 1, - sym_identifier, - ACTIONS(199), 1, + ACTIONS(19), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(27), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(263), 1, + ACTIONS(154), 1, + sym_identifier, + ACTIONS(164), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(23), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(79), 11, + STATE(99), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4140,28 +3143,28 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2423] = 10, - ACTIONS(193), 1, + [1456] = 10, + ACTIONS(11), 1, anon_sym_LBRACE, - ACTIONS(197), 1, - sym_identifier, - ACTIONS(199), 1, + ACTIONS(19), 1, anon_sym_LPAREN, - ACTIONS(201), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(207), 1, + ACTIONS(27), 1, anon_sym_DQUOTE, - ACTIONS(209), 1, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(265), 1, + ACTIONS(154), 1, + sym_identifier, + ACTIONS(166), 1, sym_number_lit, - ACTIONS(203), 2, + ACTIONS(23), 2, anon_sym_nil, anon_sym_null, - ACTIONS(211), 2, + ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(100), 11, + STATE(98), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4173,7 +3176,7 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2466] = 10, + [1499] = 10, ACTIONS(11), 1, anon_sym_LBRACE, ACTIONS(19), 1, @@ -4184,9 +3187,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(237), 1, + ACTIONS(154), 1, sym_identifier, - ACTIONS(267), 1, + ACTIONS(168), 1, sym_number_lit, ACTIONS(23), 2, anon_sym_nil, @@ -4194,7 +3197,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(31), 2, anon_sym_true, anon_sym_false, - STATE(27), 11, + STATE(82), 11, sym__expr, sym_paren_expr, sym_call_expr, @@ -4206,160 +3209,114 @@ static const uint16_t ts_small_parse_table[] = { sym_nil_lit, sym_string_lit, sym_bool_lit, - [2509] = 4, - ACTIONS(273), 1, - anon_sym_elif, - STATE(60), 1, - aux_sym_if_stmt_repeat1, - ACTIONS(269), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(271), 10, - anon_sym_if, - anon_sym_else, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [2539] = 5, - ACTIONS(280), 1, - anon_sym_elif, - ACTIONS(282), 1, - anon_sym_else, - STATE(60), 1, - aux_sym_if_stmt_repeat1, - ACTIONS(276), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(278), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [2571] = 5, - ACTIONS(280), 1, - anon_sym_elif, - ACTIONS(288), 1, - anon_sym_else, - STATE(61), 1, - aux_sym_if_stmt_repeat1, - ACTIONS(284), 9, - ts_builtin_sym_end, - sym_comment, + [1542] = 10, + ACTIONS(11), 1, anon_sym_LBRACE, - anon_sym_RBRACE, + ACTIONS(19), 1, anon_sym_LPAREN, + ACTIONS(21), 1, anon_sym_LBRACK, - sym_number_lit, + ACTIONS(27), 1, anon_sym_DQUOTE, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(286), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, + ACTIONS(154), 1, sym_identifier, + ACTIONS(170), 1, + sym_number_lit, + ACTIONS(23), 2, anon_sym_nil, anon_sym_null, + ACTIONS(31), 2, anon_sym_true, anon_sym_false, - [2603] = 2, - ACTIONS(290), 9, - ts_builtin_sym_end, - sym_comment, + STATE(80), 11, + sym__expr, + sym_paren_expr, + sym_call_expr, + sym_binary_expr, + sym_index_expr, + sym_list_expr, + sym_map_expr, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [1585] = 2, + ACTIONS(174), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(172), 17, anon_sym_LBRACE, anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(292), 11, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [1609] = 4, + ACTIONS(176), 1, + ts_builtin_sym_end, + ACTIONS(178), 1, + sym_newline, + STATE(37), 1, + aux_sym_inline_statement_repeat1, + ACTIONS(180), 16, + sym_comment, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_for, + anon_sym_LBRACE, anon_sym_continue, anon_sym_break, sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [2628] = 2, - ACTIONS(294), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, anon_sym_LPAREN, anon_sym_LBRACK, + anon_sym_nil, + anon_sym_null, sym_number_lit, anon_sym_DQUOTE, anon_sym_SQUOTE, - ACTIONS(296), 11, - anon_sym_if, - anon_sym_elif, - anon_sym_else, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, anon_sym_true, anon_sym_false, - [2653] = 2, - ACTIONS(298), 9, + [1637] = 4, + ACTIONS(182), 1, ts_builtin_sym_end, + ACTIONS(184), 1, + sym_newline, + STATE(37), 1, + aux_sym_inline_statement_repeat1, + ACTIONS(187), 16, sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(300), 11, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_for, + anon_sym_LBRACE, anon_sym_continue, anon_sym_break, sym_identifier, + anon_sym_LPAREN, + anon_sym_LBRACK, anon_sym_nil, anon_sym_null, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, anon_sym_true, anon_sym_false, - [2678] = 2, - ACTIONS(155), 2, + [1665] = 2, + ACTIONS(191), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(153), 17, + ACTIONS(189), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4377,11 +3334,34 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2702] = 2, - ACTIONS(179), 2, + [1689] = 3, + ACTIONS(193), 1, + sym_newline, + STATE(39), 1, + aux_sym_inline_statement_repeat1, + ACTIONS(187), 17, + sym_comment, + anon_sym_if, + anon_sym_for, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_nil, + anon_sym_null, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + anon_sym_true, + anon_sym_false, + [1715] = 2, + ACTIONS(198), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(177), 17, + ACTIONS(196), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4399,11 +3379,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2726] = 2, - ACTIONS(191), 2, + [1739] = 2, + ACTIONS(202), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(189), 17, + ACTIONS(200), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4421,11 +3401,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2750] = 2, - ACTIONS(109), 2, + [1763] = 2, + ACTIONS(206), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(107), 17, + ACTIONS(204), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4443,11 +3423,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2774] = 2, - ACTIONS(159), 2, + [1787] = 2, + ACTIONS(210), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(157), 17, + ACTIONS(208), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4465,20 +3445,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2798] = 2, - ACTIONS(175), 2, + [1811] = 4, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(218), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(173), 17, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(212), 12, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, @@ -4487,33 +3469,113 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2822] = 2, - ACTIONS(163), 2, + [1839] = 7, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(161), 17, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(212), 8, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [1873] = 5, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(216), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, + ACTIONS(212), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_RBRACK, + anon_sym_COLON, + [1903] = 6, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(212), 9, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_PIPE_PIPE, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2846] = 2, - ACTIONS(151), 2, + [1935] = 4, + ACTIONS(228), 1, + ts_builtin_sym_end, + ACTIONS(230), 1, + sym_newline, + STATE(36), 1, + aux_sym_inline_statement_repeat1, + ACTIONS(232), 16, + sym_comment, + anon_sym_if, + anon_sym_for, + anon_sym_LBRACE, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_nil, + anon_sym_null, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + anon_sym_true, + anon_sym_false, + [1963] = 2, + ACTIONS(218), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(149), 17, + ACTIONS(212), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4531,22 +3593,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2870] = 4, - ACTIONS(147), 2, + [1987] = 3, + ACTIONS(218), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(304), 3, + ACTIONS(216), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - ACTIONS(145), 12, + ACTIONS(212), 14, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, @@ -4555,89 +3616,100 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2898] = 7, - ACTIONS(306), 1, - anon_sym_PIPE_PIPE, - ACTIONS(308), 1, - anon_sym_AMP_AMP, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(310), 2, + [2013] = 3, + ACTIONS(234), 1, + sym_newline, + STATE(39), 1, + aux_sym_inline_statement_repeat1, + ACTIONS(180), 17, + sym_comment, + anon_sym_if, + anon_sym_for, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_nil, + anon_sym_null, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + anon_sym_true, + anon_sym_false, + [2039] = 2, + ACTIONS(238), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 8, + ACTIONS(236), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2932] = 5, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(310), 2, + [2063] = 2, + ACTIONS(242), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 10, + ACTIONS(240), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2962] = 6, - ACTIONS(308), 1, - anon_sym_AMP_AMP, - ACTIONS(302), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(310), 2, + [2087] = 2, + ACTIONS(246), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 9, + ACTIONS(244), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [2994] = 2, - ACTIONS(147), 2, + [2111] = 2, + ACTIONS(250), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(145), 17, + ACTIONS(248), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4655,21 +3727,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3018] = 3, - ACTIONS(147), 2, + [2135] = 2, + ACTIONS(254), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(304), 3, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PERCENT, - ACTIONS(145), 14, + ACTIONS(252), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_PLUS, anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, anon_sym_PIPE_PIPE, anon_sym_AMP_AMP, anon_sym_EQ_EQ, @@ -4678,11 +3749,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3044] = 2, - ACTIONS(171), 2, + [2159] = 2, + ACTIONS(258), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(169), 17, + ACTIONS(256), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4700,11 +3771,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3068] = 2, - ACTIONS(95), 2, + [2183] = 2, + ACTIONS(262), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(93), 17, + ACTIONS(260), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4722,11 +3793,34 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3092] = 2, - ACTIONS(117), 2, + [2207] = 3, + ACTIONS(264), 1, + sym_newline, + STATE(51), 1, + aux_sym_inline_statement_repeat1, + ACTIONS(232), 17, + sym_comment, + anon_sym_if, + anon_sym_for, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_continue, + anon_sym_break, + sym_identifier, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_nil, + anon_sym_null, + sym_number_lit, + anon_sym_DQUOTE, + anon_sym_SQUOTE, + anon_sym_true, + anon_sym_false, + [2233] = 2, + ACTIONS(268), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(115), 17, + ACTIONS(266), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4744,11 +3838,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3116] = 2, - ACTIONS(125), 2, + [2257] = 2, + ACTIONS(272), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(123), 17, + ACTIONS(270), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4766,11 +3860,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3140] = 2, - ACTIONS(113), 2, + [2281] = 2, + ACTIONS(276), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(111), 17, + ACTIONS(274), 17, anon_sym_LBRACE, anon_sym_RBRACE, anon_sym_RPAREN, @@ -4788,15 +3882,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_EQ, anon_sym_RBRACK, anon_sym_COLON, - [3164] = 2, - ACTIONS(187), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(185), 17, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_RPAREN, - anon_sym_COMMA, + [2305] = 6, + ACTIONS(138), 1, + sym_newline, + ACTIONS(278), 1, + anon_sym_EQ, + ACTIONS(280), 1, + anon_sym_LPAREN, + ACTIONS(282), 1, + anon_sym_LBRACK, + STATE(73), 1, + sym_argument_list, + ACTIONS(142), 13, anon_sym_PLUS, anon_sym_DASH, anon_sym_STAR, @@ -4806,19 +3903,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT, anon_sym_GT_EQ, anon_sym_LT_EQ, - anon_sym_RBRACK, - anon_sym_COLON, - [3188] = 2, - ACTIONS(183), 2, - anon_sym_GT, anon_sym_LT, - ACTIONS(181), 17, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_RPAREN, - anon_sym_COMMA, + [2336] = 5, + ACTIONS(138), 1, + sym_newline, + ACTIONS(280), 1, + anon_sym_LPAREN, + ACTIONS(282), 1, + anon_sym_LBRACK, + STATE(73), 1, + sym_argument_list, + ACTIONS(142), 13, anon_sym_PLUS, anon_sym_DASH, anon_sym_STAR, @@ -4828,1064 +3926,1439 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + anon_sym_GT, anon_sym_GT_EQ, anon_sym_LT_EQ, - anon_sym_RBRACK, - anon_sym_COLON, - [3212] = 2, - ACTIONS(121), 2, - anon_sym_GT, anon_sym_LT, - ACTIONS(119), 17, - anon_sym_LBRACE, - anon_sym_RBRACE, + [2364] = 10, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(284), 1, anon_sym_RPAREN, + ACTIONS(286), 1, anon_sym_COMMA, + STATE(118), 1, + aux_sym_argument_list_repeat1, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(288), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(216), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, + [2401] = 10, + ACTIONS(220), 1, anon_sym_PIPE_PIPE, + ACTIONS(222), 1, anon_sym_AMP_AMP, + ACTIONS(286), 1, + anon_sym_COMMA, + ACTIONS(290), 1, + anon_sym_RPAREN, + STATE(122), 1, + aux_sym_argument_list_repeat1, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2438] = 9, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(292), 1, + anon_sym_LBRACE, + STATE(127), 1, + sym_block_stmts, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - anon_sym_RBRACK, - anon_sym_COLON, - [3236] = 2, - ACTIONS(314), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(316), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3259] = 2, - ACTIONS(318), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(320), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3282] = 2, - ACTIONS(322), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(324), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3305] = 2, - ACTIONS(298), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(300), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3328] = 2, - ACTIONS(326), 9, - ts_builtin_sym_end, - sym_comment, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(328), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3351] = 2, - ACTIONS(290), 9, - ts_builtin_sym_end, - sym_comment, + ACTIONS(288), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2472] = 9, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(292), 1, anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(292), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3374] = 2, - ACTIONS(330), 9, - ts_builtin_sym_end, - sym_comment, + STATE(116), 1, + sym_block_stmts, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(288), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2506] = 8, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(288), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(294), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2538] = 9, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(292), 1, anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - sym_number_lit, - anon_sym_DQUOTE, - anon_sym_SQUOTE, - ACTIONS(332), 9, - anon_sym_if, - anon_sym_for, - anon_sym_continue, - anon_sym_break, - sym_identifier, - anon_sym_nil, - anon_sym_null, - anon_sym_true, - anon_sym_false, - [3397] = 10, - ACTIONS(306), 1, + STATE(147), 1, + sym_block_stmts, + ACTIONS(214), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(224), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(226), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(288), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2572] = 8, + ACTIONS(220), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, + ACTIONS(222), 1, anon_sym_AMP_AMP, - ACTIONS(334), 1, - anon_sym_RPAREN, - ACTIONS(336), 1, - anon_sym_COMMA, - STATE(129), 1, - aux_sym_argument_list_repeat1, - ACTIONS(302), 2, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + ACTIONS(296), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(216), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3434] = 10, - ACTIONS(306), 1, - anon_sym_PIPE_PIPE, - ACTIONS(308), 1, - anon_sym_AMP_AMP, - ACTIONS(336), 1, - anon_sym_COMMA, - ACTIONS(340), 1, - anon_sym_RPAREN, - STATE(120), 1, - aux_sym_argument_list_repeat1, - ACTIONS(302), 2, + [2604] = 3, + ACTIONS(212), 1, + sym_newline, + ACTIONS(298), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(218), 10, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, anon_sym_GT, - anon_sym_LT, - ACTIONS(312), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + anon_sym_LT, + [2625] = 2, + ACTIONS(274), 1, + sym_newline, + ACTIONS(276), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2644] = 2, + ACTIONS(244), 1, + sym_newline, + ACTIONS(246), 13, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3471] = 8, - ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2663] = 8, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(300), 1, + anon_sym_RBRACK, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(342), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - ACTIONS(304), 3, + ACTIONS(216), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3503] = 9, - ACTIONS(306), 1, + [2694] = 8, + ACTIONS(220), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, + ACTIONS(222), 1, anon_sym_AMP_AMP, - ACTIONS(344), 1, - anon_sym_LBRACE, - STATE(62), 1, - sym_block_stmts, - ACTIONS(302), 2, + ACTIONS(302), 1, + anon_sym_COLON, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + ACTIONS(216), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3537] = 8, - ACTIONS(306), 1, + [2725] = 8, + ACTIONS(220), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, + ACTIONS(222), 1, anon_sym_AMP_AMP, - ACTIONS(302), 2, + ACTIONS(304), 1, + anon_sym_RPAREN, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(346), 2, - anon_sym_RBRACE, - anon_sym_COMMA, - ACTIONS(304), 3, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2756] = 2, + ACTIONS(208), 1, + sym_newline, + ACTIONS(210), 13, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3569] = 8, - ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(348), 1, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2775] = 9, + ACTIONS(102), 1, + anon_sym_DQUOTE, + ACTIONS(104), 1, + anon_sym_SQUOTE, + ACTIONS(306), 1, + sym_identifier, + ACTIONS(308), 1, anon_sym_RBRACK, - ACTIONS(302), 2, + ACTIONS(310), 1, + sym_number_lit, + STATE(130), 1, + sym_list_elem, + ACTIONS(98), 2, + anon_sym_nil, + anon_sym_null, + ACTIONS(106), 2, + anon_sym_true, + anon_sym_false, + STATE(135), 4, + sym__literal, + sym_nil_lit, + sym_string_lit, + sym_bool_lit, + [2808] = 4, + ACTIONS(212), 1, + sym_newline, + ACTIONS(312), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(298), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(218), 8, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_LT, - ACTIONS(312), 2, + [2831] = 2, + ACTIONS(189), 1, + sym_newline, + ACTIONS(191), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + anon_sym_LT, + [2850] = 7, + ACTIONS(212), 1, + sym_newline, + ACTIONS(314), 1, + anon_sym_PIPE_PIPE, + ACTIONS(316), 1, + anon_sym_AMP_AMP, + ACTIONS(218), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + ACTIONS(312), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(298), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(318), 4, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2879] = 2, + ACTIONS(200), 1, + sym_newline, + ACTIONS(202), 13, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3600] = 8, - ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(350), 1, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2898] = 8, + ACTIONS(220), 1, + anon_sym_PIPE_PIPE, + ACTIONS(222), 1, + anon_sym_AMP_AMP, + ACTIONS(320), 1, anon_sym_RPAREN, - ACTIONS(302), 2, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [2929] = 2, + ACTIONS(196), 1, + sym_newline, + ACTIONS(198), 13, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3631] = 8, - ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(352), 1, - anon_sym_COLON, - ACTIONS(302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2948] = 2, + ACTIONS(270), 1, + sym_newline, + ACTIONS(272), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2967] = 2, + ACTIONS(266), 1, + sym_newline, + ACTIONS(268), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [2986] = 2, + ACTIONS(204), 1, + sym_newline, + ACTIONS(206), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3005] = 2, + ACTIONS(252), 1, + sym_newline, + ACTIONS(254), 13, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_LT, + [3024] = 7, + ACTIONS(314), 1, + anon_sym_PIPE_PIPE, + ACTIONS(316), 1, + anon_sym_AMP_AMP, + ACTIONS(322), 1, + sym_newline, ACTIONS(312), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(324), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(298), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(318), 4, + anon_sym_GT, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + anon_sym_LT, + [3053] = 2, + ACTIONS(172), 1, + sym_newline, + ACTIONS(174), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3072] = 2, + ACTIONS(260), 1, + sym_newline, + ACTIONS(262), 13, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3662] = 9, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(29), 1, - anon_sym_SQUOTE, - ACTIONS(354), 1, - sym_identifier, - ACTIONS(356), 1, - anon_sym_RBRACK, - ACTIONS(358), 1, - sym_number_lit, - STATE(122), 1, - sym_list_elem, - ACTIONS(23), 2, - anon_sym_nil, - anon_sym_null, - ACTIONS(31), 2, - anon_sym_true, - anon_sym_false, - STATE(134), 4, - sym__literal, - sym_nil_lit, - sym_string_lit, - sym_bool_lit, - [3695] = 9, - ACTIONS(27), 1, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3091] = 9, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(354), 1, + ACTIONS(306), 1, sym_identifier, - ACTIONS(358), 1, + ACTIONS(310), 1, sym_number_lit, - ACTIONS(360), 1, + ACTIONS(326), 1, anon_sym_RBRACK, - STATE(130), 1, + STATE(125), 1, sym_list_elem, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(134), 4, + STATE(135), 4, sym__literal, sym_nil_lit, sym_string_lit, sym_bool_lit, - [3728] = 8, - ACTIONS(306), 1, + [3124] = 8, + ACTIONS(220), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, + ACTIONS(222), 1, anon_sym_AMP_AMP, - ACTIONS(362), 1, - anon_sym_RPAREN, - ACTIONS(302), 2, + ACTIONS(328), 1, + anon_sym_RBRACK, + ACTIONS(214), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(224), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(312), 2, + ACTIONS(226), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + ACTIONS(288), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + ACTIONS(216), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + [3155] = 2, + ACTIONS(248), 1, + sym_newline, + ACTIONS(250), 13, + anon_sym_PLUS, + anon_sym_DASH, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3759] = 8, - ACTIONS(306), 1, anon_sym_PIPE_PIPE, - ACTIONS(308), 1, anon_sym_AMP_AMP, - ACTIONS(364), 1, - anon_sym_RBRACK, - ACTIONS(302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3174] = 2, + ACTIONS(240), 1, + sym_newline, + ACTIONS(242), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3193] = 2, + ACTIONS(256), 1, + sym_newline, + ACTIONS(258), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3212] = 5, + ACTIONS(212), 1, + sym_newline, + ACTIONS(312), 2, anon_sym_PLUS, anon_sym_DASH, - ACTIONS(310), 2, + ACTIONS(298), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(218), 4, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(318), 4, anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, anon_sym_LT, + [3237] = 6, + ACTIONS(212), 1, + sym_newline, + ACTIONS(316), 1, + anon_sym_AMP_AMP, ACTIONS(312), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(218), 3, + anon_sym_PIPE_PIPE, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(298), 3, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + ACTIONS(318), 4, + anon_sym_GT, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(338), 2, + anon_sym_LT, + [3264] = 2, + ACTIONS(212), 1, + sym_newline, + ACTIONS(218), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3283] = 7, + ACTIONS(314), 1, + anon_sym_PIPE_PIPE, + ACTIONS(316), 1, + anon_sym_AMP_AMP, + ACTIONS(330), 1, + sym_newline, + ACTIONS(312), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(324), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - ACTIONS(304), 3, + ACTIONS(298), 3, anon_sym_STAR, anon_sym_SLASH, anon_sym_PERCENT, - [3790] = 8, - ACTIONS(27), 1, + ACTIONS(318), 4, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3312] = 2, + ACTIONS(236), 1, + sym_newline, + ACTIONS(238), 13, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_LT, + [3331] = 8, + ACTIONS(102), 1, anon_sym_DQUOTE, - ACTIONS(29), 1, + ACTIONS(104), 1, anon_sym_SQUOTE, - ACTIONS(354), 1, + ACTIONS(306), 1, sym_identifier, - ACTIONS(358), 1, + ACTIONS(310), 1, sym_number_lit, - STATE(131), 1, + STATE(134), 1, sym_list_elem, - ACTIONS(23), 2, + ACTIONS(98), 2, anon_sym_nil, anon_sym_null, - ACTIONS(31), 2, + ACTIONS(106), 2, anon_sym_true, anon_sym_false, - STATE(134), 4, + STATE(135), 4, sym__literal, sym_nil_lit, sym_string_lit, sym_bool_lit, - [3820] = 3, - ACTIONS(366), 1, + [3361] = 4, + ACTIONS(332), 1, + sym_newline, + ACTIONS(334), 1, + anon_sym_elif, + ACTIONS(337), 1, + anon_sym_else, + STATE(104), 1, + aux_sym_if_stmt_repeat1, + [3374] = 3, + ACTIONS(339), 1, anon_sym_SQUOTE, - STATE(108), 1, + STATE(105), 1, aux_sym_string_lit_repeat2, - ACTIONS(368), 2, + ACTIONS(341), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3831] = 3, - ACTIONS(371), 1, + [3385] = 3, + ACTIONS(344), 1, anon_sym_DQUOTE, - STATE(116), 1, + STATE(115), 1, aux_sym_string_lit_repeat1, - ACTIONS(373), 2, + ACTIONS(346), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3842] = 3, - ACTIONS(371), 1, + [3396] = 4, + ACTIONS(348), 1, + sym_newline, + ACTIONS(350), 1, + anon_sym_elif, + ACTIONS(352), 1, + anon_sym_else, + STATE(104), 1, + aux_sym_if_stmt_repeat1, + [3409] = 3, + ACTIONS(354), 1, anon_sym_SQUOTE, - STATE(108), 1, + STATE(105), 1, aux_sym_string_lit_repeat2, - ACTIONS(375), 2, + ACTIONS(356), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3853] = 3, - ACTIONS(377), 1, + [3420] = 3, + ACTIONS(354), 1, anon_sym_DQUOTE, STATE(114), 1, aux_sym_string_lit_repeat1, - ACTIONS(379), 2, + ACTIONS(358), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3864] = 3, - ACTIONS(377), 1, - anon_sym_SQUOTE, - STATE(115), 1, - aux_sym_string_lit_repeat2, - ACTIONS(381), 2, - aux_sym_string_lit_token2, - sym_escape_sequence, - [3875] = 3, - ACTIONS(383), 1, + [3431] = 3, + ACTIONS(360), 1, anon_sym_SQUOTE, - STATE(110), 1, + STATE(108), 1, aux_sym_string_lit_repeat2, - ACTIONS(385), 2, + ACTIONS(362), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3886] = 3, - ACTIONS(387), 1, + [3442] = 3, + ACTIONS(360), 1, anon_sym_DQUOTE, - STATE(116), 1, + STATE(109), 1, aux_sym_string_lit_repeat1, - ACTIONS(373), 2, + ACTIONS(364), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3897] = 3, - ACTIONS(387), 1, + [3453] = 3, + ACTIONS(366), 1, anon_sym_SQUOTE, - STATE(108), 1, + STATE(105), 1, aux_sym_string_lit_repeat2, - ACTIONS(375), 2, + ACTIONS(356), 2, aux_sym_string_lit_token2, sym_escape_sequence, - [3908] = 3, - ACTIONS(389), 1, + [3464] = 3, + ACTIONS(344), 1, + anon_sym_SQUOTE, + STATE(112), 1, + aux_sym_string_lit_repeat2, + ACTIONS(368), 2, + aux_sym_string_lit_token2, + sym_escape_sequence, + [3475] = 3, + ACTIONS(370), 1, anon_sym_DQUOTE, - STATE(116), 1, + STATE(114), 1, aux_sym_string_lit_repeat1, - ACTIONS(391), 2, + ACTIONS(372), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3919] = 3, - ACTIONS(383), 1, + [3486] = 3, + ACTIONS(366), 1, anon_sym_DQUOTE, - STATE(109), 1, + STATE(114), 1, aux_sym_string_lit_repeat1, - ACTIONS(394), 2, + ACTIONS(358), 2, aux_sym_string_lit_token1, sym_escape_sequence, - [3930] = 3, - ACTIONS(396), 1, - anon_sym_RBRACE, - ACTIONS(398), 1, - anon_sym_COMMA, - STATE(128), 1, - aux_sym_map_expr_repeat1, - [3940] = 3, - ACTIONS(400), 1, + [3497] = 4, + ACTIONS(350), 1, + anon_sym_elif, + ACTIONS(375), 1, + sym_newline, + ACTIONS(377), 1, + anon_sym_else, + STATE(107), 1, + aux_sym_if_stmt_repeat1, + [3510] = 3, + ACTIONS(379), 1, anon_sym_COMMA, - ACTIONS(403), 1, + ACTIONS(382), 1, anon_sym_RBRACK, - STATE(119), 1, + STATE(117), 1, aux_sym_list_expr_repeat1, - [3950] = 3, - ACTIONS(336), 1, + [3520] = 3, + ACTIONS(286), 1, anon_sym_COMMA, - ACTIONS(405), 1, + ACTIONS(384), 1, anon_sym_RPAREN, - STATE(124), 1, + STATE(119), 1, aux_sym_argument_list_repeat1, - [3960] = 3, - ACTIONS(407), 1, + [3530] = 3, + ACTIONS(294), 1, + anon_sym_RPAREN, + ACTIONS(386), 1, anon_sym_COMMA, - ACTIONS(409), 1, - anon_sym_RBRACK, STATE(119), 1, - aux_sym_list_expr_repeat1, - [3970] = 3, - ACTIONS(407), 1, - anon_sym_COMMA, - ACTIONS(411), 1, - anon_sym_RBRACK, - STATE(126), 1, - aux_sym_list_expr_repeat1, - [3980] = 3, - ACTIONS(413), 1, + aux_sym_argument_list_repeat1, + [3540] = 2, + ACTIONS(389), 1, + sym_newline, + ACTIONS(391), 2, + anon_sym_elif, + anon_sym_else, + [3548] = 3, + ACTIONS(393), 1, anon_sym_RBRACE, - ACTIONS(415), 1, + ACTIONS(395), 1, anon_sym_COMMA, - STATE(123), 1, + STATE(131), 1, aux_sym_map_expr_repeat1, - [3990] = 3, - ACTIONS(342), 1, - anon_sym_RPAREN, - ACTIONS(418), 1, + [3558] = 3, + ACTIONS(286), 1, anon_sym_COMMA, - STATE(124), 1, + ACTIONS(397), 1, + anon_sym_RPAREN, + STATE(119), 1, aux_sym_argument_list_repeat1, - [4000] = 3, - ACTIONS(398), 1, + [3568] = 3, + ACTIONS(399), 1, anon_sym_COMMA, - ACTIONS(421), 1, + ACTIONS(401), 1, + anon_sym_RBRACK, + STATE(117), 1, + aux_sym_list_expr_repeat1, + [3578] = 2, + ACTIONS(403), 1, + sym_newline, + ACTIONS(405), 2, + anon_sym_elif, + anon_sym_else, + [3586] = 3, + ACTIONS(399), 1, + anon_sym_COMMA, + ACTIONS(407), 1, + anon_sym_RBRACK, + STATE(128), 1, + aux_sym_list_expr_repeat1, + [3596] = 3, + ACTIONS(395), 1, + anon_sym_COMMA, + ACTIONS(409), 1, anon_sym_RBRACE, - STATE(123), 1, + STATE(131), 1, aux_sym_map_expr_repeat1, - [4010] = 3, - ACTIONS(407), 1, + [3606] = 2, + ACTIONS(411), 1, + sym_newline, + ACTIONS(413), 2, + anon_sym_elif, + anon_sym_else, + [3614] = 3, + ACTIONS(399), 1, anon_sym_COMMA, - ACTIONS(423), 1, + ACTIONS(415), 1, anon_sym_RBRACK, - STATE(119), 1, + STATE(117), 1, aux_sym_list_expr_repeat1, - [4020] = 3, - ACTIONS(398), 1, + [3624] = 3, + ACTIONS(395), 1, anon_sym_COMMA, - ACTIONS(425), 1, + ACTIONS(417), 1, anon_sym_RBRACE, - STATE(125), 1, + STATE(121), 1, aux_sym_map_expr_repeat1, - [4030] = 3, - ACTIONS(398), 1, + [3634] = 3, + ACTIONS(399), 1, anon_sym_COMMA, - ACTIONS(427), 1, - anon_sym_RBRACE, + ACTIONS(419), 1, + anon_sym_RBRACK, STATE(123), 1, + aux_sym_list_expr_repeat1, + [3644] = 3, + ACTIONS(421), 1, + anon_sym_RBRACE, + ACTIONS(423), 1, + anon_sym_COMMA, + STATE(131), 1, aux_sym_map_expr_repeat1, - [4040] = 3, - ACTIONS(336), 1, + [3654] = 3, + ACTIONS(395), 1, anon_sym_COMMA, - ACTIONS(429), 1, - anon_sym_RPAREN, - STATE(124), 1, - aux_sym_argument_list_repeat1, - [4050] = 3, - ACTIONS(407), 1, + ACTIONS(426), 1, + anon_sym_RBRACE, + STATE(126), 1, + aux_sym_map_expr_repeat1, + [3664] = 1, + ACTIONS(421), 2, + anon_sym_RBRACE, anon_sym_COMMA, - ACTIONS(431), 1, - anon_sym_RBRACK, - STATE(121), 1, - aux_sym_list_expr_repeat1, - [4060] = 1, - ACTIONS(403), 2, + [3669] = 1, + ACTIONS(382), 2, anon_sym_COMMA, anon_sym_RBRACK, - [4065] = 2, - ACTIONS(344), 1, - anon_sym_LBRACE, - STATE(64), 1, - sym_block_stmts, - [4072] = 2, - ACTIONS(433), 1, - anon_sym_LBRACE, - STATE(89), 1, - sym_block_stmts, - [4079] = 1, - ACTIONS(435), 2, + [3674] = 1, + ACTIONS(428), 2, anon_sym_COMMA, anon_sym_RBRACK, - [4084] = 1, - ACTIONS(413), 2, - anon_sym_RBRACE, - anon_sym_COMMA, - [4089] = 2, - ACTIONS(433), 1, + [3679] = 2, + ACTIONS(292), 1, anon_sym_LBRACE, - STATE(88), 1, + STATE(145), 1, sym_block_stmts, - [4096] = 2, - ACTIONS(433), 1, + [3686] = 2, + ACTIONS(292), 1, anon_sym_LBRACE, - STATE(90), 1, + STATE(138), 1, sym_block_stmts, - [4103] = 1, - ACTIONS(437), 1, + [3693] = 1, + ACTIONS(430), 1, + sym_newline, + [3697] = 1, + ACTIONS(432), 1, + sym_newline, + [3701] = 1, + ACTIONS(434), 1, + sym_newline, + [3705] = 1, + ACTIONS(436), 1, sym_identifier, - [4107] = 1, - ACTIONS(439), 1, + [3709] = 1, + ACTIONS(438), 1, + sym_newline, + [3713] = 1, + ACTIONS(440), 1, ts_builtin_sym_end, - [4111] = 1, - ACTIONS(441), 1, - sym_identifier, - [4115] = 1, - ACTIONS(443), 1, + [3717] = 1, + ACTIONS(442), 1, + sym_newline, + [3721] = 1, + ACTIONS(444), 1, + sym_newline, + [3725] = 1, + ACTIONS(446), 1, anon_sym_in, + [3729] = 1, + ACTIONS(448), 1, + sym_newline, }; static const uint32_t ts_small_parse_table_map[] = { - [SMALL_STATE(3)] = 0, - [SMALL_STATE(4)] = 71, - [SMALL_STATE(5)] = 142, - [SMALL_STATE(6)] = 213, - [SMALL_STATE(7)] = 284, - [SMALL_STATE(8)] = 355, - [SMALL_STATE(9)] = 393, - [SMALL_STATE(10)] = 439, - [SMALL_STATE(11)] = 477, - [SMALL_STATE(12)] = 515, - [SMALL_STATE(13)] = 553, - [SMALL_STATE(14)] = 596, - [SMALL_STATE(15)] = 632, - [SMALL_STATE(16)] = 668, - [SMALL_STATE(17)] = 718, - [SMALL_STATE(18)] = 758, - [SMALL_STATE(19)] = 806, - [SMALL_STATE(20)] = 850, - [SMALL_STATE(21)] = 886, - [SMALL_STATE(22)] = 932, - [SMALL_STATE(23)] = 968, - [SMALL_STATE(24)] = 1006, - [SMALL_STATE(25)] = 1042, - [SMALL_STATE(26)] = 1078, - [SMALL_STATE(27)] = 1114, - [SMALL_STATE(28)] = 1164, - [SMALL_STATE(29)] = 1200, - [SMALL_STATE(30)] = 1236, - [SMALL_STATE(31)] = 1272, - [SMALL_STATE(32)] = 1308, - [SMALL_STATE(33)] = 1344, - [SMALL_STATE(34)] = 1380, - [SMALL_STATE(35)] = 1429, - [SMALL_STATE(36)] = 1478, - [SMALL_STATE(37)] = 1524, - [SMALL_STATE(38)] = 1570, - [SMALL_STATE(39)] = 1616, - [SMALL_STATE(40)] = 1659, - [SMALL_STATE(41)] = 1702, - [SMALL_STATE(42)] = 1735, - [SMALL_STATE(43)] = 1778, - [SMALL_STATE(44)] = 1821, - [SMALL_STATE(45)] = 1864, - [SMALL_STATE(46)] = 1907, - [SMALL_STATE(47)] = 1950, - [SMALL_STATE(48)] = 1993, - [SMALL_STATE(49)] = 2036, - [SMALL_STATE(50)] = 2079, - [SMALL_STATE(51)] = 2122, - [SMALL_STATE(52)] = 2165, - [SMALL_STATE(53)] = 2208, - [SMALL_STATE(54)] = 2251, - [SMALL_STATE(55)] = 2294, - [SMALL_STATE(56)] = 2337, - [SMALL_STATE(57)] = 2380, - [SMALL_STATE(58)] = 2423, - [SMALL_STATE(59)] = 2466, - [SMALL_STATE(60)] = 2509, - [SMALL_STATE(61)] = 2539, - [SMALL_STATE(62)] = 2571, - [SMALL_STATE(63)] = 2603, - [SMALL_STATE(64)] = 2628, - [SMALL_STATE(65)] = 2653, - [SMALL_STATE(66)] = 2678, - [SMALL_STATE(67)] = 2702, - [SMALL_STATE(68)] = 2726, - [SMALL_STATE(69)] = 2750, - [SMALL_STATE(70)] = 2774, - [SMALL_STATE(71)] = 2798, - [SMALL_STATE(72)] = 2822, - [SMALL_STATE(73)] = 2846, - [SMALL_STATE(74)] = 2870, - [SMALL_STATE(75)] = 2898, - [SMALL_STATE(76)] = 2932, - [SMALL_STATE(77)] = 2962, - [SMALL_STATE(78)] = 2994, - [SMALL_STATE(79)] = 3018, - [SMALL_STATE(80)] = 3044, - [SMALL_STATE(81)] = 3068, - [SMALL_STATE(82)] = 3092, - [SMALL_STATE(83)] = 3116, - [SMALL_STATE(84)] = 3140, - [SMALL_STATE(85)] = 3164, - [SMALL_STATE(86)] = 3188, - [SMALL_STATE(87)] = 3212, - [SMALL_STATE(88)] = 3236, - [SMALL_STATE(89)] = 3259, - [SMALL_STATE(90)] = 3282, - [SMALL_STATE(91)] = 3305, - [SMALL_STATE(92)] = 3328, - [SMALL_STATE(93)] = 3351, - [SMALL_STATE(94)] = 3374, - [SMALL_STATE(95)] = 3397, - [SMALL_STATE(96)] = 3434, - [SMALL_STATE(97)] = 3471, - [SMALL_STATE(98)] = 3503, - [SMALL_STATE(99)] = 3537, - [SMALL_STATE(100)] = 3569, - [SMALL_STATE(101)] = 3600, - [SMALL_STATE(102)] = 3631, - [SMALL_STATE(103)] = 3662, - [SMALL_STATE(104)] = 3695, - [SMALL_STATE(105)] = 3728, - [SMALL_STATE(106)] = 3759, - [SMALL_STATE(107)] = 3790, - [SMALL_STATE(108)] = 3820, - [SMALL_STATE(109)] = 3831, - [SMALL_STATE(110)] = 3842, - [SMALL_STATE(111)] = 3853, - [SMALL_STATE(112)] = 3864, - [SMALL_STATE(113)] = 3875, - [SMALL_STATE(114)] = 3886, - [SMALL_STATE(115)] = 3897, - [SMALL_STATE(116)] = 3908, - [SMALL_STATE(117)] = 3919, - [SMALL_STATE(118)] = 3930, - [SMALL_STATE(119)] = 3940, - [SMALL_STATE(120)] = 3950, - [SMALL_STATE(121)] = 3960, - [SMALL_STATE(122)] = 3970, - [SMALL_STATE(123)] = 3980, - [SMALL_STATE(124)] = 3990, - [SMALL_STATE(125)] = 4000, - [SMALL_STATE(126)] = 4010, - [SMALL_STATE(127)] = 4020, - [SMALL_STATE(128)] = 4030, - [SMALL_STATE(129)] = 4040, - [SMALL_STATE(130)] = 4050, - [SMALL_STATE(131)] = 4060, - [SMALL_STATE(132)] = 4065, - [SMALL_STATE(133)] = 4072, - [SMALL_STATE(134)] = 4079, - [SMALL_STATE(135)] = 4084, - [SMALL_STATE(136)] = 4089, - [SMALL_STATE(137)] = 4096, - [SMALL_STATE(138)] = 4103, - [SMALL_STATE(139)] = 4107, - [SMALL_STATE(140)] = 4111, - [SMALL_STATE(141)] = 4115, + [SMALL_STATE(2)] = 0, + [SMALL_STATE(3)] = 74, + [SMALL_STATE(4)] = 148, + [SMALL_STATE(5)] = 222, + [SMALL_STATE(6)] = 296, + [SMALL_STATE(7)] = 370, + [SMALL_STATE(8)] = 419, + [SMALL_STATE(9)] = 468, + [SMALL_STATE(10)] = 514, + [SMALL_STATE(11)] = 560, + [SMALL_STATE(12)] = 606, + [SMALL_STATE(13)] = 649, + [SMALL_STATE(14)] = 692, + [SMALL_STATE(15)] = 735, + [SMALL_STATE(16)] = 778, + [SMALL_STATE(17)] = 821, + [SMALL_STATE(18)] = 864, + [SMALL_STATE(19)] = 907, + [SMALL_STATE(20)] = 950, + [SMALL_STATE(21)] = 993, + [SMALL_STATE(22)] = 1036, + [SMALL_STATE(23)] = 1069, + [SMALL_STATE(24)] = 1112, + [SMALL_STATE(25)] = 1155, + [SMALL_STATE(26)] = 1198, + [SMALL_STATE(27)] = 1241, + [SMALL_STATE(28)] = 1284, + [SMALL_STATE(29)] = 1327, + [SMALL_STATE(30)] = 1370, + [SMALL_STATE(31)] = 1413, + [SMALL_STATE(32)] = 1456, + [SMALL_STATE(33)] = 1499, + [SMALL_STATE(34)] = 1542, + [SMALL_STATE(35)] = 1585, + [SMALL_STATE(36)] = 1609, + [SMALL_STATE(37)] = 1637, + [SMALL_STATE(38)] = 1665, + [SMALL_STATE(39)] = 1689, + [SMALL_STATE(40)] = 1715, + [SMALL_STATE(41)] = 1739, + [SMALL_STATE(42)] = 1763, + [SMALL_STATE(43)] = 1787, + [SMALL_STATE(44)] = 1811, + [SMALL_STATE(45)] = 1839, + [SMALL_STATE(46)] = 1873, + [SMALL_STATE(47)] = 1903, + [SMALL_STATE(48)] = 1935, + [SMALL_STATE(49)] = 1963, + [SMALL_STATE(50)] = 1987, + [SMALL_STATE(51)] = 2013, + [SMALL_STATE(52)] = 2039, + [SMALL_STATE(53)] = 2063, + [SMALL_STATE(54)] = 2087, + [SMALL_STATE(55)] = 2111, + [SMALL_STATE(56)] = 2135, + [SMALL_STATE(57)] = 2159, + [SMALL_STATE(58)] = 2183, + [SMALL_STATE(59)] = 2207, + [SMALL_STATE(60)] = 2233, + [SMALL_STATE(61)] = 2257, + [SMALL_STATE(62)] = 2281, + [SMALL_STATE(63)] = 2305, + [SMALL_STATE(64)] = 2336, + [SMALL_STATE(65)] = 2364, + [SMALL_STATE(66)] = 2401, + [SMALL_STATE(67)] = 2438, + [SMALL_STATE(68)] = 2472, + [SMALL_STATE(69)] = 2506, + [SMALL_STATE(70)] = 2538, + [SMALL_STATE(71)] = 2572, + [SMALL_STATE(72)] = 2604, + [SMALL_STATE(73)] = 2625, + [SMALL_STATE(74)] = 2644, + [SMALL_STATE(75)] = 2663, + [SMALL_STATE(76)] = 2694, + [SMALL_STATE(77)] = 2725, + [SMALL_STATE(78)] = 2756, + [SMALL_STATE(79)] = 2775, + [SMALL_STATE(80)] = 2808, + [SMALL_STATE(81)] = 2831, + [SMALL_STATE(82)] = 2850, + [SMALL_STATE(83)] = 2879, + [SMALL_STATE(84)] = 2898, + [SMALL_STATE(85)] = 2929, + [SMALL_STATE(86)] = 2948, + [SMALL_STATE(87)] = 2967, + [SMALL_STATE(88)] = 2986, + [SMALL_STATE(89)] = 3005, + [SMALL_STATE(90)] = 3024, + [SMALL_STATE(91)] = 3053, + [SMALL_STATE(92)] = 3072, + [SMALL_STATE(93)] = 3091, + [SMALL_STATE(94)] = 3124, + [SMALL_STATE(95)] = 3155, + [SMALL_STATE(96)] = 3174, + [SMALL_STATE(97)] = 3193, + [SMALL_STATE(98)] = 3212, + [SMALL_STATE(99)] = 3237, + [SMALL_STATE(100)] = 3264, + [SMALL_STATE(101)] = 3283, + [SMALL_STATE(102)] = 3312, + [SMALL_STATE(103)] = 3331, + [SMALL_STATE(104)] = 3361, + [SMALL_STATE(105)] = 3374, + [SMALL_STATE(106)] = 3385, + [SMALL_STATE(107)] = 3396, + [SMALL_STATE(108)] = 3409, + [SMALL_STATE(109)] = 3420, + [SMALL_STATE(110)] = 3431, + [SMALL_STATE(111)] = 3442, + [SMALL_STATE(112)] = 3453, + [SMALL_STATE(113)] = 3464, + [SMALL_STATE(114)] = 3475, + [SMALL_STATE(115)] = 3486, + [SMALL_STATE(116)] = 3497, + [SMALL_STATE(117)] = 3510, + [SMALL_STATE(118)] = 3520, + [SMALL_STATE(119)] = 3530, + [SMALL_STATE(120)] = 3540, + [SMALL_STATE(121)] = 3548, + [SMALL_STATE(122)] = 3558, + [SMALL_STATE(123)] = 3568, + [SMALL_STATE(124)] = 3578, + [SMALL_STATE(125)] = 3586, + [SMALL_STATE(126)] = 3596, + [SMALL_STATE(127)] = 3606, + [SMALL_STATE(128)] = 3614, + [SMALL_STATE(129)] = 3624, + [SMALL_STATE(130)] = 3634, + [SMALL_STATE(131)] = 3644, + [SMALL_STATE(132)] = 3654, + [SMALL_STATE(133)] = 3664, + [SMALL_STATE(134)] = 3669, + [SMALL_STATE(135)] = 3674, + [SMALL_STATE(136)] = 3679, + [SMALL_STATE(137)] = 3686, + [SMALL_STATE(138)] = 3693, + [SMALL_STATE(139)] = 3697, + [SMALL_STATE(140)] = 3701, + [SMALL_STATE(141)] = 3705, + [SMALL_STATE(142)] = 3709, + [SMALL_STATE(143)] = 3713, + [SMALL_STATE(144)] = 3717, + [SMALL_STATE(145)] = 3721, + [SMALL_STATE(146)] = 3725, + [SMALL_STATE(147)] = 3729, }; 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(7), - [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(55), - [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(94), - [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(63), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(74), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), - [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), - [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(2), - [38] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(55), - [41] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(140), - [44] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(34), - [47] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(94), - [50] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(92), - [53] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(9), - [56] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(54), - [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(103), - [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(11), - [65] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(16), - [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(117), - [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(113), - [74] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(12), - [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), - [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), - [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), - [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), - [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), - [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), - [95] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 3), - [97] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1), - [99] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 1), - [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(59), - [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 2), - [109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 2), - [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nil_lit, 1), - [113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_nil_lit, 1), - [115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), - [117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), - [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4), - [121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4), - [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expr, 4), - [125] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expr, 4), - [127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_stmt, 1), - [129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_stmt, 1), - [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(51), - [133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [141] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), - [143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expr, 3, .production_id = 3), - [147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expr, 3, .production_id = 3), - [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 2), - [151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 2), - [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 3), - [155] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 3), - [157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 4), - [159] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 4), - [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expr, 2, .production_id = 1), - [163] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expr, 2, .production_id = 1), - [165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_stmt, 3), - [167] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_stmt, 3), - [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3), - [171] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3), - [173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 2), - [175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 2), - [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 3), - [179] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 3), - [181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2), - [183] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2), - [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paren_expr, 3), - [187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_paren_expr, 3), - [189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 4), - [191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 4), - [193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [197] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), - [199] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), - [203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(84), - [205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), - [213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), - [223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [237] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), - [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), - [271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), - [273] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 7), SHIFT_REPEAT(132), - [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 4, .production_id = 4), - [278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 4, .production_id = 4), - [280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(132), - [282] = {.entry = {.count = 1, .reusable = false}}, SHIFT(133), - [284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 3, .production_id = 2), - [286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 3, .production_id = 2), - [288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), - [290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_stmts, 3), - [292] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 3), - [294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 5), - [296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2, .production_id = 5), - [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_stmts, 2), - [300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 2), - [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), - [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [310] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), - [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [314] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_stmt, 5), - [316] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_stmt, 5), - [318] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 6, .production_id = 8), - [320] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 6, .production_id = 8), - [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5, .production_id = 6), - [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 5, .production_id = 6), - [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_stmt, 1), - [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_stmt, 1), - [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_stmt, 1), - [332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_stmt, 1), - [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), - [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_elem, 3), - [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [354] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), - [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), - [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat2, 2), - [368] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat2, 2), SHIFT_REPEAT(108), - [371] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), - [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [377] = {.entry = {.count = 1, .reusable = false}}, SHIFT(69), - [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [383] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), - [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [387] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81), - [389] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), - [391] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(116), - [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [400] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), SHIFT_REPEAT(107), - [403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), - [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [413] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), - [415] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), SHIFT_REPEAT(37), - [418] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), SHIFT_REPEAT(53), - [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), - [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), - [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_elem, 1), - [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), - [439] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), - [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(97), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(139), + [38] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(13), + [41] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(141), + [44] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(8), + [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [49] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(142), + [52] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(140), + [55] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(63), + [58] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(16), + [61] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(93), + [64] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(74), + [67] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(101), + [70] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(106), + [73] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(113), + [76] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(97), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), + [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [83] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(144), + [86] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [92] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), + [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [98] = {.entry = {.count = 1, .reusable = false}}, SHIFT(54), + [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [106] = {.entry = {.count = 1, .reusable = false}}, SHIFT(57), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1), + [140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [142] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 1), + [144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [154] = {.entry = {.count = 1, .reusable = false}}, SHIFT(64), + [156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2), + [174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2), + [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_inline_statement, 3), + [178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [180] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_inline_statement, 3), + [182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_inline_statement_repeat1, 2), + [184] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_inline_statement_repeat1, 2), SHIFT_REPEAT(37), + [187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_inline_statement_repeat1, 2), + [189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4), + [191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4), + [193] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_inline_statement_repeat1, 2), SHIFT_REPEAT(39), + [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 4), + [198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 4), + [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expr, 4), + [202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expr, 4), + [204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3), + [206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3), + [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 4), + [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 4), + [212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expr, 3, .production_id = 3), + [214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expr, 3, .production_id = 3), + [220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [222] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [224] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_inline_statement, 2), + [230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [232] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_inline_statement, 2), + [234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), + [238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 3), + [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 3), + [242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 3), + [244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nil_lit, 1), + [246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_nil_lit, 1), + [248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paren_expr, 3), + [250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_paren_expr, 3), + [252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 3), + [254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 3), + [256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), + [258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), + [260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_expr, 2), + [262] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_map_expr, 2), + [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 2), + [268] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 2), + [270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_expr, 2), + [272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_expr, 2), + [274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expr, 2, .production_id = 1), + [276] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expr, 2, .production_id = 1), + [278] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28), + [280] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [282] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29), + [284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), + [296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_map_elem, 3), + [298] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30), + [300] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [306] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), + [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [312] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), + [314] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31), + [316] = {.entry = {.count = 1, .reusable = false}}, SHIFT(32), + [318] = {.entry = {.count = 1, .reusable = false}}, SHIFT(34), + [320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_stmt, 3), + [324] = {.entry = {.count = 1, .reusable = false}}, SHIFT(33), + [326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_stmt, 1), + [332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 2), + [334] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2), SHIFT_REPEAT(26), + [337] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 2), + [339] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat2, 2), + [341] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat2, 2), SHIFT_REPEAT(105), + [344] = {.entry = {.count = 1, .reusable = false}}, SHIFT(87), + [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 4, .production_id = 2), + [350] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), + [352] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), + [354] = {.entry = {.count = 1, .reusable = false}}, SHIFT(52), + [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [360] = {.entry = {.count = 1, .reusable = false}}, SHIFT(60), + [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [366] = {.entry = {.count = 1, .reusable = false}}, SHIFT(102), + [368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [370] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), + [372] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(114), + [375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 3, .production_id = 2), + [377] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [379] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), SHIFT_REPEAT(103), + [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_list_expr_repeat1, 2), + [384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [386] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2), SHIFT_REPEAT(23), + [389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_stmts, 2), + [391] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 2), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_stmts, 3), + [405] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_stmts, 3), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_stmt_repeat1, 3), + [413] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_stmt_repeat1, 3), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), + [423] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_map_expr_repeat1, 2), SHIFT_REPEAT(10), + [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [428] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_elem, 1), + [430] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 6, .production_id = 2), + [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_stmt, 1), + [436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), + [438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_stmt, 1), + [440] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [444] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5, .production_id = 2), + [446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [448] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_stmt, 5), }; #ifdef __cplusplus diff --git a/ide/tree-sitter-platypus/test/debug.p b/ide/tree-sitter-platypus/test/debug.p new file mode 100644 index 0000000..4f47aef --- /dev/null +++ b/ide/tree-sitter-platypus/test/debug.p @@ -0,0 +1,17 @@ +# Comment +# asaaa +a = 1 +grok("", "asd") +print(1, 2) + +if a == 1 { + a = 1 + print(1, 2) +} elif a == 2 { + a = 2 +} else { +} + +for a in a { + print(a) +} diff --git a/ide/tree-sitter-platypus/test/nginx.p b/ide/tree-sitter-platypus/test/nginx.p index 2c9628f..cdb404f 100644 --- a/ide/tree-sitter-platypus/test/nginx.p +++ b/ide/tree-sitter-platypus/test/nginx.p @@ -1,19 +1,31 @@ add_pattern("date2", "%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME}") -asd@@ +asd # access log -grok(_, "%{NOTSPACE:client_ip} %{NOTSPACE:http_ident} %{NOTSPACE:http_auth} \\[%{HTTPDATE:time}\\] \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}") +grok( + _, + "%{NOTSPACE:client_ip} %{NOTSPACE:http_ident} %{NOTSPACE:http_auth} \\[%{HTTPDATE:time}\\] \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}", +) # access log -add_pattern("access_common", "%{NOTSPACE:client_ip} %{NOTSPACE:http_ident} %{NOTSPACE:http_auth} \\[%{HTTPDATE:time}\\] \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}") +add_pattern( + "access_common", + "%{NOTSPACE:client_ip} %{NOTSPACE:http_ident} %{NOTSPACE:http_auth} \\[%{HTTPDATE:time}\\] \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}", +) grok(_, '%{access_common} "%{NOTSPACE:referrer}" "%{GREEDYDATA:agent}"') user_agent(agent) # error log -grok(_, "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}, client: %{NOTSPACE:client_ip}, server: %{NOTSPACE:server}, request: \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\", (upstream: \"%{GREEDYDATA:upstream}\", )?host: \"%{NOTSPACE:ip_or_host}\"") -grok(_, "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}, client: %{NOTSPACE:client_ip}, server: %{NOTSPACE:server}, request: \"%{GREEDYDATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\", host: \"%{NOTSPACE:ip_or_host}\"") -grok(_,"%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}") +grok( + _, + "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}, client: %{NOTSPACE:client_ip}, server: %{NOTSPACE:server}, request: \"%{DATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\", (upstream: \"%{GREEDYDATA:upstream}\", )?host: \"%{NOTSPACE:ip_or_host}\"", +) +grok( + _, + "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}, client: %{NOTSPACE:client_ip}, server: %{NOTSPACE:server}, request: \"%{GREEDYDATA:http_method} %{GREEDYDATA:http_url} HTTP/%{NUMBER:http_version}\", host: \"%{NOTSPACE:ip_or_host}\"", +) +grok(_, "%{date2:time} \\[%{LOGLEVEL:status}\\] %{GREEDYDATA:msg}") group_in(status, ["warn", "notice"], "warning") group_in(status, ["error", "crit", "alert", "emerg"], "error") @@ -21,10 +33,10 @@ group_in(status, ["error", "crit", "alert", "emerg"], "error") cast(status_code, "int") cast(bytes, "int") -group_between(status_code, [200,299], "OK", status) -group_between(status_code, [300,399], "notice", status) -group_between(status_code, [400,499], "warning", status) -group_between(status_code, [500,599], "error", status) +group_between(status_code, [200, 299], "OK", status) +group_between(status_code, [300, 399], "notice", status) +group_between(status_code, [400, 499], "warning", status) +group_between(status_code, [500, 599], "error", status) nullif(http_ident, "-") nullif(http_auth, "-")