From 654a9567201b8bd8356db1a5100fcf3250afe474 Mon Sep 17 00:00:00 2001 From: Klas Segeljakt Date: Wed, 3 Jan 2024 16:14:42 +0100 Subject: [PATCH] Initial commit --- .cargo/config.toml | 2 + .github/workflows/test.yml | 12 + .gitignore | 6 + Cargo.lock | 3370 + Cargo.toml | 10 + Dockerfile | 25 + crates/.DS_Store | Bin 0 -> 6148 bytes crates/aqua-ls/Cargo.toml | 12 + crates/aqua-ls/src/main.rs | 91 + crates/aqua/Cargo.toml | 20 + crates/aqua/build.rs | 3 + crates/aqua/src/input.rs | 16 + crates/aqua/src/logging.rs | 19 + crates/aqua/src/main.rs | 32 + crates/aqua/src/version.rs | 10 + crates/compiler/Cargo.lock | 104 + crates/compiler/Cargo.toml | 23 + crates/compiler/fuzz/.gitignore | 4 + crates/compiler/fuzz/Cargo.toml | 26 + .../compiler/fuzz/fuzz_targets/fuzz_lexer.rs | 9 + .../compiler/fuzz/fuzz_targets/fuzz_parser.rs | 11 + crates/compiler/src/annotate.rs | 483 + crates/compiler/src/apply.rs | 404 + crates/compiler/src/ast.rs | 773 + crates/compiler/src/builtins/conv.rs | 101 + crates/compiler/src/builtins/de.rs | 326 + crates/compiler/src/builtins/dynamic/array.rs | 6 + .../compiler/src/builtins/dynamic/dataflow.rs | 29 + .../compiler/src/builtins/dynamic/function.rs | 14 + .../compiler/src/builtins/dynamic/instance.rs | 6 + .../compiler/src/builtins/dynamic/matrix.rs | 174 + .../compiler/src/builtins/dynamic/record.rs | 27 + .../compiler/src/builtins/dynamic/stream.rs | 27 + crates/compiler/src/builtins/dynamic/tuple.rs | 12 + .../compiler/src/builtins/dynamic/variant.rs | 20 + crates/compiler/src/builtins/eq.rs | 67 + crates/compiler/src/builtins/hash.rs | 55 + crates/compiler/src/builtins/mod.rs | 150 + crates/compiler/src/builtins/ord.rs | 61 + crates/compiler/src/builtins/ser.rs | 58 + crates/compiler/src/bytecode.rs | 0 crates/compiler/src/codegen.rs | 632 + crates/compiler/src/diag.rs | 140 + crates/compiler/src/display.rs | 803 + crates/compiler/src/ffi.rs | 66 + crates/compiler/src/helper.rs | 0 crates/compiler/src/infer.rs | 668 + crates/compiler/src/interpret.rs | 274 + crates/compiler/src/lexer.rs | 584 + crates/compiler/src/lib.rs | 258 + crates/compiler/src/lift.rs | 87 + crates/compiler/src/opt.rs | 9 + crates/compiler/src/parser.rs | 1485 + crates/compiler/src/parser2.rs | 614 + crates/compiler/src/prelude.rs | 1 + crates/compiler/src/print.rs | 215 + crates/compiler/src/resolve.rs | 1223 + crates/compiler/src/util.rs | 995 + crates/compiler/tests/display.rs | 175 + crates/compiler/tests/infer.rs | 322 + crates/compiler/tests/interpret.rs | 12 + crates/compiler/tests/lexer.rs | 381 + crates/compiler/tests/parser.rs | 1610 + crates/compiler/tests/parser2.rs | 26 + crates/compiler/tests/resolve.rs | 578 + crates/compiler/tests/ser.rs | 207 + crates/compiler/tests/source.rs | 6 + crates/compiler/tests/traits.rs | 242 + crates/compiler/tests/unify.rs | 97 + crates/config/Cargo.toml | 10 + crates/config/src/lib.rs | 31 + crates/macros/.DS_Store | Bin 0 -> 6148 bytes crates/macros/Cargo.lock | 47 + crates/macros/Cargo.toml | 12 + crates/macros/src/.DS_Store | Bin 0 -> 6148 bytes crates/macros/src/lib.rs | 47 + crates/macros/src/proc_macro_attrs.rs | 12 + crates/macros/src/proc_macro_attrs/.DS_Store | Bin 0 -> 6148 bytes .../src/proc_macro_attrs/export/functions.rs | 33 + .../src/proc_macro_attrs/export/impls.rs | 67 + .../src/proc_macro_attrs/rewrite/.DS_Store | Bin 0 -> 6148 bytes .../src/proc_macro_attrs/rewrite/enums.rs | 25 + .../src/proc_macro_attrs/rewrite/externs.rs | 19 + .../src/proc_macro_attrs/rewrite/functions.rs | 10 + .../src/proc_macro_attrs/rewrite/main.rs | 5 + .../src/proc_macro_attrs/rewrite/structs.rs | 51 + crates/macros/src/proc_macro_derives.rs | 165 + crates/macros/src/proc_macros.rs | 8 + crates/macros/src/utils.rs | 12 + crates/opt/Cargo.lock | 221 + crates/opt/Cargo.toml | 7 + crates/opt/src/analysis.rs | 58 + crates/opt/src/cost.rs | 20 + crates/opt/src/lang.rs | 56 + crates/opt/src/lib.rs | 103 + crates/opt/src/rules.rs | 242 + crates/opt/tests/basic.rs | 52 + crates/opt/tests/dataflow.rs | 17 + crates/opt/tests/udaf.rs | 138 + crates/repl/Cargo.toml | 12 + crates/repl/src/helper/completer.rs | 55 + crates/repl/src/helper/highlighter.rs | 152 + crates/repl/src/helper/hinter.rs | 5 + crates/repl/src/helper/mod.rs | 153 + crates/repl/src/helper/validator.rs | 70 + crates/repl/src/lib.rs | 142 + crates/runtime/.cargo/config.toml | 2 + crates/runtime/Cargo.toml | 89 + crates/runtime/benches/iter.rs | 255 + crates/runtime/benches/vec.rs | 58 + crates/runtime/src/builtins/aggregator.rs | 39 + crates/runtime/src/builtins/array.rs | 130 + crates/runtime/src/builtins/assigner.rs | 36 + crates/runtime/src/builtins/blob.rs | 14 + crates/runtime/src/builtins/cell.rs | 51 + crates/runtime/src/builtins/channel.rs | 1 + crates/runtime/src/builtins/channel/spsc.rs | 193 + crates/runtime/src/builtins/cow.rs | 95 + crates/runtime/src/builtins/dataflow.rs | 13 + crates/runtime/src/builtins/dataframe.rs | 13 + crates/runtime/src/builtins/dict.rs | 73 + crates/runtime/src/builtins/duration.rs | 86 + crates/runtime/src/builtins/encoding.rs | 18 + crates/runtime/src/builtins/file.rs | 33 + crates/runtime/src/builtins/im_string.rs | 50 + crates/runtime/src/builtins/image.rs | 192 + crates/runtime/src/builtins/keyed_stream.rs | 53 + .../src/builtins/keyed_stream/drain.rs | 18 + .../src/builtins/keyed_stream/filter.rs | 28 + .../src/builtins/keyed_stream/flat_map.rs | 36 + .../runtime/src/builtins/keyed_stream/fork.rs | 43 + .../src/builtins/keyed_stream/incr_window.rs | 107 + .../runtime/src/builtins/keyed_stream/join.rs | 43 + .../src/builtins/keyed_stream/keyby.rs | 31 + .../runtime/src/builtins/keyed_stream/map.rs | 27 + .../src/builtins/keyed_stream/merge.rs | 46 + .../runtime/src/builtins/keyed_stream/scan.rs | 50 + .../runtime/src/builtins/keyed_stream/sink.rs | 1 + .../src/builtins/keyed_stream/unkey.rs | 32 + .../src/builtins/keyed_stream/window.rs | 6 + .../window/count_sliding_holistic.rs | 66 + ...sliding_aligned_commutative_associative.rs | 83 + .../window/time_sliding_aligned_holistic.rs | 111 + .../window/time_tumbling_holistic.rs | 62 + .../window/time_tumbling_holistic_vec.rs | 45 + crates/runtime/src/builtins/matrix.rs | 130 + crates/runtime/src/builtins/mod.rs | 34 + crates/runtime/src/builtins/model.rs | 89 + crates/runtime/src/builtins/option.rs | 43 + crates/runtime/src/builtins/path.rs | 28 + crates/runtime/src/builtins/reader.rs | 41 + crates/runtime/src/builtins/result.rs | 53 + crates/runtime/src/builtins/set.rs | 63 + crates/runtime/src/builtins/socket.rs | 24 + crates/runtime/src/builtins/stream.rs | 141 + crates/runtime/src/builtins/stream/assert.rs | 25 + crates/runtime/src/builtins/stream/batch.rs | 41 + crates/runtime/src/builtins/stream/drain.rs | 17 + crates/runtime/src/builtins/stream/filter.rs | 31 + .../runtime/src/builtins/stream/filter_map.rs | 35 + .../runtime/src/builtins/stream/flat_map.rs | 39 + crates/runtime/src/builtins/stream/fork.rs | 30 + crates/runtime/src/builtins/stream/join.rs | 4 + .../src/builtins/stream/join/interval_join.rs | 291 + .../stream/join/interval_join_forward.rs | 263 + .../stream/join/tumbling_window_join.rs | 139 + .../join/tumbling_window_join_distinct.rs | 151 + crates/runtime/src/builtins/stream/keyby.rs | 32 + crates/runtime/src/builtins/stream/map.rs | 26 + crates/runtime/src/builtins/stream/merge.rs | 59 + .../runtime/src/builtins/stream/operator.rs | 6 + crates/runtime/src/builtins/stream/scan.rs | 36 + crates/runtime/src/builtins/stream/sink.rs | 161 + crates/runtime/src/builtins/stream/source.rs | 245 + crates/runtime/src/builtins/stream/window.rs | 35 + ...sliding_aligned_commutative_associative.rs | 64 + .../stream/window/count_sliding_holistic.rs | 60 + .../stream/window/count_sliding_invertible.rs | 60 + .../stream/window/count_tumbling_holistic.rs | 55 + ...sliding_aligned_commutative_associative.rs | 71 + .../window/time_sliding_aligned_holistic.rs | 140 + .../time_sliding_aligned_holistic_vec.rs | 140 + .../time_sliding_commutative_invertible.rs | 92 + .../stream/window/time_sliding_invertible.rs | 67 + .../stream/window/time_tumbling_holistic.rs | 55 + crates/runtime/src/builtins/string.rs | 222 + crates/runtime/src/builtins/time.rs | 179 + crates/runtime/src/builtins/time_source.rs | 30 + crates/runtime/src/builtins/unchecked_cell.rs | 60 + crates/runtime/src/builtins/url.rs | 22 + crates/runtime/src/builtins/vec.rs | 168 + crates/runtime/src/builtins/writer.rs | 34 + crates/runtime/src/formats/csv/de.rs | 504 + crates/runtime/src/formats/csv/ser.rs | 443 + crates/runtime/src/formats/json/de.rs | 26 + crates/runtime/src/formats/json/ser.rs | 27 + crates/runtime/src/formats/mod.rs | 27 + crates/runtime/src/lib.rs | 82 + crates/runtime/src/logging/mod.rs | 22 + crates/runtime/src/runner/context.rs | 149 + crates/runtime/src/runner/current_thread.rs | 18 + crates/runtime/src/runner/data_parallel.rs | 42 + crates/runtime/src/runner/env.rs | 4 + crates/runtime/src/runner/mod.rs | 8 + .../src/runner/pinned_data_parallel.rs | 78 + crates/runtime/src/runner/single_thread.rs | 21 + crates/runtime/src/runner/task_parallel.rs | 25 + crates/runtime/src/runner/threadpool.rs | 88 + crates/runtime/src/state/mod.rs | 111 + crates/runtime/src/traits/mod.rs | 125 + crates/runtime/tests/window.rs | 32 + crates/tree-sitter-aqua/.gitignore | 2 + crates/tree-sitter-aqua/Cargo.lock | 170 + crates/tree-sitter-aqua/Cargo.toml | 24 + crates/tree-sitter-aqua/binding.gyp | 19 + .../tree-sitter-aqua/bindings/node/binding.cc | 28 + .../tree-sitter-aqua/bindings/node/index.js | 19 + .../tree-sitter-aqua/bindings/rust/build.rs | 15 + crates/tree-sitter-aqua/bindings/rust/lib.rs | 145 + crates/tree-sitter-aqua/build/Makefile | 342 + .../bindings/node/binding.o.d | 65 + .../src/parser.o.d | 5 + .../tree_sitter_arclang_binding.node.d | 1 + .../bindings/node/binding.o | Bin 0 -> 257192 bytes .../tree_sitter_aqua_binding/src/parser.o | Bin 0 -> 283416 bytes .../Release/tree_sitter_aqua_binding.node | Bin 0 -> 304989 bytes .../tree-sitter-aqua/build/binding.Makefile | 6 + crates/tree-sitter-aqua/build/config.gypi | 388 + crates/tree-sitter-aqua/build/gyp-mac-tool | 772 + .../build/node_gyp_bins/python3 | Bin 0 -> 3572832 bytes .../build/tree_sitter_aqua_binding.target.mk | 198 + crates/tree-sitter-aqua/grammar.js | 325 + crates/tree-sitter-aqua/package-lock.json | 47 + crates/tree-sitter-aqua/package.json | 17 + crates/tree-sitter-aqua/parser/aqua.so | Bin 0 -> 132983 bytes .../queries/aqua/highlights.scm | 60 + .../queries/aqua/injections.scm | 6 + .../tree-sitter-aqua/queries/aqua/locals.scm | 17 + crates/tree-sitter-aqua/queries/aqua/tags.scm | 0 crates/tree-sitter-aqua/src/grammar.json | 3761 + crates/tree-sitter-aqua/src/node-types.json | 7667 ++ crates/tree-sitter-aqua/src/parser.c | 85355 ++++++++++++++++ .../tree-sitter-aqua/src/tree_sitter/parser.h | 224 + experiments/libffi/library/Cargo.lock | 127 + experiments/libffi/library/Cargo.toml | 13 + experiments/libffi/library/src/lib.rs | 66 + experiments/libffi/loader/Cargo.lock | 127 + experiments/libffi/loader/Cargo.toml | 10 + experiments/libffi/loader/build.rs | 24 + experiments/libffi/loader/src/lib.rs | 254 + experiments/nexmark/.gitignore | 6 + experiments/nexmark/Dockerfile | 35 + experiments/nexmark/README.md | 21 + experiments/nexmark/data-generator/Cargo.lock | 367 + experiments/nexmark/data-generator/Cargo.toml | 12 + .../nexmark/data-generator/src/main.rs | 85 + experiments/nexmark/docker.sh | 6 + experiments/nexmark/flink-conf.yaml | 319 + .../output-old/experiment1-io-plot.pdf | Bin 0 -> 126614 bytes .../nexmark/output-old/experiment1-plot.pdf | Bin 0 -> 125956 bytes .../output-old/experiment1-results.json | 189 + .../nexmark/output-old/experiment2-plot.pdf | Bin 0 -> 125192 bytes .../output-old/experiment2-results.json | 83 + .../output-old2/experiment1-io-plot.pdf | Bin 0 -> 126716 bytes .../nexmark/output-old2/experiment1-plot.pdf | Bin 0 -> 126044 bytes .../output-old2/experiment1-results.json | 186 + experiments/nexmark/queries/flink/pom.xml | 93 + .../flink/src/main/java/org/example/Main.java | 158 + .../main/java/org/example/data/Auction.java | 43 + .../src/main/java/org/example/data/Bid.java | 38 + .../main/java/org/example/data/Person.java | 38 + .../java/org/example/io/CsvFileIterator.java | 43 + .../java/org/example/io/CsvMmapIterator.java | 49 + .../main/java/org/example/io/DataSink.java | 14 + .../main/java/org/example/io/DataSource.java | 65 + .../java/org/example/operators/FilterMap.java | 25 + .../src/main/java/org/example/queries/Q1.java | 41 + .../src/main/java/org/example/queries/Q2.java | 57 + .../src/main/java/org/example/queries/Q3.java | 119 + .../src/main/java/org/example/queries/Q4.java | 185 + .../src/main/java/org/example/queries/Q5.java | 132 + .../src/main/java/org/example/queries/Q6.java | 149 + .../src/main/java/org/example/queries/Q7.java | 103 + .../src/main/java/org/example/queries/Q8.java | 88 + .../src/main/java/org/example/queries/QW.java | 133 + experiments/nexmark/queries/shark/Cargo.lock | 1049 + experiments/nexmark/queries/shark/Cargo.toml | 19 + experiments/nexmark/queries/shark/src/data.rs | 41 + experiments/nexmark/queries/shark/src/main.rs | 137 + experiments/nexmark/queries/shark/src/q1.rs | 25 + experiments/nexmark/queries/shark/src/q2.rs | 39 + experiments/nexmark/queries/shark/src/q3.rs | 79 + experiments/nexmark/queries/shark/src/q4.rs | 88 + experiments/nexmark/queries/shark/src/q5.rs | 46 + experiments/nexmark/queries/shark/src/q6.rs | 89 + experiments/nexmark/queries/shark/src/q7.rs | 40 + experiments/nexmark/queries/shark/src/q8.rs | 58 + experiments/nexmark/queries/shark/src/qw.rs | 86 + experiments/nexmark/run.py | 334 + experiments/wasm/guest-js/component.wit | 6 + experiments/wasm/guest-js/lib.js | 7 + experiments/wasm/guest-js/package-lock.json | 701 + experiments/wasm/guest-js/package.json | 6 + experiments/wasm/guest-py/component.wit | 5 + .../wasm/guest-py/component/__init__.py | 16 + experiments/wasm/guest-py/component/types.py | 24 + experiments/wasm/guest-py/lib.py | 9 + experiments/wasm/guest-rs/.cargo/config.toml | 2 + .../wasm/guest-rs/.vscode/settings.json | 10 + experiments/wasm/guest-rs/Cargo.lock | 665 + experiments/wasm/guest-rs/Cargo.toml | 15 + experiments/wasm/guest-rs/src/lib.rs | 71 + experiments/wasm/guest-rs/wit/component.wit | 12 + experiments/wasm/host/Cargo.lock | 2687 + experiments/wasm/host/Cargo.toml | 13 + experiments/wasm/host/build.rs | 99 + experiments/wasm/host/cat.png | Bin 0 -> 219484 bytes experiments/wasm/host/cat_resized.png | Bin 0 -> 17685 bytes experiments/wasm/host/src/lib.rs | 216 + 319 files changed, 138232 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 .github/workflows/test.yml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 Dockerfile create mode 100644 crates/.DS_Store create mode 100644 crates/aqua-ls/Cargo.toml create mode 100644 crates/aqua-ls/src/main.rs create mode 100644 crates/aqua/Cargo.toml create mode 100644 crates/aqua/build.rs create mode 100644 crates/aqua/src/input.rs create mode 100644 crates/aqua/src/logging.rs create mode 100644 crates/aqua/src/main.rs create mode 100644 crates/aqua/src/version.rs create mode 100644 crates/compiler/Cargo.lock create mode 100644 crates/compiler/Cargo.toml create mode 100644 crates/compiler/fuzz/.gitignore create mode 100644 crates/compiler/fuzz/Cargo.toml create mode 100644 crates/compiler/fuzz/fuzz_targets/fuzz_lexer.rs create mode 100644 crates/compiler/fuzz/fuzz_targets/fuzz_parser.rs create mode 100644 crates/compiler/src/annotate.rs create mode 100644 crates/compiler/src/apply.rs create mode 100644 crates/compiler/src/ast.rs create mode 100644 crates/compiler/src/builtins/conv.rs create mode 100644 crates/compiler/src/builtins/de.rs create mode 100644 crates/compiler/src/builtins/dynamic/array.rs create mode 100644 crates/compiler/src/builtins/dynamic/dataflow.rs create mode 100644 crates/compiler/src/builtins/dynamic/function.rs create mode 100644 crates/compiler/src/builtins/dynamic/instance.rs create mode 100644 crates/compiler/src/builtins/dynamic/matrix.rs create mode 100644 crates/compiler/src/builtins/dynamic/record.rs create mode 100644 crates/compiler/src/builtins/dynamic/stream.rs create mode 100644 crates/compiler/src/builtins/dynamic/tuple.rs create mode 100644 crates/compiler/src/builtins/dynamic/variant.rs create mode 100644 crates/compiler/src/builtins/eq.rs create mode 100644 crates/compiler/src/builtins/hash.rs create mode 100644 crates/compiler/src/builtins/mod.rs create mode 100644 crates/compiler/src/builtins/ord.rs create mode 100644 crates/compiler/src/builtins/ser.rs create mode 100644 crates/compiler/src/bytecode.rs create mode 100644 crates/compiler/src/codegen.rs create mode 100644 crates/compiler/src/diag.rs create mode 100644 crates/compiler/src/display.rs create mode 100644 crates/compiler/src/ffi.rs create mode 100644 crates/compiler/src/helper.rs create mode 100644 crates/compiler/src/infer.rs create mode 100644 crates/compiler/src/interpret.rs create mode 100644 crates/compiler/src/lexer.rs create mode 100644 crates/compiler/src/lib.rs create mode 100644 crates/compiler/src/lift.rs create mode 100644 crates/compiler/src/opt.rs create mode 100644 crates/compiler/src/parser.rs create mode 100644 crates/compiler/src/parser2.rs create mode 100644 crates/compiler/src/prelude.rs create mode 100644 crates/compiler/src/print.rs create mode 100644 crates/compiler/src/resolve.rs create mode 100644 crates/compiler/src/util.rs create mode 100644 crates/compiler/tests/display.rs create mode 100644 crates/compiler/tests/infer.rs create mode 100644 crates/compiler/tests/interpret.rs create mode 100644 crates/compiler/tests/lexer.rs create mode 100644 crates/compiler/tests/parser.rs create mode 100644 crates/compiler/tests/parser2.rs create mode 100644 crates/compiler/tests/resolve.rs create mode 100644 crates/compiler/tests/ser.rs create mode 100644 crates/compiler/tests/source.rs create mode 100644 crates/compiler/tests/traits.rs create mode 100644 crates/compiler/tests/unify.rs create mode 100644 crates/config/Cargo.toml create mode 100644 crates/config/src/lib.rs create mode 100644 crates/macros/.DS_Store create mode 100644 crates/macros/Cargo.lock create mode 100644 crates/macros/Cargo.toml create mode 100644 crates/macros/src/.DS_Store create mode 100644 crates/macros/src/lib.rs create mode 100644 crates/macros/src/proc_macro_attrs.rs create mode 100644 crates/macros/src/proc_macro_attrs/.DS_Store create mode 100644 crates/macros/src/proc_macro_attrs/export/functions.rs create mode 100644 crates/macros/src/proc_macro_attrs/export/impls.rs create mode 100644 crates/macros/src/proc_macro_attrs/rewrite/.DS_Store create mode 100644 crates/macros/src/proc_macro_attrs/rewrite/enums.rs create mode 100644 crates/macros/src/proc_macro_attrs/rewrite/externs.rs create mode 100644 crates/macros/src/proc_macro_attrs/rewrite/functions.rs create mode 100644 crates/macros/src/proc_macro_attrs/rewrite/main.rs create mode 100644 crates/macros/src/proc_macro_attrs/rewrite/structs.rs create mode 100644 crates/macros/src/proc_macro_derives.rs create mode 100644 crates/macros/src/proc_macros.rs create mode 100644 crates/macros/src/utils.rs create mode 100644 crates/opt/Cargo.lock create mode 100644 crates/opt/Cargo.toml create mode 100644 crates/opt/src/analysis.rs create mode 100644 crates/opt/src/cost.rs create mode 100644 crates/opt/src/lang.rs create mode 100644 crates/opt/src/lib.rs create mode 100644 crates/opt/src/rules.rs create mode 100644 crates/opt/tests/basic.rs create mode 100644 crates/opt/tests/dataflow.rs create mode 100644 crates/opt/tests/udaf.rs create mode 100644 crates/repl/Cargo.toml create mode 100644 crates/repl/src/helper/completer.rs create mode 100644 crates/repl/src/helper/highlighter.rs create mode 100644 crates/repl/src/helper/hinter.rs create mode 100644 crates/repl/src/helper/mod.rs create mode 100644 crates/repl/src/helper/validator.rs create mode 100644 crates/repl/src/lib.rs create mode 100644 crates/runtime/.cargo/config.toml create mode 100644 crates/runtime/Cargo.toml create mode 100644 crates/runtime/benches/iter.rs create mode 100644 crates/runtime/benches/vec.rs create mode 100644 crates/runtime/src/builtins/aggregator.rs create mode 100644 crates/runtime/src/builtins/array.rs create mode 100644 crates/runtime/src/builtins/assigner.rs create mode 100644 crates/runtime/src/builtins/blob.rs create mode 100644 crates/runtime/src/builtins/cell.rs create mode 100644 crates/runtime/src/builtins/channel.rs create mode 100644 crates/runtime/src/builtins/channel/spsc.rs create mode 100644 crates/runtime/src/builtins/cow.rs create mode 100644 crates/runtime/src/builtins/dataflow.rs create mode 100644 crates/runtime/src/builtins/dataframe.rs create mode 100644 crates/runtime/src/builtins/dict.rs create mode 100644 crates/runtime/src/builtins/duration.rs create mode 100644 crates/runtime/src/builtins/encoding.rs create mode 100644 crates/runtime/src/builtins/file.rs create mode 100644 crates/runtime/src/builtins/im_string.rs create mode 100644 crates/runtime/src/builtins/image.rs create mode 100644 crates/runtime/src/builtins/keyed_stream.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/drain.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/filter.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/flat_map.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/fork.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/incr_window.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/join.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/keyby.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/map.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/merge.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/scan.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/sink.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/unkey.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/window.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/window/count_sliding_holistic.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/window/time_sliding_aligned_commutative_associative.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/window/time_sliding_aligned_holistic.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/window/time_tumbling_holistic.rs create mode 100644 crates/runtime/src/builtins/keyed_stream/window/time_tumbling_holistic_vec.rs create mode 100644 crates/runtime/src/builtins/matrix.rs create mode 100644 crates/runtime/src/builtins/mod.rs create mode 100644 crates/runtime/src/builtins/model.rs create mode 100644 crates/runtime/src/builtins/option.rs create mode 100644 crates/runtime/src/builtins/path.rs create mode 100644 crates/runtime/src/builtins/reader.rs create mode 100644 crates/runtime/src/builtins/result.rs create mode 100644 crates/runtime/src/builtins/set.rs create mode 100644 crates/runtime/src/builtins/socket.rs create mode 100644 crates/runtime/src/builtins/stream.rs create mode 100644 crates/runtime/src/builtins/stream/assert.rs create mode 100644 crates/runtime/src/builtins/stream/batch.rs create mode 100644 crates/runtime/src/builtins/stream/drain.rs create mode 100644 crates/runtime/src/builtins/stream/filter.rs create mode 100644 crates/runtime/src/builtins/stream/filter_map.rs create mode 100644 crates/runtime/src/builtins/stream/flat_map.rs create mode 100644 crates/runtime/src/builtins/stream/fork.rs create mode 100644 crates/runtime/src/builtins/stream/join.rs create mode 100644 crates/runtime/src/builtins/stream/join/interval_join.rs create mode 100644 crates/runtime/src/builtins/stream/join/interval_join_forward.rs create mode 100644 crates/runtime/src/builtins/stream/join/tumbling_window_join.rs create mode 100644 crates/runtime/src/builtins/stream/join/tumbling_window_join_distinct.rs create mode 100644 crates/runtime/src/builtins/stream/keyby.rs create mode 100644 crates/runtime/src/builtins/stream/map.rs create mode 100644 crates/runtime/src/builtins/stream/merge.rs create mode 100644 crates/runtime/src/builtins/stream/operator.rs create mode 100644 crates/runtime/src/builtins/stream/scan.rs create mode 100644 crates/runtime/src/builtins/stream/sink.rs create mode 100644 crates/runtime/src/builtins/stream/source.rs create mode 100644 crates/runtime/src/builtins/stream/window.rs create mode 100644 crates/runtime/src/builtins/stream/window/count_sliding_aligned_commutative_associative.rs create mode 100644 crates/runtime/src/builtins/stream/window/count_sliding_holistic.rs create mode 100644 crates/runtime/src/builtins/stream/window/count_sliding_invertible.rs create mode 100644 crates/runtime/src/builtins/stream/window/count_tumbling_holistic.rs create mode 100644 crates/runtime/src/builtins/stream/window/time_sliding_aligned_commutative_associative.rs create mode 100644 crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic.rs create mode 100644 crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic_vec.rs create mode 100644 crates/runtime/src/builtins/stream/window/time_sliding_commutative_invertible.rs create mode 100644 crates/runtime/src/builtins/stream/window/time_sliding_invertible.rs create mode 100644 crates/runtime/src/builtins/stream/window/time_tumbling_holistic.rs create mode 100644 crates/runtime/src/builtins/string.rs create mode 100644 crates/runtime/src/builtins/time.rs create mode 100644 crates/runtime/src/builtins/time_source.rs create mode 100644 crates/runtime/src/builtins/unchecked_cell.rs create mode 100644 crates/runtime/src/builtins/url.rs create mode 100644 crates/runtime/src/builtins/vec.rs create mode 100644 crates/runtime/src/builtins/writer.rs create mode 100644 crates/runtime/src/formats/csv/de.rs create mode 100644 crates/runtime/src/formats/csv/ser.rs create mode 100644 crates/runtime/src/formats/json/de.rs create mode 100644 crates/runtime/src/formats/json/ser.rs create mode 100644 crates/runtime/src/formats/mod.rs create mode 100644 crates/runtime/src/lib.rs create mode 100644 crates/runtime/src/logging/mod.rs create mode 100644 crates/runtime/src/runner/context.rs create mode 100644 crates/runtime/src/runner/current_thread.rs create mode 100644 crates/runtime/src/runner/data_parallel.rs create mode 100644 crates/runtime/src/runner/env.rs create mode 100644 crates/runtime/src/runner/mod.rs create mode 100644 crates/runtime/src/runner/pinned_data_parallel.rs create mode 100644 crates/runtime/src/runner/single_thread.rs create mode 100644 crates/runtime/src/runner/task_parallel.rs create mode 100644 crates/runtime/src/runner/threadpool.rs create mode 100644 crates/runtime/src/state/mod.rs create mode 100644 crates/runtime/src/traits/mod.rs create mode 100644 crates/runtime/tests/window.rs create mode 100644 crates/tree-sitter-aqua/.gitignore create mode 100644 crates/tree-sitter-aqua/Cargo.lock create mode 100644 crates/tree-sitter-aqua/Cargo.toml create mode 100644 crates/tree-sitter-aqua/binding.gyp create mode 100644 crates/tree-sitter-aqua/bindings/node/binding.cc create mode 100644 crates/tree-sitter-aqua/bindings/node/index.js create mode 100644 crates/tree-sitter-aqua/bindings/rust/build.rs create mode 100644 crates/tree-sitter-aqua/bindings/rust/lib.rs create mode 100644 crates/tree-sitter-aqua/build/Makefile create mode 100644 crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d create mode 100644 crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d create mode 100644 crates/tree-sitter-aqua/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d create mode 100644 crates/tree-sitter-aqua/build/Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o create mode 100644 crates/tree-sitter-aqua/build/Release/obj.target/tree_sitter_aqua_binding/src/parser.o create mode 100755 crates/tree-sitter-aqua/build/Release/tree_sitter_aqua_binding.node create mode 100644 crates/tree-sitter-aqua/build/binding.Makefile create mode 100644 crates/tree-sitter-aqua/build/config.gypi create mode 100755 crates/tree-sitter-aqua/build/gyp-mac-tool create mode 100755 crates/tree-sitter-aqua/build/node_gyp_bins/python3 create mode 100644 crates/tree-sitter-aqua/build/tree_sitter_aqua_binding.target.mk create mode 100644 crates/tree-sitter-aqua/grammar.js create mode 100644 crates/tree-sitter-aqua/package-lock.json create mode 100644 crates/tree-sitter-aqua/package.json create mode 100755 crates/tree-sitter-aqua/parser/aqua.so create mode 100644 crates/tree-sitter-aqua/queries/aqua/highlights.scm create mode 100644 crates/tree-sitter-aqua/queries/aqua/injections.scm create mode 100644 crates/tree-sitter-aqua/queries/aqua/locals.scm create mode 100644 crates/tree-sitter-aqua/queries/aqua/tags.scm create mode 100644 crates/tree-sitter-aqua/src/grammar.json create mode 100644 crates/tree-sitter-aqua/src/node-types.json create mode 100644 crates/tree-sitter-aqua/src/parser.c create mode 100644 crates/tree-sitter-aqua/src/tree_sitter/parser.h create mode 100644 experiments/libffi/library/Cargo.lock create mode 100644 experiments/libffi/library/Cargo.toml create mode 100644 experiments/libffi/library/src/lib.rs create mode 100644 experiments/libffi/loader/Cargo.lock create mode 100644 experiments/libffi/loader/Cargo.toml create mode 100644 experiments/libffi/loader/build.rs create mode 100644 experiments/libffi/loader/src/lib.rs create mode 100644 experiments/nexmark/.gitignore create mode 100644 experiments/nexmark/Dockerfile create mode 100644 experiments/nexmark/README.md create mode 100644 experiments/nexmark/data-generator/Cargo.lock create mode 100644 experiments/nexmark/data-generator/Cargo.toml create mode 100644 experiments/nexmark/data-generator/src/main.rs create mode 100755 experiments/nexmark/docker.sh create mode 100644 experiments/nexmark/flink-conf.yaml create mode 100644 experiments/nexmark/output-old/experiment1-io-plot.pdf create mode 100644 experiments/nexmark/output-old/experiment1-plot.pdf create mode 100644 experiments/nexmark/output-old/experiment1-results.json create mode 100644 experiments/nexmark/output-old/experiment2-plot.pdf create mode 100644 experiments/nexmark/output-old/experiment2-results.json create mode 100644 experiments/nexmark/output-old2/experiment1-io-plot.pdf create mode 100644 experiments/nexmark/output-old2/experiment1-plot.pdf create mode 100644 experiments/nexmark/output-old2/experiment1-results.json create mode 100644 experiments/nexmark/queries/flink/pom.xml create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/Main.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/data/Auction.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/data/Bid.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/data/Person.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/io/CsvFileIterator.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/io/CsvMmapIterator.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/io/DataSink.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/io/DataSource.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/operators/FilterMap.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q1.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q2.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q3.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q4.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q5.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q6.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q7.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/Q8.java create mode 100644 experiments/nexmark/queries/flink/src/main/java/org/example/queries/QW.java create mode 100644 experiments/nexmark/queries/shark/Cargo.lock create mode 100644 experiments/nexmark/queries/shark/Cargo.toml create mode 100644 experiments/nexmark/queries/shark/src/data.rs create mode 100644 experiments/nexmark/queries/shark/src/main.rs create mode 100644 experiments/nexmark/queries/shark/src/q1.rs create mode 100644 experiments/nexmark/queries/shark/src/q2.rs create mode 100644 experiments/nexmark/queries/shark/src/q3.rs create mode 100644 experiments/nexmark/queries/shark/src/q4.rs create mode 100644 experiments/nexmark/queries/shark/src/q5.rs create mode 100644 experiments/nexmark/queries/shark/src/q6.rs create mode 100644 experiments/nexmark/queries/shark/src/q7.rs create mode 100644 experiments/nexmark/queries/shark/src/q8.rs create mode 100644 experiments/nexmark/queries/shark/src/qw.rs create mode 100644 experiments/nexmark/run.py create mode 100644 experiments/wasm/guest-js/component.wit create mode 100644 experiments/wasm/guest-js/lib.js create mode 100644 experiments/wasm/guest-js/package-lock.json create mode 100644 experiments/wasm/guest-js/package.json create mode 100644 experiments/wasm/guest-py/component.wit create mode 100644 experiments/wasm/guest-py/component/__init__.py create mode 100644 experiments/wasm/guest-py/component/types.py create mode 100644 experiments/wasm/guest-py/lib.py create mode 100644 experiments/wasm/guest-rs/.cargo/config.toml create mode 100644 experiments/wasm/guest-rs/.vscode/settings.json create mode 100644 experiments/wasm/guest-rs/Cargo.lock create mode 100644 experiments/wasm/guest-rs/Cargo.toml create mode 100644 experiments/wasm/guest-rs/src/lib.rs create mode 100644 experiments/wasm/guest-rs/wit/component.wit create mode 100644 experiments/wasm/host/Cargo.lock create mode 100644 experiments/wasm/host/Cargo.toml create mode 100644 experiments/wasm/host/build.rs create mode 100644 experiments/wasm/host/cat.png create mode 100644 experiments/wasm/host/cat_resized.png create mode 100644 experiments/wasm/host/src/lib.rs diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..bff29e6 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +rustflags = ["--cfg", "tokio_unstable"] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..b03c3f5 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,12 @@ +name: Test +on: [push, pull_request] + +jobs: + test: + name: cargo test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - run: cargo test + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ab10ba8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +target/ +output/ +**/__pycache__/ +**/*.wasm +**/.DS_Store +node_modules/ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..a9be476 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3370 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "ammonia" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e6d1c7838db705c9b756557ee27c384ce695a1c51a6fe528784cb1c6840170" +dependencies = [ + "html5ever", + "maplit", + "once_cell", + "tendril", + "url", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstream" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" + +[[package]] +name = "aqua" +version = "0.0.0" +dependencies = [ + "anyhow", + "built", + "compiler", + "config", + "repl", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "aqua-ls" +version = "0.0.0" +dependencies = [ + "compiler", + "lsp-server", + "lsp-types", + "serde", + "serde_json", +] + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" + +[[package]] +name = "ariadne" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd002a6223f12c7a95cdd4b1cb3a0149d22d37f7a9ecdb2cb691a071fe236c29" +dependencies = [ + "unicode-width", + "yansi", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "bitmask-enum" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9990737a6d5740ff51cdbbc0f0503015cb30c390f6623968281eb214a520cfc0" +dependencies = [ + "quote", + "syn 2.0.48", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bstr" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +dependencies = [ + "memchr", + "regex-automata 0.4.5", + "serde", +] + +[[package]] +name = "btree-slab" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2b56d3029f075c4fa892428a098425b86cef5c89ae54073137ece416aef13c" +dependencies = [ + "cc-traits", + "slab", + "smallvec", +] + +[[package]] +name = "built" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53" +dependencies = [ + "chrono", +] + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cc-traits" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "060303ef31ef4a522737e1b1ab68c67916f2a787bb2f4f54f383279adba962b5" +dependencies = [ + "slab", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.0", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", +] + +[[package]] +name = "clap_complete" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "clipboard-win" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ec832972fefb8cf9313b45a0d1945e29c9c251f1d4c6eafc5fe2124c02d2e81" +dependencies = [ + "error-code", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "compiler" +version = "0.0.0" +dependencies = [ + "ariadne", + "bitmask-enum", + "config", + "egg", + "ena", + "indoc", + "libffi", + "runtime", + "serde", + "serde_json", + "similar", + "smol_str", + "stacker", +] + +[[package]] +name = "compiler-fuzz" +version = "0.0.0" +dependencies = [ + "compiler", + "libfuzzer-sys", +] + +[[package]] +name = "config" +version = "0.0.0" +dependencies = [ + "clap", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "egg" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96beaf9d35dbc4686bc86a4ecb851fd6a406f0bf32d9f646b1225a5c5cf5b5d7" +dependencies = [ + "env_logger 0.9.3", + "fxhash", + "hashbrown 0.12.3", + "indexmap 1.9.3", + "instant", + "log", + "smallvec", + "symbol_table", + "symbolic_expressions", + "thiserror", +] + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "elasticlunr-rs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41e83863a500656dfa214fee6682de9c5b9f03de6860fec531235ed2ae9f6571" +dependencies = [ + "regex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "env_filter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "log", +] + +[[package]] +name = "env_logger" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "error-code" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "281e452d3bad4005426416cdba5ccfd4f5c1280e10099e21db27f7c1c28347fc" + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fd-lock" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" +dependencies = [ + "cfg-if", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.52.0", +] + +[[package]] +name = "flexbuffers" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15d14128f06405808ce75bfebe11e9b0f9da18719ede6d7bdb1702d6bfe0f7e8" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "num_enum", + "serde", + "serde_derive", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.5", + "regex-syntax 0.8.2", +] + +[[package]] +name = "h2" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.2", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "halfbrown" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5681137554ddff44396e5f149892c769d45301dd9aa19c51602a89ee214cb0ec" +dependencies = [ + "hashbrown 0.13.2", +] + +[[package]] +name = "handlebars" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab283476b99e66691dee3f1640fea91487a8d81f50fb5ecc75538f8f8879a1e4" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.7", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.7", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.7", + "allocator-api2", +] + +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.5", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "indoc" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" + +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kqueue" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "lasso" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4644821e1c3d7a560fe13d842d13f587c07348a1a05d3a797152d41c90c56df2" +dependencies = [ + "hashbrown 0.13.2", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libffi" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce826c243048e3d5cec441799724de52e2d42f820468431fc3fceee2341871e2" +dependencies = [ + "libc", + "libffi-sys", +] + +[[package]] +name = "libffi-sys" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36115160c57e8529781b4183c2bb51fdc1f6d6d1ed345591d84be7703befb3c" +dependencies = [ + "cc", +] + +[[package]] +name = "libfuzzer-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7" +dependencies = [ + "arbitrary", + "cc", + "once_cell", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "lsp-server" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248f65b78f6db5d8e1b1604b4098a28b43d21a8eb1deeca22b1c421b276c7095" +dependencies = [ + "crossbeam-channel", + "log", + "serde", + "serde_json", +] + +[[package]] +name = "lsp-types" +version = "0.95.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "158c1911354ef73e8fe42da6b10c0484cb65c7f1007f28022e847706c1ab6984" +dependencies = [ + "bitflags 1.3.2", + "serde", + "serde_json", + "serde_repr", + "url", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "macros" +version = "0.0.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "mdbook" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c33564061c3c640bed5ace7d6a2a1b65f2c64257d1ac930c15e94ed0fb561d3" +dependencies = [ + "ammonia", + "anyhow", + "chrono", + "clap", + "clap_complete", + "elasticlunr-rs", + "env_logger 0.11.2", + "futures-util", + "handlebars", + "ignore", + "log", + "memchr", + "notify", + "notify-debouncer-mini", + "once_cell", + "opener", + "pathdiff", + "pulldown-cmark", + "regex", + "serde", + "serde_json", + "shlex", + "tempfile", + "tokio", + "toml", + "topological-sort", + "warp", +] + +[[package]] +name = "mdbook-aqua" +version = "0.0.0" +dependencies = [ + "anyhow", + "colored", + "indoc", + "mdbook", + "regex", + "repl", + "serde_json", +] + +[[package]] +name = "mdbook-exec" +version = "0.0.0" +dependencies = [ + "anyhow", + "mdbook", + "regex", + "serde_json", +] + +[[package]] +name = "mdbook-grammar" +version = "0.0.0" +dependencies = [ + "anyhow", + "mdbook", + "regex", + "serde_json", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.2", + "cfg-if", + "libc", +] + +[[package]] +name = "normpath" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5831952a9476f2fed74b77d74182fa5ddc4d21c72ec45a333b250e3ed0272804" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "notify" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +dependencies = [ + "bitflags 2.4.2", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "walkdir", + "windows-sys 0.48.0", +] + +[[package]] +name = "notify-debouncer-mini" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d40b221972a1fc5ef4d858a2f671fb34c75983eb385463dff3780eeff6a9d43" +dependencies = [ + "crossbeam-channel", + "log", + "notify", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "opener" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c62dcb6174f9cb326eac248f07e955d5d559c272730b6c03e396b443b562788" +dependencies = [ + "bstr", + "normpath", + "winapi", +] + +[[package]] +name = "opt" +version = "0.0.0" +dependencies = [ + "egg", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e1288dbd7786462961e69bfd4df7848c1e37e8b74303dbdab82c3a9cdd2809" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1381c29a877c6d34b8c176e734f35d7f7f5b3adaefe940cb4d1bb7af94678e2e" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "pest_meta" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0934d6907f148c22a3acbda520c7eed243ad7487a30f51f6ce52b58b7077a8a" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "plotters" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" + +[[package]] +name = "plotters-svg" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "pulldown-cmark" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce76ce678ffc8e5675b22aa1405de0b7037e2fdf8913fea40d1926c6fe1e6e7" +dependencies = [ + "bitflags 2.4.2", + "memchr", + "pulldown-cmark-escape", + "unicase", +] + +[[package]] +name = "pulldown-cmark-escape" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d8f9aa0e3cbcfaf8bf00300004ee3b72f74770f9cbac93f6928771f613276b" + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.5", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "repl" +version = "0.0.0" +dependencies = [ + "anyhow", + "colored", + "compiler", + "regex", + "rustyline", +] + +[[package]] +name = "rmp" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "runtime" +version = "0.0.0" +dependencies = [ + "arrayvec", + "atoi", + "btree-slab", + "ciborium", + "criterion", + "csv-core", + "derive_more", + "flexbuffers", + "futures", + "halfbrown", + "itoa", + "lasso", + "lexical-parse-float", + "macros", + "num", + "rand", + "rmp", + "rustc-hash", + "ryu", + "serde", + "serde_derive", + "serde_json", + "smallstr", + "smallvec", + "smartstring", + "smol_str", + "tikv-jemallocator", + "time", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + +[[package]] +name = "rustyline" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02a2d683a4ac90aeef5b1013933f6d977bd37d51ff3f4dad829d4931a7e6be86" +dependencies = [ + "bitflags 2.4.2", + "cfg-if", + "clipboard-win", + "fd-lock", + "home", + "libc", + "log", + "memchr", + "nix", + "radix_trie", + "rustyline-derive", + "unicode-segmentation", + "unicode-width", + "utf8parse", + "winapi", +] + +[[package]] +name = "rustyline-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5af959c8bf6af1aff6d2b463a57f71aae53d1332da58419e30ad8dc7011d951" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "similar" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallstr" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b1aefdf380735ff8ded0b15f31aab05daf1f70216c01c02a12926badd1df9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "serde", + "static_assertions", + "version_check", +] + +[[package]] +name = "smol_str" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "winapi", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "symbol_table" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32bf088d1d7df2b2b6711b06da3471bc86677383c57b27251e18c56df8deac14" +dependencies = [ + "ahash 0.7.7", + "hashbrown 0.12.3", +] + +[[package]] +name = "symbolic_expressions" +version = "5.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c68d531d83ec6c531150584c42a4290911964d5f0d79132b193b67252a23b71" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "terminal_size" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +dependencies = [ + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "thiserror" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.5.4+5.3.0-patched" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "futures-util", + "hashbrown 0.14.3", + "pin-project-lite", + "slab", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.2", + "toml_datetime", + "winnow", +] + +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "warp" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e92e22e03ff1230c03a1a8ee37d2f89cd489e2e541b7550d6afad96faed169" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "headers", + "http", + "hyper", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "rustls-pemfile", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tokio-util", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" + +[[package]] +name = "web-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winnow" +version = "0.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" +dependencies = [ + "memchr", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..4d62e4c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[workspace] +members = ["crates/*", "crates/compiler/fuzz"] +exclude = ["crates/tree-sitter-aqua"] +resolver = "2" + +[workspace.package] +version = "0.0.0" +edition = "2021" +authors = ["Aqua Team"] +readme = "README.md" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a840ab5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM ubuntu:20.04 + +# Set the noninteractive timezone (prevents configuration prompts) +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/London + +# Set a working directory +WORKDIR /aqua + +# Install apt packages +RUN apt-get update && apt-get install -y \ + curl wget software-properties-common + +# Install Rust +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +ENV PATH="/root/.cargo/bin:${PATH}" + +# Cleanup +RUN apt-get clean + +# Copy the Rust code into the image +COPY Cargo.toml /aqua/ +COPY Cargo.lock /aqua/ +COPY .cargo /aqua/.cargo +COPY crates /aqua/crates diff --git a/crates/.DS_Store b/crates/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3627fe7bcb63a69d606530fa318acc40d438f1ad GIT binary patch literal 6148 zcmeHK%}T>S5T0$T-6}#4Djow~1uOW2c!{;XfDt{Y)TRjN#J+u<;4RLr;Q-?6PXZrK8Bp12C*l)RndvPw#;>u zgO_-zUS96?cDARN$WkKTr?$O{dR@JSO z#G#0<&_{ViNT35Tq*!$XKAl;AzUHx-!mACZDWc)Ccq}3kwVJM)UpzkKUY=g}C%K7) z_l>C5^;fHn{Q|gF!>Ag>hL^-8xYm-L)3#B`OKUWeQ~q4*EKl g23^G~s8Y~pk%4Gy%oO4biuofTX)uFf;71vF2L~dnegFUf literal 0 HcmV?d00001 diff --git a/crates/aqua-ls/Cargo.toml b/crates/aqua-ls/Cargo.toml new file mode 100644 index 0000000..a94ca4f --- /dev/null +++ b/crates/aqua-ls/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "aqua-ls" +version.workspace = true +edition.workspace = true + +[dependencies] +compiler = { path = "../compiler" } + +lsp-server = "0.7.6" +lsp-types = "0.95.0" +serde_json = "1.0.113" +serde = { version = "1.0.113", features = ["derive"] } diff --git a/crates/aqua-ls/src/main.rs b/crates/aqua-ls/src/main.rs new file mode 100644 index 0000000..5c7795d --- /dev/null +++ b/crates/aqua-ls/src/main.rs @@ -0,0 +1,91 @@ +use std::error::Error; + +use lsp_types::request::GotoDefinition; +use lsp_types::DiagnosticOptions; +use lsp_types::DiagnosticServerCapabilities; +use lsp_types::GotoDefinitionResponse; +use lsp_types::InitializeParams; +use lsp_types::ServerCapabilities; + +use lsp_server::Connection; +use lsp_server::ExtractError; +use lsp_server::Message; +use lsp_server::Request; +use lsp_server::RequestId; +use lsp_server::Response; + +fn main() -> Result<(), Box> { + let (connection, io_threads) = Connection::stdio(); + let server_capabilities = serde_json::to_value(ServerCapabilities { + diagnostic_provider: Some(DiagnosticServerCapabilities::Options(DiagnosticOptions { + identifier: None, + inter_file_dependencies: true, + workspace_diagnostics: false, + work_done_progress_options: lsp_types::WorkDoneProgressOptions { + work_done_progress: None, + }, + })), + ..ServerCapabilities::default() + }) + .unwrap(); + let initialization_params = match connection.initialize(server_capabilities) { + Ok(it) => it, + Err(e) => { + if e.channel_is_disconnected() { + io_threads.join()?; + } + return Err(e.into()); + } + }; + main_loop(connection, initialization_params)?; + io_threads.join()?; + Ok(()) +} + +fn main_loop( + connection: Connection, + params: serde_json::Value, +) -> Result<(), Box> { + let _params: InitializeParams = serde_json::from_value(params).unwrap(); + for msg in &connection.receiver { + match msg { + Message::Request(req) => { + if connection.handle_shutdown(&req)? { + return Ok(()); + } + match cast::(req) { + Ok((id, params)) => { + eprintln!("got gotoDefinition request #{id}: {params:?}"); + let result = Some(GotoDefinitionResponse::Array(Vec::new())); + let result = serde_json::to_value(&result).unwrap(); + let resp = Response { + id, + result: Some(result), + error: None, + }; + connection.sender.send(Message::Response(resp))?; + continue; + } + Err(err @ ExtractError::JsonError { .. }) => panic!("{err:?}"), + Err(ExtractError::MethodMismatch(req)) => req, + }; + // ... + } + Message::Response(resp) => { + eprintln!("got response: {resp:?}"); + } + Message::Notification(not) => { + eprintln!("got notification: {not:?}"); + } + } + } + Ok(()) +} + +fn cast(req: Request) -> Result<(RequestId, R::Params), ExtractError> +where + R: lsp_types::request::Request, + R::Params: serde::de::DeserializeOwned, +{ + req.extract(R::METHOD) +} diff --git a/crates/aqua/Cargo.toml b/crates/aqua/Cargo.toml new file mode 100644 index 0000000..ad01132 --- /dev/null +++ b/crates/aqua/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "aqua" +version.workspace = true +edition.workspace = true +build = "build.rs" + +[features] +default = ["repl"] + +[dependencies] +compiler = { path = "../compiler" } +repl = { path = "../repl", optional = true } +config = { path = "../config", features = ["clap"] } + +anyhow = { version = "1.0.79" } +tracing = { version = "0.1.40", features = ["release_max_level_warn"] } +tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } + +[build-dependencies] +built = { version = "0.7.1", features = ["chrono"] } diff --git a/crates/aqua/build.rs b/crates/aqua/build.rs new file mode 100644 index 0000000..4306bb7 --- /dev/null +++ b/crates/aqua/build.rs @@ -0,0 +1,3 @@ +fn main() { + built::write_built_file().expect("Failed to acquire build-time information") +} diff --git a/crates/aqua/src/input.rs b/crates/aqua/src/input.rs new file mode 100644 index 0000000..e8fbeb4 --- /dev/null +++ b/crates/aqua/src/input.rs @@ -0,0 +1,16 @@ +use anyhow::Result; +use std::path::Path; + +pub fn read_file(path: &Path) -> Result<(String, String)> { + let name = path.display().to_string(); + let source = std::fs::read_to_string(path)?; + if path.is_absolute() { + std::env::set_current_dir(path.parent().unwrap())?; + } else { + let mut relative_path = std::env::current_dir()?; + relative_path.push(path); + std::env::set_current_dir(relative_path.parent().unwrap())?; + } + tracing::info!("Updated cwd to: {}", std::env::current_dir()?.display()); + Ok((name, source)) +} diff --git a/crates/aqua/src/logging.rs b/crates/aqua/src/logging.rs new file mode 100644 index 0000000..4c4e0fa --- /dev/null +++ b/crates/aqua/src/logging.rs @@ -0,0 +1,19 @@ +use std::str::FromStr; + +use tracing_subscriber::prelude::*; + +#[cfg(debug_assertions)] +pub const FILTER: &str = "info,librdkafka=off,rdkafka::client=off"; + +#[cfg(not(debug_assertions))] +pub const FILTER: &str = "warn,librdkafka=off,rdkafka::client=off"; + +pub fn init() { + let fmt = tracing_subscriber::fmt::layer() + .with_file(false) + .with_line_number(false) + .compact() + .with_writer(std::io::stderr) + .with_filter(tracing_subscriber::filter::EnvFilter::from_str(FILTER).unwrap()); + tracing_subscriber::registry().with(fmt).init(); +} diff --git a/crates/aqua/src/main.rs b/crates/aqua/src/main.rs new file mode 100644 index 0000000..42f3c94 --- /dev/null +++ b/crates/aqua/src/main.rs @@ -0,0 +1,32 @@ +mod input; +mod logging; +mod version; + +use anyhow::Result; +use compiler::Compiler; +use config::Config; +use repl::Repl; + +fn main() -> Result<()> { + logging::init(); + + let config = Config::parse(); + + if config.version { + version::print(); + return Ok(()); + } + + let compiler = Compiler::new(config); + + if let Some(path) = &compiler.config.file { + let (_name, source) = input::read_file(path)?; + if compiler.config.interactive { + Repl::new(compiler).run(Some(source)) + } else { + todo!() + } + } else { + Repl::new(compiler).run(None) + } +} diff --git a/crates/aqua/src/version.rs b/crates/aqua/src/version.rs new file mode 100644 index 0000000..0002c34 --- /dev/null +++ b/crates/aqua/src/version.rs @@ -0,0 +1,10 @@ +pub fn print() { + mod build { + include!(concat!(env!("OUT_DIR"), "/built.rs")); + } + println!(" version: {}", build::PKG_VERSION); + println!(" target: {}", build::TARGET); + println!(" profile: {}", build::PROFILE); + println!("compiler: {}", build::RUSTC_VERSION); + println!(" time: {}", build::BUILT_TIME_UTC); +} diff --git a/crates/compiler/Cargo.lock b/crates/compiler/Cargo.lock new file mode 100644 index 0000000..d3d0f78 --- /dev/null +++ b/crates/compiler/Cargo.lock @@ -0,0 +1,104 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aqua" +version = "0.1.0" +dependencies = [ + "ariadne", + "indoc", + "smol_str", +] + +[[package]] +name = "ariadne" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd002a6223f12c7a95cdd4b1cb3a0149d22d37f7a9ecdb2cb691a071fe236c29" +dependencies = [ + "unicode-width", + "yansi", +] + +[[package]] +name = "indoc" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "serde" +version = "1.0.195" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.195" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "smol_str" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +dependencies = [ + "serde", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" diff --git a/crates/compiler/Cargo.toml b/crates/compiler/Cargo.toml new file mode 100644 index 0000000..21d0400 --- /dev/null +++ b/crates/compiler/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "compiler" +version.workspace = true +edition.workspace = true + +[dependencies] +config = { path = "../config" } +runtime = { path = "../runtime" } + +ariadne = "0.4.0" +smol_str = { version = "0.2.1", features = ["std"] } +stacker = "0.1.15" +ena = "0.14.2" +libffi = "3.2.0" +serde = { version = "1.0.130", features = ["derive"] } +# chumsky = "1.0.0-alpha.6" +bitmask-enum = "2.2.3" +egg = "0.9.5" + +[dev-dependencies] +indoc = "2.0.4" +similar = "2.4.0" +serde_json = "1.0.113" diff --git a/crates/compiler/fuzz/.gitignore b/crates/compiler/fuzz/.gitignore new file mode 100644 index 0000000..1a45eee --- /dev/null +++ b/crates/compiler/fuzz/.gitignore @@ -0,0 +1,4 @@ +target +corpus +artifacts +coverage diff --git a/crates/compiler/fuzz/Cargo.toml b/crates/compiler/fuzz/Cargo.toml new file mode 100644 index 0000000..95b8c86 --- /dev/null +++ b/crates/compiler/fuzz/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "compiler-fuzz" +version = "0.0.0" +publish = false +edition = "2021" + +[package.metadata] +cargo-fuzz = true + +[dependencies] +libfuzzer-sys = "0.4" +compiler = { path = ".." } + +[[bin]] +name = "fuzz_lexer" +path = "fuzz_targets/fuzz_lexer.rs" +test = false +doc = false +bench = false + +[[bin]] +name = "fuzz_parser" +path = "fuzz_targets/fuzz_parser.rs" +test = false +doc = false +bench = false diff --git a/crates/compiler/fuzz/fuzz_targets/fuzz_lexer.rs b/crates/compiler/fuzz/fuzz_targets/fuzz_lexer.rs new file mode 100644 index 0000000..968e86b --- /dev/null +++ b/crates/compiler/fuzz/fuzz_targets/fuzz_lexer.rs @@ -0,0 +1,9 @@ +#![no_main] + +use libfuzzer_sys::fuzz_target; + +fuzz_target!(|data: &[u8]| { + if let Ok(s) = std::str::from_utf8(data) { + for _ in compiler::lexer::Lexer::new(0, s) {} + } +}); diff --git a/crates/compiler/fuzz/fuzz_targets/fuzz_parser.rs b/crates/compiler/fuzz/fuzz_targets/fuzz_parser.rs new file mode 100644 index 0000000..503d4eb --- /dev/null +++ b/crates/compiler/fuzz/fuzz_targets/fuzz_parser.rs @@ -0,0 +1,11 @@ +#![no_main] + +use libfuzzer_sys::fuzz_target; + +fuzz_target!(|data: &[u8]| { + if let Ok(s) = std::str::from_utf8(data) { + let lexer = compiler::lexer::Lexer::new(0, s); + let mut parser = compiler::parser::Parser::new(s, lexer); + parser.parse(); + } +}); diff --git a/crates/compiler/src/annotate.rs b/crates/compiler/src/annotate.rs new file mode 100644 index 0000000..804d559 --- /dev/null +++ b/crates/compiler/src/annotate.rs @@ -0,0 +1,483 @@ +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::PatArg; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::TraitDef; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::infer::Context; + +// Replace all holes with fresh type variables. +fn map(ts: &[T], f: impl FnMut(&T) -> T) -> Vec { + ts.iter().map(f).collect() +} + +impl Type { + pub fn annotate(&self, ctx: &mut Context) -> Type { + match self { + Type::Cons(x, ts) => { + let x = x.clone(); + let ts = map(ts, |t| t.annotate(ctx)); + Type::Cons(x, ts) + } + Type::Assoc(x0, ts0, x1, ts1) => { + let x0 = x0.clone(); + let ts0 = map(ts0, |t| t.annotate(ctx)); + let x1 = x1.clone(); + let ts1 = map(ts1, |t| t.annotate(ctx)); + Type::Assoc(x0, ts0, x1, ts1) + } + Type::Var(x) => { + let x = x.clone(); + Type::Var(x) + } + Type::Hole => ctx.new_tyvar(), + Type::Err => Type::Err, + Type::Generic(x) => { + let x = x.clone(); + Type::Generic(x) + } + Type::Fun(ts, t) => { + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + let t = Rc::new(t.annotate(ctx)); + Type::Fun(ts, t) + } + Type::Tuple(ts) => { + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + Type::Tuple(ts) + } + Type::Record(xts) => { + let xts = xts + .iter() + .map(|(x, t)| (x.clone(), t.annotate(ctx))) + .collect(); + Type::Record(xts) + } + Type::Alias(x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + Type::Alias(x, ts) + } + Type::Unresolved(p) => { + let p = p.annotate(ctx); + Type::Unresolved(p) + } + Type::Array(t, n) => { + let t = t.annotate(ctx); + let n = *n; + Type::Array(Rc::new(t), n) + } + Type::Never => Type::Never, + } + } +} + +impl UnresolvedPath { + pub fn annotate(&self, ctx: &mut Context) -> UnresolvedPath { + let segments = self + .segments + .iter() + .map(|(x, ts)| (x.clone(), ts.iter().map(|t| t.annotate(ctx)).collect())) + .collect(); + UnresolvedPath::new(segments) + } +} + +impl Program { + pub fn annotate(&self, ctx: &mut Context) -> Program { + let stmts = self.stmts.iter().map(|s| s.annotate(ctx)).collect(); + Program::new(stmts) + } +} + +impl Stmt { + pub fn annotate(&self, ctx: &mut Context) -> Stmt { + match self { + Stmt::Var(v) => { + let v = v.annotate(ctx); + Stmt::Var(v) + } + Stmt::Def(d) => { + let d = d.annotate(ctx); + Stmt::Def(d) + } + Stmt::Impl(i) => { + let i = i.annotate(ctx); + Stmt::Impl(i) + } + Stmt::Expr(e) => { + let e = e.annotate(ctx); + Stmt::Expr(e) + } + Stmt::Struct(s) => { + let s = s.annotate(ctx); + Stmt::Struct(s) + } + Stmt::Enum(e) => { + let e = e.annotate(ctx); + Stmt::Enum(e) + } + Stmt::Type(s) => { + let s = s.annotate(ctx); + Stmt::Type(s) + } + Stmt::Trait(s) => { + let s = s.annotate(ctx); + Stmt::Trait(s) + } + Stmt::Err(_) => todo!(), + } + } +} + +impl StmtStruct { + pub fn annotate(&self, ctx: &mut Context) -> StmtStruct { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let fields = self + .fields + .iter() + .map(|(x, t)| (x.clone(), t.annotate(ctx))) + .collect(); + StmtStruct::new(span, name, generics, fields) + } +} + +impl StmtType { + pub fn annotate(&self, ctx: &mut Context) -> StmtType { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let ty = self.ty.annotate(ctx); + StmtType::new(span, name, generics, ty) + } +} + +impl StmtEnum { + pub fn annotate(&self, ctx: &mut Context) -> StmtEnum { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let variants = self + .variants + .iter() + .map(|(x, t)| (x.clone(), t.annotate(ctx))) + .collect(); + StmtEnum::new(span, name, generics, variants) + } +} + +impl StmtVar { + pub fn annotate(&self, ctx: &mut Context) -> StmtVar { + let span = self.span; + let x = self.name.clone(); + let t = self.ty.annotate(ctx); + let e = self.expr.annotate(ctx); + StmtVar::new(span, x, t, e) + } +} + +impl StmtDef { + pub fn annotate(&self, ctx: &mut Context) -> StmtDef { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let preds = self.where_clause.iter().map(|p| p.annotate(ctx)).collect(); + let params = self.params.iter().map(|p| p.annotate(ctx)).collect(); + let ty = self.ty.annotate(ctx); + let body = self.body.annotate(ctx); + StmtDef::new(span, name, generics, preds, params, ty, body) + } +} + +impl Body { + pub fn annotate(&self, ctx: &mut Context) -> Body { + match self { + Body::Expr(e) => { + let e = e.annotate(ctx); + Body::Expr(e) + } + Body::Builtin => todo!(), + } + } +} + +impl StmtImpl { + pub fn annotate(&self, ctx: &mut Context) -> StmtImpl { + let span = self.span; + let generics = self.generics.clone(); + let head = self.head.annotate(ctx); + let body = self.where_clause.iter().map(|p| p.annotate(ctx)).collect(); + let defs = self.defs.iter().map(|d| d.annotate(ctx)).collect(); + let tys = self.types.iter().map(|t| t.annotate(ctx)).collect(); + StmtImpl::new(span, generics, head, body, defs, tys) + } +} + +impl StmtTrait { + fn annotate(&self, ctx: &mut Context) -> StmtTrait { + let span = self.span; + let generics = self.generics.clone(); + let name = self.name.clone(); + let body = self.bounds.iter().map(|p| p.annotate(ctx)).collect(); + let defs = self.defs.iter().map(|d| d.annotate(ctx)).collect(); + let assocs = self.types.clone(); + StmtTrait::new(span, name, generics, body, defs, assocs) + } +} + +impl TraitDef { + pub fn annotate(&self, ctx: &mut Context) -> TraitDef { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let preds = self.bounds.iter().map(|p| p.annotate(ctx)).collect(); + let params = self.params.iter().map(|p| p.annotate(ctx)).collect(); + let ty = self.ty.annotate(ctx); + TraitDef::new(span, name, generics, preds, params, ty) + } +} + +impl Expr { + pub fn annotate(&self, ctx: &mut Context) -> Expr { + let s = self.span(); + let t = self.ty().annotate(ctx); + match self { + Expr::Unresolved(..) => unreachable!(), + Expr::Int(_, _, v) => { + let v = v.clone(); + Expr::Int(s, t, v) + } + Expr::Float(_, _, v) => { + let v = v.clone(); + Expr::Float(s, t, v) + } + Expr::Bool(_, _, v) => Expr::Bool(s, t, *v), + Expr::String(_, _, v) => { + let v = v.clone(); + Expr::String(s, t, v) + } + Expr::Var(_, _, x) => { + let x = x.clone(); + Expr::Var(s, t, x) + } + Expr::Def(_, _, x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + Expr::Def(s, t, x, ts) + } + Expr::Call(_, _, e, es) => { + let e = Rc::new(e.annotate(ctx)); + let es = es.iter().map(|e| e.annotate(ctx)).collect(); + Expr::Call(s, t, e, es) + } + Expr::Block(_, _, ss, e) => { + let ss = ss.iter().map(|s| s.annotate(ctx)).collect(); + let e = Rc::new(e.annotate(ctx)); + Expr::Block(s, t, ss, e) + } + Expr::Query(..) => todo!(), + Expr::Struct(_, _, x, ts, xes) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + let xes = xes + .iter() + .map(|(x, e)| (x.clone(), e.annotate(ctx))) + .collect(); + Expr::Struct(s, ctx.new_tyvar(), x, ts, xes) + } + Expr::Enum(_, _, x0, ts0, x1, e) => { + let x0 = x0.clone(); + let ts0 = ts0.iter().map(|t| t.annotate(ctx)).collect(); + let x1 = x1.clone(); + let e = Rc::new(e.annotate(ctx)); + Expr::Enum(s, t, x0, ts0, x1, e) + } + Expr::Field(_, _, e, x) => { + let e = Rc::new(e.annotate(ctx)); + let x = x.clone(); + Expr::Field(s, t, e, x) + } + Expr::Tuple(_, _, es) => { + let es = es.iter().map(|e| e.annotate(ctx)).collect(); + Expr::Tuple(s, t, es) + } + Expr::Assoc(_, _, x0, ts0, x1, ts1) => { + let x0 = x0.clone(); + let ts0 = ts0.iter().map(|t| t.annotate(ctx)).collect(); + let x1 = x1.clone(); + let ts1 = ts1.iter().map(|t| t.annotate(ctx)).collect(); + Expr::Assoc(s, t, x0, ts0, x1, ts1) + } + Expr::Index(_, _, e, i) => { + let e = Rc::new(e.annotate(ctx)); + Expr::Index(s, t, e, *i) + } + Expr::Array(_, _, es) => { + let es = es.iter().map(|e| e.annotate(ctx)).collect(); + Expr::Array(s, t, es) + } + Expr::Err(s, t) => { + let t = t.annotate(ctx); + Expr::Err(*s, t) + } + Expr::Assign(_, _, e0, e1) => { + let e0 = Rc::new(e0.annotate(ctx)); + let e1 = Rc::new(e1.annotate(ctx)); + Expr::Assign(s, t, e0, e1) + } + Expr::Return(_, _, e) => { + let e = Rc::new(e.annotate(ctx)); + Expr::Return(s, t, e) + } + Expr::Continue(_, _) => Expr::Continue(s, t), + Expr::Break(_, _) => Expr::Break(s, t), + Expr::Fun(_, _, ps, t1, e) => { + let ps = ps.iter().map(|p| p.annotate(ctx)).collect(); + let t1 = t1.annotate(ctx); + let e = Rc::new(e.annotate(ctx)); + Expr::Fun(s, t, ps, t1, e) + } + Expr::Match(_, _, e, pes) => { + let e = Rc::new(e.annotate(ctx)); + let pes = pes + .iter() + .map(|(p, e)| (p.annotate(ctx), e.annotate(ctx))) + .collect(); + Expr::Match(s, t, e, pes) + } + Expr::While(_, _, e0, e1) => { + let e0 = Rc::new(e0.annotate(ctx)); + let e1 = Rc::new(e1.annotate(ctx)); + Expr::While(s, t, e0, e1) + } + Expr::Record(_, _, xes) => { + let xes = xes + .iter() + .map(|(x, e)| (x.clone(), e.annotate(ctx))) + .collect(); + Expr::Record(s, t, xes) + } + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => unreachable!(), + Expr::Postfix(_, _, _, _) => unreachable!(), + Expr::Prefix(_, _, _, _) => unreachable!(), + } + } +} + +impl Pat { + pub fn annotate(&self, ctx: &mut Context) -> Pat { + let s = self.span(); + let t = self.ty().annotate(ctx); + match self { + // Pat::Unresolved(_, _, _, _) => todo!(), + // Pat::Var(_, _, _) => todo!(), + // Pat::Tuple(_, _, _) => todo!(), + // Pat::Struct(_, _, _, _, _) => todo!(), + // Pat::Enum(_, _, _, _, _, _) => todo!(), + // Pat::Int(_, _, _) => todo!(), + // Pat::String(_, _, _) => todo!(), + // Pat::Wildcard(_, _) => todo!(), + // Pat::Bool(_, _, _) => todo!(), + // Pat::Err(_, _) => todo!(), + Pat::Unresolved(_, _, path, args) => { + let path = path.annotate(ctx); + let args = args + .as_ref() + .map(|args| args.iter().map(|arg| arg.annotate(ctx)).collect()); + Pat::Unresolved(s, t, path, args) + } + Pat::Var(_, _, x) => { + let x = x.clone(); + Pat::Var(s, t, x) + } + Pat::Tuple(_, _, ps) => { + let ps = ps.iter().map(|p| p.annotate(ctx)).collect(); + Pat::Tuple(s, t, ps) + } + Pat::Struct(_, _, x, ts, xps) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + let xps = xps + .iter() + .map(|(x, p)| (x.clone(), p.annotate(ctx))) + .collect(); + Pat::Struct(s, t, x, ts, xps) + } + Pat::Enum(_, _, x0, ts, x1, p) => { + let x0 = x0.clone(); + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + let p = p.annotate(ctx); + Pat::Enum(s, t, x0, ts, x1.clone(), Rc::new(p)) + } + Pat::Int(_, _, v) => { + let v = v.clone(); + Pat::Int(s, t, v) + } + Pat::String(_, _, v) => { + let v = v.clone(); + Pat::String(s, t, v) + } + Pat::Wildcard(_, _) => Pat::Wildcard(s, t), + Pat::Bool(_, _, v) => Pat::Bool(s, t, *v), + Pat::Err(_, _) => Pat::Err(s, t), + } + } +} + +impl PatArg { + pub fn annotate(&self, ctx: &mut Context) -> PatArg { + match self { + PatArg::Named(x, p) => { + let p = p.annotate(ctx); + PatArg::Named(x.clone(), p) + } + PatArg::Unnamed(p) => { + let p = p.annotate(ctx); + PatArg::Unnamed(p) + } + } + } +} + +impl Param { + pub fn annotate(&self, ctx: &mut Context) -> Param { + let span = self.span; + let name = self.name.clone(); + let ty = self.ty.annotate(ctx); + Param::new(span, name, ty) + } +} + +impl Bound { + pub fn annotate(&self, ctx: &mut Context) -> Bound { + let span = self.span(); + match self { + Bound::Unresolved(_, path) => { + let path = path.annotate(ctx); + Bound::Unresolved(span, path) + } + Bound::Trait(_, x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.annotate(ctx)).collect(); + Bound::Trait(span, x, ts) + } + Bound::Err(_) => Bound::Err(span), + } + } +} diff --git a/crates/compiler/src/apply.rs b/crates/compiler/src/apply.rs new file mode 100644 index 0000000..1656f12 --- /dev/null +++ b/crates/compiler/src/apply.rs @@ -0,0 +1,404 @@ +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtImpl; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::Type; +use crate::ast::UnresolvedPath; + +impl Program { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Program { + let stmts = self.stmts.iter().map(|s| s.map_type(f)).collect::>(); + Program::new(stmts) + } +} + +impl Type { + pub fn apply(&self, sub: &[(Name, Type)]) -> Type { + match self { + Type::Cons(x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.apply(sub)).collect::>(); + Type::Cons(x, ts) + } + Type::Var(x) => sub + .iter() + .find(|(n, _)| n == x) + .map(|(_, t)| t.apply(sub)) + .unwrap_or_else(|| Type::Var(x.clone())), + Type::Assoc(x0, ts0, x1, ts1) => { + let x0 = x0.clone(); + let ts0 = ts0.iter().map(|t| t.apply(sub)).collect::>(); + let x1 = x1.clone(); + let ts1 = ts1.iter().map(|t| t.apply(sub)).collect::>(); + Type::Assoc(x0, ts0, x1, ts1) + } + Type::Hole => unreachable!(), + Type::Err => Type::Err, + Type::Generic(x) => { + let x = x.clone(); + Type::Generic(x) + } + Type::Fun(ts, t) => { + let ts = ts.iter().map(|t| t.apply(sub)).collect(); + let t = t.apply(sub); + Type::Fun(ts, Rc::new(t)) + } + Type::Tuple(ts) => { + let ts = ts.iter().map(|t| t.apply(sub)).collect(); + Type::Tuple(ts) + } + Type::Record(xts) => { + let xts = xts.iter().map(|(x, t)| (x.clone(), t.apply(sub))).collect(); + Type::Record(xts) + } + Type::Alias(x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.apply(sub)).collect(); + Type::Alias(x, ts) + } + Type::Unresolved(p) => { + let p = p.map_type(&|t| t.apply(sub)); + Type::Unresolved(p) + } + Type::Array(t, n) => { + let t = Rc::new(t.apply(sub)); + let n = *n; + Type::Array(t, n) + } + + Type::Never => Type::Never, + } + } + + pub fn instantiate(&self, sub: &[(Name, Type)]) -> Type { + match self { + Type::Cons(x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.instantiate(sub)).collect::>(); + Type::Cons(x, ts) + } + Type::Var(x) => Type::Var(x.clone()), + Type::Assoc(x0, ts0, x1, ts1) => { + let x0 = x0.clone(); + let ts0 = ts0.iter().map(|t| t.instantiate(sub)).collect::>(); + let x1 = x1.clone(); + let ts1 = ts1.iter().map(|t| t.instantiate(sub)).collect::>(); + Type::Assoc(x0, ts0, x1, ts1) + } + Type::Hole => unreachable!(), + Type::Generic(x) => sub + .iter() + .find(|(n, _)| n == x) + .map(|(_, t)| t.clone()) + .unwrap_or_else(|| Type::Var(x.clone())), + Type::Fun(ts, t) => { + let ts = ts.iter().map(|t| t.instantiate(sub)).collect(); + let t = t.instantiate(sub); + Type::Fun(ts, Rc::new(t)) + } + Type::Tuple(ts) => { + let ts = ts.iter().map(|t| t.instantiate(sub)).collect(); + Type::Tuple(ts) + } + Type::Record(xts) => { + let xts = xts + .iter() + .map(|(x, t)| (x.clone(), t.instantiate(sub))) + .collect(); + Type::Record(xts) + } + Type::Alias(x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(|t| t.instantiate(sub)).collect(); + Type::Alias(x, ts) + } + Type::Err => Type::Err, + Type::Unresolved(p) => { + let p = p.map_type(&|t| t.apply(sub)); + Type::Unresolved(p) + } + Type::Array(t, n) => { + let t = Rc::new(t.instantiate(sub)); + let n = *n; + Type::Array(t, n) + } + Type::Never => Type::Never, + } + } +} + +impl Stmt { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Stmt { + match self { + Stmt::Var(v) => Stmt::Var(v.map_type(f)), + Stmt::Def(d) => Stmt::Def(d.map_type(f)), + Stmt::Impl(i) => Stmt::Impl(i.map_type(f)), + Stmt::Expr(e) => Stmt::Expr(e.map_type(f)), + Stmt::Struct(s) => Stmt::Struct(s.clone()), + Stmt::Enum(s) => Stmt::Enum(s.clone()), + Stmt::Type(s) => Stmt::Type(s.clone()), + Stmt::Trait(s) => Stmt::Trait(s.clone()), + Stmt::Err(_) => todo!(), + } + } +} + +impl StmtVar { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> StmtVar { + let span = self.span; + let name = self.name.clone(); + let ty = f(&self.ty); + let expr = self.expr.map_type(f); + StmtVar::new(span, name, ty, expr) + } +} + +impl StmtDef { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> StmtDef { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let qs = self.where_clause.iter().map(|p| p.map_type(f)).collect(); + let ps = self.params.iter().map(|p| p.map_type(f)).collect(); + let t = f(&self.ty); + let e = self.body.map_type(f); + StmtDef::new(span, name, generics, qs, ps, t, e) + } +} + +impl Body { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Body { + match self { + Body::Expr(e) => Body::Expr(e.map_type(f)), + Body::Builtin => Body::Builtin, + } + } +} + +impl StmtImpl { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> StmtImpl { + let span = self.span; + let generics = self.generics.clone(); + let head = self.head.map_type(f); + let body = self.where_clause.iter().map(|p| p.map_type(f)).collect(); + let defs = self.defs.iter().map(|d| d.map_type(f)).collect(); + let types = self.types.iter().map(|t| t.map_type(f)).collect(); + StmtImpl::new(span, generics, head, body, defs, types) + } +} + +impl StmtType { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> StmtType { + let span = self.span; + let name = self.name.clone(); + let generics = self.generics.clone(); + let ty = f(&self.ty); + StmtType::new(span, name, generics, ty) + } +} + +impl UnresolvedPath { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> UnresolvedPath { + let segments = self + .segments + .iter() + .map(|(x, ts)| (x.clone(), ts.iter().map(f).collect())) + .collect::>(); + UnresolvedPath::new(segments) + } +} + +impl Bound { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Bound { + let span = self.span(); + match self { + Bound::Unresolved(_, path) => Bound::Unresolved(span, path.map_type(f)), + Bound::Trait(_, x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(f).collect(); + Bound::Trait(span, x, ts) + } + Bound::Err(_) => Bound::Err(span), + } + } +} + +impl Expr { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Expr { + let s = self.span(); + let t = f(self.ty()); + match self { + Expr::Unresolved(..) => unreachable!(), + Expr::Int(_, _, v) => { + let v = v.clone(); + Expr::Int(s, t, v) + } + Expr::Float(_, _, v) => { + let v = v.clone(); + Expr::Float(s, t, v) + } + Expr::Bool(_, _, v) => Expr::Bool(s, t, *v), + Expr::String(_, _, v) => { + let v = v.clone(); + Expr::String(s, t, v) + } + Expr::Var(_, _, x) => { + let x = x.clone(); + Expr::Var(s, t, x) + } + Expr::Def(_, _, x, ts) => { + let x = x.clone(); + let ts = ts.iter().map(f).collect(); + Expr::Def(s, t, x, ts) + } + Expr::Call(_, _, e, es) => { + let e = e.map_type(f); + let es = es.iter().map(|e| e.map_type(f)).collect(); + Expr::Call(s, t, Rc::new(e), es) + } + Expr::Block(_, _, ss, e) => { + let ss = ss.iter().map(|s| s.map_type(f)).collect(); + let e = e.map_type(f); + Expr::Block(s, t, ss, Rc::new(e)) + } + Expr::Query(..) => todo!(), + Expr::Struct(_, _, x, ts, xts) => { + let x = x.clone(); + let ts = ts.iter().map(f).collect(); + let xts = xts + .iter() + .map(|(x, e)| (x.clone(), e.map_type(f))) + .collect(); + Expr::Struct(s, t, x, ts, xts) + } + Expr::Enum(_, _, x0, ts, x1, e) => { + let x0 = x0.clone(); + let ts = ts.iter().map(f).collect(); + let x1 = x1.clone(); + let e = e.map_type(f); + Expr::Enum(s, t, x0, ts, x1, Rc::new(e)) + } + Expr::Field(_, _, e, x) => { + let e = Rc::new(e.map_type(f)); + let x = x.clone(); + Expr::Field(s, t, e, x) + } + Expr::Tuple(_, _, es) => { + let es = es.iter().map(|e| e.map_type(f)).collect(); + Expr::Tuple(s, t, es) + } + Expr::Assoc(_, _, x0, ts0, x1, ts1) => { + let x0 = x0.clone(); + let ts0 = ts0.iter().map(f).collect(); + let x1 = x1.clone(); + let ts1 = ts1.iter().map(f).collect(); + Expr::Assoc(s, t, x0, ts0, x1, ts1) + } + Expr::Index(_, _, e, i) => { + let e = Rc::new(e.map_type(f)); + Expr::Index(s, t, e, *i) + } + Expr::Array(_, _, es) => { + let es = es.iter().map(|e| e.map_type(f)).collect(); + Expr::Array(s, t, es) + } + Expr::Err(_, _) => Expr::Err(s, t), + Expr::Assign(_, _, e0, e1) => { + let e0 = Rc::new(e0.map_type(f)); + let e1 = Rc::new(e1.map_type(f)); + Expr::Assign(s, t, e0, e1) + } + Expr::Return(_, _, e) => { + let e = Rc::new(e.map_type(f)); + Expr::Return(s, t, e) + } + Expr::Continue(_, _) => Expr::Continue(s, t), + Expr::Break(_, _) => Expr::Break(s, t), + Expr::Fun(_, _, ps, t1, e) => { + let ps = ps.iter().map(|p| p.map_type(f)).collect(); + let t1 = f(t1); + let e = Rc::new(e.map_type(f)); + Expr::Fun(s, t, ps, t1, e) + } + Expr::Match(_, _, e, pes) => { + let e = Rc::new(e.map_type(f)); + let pes = pes + .iter() + .map(|(p, e)| (p.clone(), e.map_type(f))) + .collect(); + Expr::Match(s, t, e, pes) + } + Expr::While(_, _, e0, e1) => { + let e0 = Rc::new(e0.map_type(f)); + let e1 = Rc::new(e1.map_type(f)); + Expr::While(s, t, e0, e1) + } + Expr::Record(_, _, xes) => { + let xes = xes + .iter() + .map(|(x, e)| (x.clone(), e.map_type(f))) + .collect(); + Expr::Record(s, t, xes) + } + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => unreachable!(), + Expr::Postfix(_, _, _, _) => unreachable!(), + Expr::Prefix(_, _, _, _) => unreachable!(), + } + } +} + +impl Pat { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Pat { + let t = f(self.ty()); + let span = self.span(); + match self { + Pat::Unresolved(..) => unreachable!(), + Pat::Var(_, _, x) => Pat::Var(span, t, x.clone()), + Pat::Tuple(_, _, es) => { + let es = es.iter().map(|e| e.map_type(f)).collect(); + Pat::Tuple(span, t, es) + } + Pat::Struct(_, _, x, ts, xps) => { + let x = x.clone(); + let ts = ts.iter().map(f).collect(); + let xps = xps + .iter() + .map(|(x, p)| (x.clone(), p.map_type(f))) + .collect(); + Pat::Struct(span, t, x, ts, xps) + } + Pat::Enum(_, _, x0, ts, x1, p) => { + let x0 = x0.clone(); + let ts = ts.iter().map(f).collect(); + let x1 = x1.clone(); + let p = Rc::new(p.map_type(f)); + Pat::Enum(span, t, x0, ts, x1, p) + } + Pat::Int(_, _, v) => Pat::Int(span, t, v.clone()), + Pat::String(_, _, v) => Pat::String(span, t, v.clone()), + Pat::Wildcard(_, _) => Pat::Wildcard(span, t), + Pat::Bool(_, _, v) => Pat::Bool(span, t, *v), + Pat::Err(_, _) => Pat::Err(span, t), + } + } +} + +impl Param { + pub fn map_type(&self, f: &impl Fn(&Type) -> Type) -> Param { + let span = self.span; + let name = self.name.clone(); + let t = f(&self.ty); + Param::new(span, name, t) + } +} diff --git a/crates/compiler/src/ast.rs b/crates/compiler/src/ast.rs new file mode 100644 index 0000000..7925820 --- /dev/null +++ b/crates/compiler/src/ast.rs @@ -0,0 +1,773 @@ +use std::rc::Rc; + +use serde::Deserialize; +use serde::Serialize; +use smol_str::SmolStr; + +use crate::builtins::Value; +use crate::lexer::Span; +use crate::lexer::Token; + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct UnresolvedPath { + pub segments: Vec<(Name, Vec)>, +} + +impl UnresolvedPath { + pub fn new(segments: Vec<(Name, Vec)>) -> Self { + Self { segments } + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct Name { + pub span: Span, + pub data: SmolStr, +} + +impl Serialize for Name { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + self.data.serialize(serializer) + } +} + +impl<'de> Deserialize<'de> for Name { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + String::deserialize(deserializer).map(|data| Self { + span: Span::default(), + data: SmolStr::from(data), + }) + } +} + +impl Ord for Name { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + self.data.cmp(&other.data) + } +} + +impl PartialOrd for Name { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.data.cmp(&other.data)) + } +} + +impl From<&str> for Name { + fn from(s: &str) -> Name { + Name { + span: Span::default(), + data: SmolStr::from(s), + } + } +} + +impl From for Name { + fn from(s: String) -> Name { + Name { + span: Span::default(), + data: SmolStr::from(s), + } + } +} + +impl Name { + pub fn new(span: Span, data: impl Into) -> Name { + Name { + span, + data: data.into(), + } + } +} + +impl Index { + pub fn new(span: Span, index: usize) -> Index { + Index { span, data: index } + } +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct Program { + pub stmts: Vec, +} + +// An impl is like a rule +// forall :- . +// impl where +// i.e., impl Clone for Vec where T: Clone {} +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtImpl { + pub span: Span, + pub generics: Vec, + pub head: Bound, + pub where_clause: Vec, + pub defs: Vec, + pub types: Vec, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtTrait { + pub span: Span, + pub name: Name, + pub generics: Vec, + pub bounds: Vec, + pub defs: Vec, + pub types: Vec, +} + +// A trait is like a predicate +// () +// e.g., Clone(i32) +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Bound { + Unresolved(Span, UnresolvedPath), + Trait(Span, Name, Vec), + Err(Span), +} + +// A type is like a proposition +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Type { + Unresolved(UnresolvedPath), + Cons(Name, Vec), + Alias(Name, Vec), + Assoc(Name, Vec, Name, Vec), + Var(Name), + Generic(Name), + Fun(Vec, Rc), + Tuple(Vec), + Record(Vec<(Name, Type)>), + Array(Rc, Option), + Never, + Hole, + Err, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct Param { + pub span: Span, + pub name: Name, + pub ty: Type, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Candidate { + // An implementation of a trait for a type. + Impl(StmtImpl), + // A bound in a where clause + Bound(Bound), +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Stmt { + Var(StmtVar), + Def(StmtDef), + Trait(StmtTrait), + Impl(StmtImpl), + Struct(StmtStruct), + Enum(StmtEnum), + Type(StmtType), + Expr(Expr), + Err(Span), +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct TraitType { + pub span: Span, + pub name: Name, + pub generics: Vec, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct TraitDef { + pub span: Span, + pub name: Name, + pub generics: Vec, + pub bounds: Vec, + pub params: Vec, + pub ty: Type, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtVar { + pub span: Span, + pub name: Name, + pub ty: Type, + pub expr: Expr, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtDef { + pub span: Span, + pub name: Name, + pub generics: Vec, + pub where_clause: Vec, + pub params: Vec, + pub ty: Type, + pub body: Body, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Body { + Expr(Expr), + Builtin, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtStruct { + pub span: Span, + pub name: Name, + pub generics: Vec, + pub fields: Vec<(Name, Type)>, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtEnum { + pub span: Span, + pub name: Name, + pub generics: Vec, + pub variants: Vec<(Name, Type)>, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct StmtType { + pub span: Span, + pub name: Name, + pub generics: Vec, + pub ty: Type, +} + +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +pub struct Index { + pub span: Span, + pub data: usize, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Expr { + Unresolved(Span, Type, UnresolvedPath), + Prefix(Span, Type, Token, Rc), + Infix(Span, Type, Token, Rc, Rc), + Postfix(Span, Type, Token, Rc), + Int(Span, Type, String), + Float(Span, Type, String), + Bool(Span, Type, bool), + String(Span, Type, String), + Struct(Span, Type, Name, Vec, Vec<(Name, Expr)>), + Tuple(Span, Type, Vec), + Record(Span, Type, Vec<(Name, Expr)>), + Enum(Span, Type, Name, Vec, Name, Rc), + Field(Span, Type, Rc, Name), + Index(Span, Type, Rc, Index), + Var(Span, Type, Name), + Def(Span, Type, Name, Vec), + Call(Span, Type, Rc, Vec), + Block(Span, Type, Vec, Rc), + Query(Span, Type, Vec), + Assoc(Span, Type, Name, Vec, Name, Vec), + Match(Span, Type, Rc, Vec<(Pat, Expr)>), + Array(Span, Type, Vec), + Assign(Span, Type, Rc, Rc), + Return(Span, Type, Rc), + Continue(Span, Type), + Break(Span, Type), + While(Span, Type, Rc, Rc), + Fun(Span, Type, Vec, Type, Rc), + Err(Span, Type), + Value(Type, Value), +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum PatArg { + Named(Name, Pat), + Unnamed(Pat), +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Pat { + Unresolved(Span, Type, UnresolvedPath, Option>), + Var(Span, Type, Name), + Tuple(Span, Type, Vec), + Struct(Span, Type, Name, Vec, Vec<(Name, Pat)>), + Enum(Span, Type, Name, Vec, Name, Rc), + Int(Span, Type, String), + String(Span, Type, String), + Wildcard(Span, Type), + Bool(Span, Type, bool), + Err(Span, Type), +} + +#[derive(Debug, Clone, Eq, PartialEq)] +pub enum Query { + From(Span, Type, Vec<(Name, Expr)>), + Where(Span, Type, Rc), + Select(Span, Type, Vec<(Name, Expr)>), + Join(Span, Type, Vec<(Name, Expr)>, Rc), + Group(Span, Type, Vec, Vec), + Over(Span, Type, Rc, Vec), + Order(Span, Type, Vec<(Name, bool)>), + With(Span, Type, Vec<(Name, Expr)>), + Into(Span, Type, Vec), + Compute(Span, Type, Vec<(Name, Expr, Expr)>), +} + +impl Program { + pub fn new(stmts: Vec) -> Program { + Program { stmts } + } +} + +impl StmtImpl { + pub fn new( + span: Span, + generics: Vec, + head: Bound, + where_clause: Vec, + defs: Vec, + types: Vec, + ) -> StmtImpl { + StmtImpl { + span, + generics, + where_clause, + types, + head, + defs, + } + } +} + +impl StmtType { + pub fn new(span: Span, name: Name, generics: Vec, ty: Type) -> StmtType { + StmtType { + span, + name, + generics, + ty, + } + } +} + +impl StmtTrait { + pub fn new( + span: Span, + name: Name, + generics: Vec, + body: Vec, + defs: Vec, + types: Vec, + ) -> StmtTrait { + StmtTrait { + span, + name, + generics, + bounds: body, + defs, + types, + } + } +} + +impl TraitType { + pub fn new(span: Span, name: Name, generics: Vec) -> Self { + Self { + span, + name, + generics, + } + } +} + +impl Param { + pub fn new(span: Span, name: Name, ty: Type) -> Param { + Param { span, name, ty } + } +} + +impl StmtVar { + pub fn new(span: Span, name: Name, ty: Type, expr: Expr) -> StmtVar { + StmtVar { + span, + name, + ty, + expr, + } + } +} + +impl StmtDef { + pub fn new( + span: Span, + name: Name, + generics: Vec, + where_clause: Vec, + params: Vec, + ty: Type, + body: Body, + ) -> StmtDef { + StmtDef { + span, + name, + generics, + where_clause, + params, + ty, + body, + } + } +} + +impl StmtStruct { + pub fn new( + span: Span, + name: Name, + generics: Vec, + fields: Vec<(Name, Type)>, + ) -> StmtStruct { + StmtStruct { + span, + name, + generics, + fields, + } + } +} + +impl StmtEnum { + pub fn new( + span: Span, + name: Name, + generics: Vec, + variants: Vec<(Name, Type)>, + ) -> StmtEnum { + StmtEnum { + span, + name, + generics, + variants, + } + } +} + +impl TraitDef { + pub fn new( + span: Span, + name: Name, + generics: Vec, + where_clause: Vec, + params: Vec, + ty: Type, + ) -> Self { + Self { + span, + name, + generics, + bounds: where_clause, + params, + ty, + } + } +} + +impl Bound { + pub fn span(&self) -> Span { + match self { + Bound::Unresolved(s, _) => *s, + Bound::Trait(s, _, _) => *s, + Bound::Err(s) => *s, + } + } +} + +impl From for Stmt { + fn from(v: StmtVar) -> Stmt { + Stmt::Var(v) + } +} + +impl From for Stmt { + fn from(d: StmtDef) -> Stmt { + Stmt::Def(d) + } +} +impl From for Stmt { + fn from(i: StmtImpl) -> Stmt { + Stmt::Impl(i) + } +} + +impl From for Stmt { + fn from(e: Expr) -> Stmt { + Stmt::Expr(e) + } +} + +impl From for Stmt { + fn from(s: StmtStruct) -> Stmt { + Stmt::Struct(s) + } +} + +impl From for Stmt { + fn from(e: StmtEnum) -> Stmt { + Stmt::Enum(e) + } +} + +impl From for Stmt { + fn from(t: StmtType) -> Stmt { + Stmt::Type(t) + } +} + +impl From for Stmt { + fn from(t: StmtTrait) -> Stmt { + Stmt::Trait(t) + } +} + +impl Expr { + pub fn ty(&self) -> &Type { + match self { + Expr::Int(_, t, ..) => t, + Expr::Float(_, t, ..) => t, + Expr::Bool(_, t, ..) => t, + Expr::String(_, t, ..) => t, + Expr::Struct(_, t, ..) => t, + Expr::Tuple(_, t, ..) => t, + Expr::Enum(_, t, ..) => t, + Expr::Var(_, t, ..) => t, + Expr::Def(_, t, ..) => t, + Expr::Call(_, t, ..) => t, + Expr::Block(_, t, ..) => t, + Expr::Query(_, t, ..) => t, + Expr::Field(_, t, ..) => t, + Expr::Assoc(_, t, ..) => t, + Expr::Err(_, t) => t, + Expr::Index(_, t, ..) => t, + Expr::Array(_, t, ..) => t, + Expr::Assign(_, t, ..) => t, + Expr::Return(_, t, ..) => t, + Expr::Continue(_, t) => t, + Expr::Break(_, t) => t, + Expr::Fun(_, t, ..) => t, + Expr::Match(_, t, ..) => t, + Expr::While(_, t, ..) => t, + Expr::Record(_, t, _) => t, + Expr::Unresolved(_, t, _) => t, + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => todo!(), + Expr::Postfix(_, _, _, _) => todo!(), + Expr::Prefix(_, _, _, _) => todo!(), + } + } + + #[inline(always)] + pub fn of(self, t: Type) -> Expr { + match self { + Expr::Int(s, _, v) => Expr::Int(s, t, v), + Expr::Float(s, _, v) => Expr::Float(s, t, v), + Expr::Bool(s, _, v) => Expr::Bool(s, t, v), + Expr::String(s, _, v) => Expr::String(s, t, v), + Expr::Var(s, _, x) => Expr::Var(s, t, x), + Expr::Def(s, _, x, ts) => Expr::Def(s, t, x, ts), + Expr::Call(s, _, e, es) => Expr::Call(s, t, e, es), + Expr::Block(s, _, ss, e) => Expr::Block(s, t, ss, e), + Expr::Query(s, _, qs) => Expr::Query(s, t, qs), + Expr::Struct(s, _, x, ts, xes) => Expr::Struct(s, t, x, ts, xes), + Expr::Enum(s, _, x0, ts, x1, e) => Expr::Enum(s, t, x0, ts, x1, e), + Expr::Field(s, _, e, x) => Expr::Field(s, t, e, x), + Expr::Tuple(s, _, es) => Expr::Tuple(s, t, es), + Expr::Assoc(s, _, x0, ts0, x1, ts1) => Expr::Assoc(s, t, x0, ts0, x1, ts1), + Expr::Index(s, _, e, i) => Expr::Index(s, t, e, i), + Expr::Array(s, _, es) => Expr::Array(s, t, es), + Expr::Assign(s, _, e0, e1) => Expr::Assign(s, t, e0, e1), + Expr::Return(s, _, e) => Expr::Return(s, t, e), + Expr::Continue(s, _) => Expr::Continue(s, t), + Expr::Break(s, _) => Expr::Break(s, t), + Expr::Fun(s, _, ps, t1, e) => Expr::Fun(s, t, ps, t1, e), + Expr::Match(s, _, e, pes) => Expr::Match(s, t, e, pes), + Expr::Err(s, _) => Expr::Err(s, t), + Expr::While(s, _, e0, e1) => Expr::While(s, t, e0, e1), + Expr::Record(_, _, _) => todo!(), + Expr::Unresolved(s, _, p) => Expr::Unresolved(s, t, p), + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => todo!(), + Expr::Postfix(_, _, _, _) => todo!(), + Expr::Prefix(_, _, _, _) => todo!(), + } + } + + pub fn span(&self) -> Span { + match self { + Expr::Int(s, ..) => *s, + Expr::Float(s, ..) => *s, + Expr::Bool(s, ..) => *s, + Expr::String(s, ..) => *s, + Expr::Struct(s, ..) => *s, + Expr::Tuple(s, ..) => *s, + Expr::Enum(s, ..) => *s, + Expr::Field(s, ..) => *s, + Expr::Var(s, ..) => *s, + Expr::Def(s, ..) => *s, + Expr::Call(s, ..) => *s, + Expr::Block(s, ..) => *s, + Expr::Query(s, ..) => *s, + Expr::Assoc(s, ..) => *s, + Expr::Index(s, ..) => *s, + Expr::Array(s, ..) => *s, + Expr::Assign(s, ..) => *s, + Expr::Return(s, ..) => *s, + Expr::Continue(s, ..) => *s, + Expr::Break(s, ..) => *s, + Expr::Fun(s, ..) => *s, + Expr::Match(s, ..) => *s, + Expr::Err(s, ..) => *s, + Expr::While(s, ..) => *s, + Expr::Record(s, _, _) => *s, + Expr::Unresolved(s, _, _) => *s, + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => todo!(), + Expr::Postfix(_, _, _, _) => todo!(), + Expr::Prefix(_, _, _, _) => todo!(), + } + } + + #[inline(always)] + pub fn with_span(self, span: Span) -> Expr { + match self { + Expr::Unresolved(_, t, p) => Expr::Unresolved(span, t, p), + Expr::Record(_, t, xes) => Expr::Record(span, t, xes), + Expr::While(_, t, e0, e1) => Expr::While(span, t, e0, e1), + Expr::Int(_, t, v) => Expr::Int(span, t, v), + Expr::Float(_, t, v) => Expr::Float(span, t, v), + Expr::Bool(_, t, v) => Expr::Bool(span, t, v), + Expr::String(_, t, v) => Expr::String(span, t, v), + Expr::Struct(_, t, x, ts, xes) => Expr::Struct(span, t, x, ts, xes), + Expr::Tuple(_, t, es) => Expr::Tuple(span, t, es), + Expr::Enum(_, t, x0, ts, x1, e) => Expr::Enum(span, t, x0, ts, x1, e), + Expr::Var(_, t, x) => Expr::Var(span, t, x), + Expr::Def(_, t, x, ts) => Expr::Def(span, t, x, ts), + Expr::Call(_, t, e, es) => Expr::Call(span, t, e, es), + Expr::Block(_, t, ss, e) => Expr::Block(span, t, ss, e), + Expr::Query(_, t, qs) => Expr::Query(span, t, qs), + Expr::Field(_, t, e, x) => Expr::Field(span, t, e, x), + Expr::Assoc(_, t, x0, ts0, x1, ts1) => Expr::Assoc(span, t, x0, ts0, x1, ts1), + Expr::Index(_, t, e, i) => Expr::Index(span, t, e, i), + Expr::Array(_, t, es) => Expr::Array(span, t, es), + Expr::Assign(_, t, e0, e1) => Expr::Assign(span, t, e0, e1), + Expr::Return(_, t, e) => Expr::Return(span, t, e), + Expr::Continue(_, t) => Expr::Continue(span, t), + Expr::Break(_, t) => Expr::Break(span, t), + Expr::Fun(_, t, ps, t1, e) => Expr::Fun(span, t, ps, t1, e), + Expr::Match(_, t, e, pes) => Expr::Match(span, t, e, pes), + Expr::Err(_, t) => Expr::Err(span, t), + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => todo!(), + Expr::Postfix(_, _, _, _) => todo!(), + Expr::Prefix(_, _, _, _) => todo!(), + } + } +} + +impl Pat { + pub fn ty(&self) -> &Type { + match self { + Pat::Unresolved(_, t, _, _) => t, + Pat::Var(_, t, ..) => t, + Pat::Tuple(_, t, ..) => t, + Pat::Struct(_, t, ..) => t, + Pat::Enum(_, t, ..) => t, + Pat::Int(_, t, ..) => t, + Pat::Wildcard(_, t, ..) => t, + Pat::String(_, t, ..) => t, + Pat::Bool(_, t, ..) => t, + Pat::Err(_, t) => t, + } + } + + #[inline(always)] + pub fn with_ty(self, t: Type) -> Pat { + match self { + Pat::Unresolved(s, _, p, a) => Pat::Unresolved(s, t, p, a), + Pat::Var(s, _, x) => Pat::Var(s, t, x), + Pat::Tuple(s, _, ps) => Pat::Tuple(s, t, ps), + Pat::Struct(s, _, x, ts, xps) => Pat::Struct(s, t, x, ts, xps), + Pat::Enum(s, _, x0, ts, x1, p) => Pat::Enum(s, t, x0, ts, x1, p), + Pat::Int(s, _, v) => Pat::Int(s, t, v), + Pat::String(s, _, v) => Pat::String(s, t, v), + Pat::Wildcard(s, _) => Pat::Wildcard(s, t), + Pat::Bool(s, _, v) => Pat::Bool(s, t, v), + Pat::Err(s, _) => Pat::Err(s, t), + } + } + + pub fn span(&self) -> Span { + match self { + Pat::Unresolved(s, _, _, _) => *s, + Pat::Var(s, ..) => *s, + Pat::Tuple(s, ..) => *s, + Pat::Struct(s, ..) => *s, + Pat::Enum(s, ..) => *s, + Pat::Int(s, ..) => *s, + Pat::Wildcard(s, ..) => *s, + Pat::String(s, ..) => *s, + Pat::Bool(s, ..) => *s, + Pat::Err(s, _) => *s, + } + } + + #[inline(always)] + pub fn with_span(self, s: Span) -> Pat { + match self { + Pat::Unresolved(_, t, p, a) => Pat::Unresolved(s, t, p, a), + Pat::Var(_, t, x) => Pat::Var(s, t, x), + Pat::Tuple(_, t, ps) => Pat::Tuple(s, t, ps), + Pat::Struct(_, t, x, ts, xps) => Pat::Struct(s, t, x, ts, xps), + Pat::Enum(_, t, x0, ts, x1, p) => Pat::Enum(s, t, x0, ts, x1, p), + Pat::Int(_, t, v) => Pat::Int(s, t, v), + Pat::Wildcard(_, t) => Pat::Wildcard(s, t), + Pat::String(_, t, v) => Pat::String(s, t, v), + Pat::Bool(_, t, v) => Pat::Bool(s, t, v), + Pat::Err(_, t) => Pat::Err(s, t), + } + } +} + +impl Query { + pub fn span(&self) -> Span { + match self { + Query::From(s, ..) => *s, + Query::Where(s, ..) => *s, + Query::Select(s, ..) => *s, + Query::Into(s, ..) => *s, + Query::Join(s, ..) => *s, + Query::Group(s, ..) => *s, + Query::Over(s, ..) => *s, + Query::Order(s, ..) => *s, + Query::With(s, ..) => *s, + Query::Compute(s, ..) => *s, + } + } + + #[inline(always)] + pub fn with_span(self, s: Span) -> Query { + match self { + Query::From(_, t, xes) => Query::From(s, t, xes), + Query::Where(_, t, e) => Query::Where(s, t, e), + Query::Select(_, t, xes) => Query::Select(s, t, xes), + Query::Into(_, t, es) => Query::Into(s, t, es), + Query::Join(_, t, xes, e) => Query::Join(s, t, xes, e), + Query::Group(_, t, xs, qs) => Query::Group(s, t, xs, qs), + Query::Over(_, t, e, qs) => Query::Over(s, t, e, qs), + Query::Order(_, t, xs) => Query::Order(s, t, xs), + Query::With(_, t, xes) => Query::With(s, t, xes), + Query::Compute(_, t, xes) => Query::Compute(s, t, xes), + } + } +} diff --git a/crates/compiler/src/builtins/conv.rs b/crates/compiler/src/builtins/conv.rs new file mode 100644 index 0000000..bbbdd61 --- /dev/null +++ b/crates/compiler/src/builtins/conv.rs @@ -0,0 +1,101 @@ +use std::rc::Rc; + +use runtime::builtins::aggregator::Aggregator; +use runtime::builtins::assigner::Assigner; +use runtime::builtins::blob::Blob; +use runtime::builtins::dict::Dict; +use runtime::builtins::duration::Duration; +use runtime::builtins::encoding::Encoding; +use runtime::builtins::file::File; +// use runtime::builtins::image::Image; +// #[cfg(feature = "model")] +// use runtime::builtins::model::Model; +use runtime::builtins::path::Path; +use runtime::builtins::reader::Reader; +use runtime::builtins::set::Set; +use runtime::builtins::socket::SocketAddr; +use runtime::builtins::time::Time; +use runtime::builtins::time_source::TimeSource; +// use runtime::builtins::url::Url; +use runtime::builtins::writer::Writer; + +use super::dynamic::array::Array; +use super::dynamic::dataflow::Dataflow; +use super::dynamic::function::Fun; +use super::dynamic::instance::Instance; +// use super::dynamic::matrix::Matrix; +use super::dynamic::record::Record; +use super::dynamic::stream::Stream; +use super::dynamic::tuple::Tuple; +use super::dynamic::variant::Variant; +use super::Value; + +macro_rules! conv { + { + $type:ty, $variant:ident, $as:ident + } => { + impl Value { + #[track_caller] + pub fn $as(&self) -> $type { + if let Value::$variant(v) = self { + v.clone() + } else { + unreachable!("{}{:?}", std::panic::Location::caller(), self); + } + } + } + impl From<$type> for Value { + fn from(v: $type) -> Self { + Value::$variant(v) + } + } + } +} + +conv!(Array, Array, as_array); +conv!(Tuple, Tuple, as_tuple); +conv!(Fun, Fun, as_function); +// conv!(Matrix, Matrix, as_matrix); +conv!(Record, Record, as_record); +conv!(Stream, Stream, as_stream); +conv!(Variant, Variant, as_variant); +conv!(bool, Bool, as_bool); +conv!(Aggregator, Aggregator, as_aggregator); +conv!(Blob, Blob, as_blob); +conv!(Dict, Dict, as_dict); +conv!(Assigner, Discretizer, as_discretizer); +conv!(Duration, Duration, as_duration); +conv!(Dataflow, Dataflow, as_dataflow); +conv!(Encoding, Encoding, as_encoding); +conv!(File, File, as_file); +#[cfg(feature = "model")] +conv!(Model, Model, as_model); +conv!(runtime::builtins::option::Option>, Option, as_option); +conv!(Path, Path, as_path); +conv!(Reader, Reader, as_reader); +conv!(runtime::builtins::result::Result>, Result, as_result); +conv!(Set, Set, as_set); +conv!(SocketAddr, SocketAddr, as_socket_addr); +conv!(runtime::builtins::im_string::String, String, as_string); +conv!(Time, Time, as_time); +conv!(TimeSource, TimeSource, as_time_source); +// conv!(Url, Url, as_url); +conv!(runtime::builtins::vec::Vec, Vec, as_vec); + +conv!(Writer, Writer, as_writer); +conv!(char, Char, as_char); +conv!(f32, F32, as_f32); +conv!(f64, F64, as_f64); +conv!(i128, I128, as_i128); +conv!(i16, I16, as_i16); +conv!(i32, I32, as_i32); +conv!(i64, I64, as_i64); +conv!(i8, I8, as_i8); +conv!(u128, U128, as_u128); +conv!(u16, U16, as_u16); +conv!(u32, U32, as_u32); +conv!(u64, U64, as_u64); +conv!(u8, U8, as_u8); +conv!(usize, Usize, as_usize); +conv!(Instance, Instance, as_instance); +// conv!(Image, Image, as_image); diff --git a/crates/compiler/src/builtins/de.rs b/crates/compiler/src/builtins/de.rs new file mode 100644 index 0000000..a367608 --- /dev/null +++ b/crates/compiler/src/builtins/de.rs @@ -0,0 +1,326 @@ +use std::collections::HashMap; + +use serde::de::DeserializeSeed; +use serde::de::MapAccess; +use serde::de::VariantAccess; +use serde::de::Visitor; +use serde::Deserialize; +use serde::Deserializer; + +use crate::ast::Name; +use crate::builtins::Array; +use crate::builtins::Record; +use crate::*; + +// use super::Matrix; +use super::Tuple; +use super::Value; + +pub struct Seed(pub Type); + +impl<'de> DeserializeSeed<'de> for Seed { + type Value = Value; + + fn deserialize(self, deserializer: D) -> Result + where + D: Deserializer<'de>, + { + match self.0 { + Type::Fun(_, _) => unreachable!(), + Type::Tuple(ts) if ts.is_empty() => <() as Deserialize>::deserialize(deserializer) + .map(|()| Value::from(Tuple::new(vec![]))), + Type::Tuple(ts) => { + struct TupleVisitor(Vec); + impl<'de> Visitor<'de> for TupleVisitor { + type Value = Value; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(formatter, "a tuple of length {}", self.0.len()) + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut v = Vec::new(); + for t in self.0 { + let context = Seed(t); + v.push(seq.next_element_seed(context)?.unwrap()); + } + Ok(Value::from(Tuple::new(v))) + } + } + deserializer.deserialize_tuple(ts.len(), TupleVisitor(ts.clone())) + } + Type::Record(xts) => { + struct RecordVisitor(HashMap); + impl<'de> Visitor<'de> for RecordVisitor { + type Value = Value; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(formatter, "a record with fields {:?}", self.0) + } + + fn visit_map(mut self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut result = HashMap::new(); + while !self.0.is_empty() { + let k = map.next_key()?.unwrap(); + if let Some(t) = self.0.remove(&k) { + result.insert(k, map.next_value_seed(Seed(t))?); + } else { + return Err(serde::de::Error::custom("Found unexpected field")); + } + } + Ok(Value::from(Record::new(result.into_iter().collect()))) + } + } + deserializer.deserialize_map(RecordVisitor(xts.into_iter().collect())) + } + Type::Cons(x, ts) => match x.data.as_str() { + "i8" => i8::deserialize(deserializer).map(Value::from), + "i16" => i16::deserialize(deserializer).map(Value::from), + "i32" => i32::deserialize(deserializer).map(Value::from), + "i64" => i64::deserialize(deserializer).map(Value::from), + "u8" => u8::deserialize(deserializer).map(Value::from), + "u16" => u16::deserialize(deserializer).map(Value::from), + "u32" => u32::deserialize(deserializer).map(Value::from), + "u64" => u64::deserialize(deserializer).map(Value::from), + "usize" => usize::deserialize(deserializer).map(Value::from), + "f32" => f32::deserialize(deserializer).map(Value::from), + "f64" => f64::deserialize(deserializer).map(Value::from), + "bool" => bool::deserialize(deserializer).map(Value::from), + "char" => char::deserialize(deserializer).map(Value::from), + "String" => String::deserialize(deserializer) + .map(runtime::builtins::im_string::String::from) + .map(Value::from), + "Dict" => { + struct DictVisitor(Type, Type); + impl<'de> Visitor<'de> for DictVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a dict") + } + + fn visit_map(self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut result = std::collections::HashMap::default(); + while let Some((k, v)) = + map.next_entry_seed(Seed(self.0.clone()), Seed(self.1.clone()))? + { + result.insert(k, v); + } + Ok(Value::from(runtime::builtins::dict::Dict::from(result))) + } + } + let k = ts[0].clone(); + let v = ts[1].clone(); + deserializer.deserialize_map(DictVisitor(k, v)) + } + "Set" => { + struct SetVisitor(Type); + impl<'de> Visitor<'de> for SetVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a set") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut result = std::collections::HashSet::new(); + while let Some(v) = seq.next_element_seed(Seed(self.0.clone()))? { + result.insert(v); + } + Ok(Value::from(runtime::builtins::set::Set::from(result))) + } + } + let t = ts[0].clone(); + deserializer.deserialize_seq(SetVisitor(t)) + } + "Time" => runtime::builtins::time::Time::deserialize(deserializer).map(Value::from), + "Duration" => runtime::builtins::duration::Duration::deserialize(deserializer) + .map(Value::from), + // "Url" => runtime::builtins::url::Url::deserialize(deserializer).map(Value::from), + "Path" => runtime::builtins::path::Path::deserialize(deserializer).map(Value::from), + "Blob" => runtime::builtins::blob::Blob::deserialize(deserializer).map(Value::from), + "Option" => { + struct OptionVisitor(Type); + impl<'de> Visitor<'de> for OptionVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "an option") + } + + fn visit_some(self, deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let v = Seed(self.0).deserialize(deserializer)?; + Ok(Value::from(runtime::builtins::option::Option::some( + Rc::new(v), + ))) + } + + fn visit_none(self) -> Result { + Ok(Value::from(runtime::builtins::option::Option::none())) + } + } + let t = ts[0].clone(); + deserializer.deserialize_option(OptionVisitor(t)) + } + "Result" => { + struct ResultVisitor(Type); + impl<'de> Visitor<'de> for ResultVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a result") + } + + fn visit_enum(self, data: A) -> Result + where + A: serde::de::EnumAccess<'de>, + { + let (v, variant) = data.variant()?; + match v { + "Ok" => { + let v = variant.newtype_variant_seed(Seed(self.0.clone()))?; + Ok(Value::from(runtime::builtins::result::Result::ok(Rc::new( + v, + )))) + } + "Err" => { + let v = variant.newtype_variant()?; + Ok(Value::from(runtime::builtins::result::Result::error(v))) + } + _ => unreachable!(), + } + } + } + let t = ts[0].clone(); + deserializer.deserialize_enum("Result", &["Ok", "Err"], ResultVisitor(t)) + } + "Vec" => { + struct VecVisitor(Type); + impl<'de> Visitor<'de> for VecVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a vec") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut result = Vec::new(); + while let Some(v) = seq.next_element_seed(Seed(self.0.clone()))? { + result.push(v); + } + Ok(Value::from(runtime::builtins::vec::Vec::from(result))) + } + } + let t = ts[0].clone(); + deserializer.deserialize_seq(VecVisitor(t)) + } + // "Matrix" => { + // let Type::Cons(x, _) = &ts[0] else { + // unreachable!() + // }; + // let m = match x.data.as_str() { + // "i8" => Matrix::I8(runtime::builtins::matrix::Matrix::::deserialize( + // deserializer, + // )?), + // "i16" => Matrix::I16( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "i32" => Matrix::I32( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "i64" => Matrix::I64( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "u8" => Matrix::U8(runtime::builtins::matrix::Matrix::::deserialize( + // deserializer, + // )?), + // "u16" => Matrix::U16( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "u32" => Matrix::U32( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "u64" => Matrix::U64( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "f32" => Matrix::F32( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // "f64" => Matrix::F64( + // runtime::builtins::matrix::Matrix::::deserialize(deserializer)?, + // ), + // _ => unreachable!(), + // }; + // Ok(Value::from(m)) + // } + _ => unreachable!("Attempted to deserialize undeserializable type {:?}", x), + }, + Type::Generic(_) => unreachable!(), + Type::Array(t, n) => { + struct ArrayVisitor(Type); + impl<'de> Visitor<'de> for ArrayVisitor { + type Value = Value; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(formatter, "an array") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut result = Vec::new(); + while let Some(v) = seq.next_element_seed(Seed(self.0.clone()))? { + result.push(v); + } + Ok(Value::from(Array(result))) + } + } + let n = n.unwrap(); + deserializer.deserialize_tuple(n, ArrayVisitor(t.as_ref().clone())) + } + Type::Never => unreachable!(), + Type::Var(_) => Err(serde::de::Error::custom( + "Attempted to deserialize a type variable", + )), + Type::Err => unreachable!(), + Type::Alias(_, _) => unreachable!(), + Type::Assoc(_, _, _, _) => unreachable!(), + Type::Hole => unreachable!(), + Type::Unresolved(_) => todo!(), + } + } +} diff --git a/crates/compiler/src/builtins/dynamic/array.rs b/crates/compiler/src/builtins/dynamic/array.rs new file mode 100644 index 0000000..0b6f1e3 --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/array.rs @@ -0,0 +1,6 @@ +use serde::Serialize; + +use crate::builtins::Value; + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Array(pub Vec); diff --git a/crates/compiler/src/builtins/dynamic/dataflow.rs b/crates/compiler/src/builtins/dynamic/dataflow.rs new file mode 100644 index 0000000..1b71edb --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/dataflow.rs @@ -0,0 +1,29 @@ +use std::rc::Rc; + +use runtime::builtins::encoding::Encoding; +use runtime::builtins::writer::Writer; + +use crate::ast::Name; + +use super::stream::Stream; + +#[derive(Debug, Clone)] +pub struct Dataflow { + pub streams: Vec, + pub sinks: Vec, +} + +impl Dataflow { + pub fn new(streams: Vec, sinks: Vec) -> Self { + Self { streams, sinks } + } +} + +#[derive(Debug, Clone)] +pub struct Sink(pub Rc<(Name, Writer, Encoding)>); + +impl Sink { + pub fn new(stream: Name, writer: Writer, encoding: Encoding) -> Self { + Self(Rc::new((stream, writer, encoding))) + } +} diff --git a/crates/compiler/src/builtins/dynamic/function.rs b/crates/compiler/src/builtins/dynamic/function.rs new file mode 100644 index 0000000..17b8ae2 --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/function.rs @@ -0,0 +1,14 @@ +use crate::ast::Name; +use crate::ast::Type; + +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct Fun { + pub name: Name, + pub ts: Vec, +} + +impl Fun { + pub fn new(name: Name, ts: Vec) -> Fun { + Fun { name, ts } + } +} diff --git a/crates/compiler/src/builtins/dynamic/instance.rs b/crates/compiler/src/builtins/dynamic/instance.rs new file mode 100644 index 0000000..a140fca --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/instance.rs @@ -0,0 +1,6 @@ +use runtime::builtins::path::Path; + +#[derive(Debug, Clone)] +pub struct Instance { + pub log: Path, +} diff --git a/crates/compiler/src/builtins/dynamic/matrix.rs b/crates/compiler/src/builtins/dynamic/matrix.rs new file mode 100644 index 0000000..8755498 --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/matrix.rs @@ -0,0 +1,174 @@ +use serde::Serialize; + +#[derive(Clone, Serialize)] +#[serde(untagged)] +pub enum Matrix { + I8(runtime::builtins::matrix::Matrix), + I16(runtime::builtins::matrix::Matrix), + I32(runtime::builtins::matrix::Matrix), + I64(runtime::builtins::matrix::Matrix), + U8(runtime::builtins::matrix::Matrix), + U16(runtime::builtins::matrix::Matrix), + U32(runtime::builtins::matrix::Matrix), + U64(runtime::builtins::matrix::Matrix), + F32(runtime::builtins::matrix::Matrix), + F64(runtime::builtins::matrix::Matrix), +} + +impl std::fmt::Debug for Matrix { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Matrix::I8(v) => v.fmt(f), + Matrix::I16(v) => v.fmt(f), + Matrix::I32(v) => v.fmt(f), + Matrix::I64(v) => v.fmt(f), + Matrix::U8(v) => v.fmt(f), + Matrix::U16(v) => v.fmt(f), + Matrix::U32(v) => v.fmt(f), + Matrix::U64(v) => v.fmt(f), + Matrix::F32(v) => v.fmt(f), + Matrix::F64(v) => v.fmt(f), + } + } +} + +impl Matrix { + pub fn as_i8(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::I8(v) => v, + _ => unreachable!(), + } + } + pub fn as_i16(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::I16(v) => v, + _ => unreachable!(), + } + } + pub fn as_i32(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::I32(v) => v, + _ => unreachable!(), + } + } + pub fn as_i64(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::I64(v) => v, + _ => unreachable!(), + } + } + pub fn as_u8(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::U8(v) => v, + _ => unreachable!(), + } + } + pub fn as_u16(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::U16(v) => v, + _ => unreachable!(), + } + } + pub fn as_u32(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::U32(v) => v, + _ => unreachable!(), + } + } + pub fn as_u64(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::U64(v) => v, + _ => unreachable!(), + } + } + pub fn as_f32(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::F32(v) => v, + _ => unreachable!(), + } + } + pub fn as_f64(self) -> runtime::builtins::matrix::Matrix { + match self { + Matrix::F64(v) => v, + _ => unreachable!(), + } + } +} + +#[macro_export] +macro_rules! map_matrix { + { $v:expr, $f:expr } => { + match $v { + Matrix::I8(v) => $f(v), + Matrix::I16(v) => $f(v), + Matrix::I32(v) => $f(v), + Matrix::I64(v) => $f(v), + Matrix::U8(v) => $f(v), + Matrix::U16(v) => $f(v), + Matrix::U32(v) => $f(v), + Matrix::U64(v) => $f(v), + Matrix::F32(v) => $f(v), + Matrix::F64(v) => $f(v), + } + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::I8(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::I16(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::I32(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::I64(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::U8(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::U16(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::U32(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::U64(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::F32(v) + } +} + +impl From> for Matrix { + fn from(v: runtime::builtins::matrix::Matrix) -> Self { + Matrix::F64(v) + } +} diff --git a/crates/compiler/src/builtins/dynamic/record.rs b/crates/compiler/src/builtins/dynamic/record.rs new file mode 100644 index 0000000..84f50f6 --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/record.rs @@ -0,0 +1,27 @@ +use serde::ser::SerializeMap; +use serde::Serialize; + +use crate::ast::Name; +use crate::builtins::Value; + +#[derive(Debug, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)] +pub struct Record(pub Vec<(Name, Value)>); + +impl Record { + pub fn new(fields: Vec<(Name, Value)>) -> Record { + Record(fields) + } +} + +impl Serialize for Record { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let mut map = serializer.serialize_map(Some(self.0.len()))?; + for (name, value) in &self.0 { + map.serialize_entry(name, value)?; + } + map.end() + } +} diff --git a/crates/compiler/src/builtins/dynamic/stream.rs b/crates/compiler/src/builtins/dynamic/stream.rs new file mode 100644 index 0000000..f6f2895 --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/stream.rs @@ -0,0 +1,27 @@ +use std::rc::Rc; + +use crate::ast::Name; +use runtime::prelude::Aggregator; +use runtime::prelude::Assigner; +use runtime::prelude::Encoding; +use runtime::prelude::Reader; +use runtime::prelude::TimeSource; +use runtime::prelude::Writer; + +use super::function::Fun; + +#[derive(Debug, Clone)] +pub enum Stream { + Source(Reader, Encoding, TimeSource), + Map(Rc, Fun), + Filter(Rc, Fun), + Flatten(Rc), + FlatMap(Rc, Fun), + Scan(Rc, Fun), + Keyby(Rc, Fun), + Unkey(Rc), + Apply(Rc, Fun), + Window(Rc, Assigner, Aggregator), + Merge(Rc, Rc, Vec), + Sink(Rc, Writer, Encoding), +} diff --git a/crates/compiler/src/builtins/dynamic/tuple.rs b/crates/compiler/src/builtins/dynamic/tuple.rs new file mode 100644 index 0000000..02bd358 --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/tuple.rs @@ -0,0 +1,12 @@ +use serde::Serialize; + +use crate::builtins::Value; + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Tuple(pub Vec); + +impl Tuple { + pub fn new(values: Vec) -> Tuple { + Tuple(values) + } +} diff --git a/crates/compiler/src/builtins/dynamic/variant.rs b/crates/compiler/src/builtins/dynamic/variant.rs new file mode 100644 index 0000000..1f6be8a --- /dev/null +++ b/crates/compiler/src/builtins/dynamic/variant.rs @@ -0,0 +1,20 @@ +use std::rc::Rc; + +use crate::ast::Name; +use crate::builtins::Value; +use serde::Serialize; + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Variant { + pub name: Name, + pub value: Rc, +} + +impl Variant { + pub fn new(name: Name, value: Value) -> Variant { + Variant { + name, + value: Rc::new(value), + } + } +} diff --git a/crates/compiler/src/builtins/eq.rs b/crates/compiler/src/builtins/eq.rs new file mode 100644 index 0000000..17d99e5 --- /dev/null +++ b/crates/compiler/src/builtins/eq.rs @@ -0,0 +1,67 @@ +// use super::Matrix; +use super::Value; + +impl PartialEq for Value { + fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Value::Aggregator(_), Value::Aggregator(_)) => unreachable!(), + (Value::Array(a), Value::Array(b)) => a == b, + (Value::Blob(_), Value::Blob(_)) => unreachable!(), + (Value::Bool(a), Value::Bool(b)) => a == b, + (Value::Char(a), Value::Char(b)) => a == b, + (Value::Discretizer(_), Value::Discretizer(_)) => unreachable!(), + (Value::Duration(a), Value::Duration(b)) => a == b, + (Value::Encoding(a), Value::Encoding(b)) => a == b, + (Value::F32(_), Value::F32(_)) => unreachable!(), + (Value::F64(_), Value::F64(_)) => unreachable!(), + (Value::File(_), Value::File(_)) => unreachable!(), + (Value::Fun(a), Value::Fun(b)) => a == b, + (Value::I8(a), Value::I8(b)) => a == b, + (Value::I16(a), Value::I16(b)) => a == b, + (Value::I32(a), Value::I32(b)) => a == b, + (Value::I64(a), Value::I64(b)) => a == b, + (Value::U8(a), Value::U8(b)) => a == b, + (Value::U16(a), Value::U16(b)) => a == b, + (Value::U32(a), Value::U32(b)) => a == b, + (Value::U64(a), Value::U64(b)) => a == b, + // (Value::Matrix(a), Value::Matrix(b)) => match (a, b) { + // (Matrix::I8(a), Matrix::I8(b)) => a == b, + // (Matrix::I16(a), Matrix::I16(b)) => a == b, + // (Matrix::I32(a), Matrix::I32(b)) => a == b, + // (Matrix::I64(a), Matrix::I64(b)) => a == b, + // (Matrix::U8(a), Matrix::U8(b)) => a == b, + // (Matrix::U16(a), Matrix::U16(b)) => a == b, + // (Matrix::U32(a), Matrix::U32(b)) => a == b, + // (Matrix::U64(a), Matrix::U64(b)) => a == b, + // (Matrix::F32(_), Matrix::F32(_)) => unreachable!(), + // (Matrix::F64(_), Matrix::F64(_)) => unreachable!(), + // _ => unreachable!(), + // }, + // (Value::Model(_), Value::Model(_)) => unreachable!(), + (Value::Option(a), Value::Option(b)) => a == b, + (Value::Path(a), Value::Path(b)) => a == b, + (Value::Reader(_), Value::Reader(_)) => unreachable!(), + (Value::Record(a), Value::Record(b)) => a == b, + (Value::Variant(a), Value::Variant(b)) => a == b, + (Value::Result(a), Value::Result(b)) => a == b, + (Value::SocketAddr(a), Value::SocketAddr(b)) => a == b, + (Value::Stream(_), Value::Stream(_)) => unreachable!(), + (Value::String(a), Value::String(b)) => a == b, + (Value::Time(a), Value::Time(b)) => a == b, + (Value::TimeSource(_), Value::TimeSource(_)) => unreachable!(), + (Value::Tuple(a), Value::Tuple(b)) => a == b, + (Value::Usize(a), Value::Usize(b)) => a == b, + // (Value::Url(a), Value::Url(b)) => a == b, + (Value::Vec(a), Value::Vec(b)) => a == b, + (Value::Writer(_), Value::Writer(_)) => unreachable!(), + (Value::Dict(a), Value::Dict(b)) => a == b, + (Value::Set(a), Value::Set(b)) => a == b, + _ => unreachable!( + "Attempted to compare incompatible types \n{:?} \nand \n{:?}", + self, other + ), + } + } +} + +impl Eq for Value {} diff --git a/crates/compiler/src/builtins/hash.rs b/crates/compiler/src/builtins/hash.rs new file mode 100644 index 0000000..1546ad8 --- /dev/null +++ b/crates/compiler/src/builtins/hash.rs @@ -0,0 +1,55 @@ +use std::hash::Hash; + +use super::Value; + +impl Hash for Value { + fn hash(&self, state: &mut H) { + match self { + Value::Aggregator(_) => unreachable!(), + Value::Array(v) => v.hash(state), + Value::Blob(_) => unreachable!(), + Value::Bool(v) => v.hash(state), + Value::Char(v) => v.hash(state), + Value::Discretizer(_) => unreachable!(), + Value::Duration(v) => v.hash(state), + Value::Encoding(_) => unreachable!(), + Value::F64(_) => unreachable!(), + Value::File(_) => unreachable!(), + Value::Fun(_) => unreachable!(), + Value::I32(v) => v.hash(state), + // Value::Matrix(_) => unreachable!(), + // Value::Model(_) => unreachable!(), + Value::Option(v) => v.hash(state), + Value::Path(v) => v.hash(state), + Value::Reader(_) => unreachable!(), + Value::Record(v) => v.hash(state), + Value::Variant(v) => v.hash(state), + Value::Result(v) => v.hash(state), + Value::SocketAddr(_) => unreachable!(), + Value::Stream(_) => unreachable!(), + Value::String(v) => v.hash(state), + Value::Time(v) => v.hash(state), + Value::TimeSource(_) => unreachable!(), + Value::Tuple(v) => v.hash(state), + Value::Usize(v) => v.hash(state), + // Value::Url(v) => v.hash(state), + Value::Vec(v) => v.hash(state), + Value::Writer(_) => unreachable!(), + Value::Dict(_) => unreachable!(), + Value::F32(_) => unreachable!(), + Value::I128(v) => v.hash(state), + Value::I16(v) => v.hash(state), + Value::I64(v) => v.hash(state), + Value::I8(v) => v.hash(state), + // Value::Image(_) => unreachable!(), + Value::Set(_) => unreachable!(), + Value::Dataflow(_) => unreachable!(), + Value::U128(v) => v.hash(state), + Value::U16(v) => v.hash(state), + Value::U32(v) => v.hash(state), + Value::U64(v) => v.hash(state), + Value::U8(v) => v.hash(state), + Value::Instance(_) => unreachable!(), + } + } +} diff --git a/crates/compiler/src/builtins/mod.rs b/crates/compiler/src/builtins/mod.rs new file mode 100644 index 0000000..5827aec --- /dev/null +++ b/crates/compiler/src/builtins/mod.rs @@ -0,0 +1,150 @@ +pub mod dynamic { + pub mod array; + pub mod dataflow; + pub mod function; + pub mod instance; + // pub mod matrix; + pub mod record; + pub mod stream; + pub mod tuple; + pub mod variant; +} + +mod conv; +pub mod de; +mod eq; +mod hash; +mod ord; +mod ser; + +pub use dynamic::array::Array; +pub use dynamic::dataflow::Dataflow; +pub use dynamic::dataflow::Sink; +pub use dynamic::function::Fun; +pub use dynamic::instance::Instance; +// pub use dynamic::matrix::Matrix; +pub use dynamic::record::Record; +pub use dynamic::stream::Stream; +pub use dynamic::tuple::Tuple; +pub use dynamic::variant::Variant; + +use runtime::prelude::Aggregator; +use runtime::prelude::Assigner; +use runtime::prelude::Blob; +use runtime::prelude::Dict; +use runtime::prelude::Duration; +use runtime::prelude::Encoding; +use runtime::prelude::File; +// use runtime::prelude::Image; +// use runtime::prelude::Model; +use runtime::prelude::Path; +use runtime::prelude::Reader; +use runtime::prelude::Set; +use runtime::prelude::SocketAddr; +use runtime::prelude::Time; +use runtime::prelude::TimeSource; +// use runtime::prelude::Url; +use runtime::prelude::Writer; + +use std::rc::Rc; + +#[derive(Clone)] +pub enum Value { + Aggregator(Aggregator), + Array(Array), + Blob(Blob), + Bool(bool), + Char(char), + Dict(Dict), + Discretizer(Assigner), + Duration(Duration), + Encoding(Encoding), + F32(f32), + F64(f64), + File(File), + Fun(Fun), + I128(i128), + I16(i16), + I32(i32), + I64(i64), + I8(i8), + // Image(Image), + // Matrix(Matrix), + // Model(Model), + Option(runtime::builtins::option::Option>), + Path(Path), + Reader(Reader), + Record(Record), + Result(runtime::builtins::result::Result>), + Set(Set), + SocketAddr(SocketAddr), + Stream(Stream), + Dataflow(Dataflow), + String(runtime::builtins::im_string::String), + Time(Time), + TimeSource(TimeSource), + Tuple(Tuple), + U128(u128), + U16(u16), + U32(u32), + U64(u64), + U8(u8), + // Url(Url), + Usize(usize), + Variant(Variant), + Vec(runtime::builtins::vec::Vec), + Writer(Writer), + Instance(Instance), +} + +impl std::fmt::Debug for Value { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Value::Aggregator(v) => v.fmt(f), + Value::Array(v) => v.fmt(f), + Value::Blob(v) => v.fmt(f), + Value::Bool(v) => v.fmt(f), + Value::Char(v) => v.fmt(f), + Value::Dict(v) => v.fmt(f), + Value::Discretizer(v) => v.fmt(f), + Value::Duration(v) => v.fmt(f), + Value::Encoding(v) => v.fmt(f), + Value::F32(v) => v.fmt(f), + Value::F64(v) => v.fmt(f), + Value::File(v) => v.fmt(f), + Value::Fun(v) => v.fmt(f), + Value::I128(v) => v.fmt(f), + Value::I16(v) => v.fmt(f), + Value::I32(v) => v.fmt(f), + Value::I64(v) => v.fmt(f), + Value::I8(v) => v.fmt(f), + // Value::Matrix(v) => v.fmt(f), + // Value::Model(v) => v.fmt(f), + Value::Option(v) => v.fmt(f), + Value::Path(v) => v.fmt(f), + Value::Reader(v) => v.fmt(f), + Value::Record(v) => v.fmt(f), + Value::Result(v) => v.fmt(f), + Value::Set(v) => v.fmt(f), + Value::SocketAddr(v) => v.fmt(f), + Value::Stream(v) => v.fmt(f), + Value::Dataflow(v) => v.fmt(f), + Value::String(v) => v.fmt(f), + Value::Time(v) => v.fmt(f), + Value::TimeSource(v) => v.fmt(f), + Value::Tuple(v) => v.fmt(f), + Value::U128(v) => v.fmt(f), + Value::U16(v) => v.fmt(f), + Value::U32(v) => v.fmt(f), + Value::U64(v) => v.fmt(f), + Value::U8(v) => v.fmt(f), + // Value::Url(v) => v.fmt(f), + Value::Usize(v) => v.fmt(f), + Value::Variant(v) => v.fmt(f), + Value::Vec(v) => v.fmt(f), + Value::Writer(v) => v.fmt(f), + Value::Instance(v) => v.fmt(f), + // Value::Image(v) => v.fmt(f), + } + } +} diff --git a/crates/compiler/src/builtins/ord.rs b/crates/compiler/src/builtins/ord.rs new file mode 100644 index 0000000..9f2c949 --- /dev/null +++ b/crates/compiler/src/builtins/ord.rs @@ -0,0 +1,61 @@ +use super::Value; + +#[allow(clippy::non_canonical_partial_ord_impl)] +impl PartialOrd for Value { + fn partial_cmp(&self, other: &Self) -> Option { + match (self, other) { + (Value::F32(a), Value::F32(b)) => a.partial_cmp(b), + (Value::F64(a), Value::F64(b)) => a.partial_cmp(b), + _ => Some(self.cmp(other)), + } + } +} + +impl Ord for Value { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + match (self, other) { + (Value::Aggregator(_), Value::Aggregator(_)) => unreachable!(), + (Value::Array(a), Value::Array(b)) => a.cmp(b), + (Value::Blob(_), Value::Blob(_)) => unreachable!(), + (Value::Bool(a), Value::Bool(b)) => a.cmp(b), + (Value::Char(a), Value::Char(b)) => a.cmp(b), + (Value::Discretizer(_), Value::Discretizer(_)) => unreachable!(), + (Value::Duration(a), Value::Duration(b)) => a.cmp(b), + (Value::Encoding(a), Value::Encoding(b)) => a.cmp(b), + (Value::F32(_), Value::F32(_)) => unreachable!(), + (Value::F64(_), Value::F64(_)) => unreachable!(), + (Value::File(_), Value::File(_)) => unreachable!(), + (Value::Fun(_), Value::Fun(_)) => unreachable!(), + (Value::I8(a), Value::I8(b)) => a.cmp(b), + (Value::I16(a), Value::I16(b)) => a.cmp(b), + (Value::I32(a), Value::I32(b)) => a.cmp(b), + (Value::I64(a), Value::I64(b)) => a.cmp(b), + (Value::U8(a), Value::U8(b)) => a.cmp(b), + (Value::U16(a), Value::U16(b)) => a.cmp(b), + (Value::U32(a), Value::U32(b)) => a.cmp(b), + (Value::U64(a), Value::U64(b)) => a.cmp(b), + (Value::Usize(a), Value::Usize(b)) => a.cmp(b), + // (Value::Matrix(_), Value::Matrix(_)) => unreachable!(), + // (Value::Model(_), Value::Model(_)) => unreachable!(), + (Value::Option(a), Value::Option(b)) => a.cmp(b), + (Value::Path(a), Value::Path(b)) => a.cmp(b), + (Value::Reader(_), Value::Reader(_)) => unreachable!(), + (Value::Record(a), Value::Record(b)) => a.cmp(b), + (Value::Variant(a), Value::Variant(b)) => a.cmp(b), + (Value::Result(a), Value::Result(b)) => a.cmp(b), + (Value::SocketAddr(a), Value::SocketAddr(b)) => a.cmp(b), + (Value::Stream(_), Value::Stream(_)) => unreachable!(), + (Value::String(a), Value::String(b)) => a.cmp(b), + (Value::Time(a), Value::Time(b)) => a.cmp(b), + (Value::TimeSource(_), Value::TimeSource(_)) => unreachable!(), + (Value::Tuple(a), Value::Tuple(b)) => a.cmp(b), + // (Value::Url(a), Value::Url(b)) => a.cmp(b), + (Value::Vec(a), Value::Vec(b)) => a.cmp(b), + (Value::Writer(_), Value::Writer(_)) => unreachable!(), + (x, y) if std::mem::discriminant(x) == std::mem::discriminant(y) => { + panic!("uncovered case") + } + _ => unreachable!(), + } + } +} diff --git a/crates/compiler/src/builtins/ser.rs b/crates/compiler/src/builtins/ser.rs new file mode 100644 index 0000000..6a5dfe9 --- /dev/null +++ b/crates/compiler/src/builtins/ser.rs @@ -0,0 +1,58 @@ +use serde::Serialize; + +use super::Value; + +impl Serialize for Value { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + Value::Aggregator(_) => unreachable!(), + Value::Array(v) => v.serialize(serializer), + Value::Blob(v) => v.serialize(serializer), + Value::Bool(v) => v.serialize(serializer), + Value::Char(v) => v.serialize(serializer), + Value::Dict(v) => v.serialize(serializer), + Value::Discretizer(v) => v.serialize(serializer), + Value::Duration(v) => v.serialize(serializer), + Value::Encoding(v) => v.serialize(serializer), + Value::F32(v) => v.serialize(serializer), + Value::F64(v) => v.serialize(serializer), + Value::File(_) => unreachable!(), + Value::Fun(_) => unreachable!(), + Value::I128(v) => v.serialize(serializer), + Value::I16(v) => v.serialize(serializer), + Value::I32(v) => v.serialize(serializer), + Value::I64(v) => v.serialize(serializer), + Value::I8(v) => v.serialize(serializer), + // Value::Matrix(v) => v.serialize(serializer), + // Value::Model(v) => v.serialize(serializer), + Value::Option(v) => v.serialize(serializer), + Value::Path(v) => v.serialize(serializer), + Value::Reader(v) => v.serialize(serializer), + Value::Record(v) => v.serialize(serializer), + Value::Result(v) => v.serialize(serializer), + Value::Set(v) => v.serialize(serializer), + Value::SocketAddr(v) => v.serialize(serializer), + Value::Stream(_) => unreachable!(), + Value::String(v) => v.serialize(serializer), + Value::Time(v) => v.serialize(serializer), + Value::TimeSource(_) => unreachable!(), + Value::Tuple(v) => v.serialize(serializer), + Value::U128(v) => v.serialize(serializer), + Value::U16(v) => v.serialize(serializer), + Value::U32(v) => v.serialize(serializer), + Value::U64(v) => v.serialize(serializer), + Value::U8(v) => v.serialize(serializer), + // Value::Url(v) => v.serialize(serializer), + Value::Usize(v) => v.serialize(serializer), + Value::Variant(v) => v.serialize(serializer), + Value::Vec(v) => v.serialize(serializer), + Value::Writer(v) => v.serialize(serializer), + Value::Dataflow(_) => unreachable!(), + Value::Instance(_) => unreachable!(), + // Value::Image(v) => v.serialize(serializer), + } + } +} diff --git a/crates/compiler/src/bytecode.rs b/crates/compiler/src/bytecode.rs new file mode 100644 index 0000000..e69de29 diff --git a/crates/compiler/src/codegen.rs b/crates/compiler/src/codegen.rs new file mode 100644 index 0000000..6dd8328 --- /dev/null +++ b/crates/compiler/src/codegen.rs @@ -0,0 +1,632 @@ +#![allow(unused)] +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Index; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::Program; +use crate::ast::Query; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::TraitDef; +use crate::ast::TraitType; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::print::Print; + +pub struct Wrapper(T); + +impl<'a> std::fmt::Display for Wrapper<&'a Program> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut p = Rust::new(f); + p.type_info = true; + p.program(self.0) + } +} + +impl<'a, 'b> Print<'b> for Rust<'a, 'b> { + fn fmt(&mut self) -> &mut std::fmt::Formatter<'b> { + self.f + } + + fn get_indent(&mut self) -> &mut usize { + &mut self.indent_level + } + + fn should_indent(&mut self) -> bool { + self.noindent + } +} + +impl Program { + pub fn rust(&self) -> Wrapper<&Self> { + Wrapper(self) + } +} + +pub struct Rust<'a, 'b> { + f: &'a mut std::fmt::Formatter<'b>, + noindent: bool, + indent_level: usize, + type_info: bool, +} + +impl<'a, 'b> Rust<'a, 'b> { + fn new(f: &'a mut std::fmt::Formatter<'b>) -> Rust<'a, 'b> { + Rust { + f, + noindent: false, + indent_level: 0, + type_info: false, + } + } + + fn program(&mut self, p: &Program) -> std::fmt::Result { + self.newline_sep(&p.stmts, Self::stmt) + } + + fn param(&mut self, p: &Param) -> std::fmt::Result { + self.name(&p.name)?; + self.punct(":")?; + self.space()?; + self.ty(&p.ty) + } + + fn stmt(&mut self, s: &Stmt) -> std::fmt::Result { + match s { + Stmt::Var(s) => self.stmt_var(s), + Stmt::Def(s) => self.stmt_def(s), + Stmt::Impl(s) => self.stmt_impl(s), + Stmt::Expr(s) => self.stmt_expr(s), + Stmt::Struct(s) => self.stmt_struct(s), + Stmt::Enum(s) => self.stmt_enum(s), + Stmt::Type(s) => self.stmt_type(s), + Stmt::Trait(s) => self.stmt_trait(s), + Stmt::Err(_) => todo!(), + } + } + + fn stmt_var(&mut self, s: &StmtVar) -> std::fmt::Result { + self.kw("let")?; + self.space()?; + self.name(&s.name)?; + self.punct(":")?; + self.space()?; + self.ty(&s.ty)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.expr(&s.expr)?; + self.punct(";") + } + + fn stmt_def(&mut self, s: &StmtDef) -> std::fmt::Result { + self.kw("fn")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.paren(|this| this.comma_sep(&s.params, Self::param))?; + self.punct(":")?; + self.space()?; + self.ty(&s.ty)?; + self.where_clause(&s.where_clause)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.body(&s.body)?; + self.punct(";") + } + + fn body(&mut self, e: &Body) -> std::fmt::Result { + match e { + Body::Expr(e) => self.expr(e), + Body::Builtin => self.kw(""), + } + } + + fn stmt_impl(&mut self, s: &StmtImpl) -> std::fmt::Result { + self.kw("impl")?; + assert!(s.generics.is_empty()); + self.space()?; + self.bound(&s.head)?; + self.where_clause(&s.where_clause)?; + self.space()?; + self.brace(|this| { + this.indented(|this| { + this.newline_sep(&s.defs, Self::stmt_def)?; + this.newline_sep(&s.types, Self::stmt_type) + }) + }) + } + + fn where_clause(&mut self, ts: &[Bound]) -> std::fmt::Result { + if !ts.is_empty() { + self.space()?; + self.kw("where")?; + self.space()?; + self.comma_sep(ts, Self::bound)?; + } + Ok(()) + } + + fn stmt_expr(&mut self, s: &Expr) -> std::fmt::Result { + self.expr(s)?; + self.punct(";") + } + + fn stmt_struct(&mut self, s: &StmtStruct) -> std::fmt::Result { + self.kw("struct")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.fields(&s.fields, Self::annotate)?; + self.punct(";") + } + + fn stmt_enum(&mut self, s: &StmtEnum) -> std::fmt::Result { + self.kw("enum")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.space()?; + self.scope(&s.variants, Self::variant) + } + + fn variant(&mut self, (x, t): &(Name, Type)) -> std::fmt::Result { + self.name(x)?; + self.paren(|this| this.ty(t)) + } + + fn stmt_type(&mut self, s: &StmtType) -> std::fmt::Result { + self.kw("type")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.space()?; + self.punct("=")?; + self.space()?; + self.ty(&s.ty)?; + self.punct(";") + } + + fn stmt_trait(&mut self, s: &StmtTrait) -> std::fmt::Result { + self.kw("trait")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.space()?; + self.brace(|this| { + this.indented(|this| { + this.newline_sep(&s.defs, Self::stmt_def_decl)?; + this.newline_sep(&s.types, Self::stmt_type_decl) + }) + }) + } + + fn stmt_def_decl(&mut self, s: &TraitDef) -> std::fmt::Result { + self.kw("def")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.paren(|this| this.comma_sep(&s.params, Self::param))?; + self.punct(":")?; + self.space()?; + self.ty(&s.ty)?; + self.punct(";") + } + + fn stmt_type_decl(&mut self, s: &TraitType) -> std::fmt::Result { + self.kw("type")?; + self.space()?; + self.name(&s.name)?; + assert!(s.generics.is_empty()); + self.space()?; + self.punct(";") + } + + fn type_args(&mut self, ts: &[Type]) -> std::fmt::Result { + if !ts.is_empty() { + self.brack(|this| this.comma_sep(ts, Self::ty))?; + } + Ok(()) + } + + fn _expr(&mut self, expr: &Expr) -> std::fmt::Result { + match expr { + Expr::Unresolved(_, _, p) => unreachable!(), + Expr::Int(_, _, v) => { + self.lit(v)?; + } + Expr::Float(_, _, v) => { + self.lit(v)?; + } + Expr::Bool(_, _, v) => { + self.lit(v)?; + } + Expr::String(_, _, s) => { + self.str(s)?; + } + Expr::Field(_, _, e, x) => { + self.expr(e)?; + self.punct(".")?; + self.name(x)?; + } + Expr::Tuple(_, _, es) => { + self.paren(|this| this.comma_sep_trailing(es, Self::expr))?; + } + Expr::Struct(_, _, name, ts, xes) => { + self.name(name)?; + self.type_args(ts)?; + self.fields(xes, Self::assign)?; + } + Expr::Enum(_, _, name, ts, x1, e) => { + self.name(name)?; + self.type_args(ts)?; + self.punct("::")?; + self.name(x1)?; + self.paren(|this| this.expr(e))?; + } + Expr::Var(_, _, x) => { + self.name(x)?; + } + Expr::Def(_, _, name, ts) => { + self.name(name)?; + self.type_args(ts)?; + } + Expr::Call(_, _, e, es) => { + self.expr(e)?; + self.paren(|this| this.comma_sep(es, Self::expr))?; + } + Expr::Block(_, _, ss, e) => { + self.brace(|this| { + this.indented(|this| { + this.newline_sep(ss, |this, s| this.stmt(s))?; + this.newline()?; + this.expr(e) + })?; + this.newline() + })?; + } + Expr::Query(_, _, qs) => { + self.newline_sep(qs, Self::query_stmt)?; + } + Expr::Assoc(_, _, x0, ts0, x1, ts1) => { + self.name(x0)?; + self.type_args(ts0)?; + self.punct("::")?; + self.name(x1)?; + self.type_args(ts1)?; + } + Expr::Index(_, _, e, i) => { + self.expr(e)?; + self.punct(".")?; + self.index(i)?; + } + Expr::Array(_, _, es) => { + self.brack(|this| this.comma_sep(es, Self::expr))?; + } + Expr::Err(_, _) => { + self.kw("")?; + } + Expr::Assign(_, _, e0, e1) => { + self.expr(e0)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.expr(e1)?; + } + Expr::Return(_, _, e) => { + self.kw("return")?; + self.space()?; + self.expr(e)?; + } + Expr::Continue(_, _) => { + self.kw("continue")?; + } + Expr::Break(_, _) => { + self.kw("break")?; + } + Expr::Fun(_, _, ps, t, e) => { + self.kw("fun")?; + self.paren(|this| this.comma_sep(ps, Self::param))?; + self.punct(":")?; + self.space()?; + self.ty(t)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.expr(e)?; + } + Expr::Match(_, _, e, arms) => { + self.kw("match")?; + self.space()?; + self.expr(e)?; + self.space()?; + self.scope(arms, Self::arm)?; + } + Expr::While(_, _, e0, e1) => { + self.kw("while")?; + self.space()?; + self.expr(e0)?; + self.space()?; + self.expr(e1)?; + } + Expr::Record(_, _, xts) => { + self.fields(xts, Self::assign)?; + } + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => unreachable!(), + Expr::Postfix(_, _, _, _) => unreachable!(), + Expr::Prefix(_, _, _, _) => unreachable!(), + } + Ok(()) + } + + fn arm(&mut self, (p, e): &(Pat, Expr)) -> std::fmt::Result { + self.pat(p)?; + self.space()?; + self.punct("=>")?; + self.space()?; + self.expr(e) + } + + fn expr(&mut self, expr: &Expr) -> std::fmt::Result { + if self.type_info { + self.paren(|this| { + this._expr(expr)?; + this.punct(":")?; + this.ty(expr.ty()) + })?; + } else { + self._expr(expr)?; + } + Ok(()) + } + + fn scan(&mut self, (x, e): &(Name, Expr)) -> std::fmt::Result { + self.name(x)?; + self.punct(" in ")?; + self.expr(e) + } + + fn assign(&mut self, (x, e): &(Name, Expr)) -> std::fmt::Result { + self.name(x)?; + self.punct(" = ")?; + self.expr(e) + } + + fn bind(&mut self, (p, e): &(Name, Pat)) -> std::fmt::Result { + self.name(p)?; + self.punct("=")?; + self.pat(e) + } + + fn annotate(&mut self, (x, t): &(Name, Type)) -> std::fmt::Result { + self.name(x)?; + self.punct(":")?; + self.ty(t) + } + + fn query_stmt(&mut self, q: &Query) -> std::fmt::Result { + match q { + Query::From(_, _, xes) => { + self.kw("from")?; + self.space()?; + self.comma_scope(xes, Self::scan)?; + } + Query::Where(_, _, e) => { + self.kw("where")?; + self.space()?; + self.expr(e)?; + } + Query::Select(_, _, xes) => { + self.kw("select")?; + self.space()?; + self.comma_scope(xes, Self::assign)?; + } + Query::Join(_, _, xes, e) => { + self.kw("join")?; + self.space()?; + self.comma_scope(xes, Self::scan)?; + self.space()?; + self.punct("on")?; + self.space()?; + self.expr(e)?; + } + Query::Group(_, _, xs, qs) => { + self.kw("group")?; + self.space()?; + self.comma_sep(xs, Self::name)?; + self.space()?; + self.comma_scope(qs, Self::query_stmt)?; + } + Query::Over(_, _, e, qs) => { + self.kw("over")?; + self.space()?; + self.expr(e)?; + self.comma_scope(qs, Self::query_stmt)?; + } + Query::Order(_, _, os) => { + self.kw("order")?; + self.space()?; + self.comma_sep(os, Self::ordering)?; + } + Query::With(_, _, xes) => { + self.kw("with")?; + self.space()?; + self.comma_scope(xes, Self::assign)?; + } + Query::Into(_, _, e) => { + self.kw("into")?; + self.space()?; + self.comma_sep(e, Self::expr)?; + } + Query::Compute(_, _, aggs) => { + self.kw("compute")?; + self.space()?; + self.comma_scope(aggs, Self::agg)?; + } + } + Ok(()) + } + + fn ordering(&mut self, (x, d): &(Name, bool)) -> std::fmt::Result { + self.name(x)?; + if *d { + self.space()?; + self.kw("desc")?; + } + Ok(()) + } + + fn agg(&mut self, (x, e0, e1): &(Name, Expr, Expr)) -> std::fmt::Result { + self.name(x)?; + self.punct("=")?; + self.expr(e0)?; + self.space()?; + self.kw("of")?; + self.space()?; + self.expr(e1) + } + + fn bound(&mut self, b: &Bound) -> std::fmt::Result { + match b { + Bound::Unresolved(..) => unreachable!(), + Bound::Trait(_, x, ts) => { + self.name(x)?; + self.type_args(ts)?; + } + Bound::Err(_) => unreachable!(), + } + Ok(()) + } + + fn ty(&mut self, t: &Type) -> std::fmt::Result { + match t { + Type::Cons(name, ts) => { + self.name(name)?; + self.type_args(ts)?; + } + Type::Assoc(x0, ts0, x1, ts1) => { + self.name(x0)?; + self.type_args(ts0)?; + self.punct("::")?; + self.name(x1)?; + self.type_args(ts1)?; + } + Type::Var(x) => { + self.punct("?")?; + self.name(x)?; + } + Type::Hole => { + self.punct("_")?; + } + Type::Err => { + self.kw("")?; + } + Type::Generic(x) => { + self.name(x)?; + } + Type::Fun(ts, t) => { + self.kw("fun")?; + self.paren(|this| this.comma_sep(ts, Self::ty))?; + self.punct(":")?; + self.space()?; + self.ty(t)?; + } + Type::Tuple(ts) => { + self.paren(|this| this.comma_sep_trailing(ts, Self::ty))?; + } + Type::Record(xts) => { + self.fields(xts, Self::annotate)?; + } + Type::Alias(..) => unreachable!(), + Type::Unresolved(..) => unreachable!(), + Type::Array(t, n) => { + self.brack(|ctx| { + ctx.ty(t)?; + if let Some(n) = n { + ctx.punct(";")?; + ctx.lit(n)?; + } + Ok(()) + })?; + } + Type::Never => { + self.punct("!")?; + } + } + Ok(()) + } + + fn pat(&mut self, p: &Pat) -> std::fmt::Result { + if self.type_info { + self.paren(|this| { + this._pat(p)?; + this.punct(":")?; + this.ty(p.ty()) + }) + } else { + self._pat(p) + } + } + + fn _pat(&mut self, p: &Pat) -> std::fmt::Result { + match p { + Pat::Unresolved(..) => unreachable!(), + Pat::Var(_, _, x) => { + self.name(x)?; + } + Pat::Int(_, _, v) => { + write!(self.f, "{}", v)?; + } + Pat::Bool(_, _, v) => { + write!(self.f, "{}", v)?; + } + Pat::String(_, _, v) => { + write!(self.f, r#""{}""#, v)?; + } + Pat::Wildcard(_, _) => { + self.punct("_")?; + } + Pat::Tuple(_, _, ps) => { + self.paren(|this| this.comma_sep_trailing(ps, Self::pat))?; + } + Pat::Struct(_, _, x, ts, xps) => { + self.name(x)?; + self.type_args(ts)?; + self.fields(xps, Self::bind)?; + } + Pat::Enum(_, _, x0, ts, x1, p) => { + self.name(x0)?; + self.type_args(ts)?; + self.punct("::")?; + self.name(x1)?; + self.paren(|this| this.pat(p))?; + } + Pat::Err(_, _) => { + self.kw("")?; + } + } + Ok(()) + } + + fn fields( + &mut self, + items: &[T], + f: impl Fn(&mut Self, &T) -> std::fmt::Result, + ) -> std::fmt::Result { + if !items.is_empty() { + self.paren(|this| this.comma_sep(items, |this, item| f(this, item)))?; + } + Ok(()) + } +} diff --git a/crates/compiler/src/diag.rs b/crates/compiler/src/diag.rs new file mode 100644 index 0000000..29ee8ba --- /dev/null +++ b/crates/compiler/src/diag.rs @@ -0,0 +1,140 @@ +use std::io::Write; +use std::rc::Rc; + +use ariadne::Config; +use ariadne::Label; +use ariadne::ReportKind; +use ariadne::Source; + +use crate::lexer::Span; + +#[derive(Default, Clone)] +pub struct Sources(Vec<(String, Source>)>); + +impl Sources { + pub fn new() -> Self { + Self(vec![]) + } + + pub fn next_file(&self) -> u16 { + self.0.len() as u16 + } + + pub fn add(&mut self, name: impl ToString, data: impl Into>) -> u16 { + let id = self.0.len() as u16; + self.0.push((name.to_string(), Source::from(data.into()))); + id + } +} + +impl std::ops::Index for Sources { + type Output = Source>; + + fn index(&self, index: u16) -> &Self::Output { + &self.0[index as usize].1 + } +} + +impl std::fmt::Debug for Sources { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let names = self.0.iter().map(|(x, _)| x).collect::>(); + f.debug_struct("Sources").field("sources", &names).finish() + } +} + +impl ariadne::Cache for Sources { + type Storage = Rc; + + fn fetch(&mut self, id: &u16) -> Result<&Source, Box> { + self.0 + .get(*id as usize) + .map(|(_, s)| s) + .ok_or_else(|| Box::new(format!("Source with id {} not found in cache", id)) as Box<_>) + } + + fn display<'b>(&self, id: &'b u16) -> Option> { + self.0 + .get(*id as usize) + .map(|x| Box::new(x.0.clone()) as Box<_>) + } +} + +impl ariadne::Span for Span { + fn start(&self) -> usize { + *self.start() as usize + } + + fn end(&self) -> usize { + *self.end() as usize + } + + type SourceId = u16; + + fn source(&self) -> &Self::SourceId { + self.file() + } +} + +#[derive(Debug, Default)] +pub struct Report(pub Vec>); + +impl Report { + pub fn new() -> Self { + Self(Vec::new()) + } + + pub fn merge(&mut self, other: &mut Report) { + self.0.append(&mut other.0); + } + + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } + + pub fn err(&mut self, span: Span, label: impl AsRef, msg: impl AsRef) { + let kind = ReportKind::Error; + let report = ariadne::Report::build(kind, *span.file(), *span.start() as usize) + .with_label(Label::new(span).with_message(msg.as_ref())) + .with_message(label.as_ref()) + .with_config(Config::default().with_color(false)) + .finish(); + self.0.push(report); + } + + pub fn err2( + &mut self, + s0: Span, + s1: Span, + label: impl AsRef, + msg0: impl AsRef, + msg1: impl AsRef, + ) { + let kind = ReportKind::Error; + let report = ariadne::Report::build(kind, *s0.file(), *s0.start() as usize) + .with_label(Label::new(s0).with_message(msg0.as_ref())) + .with_label(Label::new(s1).with_message(msg1.as_ref())) + .with_message(label.as_ref()) + .with_config(Config::default().with_color(false)) + .finish(); + self.0.push(report); + } + + pub fn print(&mut self, mut sources: &mut Sources) -> std::io::Result<()> { + for diag in self.0.drain(..) { + diag.eprint(&mut sources)?; + } + Ok(()) + } + + pub fn string( + &mut self, + mut sources: &mut Sources, + ) -> Result { + let mut buf = Vec::new(); + for diag in self.0.drain(..) { + diag.write(&mut sources, &mut buf).unwrap(); + writeln!(&mut buf).unwrap(); + } + String::from_utf8(buf) + } +} diff --git a/crates/compiler/src/display.rs b/crates/compiler/src/display.rs new file mode 100644 index 0000000..733a927 --- /dev/null +++ b/crates/compiler/src/display.rs @@ -0,0 +1,803 @@ +#![allow(unused)] +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Index; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::PatArg; +use crate::ast::Program; +use crate::ast::Query; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::TraitDef; +use crate::ast::TraitType; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::print::Print; + +pub struct Wrapper(T); + +impl Program { + pub fn display_types(&self) -> Wrapper<&Self> { + Wrapper(self) + } +} + +impl StmtImpl { + pub fn display_types(&self) -> Wrapper<&Self> { + Wrapper(self) + } +} + +impl Expr { + pub fn display_types(&self) -> Wrapper<&Self> { + Wrapper(self) + } +} + +impl<'a> std::fmt::Display for Wrapper<&'a Program> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut p = Pretty::new(f); + p.type_info = true; + p.program(self.0) + } +} + +impl std::fmt::Display for Wrapper<&StmtImpl> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut p = Pretty::new(f); + p.type_info = true; + p.stmt_impl(self.0) + } +} + +impl std::fmt::Display for Wrapper<&Expr> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut p = Pretty::new(f); + p.type_info = true; + p.expr(self.0) + } +} + +impl std::fmt::Display for Expr { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + Pretty::new(f).expr(self) + } +} + +impl std::fmt::Display for Program { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + Pretty::new(f).program(self) + } +} + +impl std::fmt::Display for Stmt { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).stmt(self) + } +} + +impl std::fmt::Display for Type { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).ty(self) + } +} + +impl std::fmt::Display for Name { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).name(self) + } +} + +impl std::fmt::Display for Index { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).index(self) + } +} + +impl std::fmt::Display for Pat { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).pat(self) + } +} + +impl std::fmt::Display for Bound { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).bound(self) + } +} + +impl std::fmt::Display for StmtImpl { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).stmt_impl(self) + } +} + +impl std::fmt::Display for StmtDef { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).stmt_def(self) + } +} + +impl std::fmt::Display for StmtVar { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).stmt_var(self) + } +} + +impl std::fmt::Display for StmtStruct { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Pretty::new(f).stmt_struct(self) + } +} + +impl<'a, 'b> Print<'b> for Pretty<'a, 'b> { + fn fmt(&mut self) -> &mut std::fmt::Formatter<'b> { + self.f + } + + fn get_indent(&mut self) -> &mut usize { + &mut self.indent_level + } + + fn should_indent(&mut self) -> bool { + self.noindent + } +} + +pub struct Pretty<'a, 'b> { + f: &'a mut std::fmt::Formatter<'b>, + noindent: bool, + indent_level: usize, + type_info: bool, +} + +impl<'a, 'b> Pretty<'a, 'b> { + fn new(f: &'a mut std::fmt::Formatter<'b>) -> Pretty<'a, 'b> { + Pretty { + f, + noindent: false, + indent_level: 0, + type_info: false, + } + } + + fn param(&mut self, p: &Param) -> std::fmt::Result { + self.name(&p.name)?; + self.punct(":")?; + self.space()?; + self.ty(&p.ty) + } + + fn program(&mut self, p: &Program) -> std::fmt::Result { + self.newline_sep(&p.stmts, Self::stmt) + } + + fn stmt(&mut self, s: &Stmt) -> std::fmt::Result { + match s { + Stmt::Var(s) => self.stmt_var(s), + Stmt::Def(s) => self.stmt_def(s), + Stmt::Impl(s) => self.stmt_impl(s), + Stmt::Expr(s) => self.stmt_expr(s), + Stmt::Struct(s) => self.stmt_struct(s), + Stmt::Enum(s) => self.stmt_enum(s), + Stmt::Type(s) => self.stmt_type(s), + Stmt::Trait(s) => self.stmt_trait(s), + Stmt::Err(_) => todo!(), + } + } + + fn stmt_var(&mut self, s: &StmtVar) -> std::fmt::Result { + self.kw("var")?; + self.space()?; + self.name(&s.name)?; + self.punct(":")?; + self.space()?; + self.ty(&s.ty)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.expr(&s.expr)?; + self.punct(";") + } + + fn stmt_def(&mut self, s: &StmtDef) -> std::fmt::Result { + self.kw("def")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.paren(|this| this.comma_sep(&s.params, Self::param))?; + self.punct(":")?; + self.space()?; + self.ty(&s.ty)?; + self.where_clause(&s.where_clause)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.body(&s.body)?; + self.punct(";") + } + + fn body(&mut self, e: &Body) -> std::fmt::Result { + match e { + Body::Expr(e) => self.expr(e), + Body::Builtin => self.kw(""), + } + } + + fn stmt_impl(&mut self, s: &StmtImpl) -> std::fmt::Result { + self.kw("impl")?; + self.generics(&s.generics)?; + self.space()?; + self.bound(&s.head)?; + self.where_clause(&s.where_clause)?; + self.space()?; + self.brace(|this| { + if !s.defs.is_empty() || !s.types.is_empty() { + this.indented(|this| { + this.newline()?; + this.newline_sep(&s.defs, Self::stmt_def)?; + this.newline_sep(&s.types, Self::stmt_type) + })?; + this.newline()?; + } + Ok(()) + }) + } + + fn where_clause(&mut self, ts: &[Bound]) -> std::fmt::Result { + if !ts.is_empty() { + self.space()?; + self.kw("where")?; + self.space()?; + self.comma_sep(ts, Self::bound)?; + } + Ok(()) + } + + fn stmt_expr(&mut self, s: &Expr) -> std::fmt::Result { + self.expr(s)?; + self.punct(";") + } + + fn stmt_struct(&mut self, s: &StmtStruct) -> std::fmt::Result { + self.kw("struct")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.fields(&s.fields, Self::annotate)?; + self.punct(";") + } + + fn stmt_enum(&mut self, s: &StmtEnum) -> std::fmt::Result { + self.kw("enum")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.space()?; + self.brace(|this| { + if !s.variants.is_empty() { + this.indented(|this| this.newline_comma_sep(&s.variants, Self::variant))?; + this.newline()?; + } + Ok(()) + }) + } + + fn variant(&mut self, (x, t): &(Name, Type)) -> std::fmt::Result { + self.name(x)?; + self.paren(|this| this.ty(t)) + } + + fn stmt_type(&mut self, s: &StmtType) -> std::fmt::Result { + self.kw("type")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.ty(&s.ty)?; + self.punct(";") + } + + fn stmt_trait(&mut self, s: &StmtTrait) -> std::fmt::Result { + self.kw("trait")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.space()?; + self.brace(|this| { + if !s.defs.is_empty() || !s.types.is_empty() { + this.indented(|this| { + this.newline()?; + this.newline_sep(&s.defs, Self::stmt_def_decl)?; + this.newline_sep(&s.types, Self::stmt_type_decl) + })?; + this.newline()?; + } + Ok(()) + }) + } + + fn stmt_def_decl(&mut self, s: &TraitDef) -> std::fmt::Result { + self.kw("def")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.paren(|this| this.comma_sep(&s.params, Self::param))?; + self.punct(":")?; + self.space()?; + self.ty(&s.ty)?; + self.punct(";") + } + + fn stmt_type_decl(&mut self, s: &TraitType) -> std::fmt::Result { + self.kw("type")?; + self.space()?; + self.name(&s.name)?; + self.generics(&s.generics)?; + self.space()?; + self.punct(";") + } + + fn generics(&mut self, gs: &[Name]) -> std::fmt::Result { + if !gs.is_empty() { + self.brack(|this| this.comma_sep(gs, Self::name))?; + } + Ok(()) + } + + fn type_args(&mut self, ts: &[Type]) -> std::fmt::Result { + if !ts.is_empty() { + self.brack(|this| this.comma_sep(ts, Self::ty))?; + } + Ok(()) + } + + fn _expr(&mut self, expr: &Expr) -> std::fmt::Result { + match expr { + Expr::Unresolved(_, _, p) => { + self.unresolved_path(p)?; + } + Expr::Int(_, _, v) => { + self.lit(v)?; + } + Expr::Float(_, _, v) => { + self.lit(v)?; + } + Expr::Bool(_, _, v) => { + self.lit(v)?; + } + Expr::String(_, _, s) => { + self.str(s)?; + } + Expr::Field(_, _, e, x) => { + self.expr(e)?; + self.punct(".")?; + self.name(x)?; + } + Expr::Tuple(_, _, es) => { + self.paren(|this| this.comma_sep_trailing(es, Self::expr))?; + } + Expr::Struct(_, _, name, ts, xes) => { + self.name(name)?; + self.type_args(ts)?; + self.fields(xes, Self::assign)?; + } + Expr::Enum(_, _, name, ts, x, e) => { + self.name(name)?; + self.type_args(ts)?; + self.punct("::")?; + self.name(x)?; + self.paren(|this| this.expr(e))?; + } + Expr::Var(_, _, x) => { + self.name(x)?; + } + Expr::Def(_, _, name, ts) => { + self.name(name)?; + self.type_args(ts)?; + } + Expr::Call(_, _, e, es) => { + self.expr(e)?; + self.paren(|this| this.comma_sep(es, Self::expr))?; + } + Expr::Block(_, _, ss, e) => { + self.brace(|this| { + this.indented(|this| { + this.newline_sep(ss, |this, s| this.stmt(s))?; + this.newline()?; + this.expr(e) + })?; + this.newline() + })?; + } + Expr::Query(_, _, qs) => { + self.newline_sep(qs, Self::query_stmt)?; + } + Expr::Assoc(_, _, x0, ts0, x1, ts1) => { + self.name(x0)?; + self.type_args(ts0)?; + self.punct("::")?; + self.name(x1)?; + self.type_args(ts1)?; + } + Expr::Index(_, _, e, i) => { + self.expr(e)?; + self.punct(".")?; + self.index(i)?; + } + Expr::Array(_, _, es) => { + self.brack(|this| this.comma_sep(es, Self::expr))?; + } + Expr::Err(_, _) => { + self.kw("")?; + } + Expr::Assign(_, _, e0, e1) => { + self.expr(e0)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.expr(e1)?; + } + Expr::Return(_, _, e) => { + self.kw("return")?; + self.space()?; + self.expr(e)?; + } + Expr::Continue(_, _) => { + self.kw("continue")?; + } + Expr::Break(_, _) => { + self.kw("break")?; + } + Expr::Fun(_, _, ps, t, e) => { + self.kw("fun")?; + self.paren(|this| this.comma_sep(ps, Self::param))?; + self.punct(":")?; + self.space()?; + self.ty(t)?; + self.space()?; + self.punct("=")?; + self.space()?; + self.expr(e)?; + } + Expr::Match(_, _, e, arms) => { + self.kw("match")?; + self.space()?; + self.expr(e)?; + self.space()?; + self.scope(arms, Self::arm)?; + } + Expr::While(_, _, e0, e1) => { + self.kw("while")?; + self.space()?; + self.expr(e0)?; + self.space()?; + self.expr(e1)?; + } + Expr::Record(_, _, xts) => { + self.fields(xts, Self::assign)?; + } + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, t, e0, e1) => { + self.expr(e0)?; + self.space()?; + self.token(t)?; + self.space()?; + self.expr(e1)?; + } + Expr::Postfix(_, _, t, e) => { + self.expr(e)?; + self.space()?; + self.token(t)?; + } + Expr::Prefix(_, _, t, e) => { + self.token(t)?; + self.space()?; + self.expr(e)?; + } + } + Ok(()) + } + + fn arm(&mut self, (p, e): &(Pat, Expr)) -> std::fmt::Result { + self.pat(p)?; + self.space()?; + self.punct("=>")?; + self.space()?; + self.expr(e) + } + + fn expr(&mut self, expr: &Expr) -> std::fmt::Result { + if self.type_info { + self.paren(|this| { + this._expr(expr)?; + this.punct(":")?; + this.ty(expr.ty()) + })?; + } else { + self._expr(expr)?; + } + Ok(()) + } + + fn scan(&mut self, (x, e): &(Name, Expr)) -> std::fmt::Result { + self.name(x)?; + self.punct(" in ")?; + self.expr(e) + } + + fn assign(&mut self, (x, e): &(Name, Expr)) -> std::fmt::Result { + self.name(x)?; + self.punct(" = ")?; + self.expr(e) + } + + fn bind(&mut self, (p, e): &(Name, Pat)) -> std::fmt::Result { + self.name(p)?; + self.punct("=")?; + self.pat(e) + } + + fn annotate(&mut self, (x, t): &(Name, Type)) -> std::fmt::Result { + self.name(x)?; + self.punct(":")?; + self.ty(t) + } + + fn query_stmt(&mut self, q: &Query) -> std::fmt::Result { + match q { + Query::From(_, _, xes) => { + self.kw("from")?; + self.space()?; + self.comma_scope(xes, Self::scan)?; + } + Query::Where(_, _, e) => { + self.kw("where")?; + self.space()?; + self.expr(e)?; + } + Query::Select(_, _, xes) => { + self.kw("select")?; + self.space()?; + self.comma_scope(xes, Self::assign)?; + } + Query::Join(_, _, xes, e) => { + self.kw("join")?; + self.space()?; + self.comma_scope(xes, Self::scan)?; + self.space()?; + self.punct("on")?; + self.space()?; + self.expr(e)?; + } + Query::Group(_, _, xs, qs) => { + self.kw("group")?; + self.space()?; + self.comma_sep(xs, Self::name)?; + self.space()?; + self.comma_scope(qs, Self::query_stmt)?; + } + Query::Over(_, _, e, qs) => { + self.kw("over")?; + self.space()?; + self.expr(e)?; + self.comma_scope(qs, Self::query_stmt)?; + } + Query::Order(_, _, os) => { + self.kw("order")?; + self.space()?; + self.comma_sep(os, Self::ordering)?; + } + Query::With(_, _, xes) => { + self.kw("with")?; + self.space()?; + self.comma_scope(xes, Self::assign)?; + } + Query::Into(_, _, e) => { + self.kw("into")?; + self.space()?; + self.comma_sep(e, Self::expr)?; + } + Query::Compute(_, _, aggs) => { + self.kw("compute")?; + self.space()?; + self.comma_scope(aggs, Self::agg)?; + } + } + Ok(()) + } + + fn ordering(&mut self, (x, d): &(Name, bool)) -> std::fmt::Result { + self.name(x)?; + if *d { + self.space()?; + self.kw("desc")?; + } + Ok(()) + } + + fn agg(&mut self, (x, e0, e1): &(Name, Expr, Expr)) -> std::fmt::Result { + self.name(x)?; + self.punct("=")?; + self.expr(e0)?; + self.space()?; + self.kw("of")?; + self.space()?; + self.expr(e1) + } + + fn bound(&mut self, b: &Bound) -> std::fmt::Result { + match b { + Bound::Unresolved(_, path) => { + self.unresolved_path(path)?; + } + Bound::Trait(_, x, ts) => { + self.name(x)?; + self.type_args(ts)?; + } + Bound::Err(_) => { + self.kw("")?; + } + } + Ok(()) + } + + fn ty(&mut self, t: &Type) -> std::fmt::Result { + match t { + Type::Cons(name, ts) => { + self.name(name)?; + self.type_args(ts)?; + } + Type::Assoc(x0, ts0, x1, ts1) => { + self.name(x0)?; + self.type_args(ts0)?; + self.punct("::")?; + self.name(x1)?; + self.type_args(ts1)?; + } + Type::Var(x) => { + self.name(x)?; + } + Type::Hole => { + self.punct("_")?; + } + Type::Err => { + self.kw("")?; + } + Type::Generic(x) => { + self.name(x)?; + } + Type::Fun(ts, t) => { + self.kw("fun")?; + self.paren(|this| this.comma_sep(ts, Self::ty))?; + self.punct(":")?; + self.space()?; + self.ty(t)?; + } + Type::Tuple(ts) => { + self.paren(|this| this.comma_sep_trailing(ts, Self::ty))?; + } + Type::Record(xts) => { + self.fields(xts, Self::annotate)?; + } + Type::Alias(name, xts) => { + self.name(name)?; + self.type_args(xts)?; + } + Type::Unresolved(path) => { + self.unresolved_path(path)?; + } + Type::Array(t, n) => { + self.brack(|ctx| { + ctx.ty(t)?; + if let Some(n) = n { + ctx.punct(";")?; + ctx.lit(n)?; + } + Ok(()) + })?; + } + Type::Never => { + self.punct("!")?; + } + } + Ok(()) + } + + fn pat(&mut self, p: &Pat) -> std::fmt::Result { + if self.type_info { + self.paren(|this| { + this._pat(p)?; + this.punct(":")?; + this.ty(p.ty()) + }) + } else { + self._pat(p) + } + } + + fn _pat(&mut self, p: &Pat) -> std::fmt::Result { + match p { + Pat::Unresolved(_, _, path, args) => { + self.unresolved_path(path)?; + if let Some(args) = &args { + self.paren(|this| { + this.sep(",", true, args, |this, p| match p { + PatArg::Named(x, p) => { + this.name(x)?; + this.punct("=")?; + this.pat(p) + } + PatArg::Unnamed(p) => this.pat(p), + }) + })?; + } + } + Pat::Var(_, _, x) => { + self.name(x)?; + } + Pat::Int(_, _, v) => { + write!(self.f, "{}", v)?; + } + Pat::Bool(_, _, v) => { + write!(self.f, "{}", v)?; + } + Pat::String(_, _, v) => { + write!(self.f, r#""{}""#, v)?; + } + Pat::Wildcard(_, _) => { + self.punct("_")?; + } + Pat::Tuple(_, _, ps) => { + self.paren(|this| this.comma_sep_trailing(ps, Self::pat))?; + } + Pat::Struct(_, _, name, ts, xps) => { + self.name(name)?; + self.type_args(ts)?; + self.fields(xps, Self::bind)?; + } + Pat::Enum(_, _, name, ts, x1, p) => { + self.name(name)?; + self.type_args(ts)?; + self.punct("::")?; + self.name(x1)?; + self.paren(|this| this.pat(p))?; + } + Pat::Err(_, _) => { + self.kw("")?; + } + } + Ok(()) + } + + fn unresolved_path(&mut self, p: &UnresolvedPath) -> std::fmt::Result { + self.sep("::", false, &p.segments, Self::segment) + } + + fn segment(&mut self, (x, ts): &(Name, Vec)) -> std::fmt::Result { + self.name(x)?; + self.type_args(ts) + } + + fn fields( + &mut self, + items: &[T], + f: impl Fn(&mut Self, &T) -> std::fmt::Result, + ) -> std::fmt::Result { + if !items.is_empty() { + self.paren(|this| this.comma_sep(items, |this, item| f(this, item)))?; + } + Ok(()) + } +} diff --git a/crates/compiler/src/ffi.rs b/crates/compiler/src/ffi.rs new file mode 100644 index 0000000..cdbc862 --- /dev/null +++ b/crates/compiler/src/ffi.rs @@ -0,0 +1,66 @@ +use crate::ast; +use libffi::middle::Type; + +pub struct Ffi { + stack: Stack, +} + +impl Default for Ffi { + fn default() -> Self { + Self::new() + } +} + +struct Stack(Vec); + +impl Stack { + fn new() -> Self { + Self(vec![Scope::new()]) + } +} + +struct Scope(Vec); + +impl Scope { + fn new() -> Self { + Self(Vec::new()) + } +} + +enum Binding { + Cons(Type), +} + +impl Ffi { + pub fn new() -> Self { + Self::default() + } + + #[allow(clippy::only_used_in_recursion)] + pub fn ty(&mut self, t: ast::Type) -> Type { + match t { + ast::Type::Unresolved(_) => unreachable!(), + ast::Type::Cons(_, _) => todo!(), + ast::Type::Alias(_, _) => unreachable!(), + ast::Type::Assoc(_, _, _, _) => unreachable!(), + ast::Type::Var(_) => unreachable!(), + ast::Type::Generic(_) => unreachable!(), + ast::Type::Fun(_, _) => todo!(), + ast::Type::Tuple(ts) => { + let ts = ts.iter().map(|t| self.ty(t.clone())).collect::>(); + Type::structure(ts) + } + ast::Type::Record(xts) => { + let xts = xts + .iter() + .map(|(_, t)| self.ty(t.clone())) + .collect::>(); + Type::structure(xts) + } + ast::Type::Hole => unreachable!(), + ast::Type::Err => unreachable!(), + ast::Type::Array(_, _) => todo!(), + ast::Type::Never => unreachable!(), + } + } +} diff --git a/crates/compiler/src/helper.rs b/crates/compiler/src/helper.rs new file mode 100644 index 0000000..e69de29 diff --git a/crates/compiler/src/infer.rs b/crates/compiler/src/infer.rs new file mode 100644 index 0000000..7772b4b --- /dev/null +++ b/crates/compiler/src/infer.rs @@ -0,0 +1,668 @@ +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Candidate; +use crate::ast::Expr; +use crate::ast::Name; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::Type; +use crate::diag::Report; +use crate::lexer::Span; +use crate::util::ty; +use crate::util::ty_unit; + +impl Default for Context { + fn default() -> Self { + Self::new() + } +} + +#[derive(Debug)] +pub struct Context { + tvars: usize, + stack: Vec, + pub report: Report, +} + +#[derive(Default, Debug)] +pub struct Scope { + impls: Vec, + binds: Vec<(Name, Binding)>, +} + +impl Scope { + pub fn new() -> Scope { + Scope::default() + } +} + +#[derive(Debug, Clone)] +pub enum Binding { + Var(Span, Type), + TypeAlias(Span, Type, Vec), + Def(Span, Vec, Vec, Vec, Type), + Struct(Span, Vec, Vec<(Name, Type)>), + Enum(Span, Vec, Vec<(Name, Type)>), + Trait(StmtTrait), +} + +impl Context { + pub fn new() -> Context { + Context { + tvars: 0, + stack: vec![Scope::new()], + report: Report::new(), + } + } + + pub fn recover(&mut self, s0: Span, s1: Span, r: Result) { + if let Err((t0, t1)) = r { + self.report.err2( + s0, + s1, + "Type mismatch", + format!("Expected {t0}"), + format!("Found {t1}"), + ); + } + } + + pub fn new_tyvar(&mut self) -> Type { + self.tvars += 1; + Type::Var(Name::from(format!("?T{}", self.tvars - 1))) + } + + pub fn get(&self, x1: &Name) -> Option<&Binding> { + self.stack.iter().rev().find_map(|s| { + s.binds + .iter() + .rev() + .find(|(x0, _)| x0 == x1) + .map(|(_, b)| b) + }) + } + + pub fn bind(&mut self, name: Name, b: Binding) { + self.stack.last_mut().unwrap().binds.push((name, b)); + } + + pub fn scope(&mut self, f: impl FnOnce(&mut Context) -> T) -> T { + self.stack.push(Scope::new()); + let v = f(self); + self.stack.pop(); + v + } + + pub fn add_impl(&mut self, i: StmtImpl) { + self.stack.last_mut().unwrap().impls.push(i); + } + + pub fn impls(&self) -> Vec { + self.stack + .iter() + .rev() + .flat_map(|s| s.impls.clone()) + .collect() + } + + pub fn infer(&mut self, p: &Program) -> Program { + let mut goals = Vec::new(); + let mut sub = Vec::new(); + let program = p.annotate(self); + program.stmts.iter().for_each(|s| self.declare_stmt(s)); + let stmts = program + .stmts + .iter() + .map(|s| self.stmt(s, &mut sub, &mut goals)) + .collect::>(); + let impls = self.impls(); + for goal in goals { + if let Some(c) = solve(&goal, &impls, &[], &mut sub, self) { + match c { + crate::ast::Candidate::Impl(_) => {} + crate::ast::Candidate::Bound(_) => {} + } + } else { + self.report + .err(goal.span(), "Unsolved goal", "Could not solve goal"); + } + } + Program::new(stmts).map_type(&|t| t.apply(&sub)) + } + + pub fn declare_stmt(&mut self, s: &Stmt) { + match s { + Stmt::Var(_) => {} + Stmt::Def(s) => self.declare_stmt_def(s), + Stmt::Impl(s) => self.declare_stmt_impl(s), + Stmt::Expr(_) => {} + Stmt::Struct(s) => self.declare_stmt_struct(s), + Stmt::Enum(s) => self.declare_stmt_enum(s), + Stmt::Type(s) => self.declare_stmt_type(s), + Stmt::Trait(s) => self.declare_stmt_trait(s), + Stmt::Err(_) => todo!(), + } + } + + pub fn declare_stmt_def(&mut self, s: &StmtDef) { + let ts = s.params.iter().map(|p| p.ty.clone()).collect::>(); + self.bind( + s.name.clone(), + Binding::Def( + s.span, + s.generics.clone(), + s.where_clause.clone(), + ts, + s.ty.clone(), + ), + ); + } + + pub fn declare_stmt_impl(&mut self, s: &StmtImpl) { + self.add_impl(s.clone()); + } + + pub fn declare_stmt_struct(&mut self, s: &StmtStruct) { + let ts = s + .fields + .iter() + .map(|(x, t)| (x.clone(), t.clone())) + .collect::>(); + self.bind( + s.name.clone(), + Binding::Struct(s.span, s.generics.clone(), ts), + ); + } + + pub fn declare_stmt_enum(&mut self, s: &StmtEnum) { + let ts = s + .variants + .iter() + .map(|(x, t)| (x.clone(), t.clone())) + .collect::>(); + self.bind( + s.name.clone(), + Binding::Enum(s.span, s.generics.clone(), ts), + ); + } + + pub fn declare_stmt_type(&mut self, s: &StmtType) { + self.bind( + s.name.clone(), + Binding::TypeAlias(s.span, s.ty.clone(), s.generics.clone()), + ); + } + + pub fn declare_stmt_trait(&mut self, s: &StmtTrait) { + self.bind(s.name.clone(), Binding::Trait(s.clone())); + } + + pub fn stmt(&mut self, s: &Stmt, sub: &mut Vec<(Name, Type)>, goals: &mut Vec) -> Stmt { + match s { + Stmt::Var(s) => Stmt::Var(self.stmt_var(s, sub, goals)), + Stmt::Def(s) => Stmt::Def(self.stmt_def(s)), + Stmt::Impl(s) => Stmt::Impl(self.stmt_impl(s)), + Stmt::Expr(e) => Stmt::Expr(self.expr(e, sub, goals)), + Stmt::Struct(s) => Stmt::Struct(s.clone()), + Stmt::Enum(s) => Stmt::Enum(s.clone()), + Stmt::Type(s) => Stmt::Type(s.clone()), + Stmt::Trait(s) => Stmt::Trait(s.clone()), + Stmt::Err(_) => todo!(), + } + } + + pub fn stmt_var( + &mut self, + s: &StmtVar, + sub: &mut Vec<(Name, Type)>, + goals: &mut Vec, + ) -> StmtVar { + let e = self.expr(&s.expr, sub, goals); + self.recover(s.span, e.span(), unify(sub, &s.ty, e.ty())); + self.bind(s.name.clone(), Binding::Var(s.span, s.ty.clone())); + StmtVar::new(e.span(), s.name.clone(), s.ty.clone(), e) + } + + pub fn stmt_impl(&mut self, s: &StmtImpl) -> StmtImpl { + let span = s.span; + let generics = s.generics.clone(); + let head = s.head.clone(); + let defs = s.defs.iter().map(|d| self.stmt_def(d)).collect::>(); + let types = s.types.clone(); + let where_clause = s.where_clause.clone(); + StmtImpl::new(span, generics, head, where_clause, defs, types) + } + + pub fn stmt_def(&mut self, s: &StmtDef) -> StmtDef { + self.scope(|ctx| { + match &s.body { + Body::Expr(e) => { + let mut sub = vec![]; + let mut goals = vec![]; + for p in &s.params { + ctx.bind(p.name.clone(), Binding::Var(p.span, p.ty.clone())); + } + let e1 = ctx.expr(e, &mut sub, &mut goals); + ctx.recover(s.span, e1.span(), unify(&mut sub, &s.ty, e1.ty())); + let impls = ctx.impls(); + for goal in goals { + // TODO: Try to solve each goal multiple times + if solve(&goal, &impls, &s.where_clause, &mut sub, ctx).is_none() { + // ctx.report + // .err(goal.span, "Unsolved goal", "Could not solve goal"); + } + } + StmtDef::new( + s.span, + s.name.clone(), + s.generics.clone(), + s.where_clause.clone(), + s.params.clone(), + s.ty.clone(), + Body::Expr(e1), + ) + .map_type(&|t| t.apply(&sub)) + } + Body::Builtin => StmtDef::new( + s.span, + s.name.clone(), + s.generics.clone(), + s.where_clause.clone(), + s.params.clone(), + s.ty.clone(), + Body::Builtin, + ), + } + }) + } + + pub fn expr(&mut self, e: &Expr, sub: &mut Vec<(Name, Type)>, goals: &mut Vec) -> Expr { + let s = e.span(); + match e { + Expr::Unresolved(..) => unreachable!(), + Expr::Int(_, t0, v) => { + let t1 = ty("i32"); + let v = v.clone(); + self.recover(s, s, unify(sub, t0, &t1)); + Expr::Int(s, t0.apply(sub), v) + } + Expr::Float(_, t0, v) => { + let t1 = ty("f32"); + let v = v.clone(); + self.recover(s, s, unify(sub, t0, &t1)); + Expr::Float(s, t0.apply(sub), v) + } + Expr::Bool(_, t0, v) => { + let t1 = ty("bool"); + let v = *v; + self.recover(s, s, unify(sub, t0, &t1)); + Expr::Bool(s, t0.apply(sub), v) + } + Expr::String(_, t0, v) => { + let t1 = ty("String"); + let v = v.clone(); + self.recover(s, s, unify(sub, t0, &t1)); + Expr::String(s, t0.apply(sub), v) + } + Expr::Struct(_, t0, x, ts, xes) => { + let Binding::Struct(s1, gs, xts) = self.get(x).unwrap().clone() else { + unreachable!() + }; + let gsub = gs.into_iter().zip(ts.clone()).collect::>(); + for (x, e) in xes { + let t2 = xts + .iter() + .find_map(|(x0, t)| (x0 == x).then_some(t)) + .unwrap() + .instantiate(&gsub); + let e = self.expr(e, sub, goals); + self.recover(e.span(), s1, unify(sub, e.ty(), &t2)); + } + let t1 = Type::Cons(x.clone(), ts.clone()); + self.recover(s, s1, unify(sub, t0, &t1)); + Expr::Struct(s, t0.apply(sub), x.clone(), ts.clone(), xes.clone()) + } + Expr::Enum(_, t0, x, ts, x1, e) => { + let Binding::Enum(s1, gs, xts) = self.get(x).unwrap().clone() else { + unreachable!() + }; + let gsub = gs.into_iter().zip(ts.clone()).collect::>(); + let t2 = xts + .iter() + .find_map(|(x0, t)| (x0 == x1).then_some(t)) + .unwrap() + .instantiate(&gsub); + let e = self.expr(e, sub, goals); + self.recover(e.span(), s1, unify(sub, e.ty(), &t2)); + let t1 = Type::Cons(x.clone(), ts.clone()); + self.recover(s, s1, unify(sub, t0, &t1)); + Expr::Enum( + s, + t0.apply(sub), + x.clone(), + ts.clone(), + x1.clone(), + e.into(), + ) + } + Expr::Tuple(_, t0, es) => { + let es = es + .iter() + .map(|e| self.expr(e, sub, goals)) + .collect::>(); + let ts = es.iter().map(|e| e.ty().clone()).collect::>(); + let t1 = Type::Tuple(ts); + self.recover(s, s, unify(sub, t0, &t1)); + Expr::Tuple(s, t0.apply(sub), es) + } + Expr::Var(_, t0, x) => { + let Binding::Var(s1, t1) = self.get(x).unwrap().clone() else { + unreachable!() + }; + self.recover(s, s1, unify(sub, t0, &t1)); + Expr::Var(s, t0.apply(sub), x.clone()) + } + Expr::Def(_, t0, x, ts0) => { + let Binding::Def(s1, gs, preds, ts, t1) = self.get(x).unwrap().clone() else { + unreachable!() + }; + let gsub = gs.into_iter().zip(ts0.clone()).collect::>(); + let ts = ts.iter().map(|t| t.instantiate(&gsub)).collect::>(); + let t1 = t1.instantiate(&gsub); + let preds = preds + .iter() + .map(|p| p.map_type(&|t| t.instantiate(&gsub))) + .collect::>(); + goals.extend(preds); + let t2 = Type::Fun(ts, Rc::new(t1)); + self.recover(s, s1, unify(sub, t0, &t2)); + Expr::Def(s, t0.apply(sub), x.clone(), ts0.clone()) + } + Expr::Call(_, t0, e, es) => { + let e = self.expr(e, sub, goals); + let es = es + .iter() + .map(|e| self.expr(e, sub, goals)) + .collect::>(); + let ts = es.iter().map(|e| e.ty().clone()).collect::>(); + let t2 = Type::Fun(ts, Rc::new(t0.clone())); + self.recover(s, e.span(), unify(sub, e.ty(), &t2)); + Expr::Call(s, t0.apply(sub), Rc::new(e), es) + } + Expr::Block(_, t0, ss, e) => { + let ss = ss.iter().map(|s| self.stmt(s, sub, goals)).collect(); + let e = self.expr(e, sub, goals); + self.recover(s, e.span(), unify(sub, t0, e.ty())); + Expr::Block(s, t0.apply(sub), ss, e.into()) + } + Expr::Query(..) => todo!(), + Expr::Field(_, t0, e, x) => { + let e = self.expr(e, sub, goals); + let t = e.ty().apply(sub); + let Type::Cons(x0, ts) = t else { + self.report.err( + s, + "Unknown type", + format!("Type {t} must be known at this point."), + ); + return Expr::Err(s, t.clone()); + }; + let Binding::Struct(_, xs, xts) = self.get(&x0).unwrap().clone() else { + unreachable!() + }; + let gsub = xs.into_iter().zip(ts.clone()).collect::>(); + let t1 = xts + .iter() + .find_map(|(x1, t)| (x1 == x).then_some(t)) + .unwrap() + .instantiate(&gsub); + self.recover(s, e.span(), unify(sub, t0, &t1)); + Expr::Field(s, t0.apply(sub), e.into(), x.clone()) + } + Expr::Index(_, t0, e, i) => { + let e = self.expr(e, sub, goals); + let t = e.ty().apply(sub); + let Type::Tuple(ts) = &t else { + self.report.err( + s, + "Unknown type", + format!("Type {t} must be known at this point."), + ); + return Expr::Err(s, t.clone()); + }; + let Some(t1) = ts.get(i.data) else { + self.report.err( + s, + format!("Index {i} out of bounds ({i} >= {})", ts.len()), + format!("Index {i} out of bounds."), + ); + return Expr::Err(s, t.clone()); + }; + self.recover(s, e.span(), unify(sub, t0, t1)); + Expr::Index(s, t0.apply(sub), e.into(), *i) + } + Expr::Assoc(_, t0, x0, ts0, x1, ts1) => { + let Binding::Trait(stmt) = self.get(x0).unwrap().clone() else { + unreachable!() + }; + let d = stmt.defs.iter().find(|d| &d.name == x1).unwrap(); + let gs0 = stmt.generics.clone(); + let gs1 = d.generics.clone(); + let gsub0 = gs0 + .into_iter() + .chain(gs1) + .zip(ts0.clone().into_iter().chain(ts1.clone())) + .collect::>(); + let param_ts = d.params.iter().map(|p| p.ty.clone()).collect::>(); + let return_t = d.ty.clone(); + let fun_t = Type::Fun(param_ts, Rc::new(return_t)).instantiate(&gsub0); + self.recover(s, s, unify(sub, t0, &fun_t)); + let ts0 = ts0.iter().map(|t| t.apply(sub)).collect::>(); + let ts1 = ts1.iter().map(|t| t.apply(sub)).collect::>(); + goals.push(Bound::Trait(x0.span, x0.clone(), ts0.clone())); + Expr::Assoc(s, t0.apply(sub), x0.clone(), ts0, x1.clone(), ts1) + } + Expr::Array(_, t0, es) => { + let es = es + .iter() + .map(|e| self.expr(e, sub, goals)) + .collect::>(); + let t1 = es + .first() + .map(|e| e.ty().clone()) + .unwrap_or_else(|| self.new_tyvar()); + for e in es.iter() { + self.recover(s, e.span(), unify(sub, e.ty(), &t1)); + } + let t2 = Type::Cons(Name::from("Array"), vec![t1]); + self.recover(s, s, unify(sub, t0, &t2)); + Expr::Array(s, t0.apply(sub), es) + } + Expr::Err(s, t) => Expr::Err(*s, t.clone()), + Expr::Assign(_, t0, e0, e1) => { + let e0 = self.expr(e0, sub, goals); + let e1 = self.expr(e1, sub, goals); + self.recover(s, e0.span(), unify(sub, e0.ty(), e1.ty())); + self.recover(s, e0.span(), unify(sub, t0, &ty_unit())); + Expr::Assign(s, t0.apply(sub), Rc::new(e0), Rc::new(e1)) + } + Expr::Return(_, _, _) => unreachable!(), + Expr::Continue(_, _) => unreachable!(), + Expr::Break(_, _) => unreachable!(), + Expr::Fun(_, _, _, _, _) => todo!(), + Expr::Match(_, _, _, _) => todo!(), + Expr::While(_, _, _, _) => todo!(), + Expr::Record(_, _, _) => todo!(), + Expr::Value(_, _) => todo!(), + Expr::Infix(_, _, _, _, _) => unreachable!(), + Expr::Postfix(_, _, _, _) => unreachable!(), + Expr::Prefix(_, _, _, _) => unreachable!(), + } + } +} + +pub fn solve( + goal: &Bound, + impls: &[StmtImpl], + where_clause: &[Bound], + sub0: &mut Vec<(Name, Type)>, + ctx: &mut Context, +) -> Option { + let mut solutions = vec![]; + for tr in where_clause { + let mut sub1 = sub0.clone(); + if matches(&mut sub1, goal, tr) { + *sub0 = sub1; + solutions.push(Candidate::Bound(tr.clone())); + } + } + for i in impls { + let i = instantiate_impl(i, ctx); + let mut sub1 = sub0.clone(); + if matches(&mut sub1, goal, &i.head) + && i.where_clause + .iter() + .all(|subgoal| solve(subgoal, impls, where_clause, &mut sub1, ctx).is_some()) + { + *sub0 = sub1; + solutions.push(Candidate::Impl(i)); + } + } + // TODO: Return the current solutions + match solutions.len() { + 0 => None, + 1 => Some(solutions.pop().unwrap()), + _ => None, + } +} + +// Checks if i0 and i1 match, and if so, returns a substitution. +fn matches(s: &mut Vec<(Name, Type)>, b0: &Bound, b1: &Bound) -> bool { + match (b0, b1) { + (Bound::Trait(_, x0, ts0), Bound::Trait(_, x1, ts1)) => { + x0 == x1 + && ts0.len() == ts1.len() + && ts1 + .iter() + .zip(ts0.iter()) + .all(|(t0, t1)| unify(s, t0, t1).is_ok()) + } + (Bound::Unresolved(..), _) | (_, Bound::Unresolved(..)) => unreachable!(), + (Bound::Err(..), _) | (_, Bound::Err(..)) => true, + } + // && i1 + // .assocs + // .iter() + // .zip(i0.assocs.iter()) + // .all(|((_, t0), (_, t1))| unify(s, &t0, &t1).is_ok()) +} + +#[track_caller] +pub fn unify(s0: &mut Vec<(Name, Type)>, t0: &Type, t1: &Type) -> Result<(), (Type, Type)> { + let t0 = t0.apply(s0); + let t1 = t1.apply(s0); + let Some(s1) = mgu(&t0, &t1) else { + return Err((t0, t1)); + }; + *s0 = compose(s0.clone(), s1); + Ok(()) +} + +fn compose(s0: Vec<(Name, Type)>, s1: Vec<(Name, Type)>) -> Vec<(Name, Type)> { + s1.into_iter() + .map(|(x, t)| (x, t.apply(&s0))) + .chain(s0.clone()) + .collect() +} + +fn mgu_fold<'a>( + ts0: impl IntoIterator, + ts1: impl IntoIterator, +) -> Option> { + ts0.into_iter().zip(ts1).try_fold(vec![], |s0, (t0, t1)| { + let t0 = t0.apply(&s0); + let t1 = t1.apply(&s0); + let s1 = mgu(&t0, &t1)?; + Some(compose(s1, s0)) + }) +} + +fn mgu(t0: &Type, t1: &Type) -> Option> { + match (t0, t1) { + (Type::Cons(x0, ts0), Type::Cons(x1, ts1)) => { + (x0 == x1 && ts0.len() == ts1.len()).then(|| mgu_fold(ts0, ts1))? + } + (Type::Var(x), t) | (t, Type::Var(x)) => (t0 != t1) + .then(|| vec![(x.clone(), t.clone())]) + .or_else(|| Some(vec![])), + (Type::Fun(ts0, t0), Type::Fun(ts1, t1)) => (ts0.len() == ts1.len()).then(|| { + mgu_fold( + ts0.iter().chain([t0.as_ref()]), + ts1.iter().chain([t1.as_ref()]), + ) + })?, + (Type::Tuple(ts0), Type::Tuple(ts1)) => (ts0.len() == ts1.len()) + .then(|| mgu_fold(ts0.iter().chain(ts1), ts1.iter().chain(ts0)))?, + (Type::Err, _) | (_, Type::Err) => Some(vec![]), + (Type::Generic(x0), Type::Generic(x1)) => (x0 == x1).then(Vec::new), + (Type::Assoc(..), _) | (_, Type::Assoc(..)) => unreachable!(), + (Type::Hole, _) | (_, Type::Hole) => unreachable!(), + (Type::Unresolved(_), _) | (_, Type::Unresolved(_)) => unreachable!(), + _ => None, + } +} + +pub fn instantiate_impl(s: &StmtImpl, ctx: &mut Context) -> StmtImpl { + let sub = s + .generics + .iter() + .map(|q| (q.clone(), ctx.new_tyvar())) + .collect::>(); + + let head = s.head.map_type(&|t| t.instantiate(&sub)); + let body = s + .where_clause + .iter() + .map(|i| i.map_type(&|t| t.instantiate(&sub))) + .collect::>(); + let stmt_defs = s + .defs + .iter() + .map(|s| s.map_type(&|t| t.apply(&sub))) + .collect::>(); + let stmt_types = s + .types + .iter() + .map(|s| s.map_type(&|t| t.apply(&sub))) + .collect::>(); + + StmtImpl::new(s.span, vec![], head, body, stmt_defs, stmt_types) +} + +// pub fn instantiate_def(s: &StmtDef, ctx: &mut Context) -> StmtDef { +// let sub = s +// .generics +// .iter() +// .map(|q| (q.clone(), ctx.new_tyvar())) +// .collect::>(); +// +// let body = s +// .where_clause +// .iter() +// .map(|p| p.apply(&sub)) +// .collect::>(); +// let params = s.params.iter().map(|p| p.apply(&sub)).collect::>(); +// let ty = s.ty.apply(&sub); +// let expr = s.expr.apply(&sub); +// +// StmtDef::new(s.span, s.name.clone(), vec![], body, params, ty, expr) +// } diff --git a/crates/compiler/src/interpret.rs b/crates/compiler/src/interpret.rs new file mode 100644 index 0000000..73ed297 --- /dev/null +++ b/crates/compiler/src/interpret.rs @@ -0,0 +1,274 @@ +use crate::ast::Body; +use crate::ast::Expr; +use crate::ast::Name; +use crate::ast::Pat; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::Type; +use crate::builtins::Fun; +use crate::builtins::Record; +use crate::builtins::Tuple; +use crate::builtins::Value; +use crate::builtins::Variant; +use crate::diag::Report; + +#[derive(Debug, Default)] +pub struct Context { + stack: Stack, + pub report: Report, +} + +#[derive(Debug)] +struct Stack(Vec); + +impl Default for Stack { + fn default() -> Self { + Stack(vec![Scope::new()]) + } +} + +impl Stack { + fn new() -> Stack { + Self::default() + } + + fn bind(&mut self, name: Name, binding: Binding) { + self.0.last_mut().unwrap().0.push((name, binding)); + } + + fn get(&self, name: &Name) -> &Binding { + self.0 + .iter() + .rev() + .find_map(|scope| scope.0.iter().find(|(n, _)| n == name)) + .map(|(_, b)| b) + .unwrap() + } +} + +#[derive(Debug)] +struct Scope(Vec<(Name, Binding)>); + +impl Scope { + fn new() -> Scope { + Scope(Vec::new()) + } +} + +#[derive(Clone, Debug)] +enum Binding { + Var(Value), + Def(Vec, Body), + Struct(Vec<(Name, Type)>), + Enum(Vec<(Name, Type)>), + Impl(Vec<(Name, Type)>, Vec<(Name, Body)>), +} + +impl Context { + pub fn new() -> Context { + Context { + stack: Stack::new(), + report: Report::new(), + } + } + + fn scoped(&mut self, f: impl FnOnce(&mut Self) -> Value) -> Value { + self.stack.0.push(Scope::new()); + let v = f(self); + self.stack.0.pop(); + v + } + + pub fn interpret(&mut self, p: &Program) { + p.stmts.iter().for_each(|stmt| self.stmt(stmt)); + } + + fn stmt(&mut self, s: &Stmt) { + match s { + Stmt::Var(s) => self.stmt_var(s), + Stmt::Def(s) => self.stmt_def(s), + Stmt::Trait(_) => {} + Stmt::Impl(s) => self.stmt_impl(s), + Stmt::Struct(s) => self.stmt_struct(s), + Stmt::Enum(s) => self.stmt_enum(s), + Stmt::Type(s) => self.stmt_type(s), + Stmt::Expr(s) => self.stmt_expr(s), + Stmt::Err(_) => todo!(), + } + } + + fn stmt_var(&mut self, s: &StmtVar) { + let value = self.expr(&s.expr); + self.stack.bind(s.name.clone(), Binding::Var(value)); + } + + fn stmt_def(&mut self, s: &StmtDef) { + let body = s.body.clone(); + let param_names = s.params.iter().map(|p| p.name.clone()).collect(); + self.stack + .bind(s.name.clone(), Binding::Def(param_names, body)); + } + + fn stmt_impl(&mut self, _: &StmtImpl) { + todo!() + } + + fn stmt_struct(&mut self, _: &StmtStruct) { + todo!() + } + + fn stmt_enum(&mut self, _: &StmtEnum) { + todo!() + } + + fn stmt_type(&mut self, _: &StmtType) { + todo!() + } + + fn stmt_expr(&mut self, _: &Expr) { + todo!() + } + + fn expr(&mut self, e: &Expr) -> Value { + match e { + Expr::Unresolved(_, _, _) => unreachable!(), + Expr::Int(_, t, v) => { + let Type::Cons(x, _) = t else { + unreachable!(); + }; + match x.data.as_str() { + "i8" => Value::I8(v.parse().unwrap()), + "i16" => Value::I16(v.parse().unwrap()), + "i32" => Value::I32(v.parse().unwrap()), + "i64" => Value::I64(v.parse().unwrap()), + "u8" => Value::U8(v.parse().unwrap()), + "u16" => Value::U16(v.parse().unwrap()), + "u32" => Value::U32(v.parse().unwrap()), + "u64" => Value::U64(v.parse().unwrap()), + _ => unreachable!(), + } + } + Expr::Float(_, t, v) => { + let Type::Cons(x, _) = t else { + unreachable!(); + }; + match x.data.as_str() { + "f32" => Value::F32(v.parse().unwrap()), + "f64" => Value::F64(v.parse().unwrap()), + _ => unreachable!(), + } + } + Expr::Bool(_, _, b) => Value::Bool(*b), + Expr::String(_, _, v) => Value::from(runtime::prelude::String::from(v.as_str())), + Expr::Struct(_, _, _, _, xes) => { + let xvs = xes.iter().map(|(n, e)| (n.clone(), self.expr(e))).collect(); + Value::from(Record::new(xvs)) + } + Expr::Tuple(_, _, es) => { + let vs = es.iter().map(|e| self.expr(e)).collect(); + Value::from(Tuple::new(vs)) + } + Expr::Record(_, _, xes) => { + let xvs = xes.iter().map(|(n, e)| (n.clone(), self.expr(e))).collect(); + Value::from(Record::new(xvs)) + } + Expr::Enum(_, _, _, _, x1, e) => { + let v = self.expr(e); + Value::from(Variant::new(x1.clone(), v)) + } + Expr::Field(_, _, e, x) => { + let Value::Record(xvs) = self.expr(e) else { + unreachable!(); + }; + xvs.0.iter().find(|(n, _)| n == x).unwrap().1.clone() + } + Expr::Index(_, _, e, i) => { + let Value::Tuple(vs) = self.expr(e) else { + unreachable!(); + }; + vs.0[i.data].clone() + } + Expr::Var(_, _, x) => { + let Binding::Var(v) = self.stack.get(x) else { + unreachable!(); + }; + v.clone() + } + Expr::Def(_, _, x, ts) => Value::from(Fun::new(x.clone(), ts.clone())), + Expr::Call(_, _, e, es) => { + let Value::Fun(f) = self.expr(e) else { + unreachable!(); + }; + let vs = es.iter().map(|e| self.expr(e)).collect::>(); + let Binding::Def(xs, body) = self.stack.get(&f.name).clone() else { + unreachable!(); + }; + match body { + Body::Expr(e) => self.scoped(|this| { + xs.iter() + .zip(vs) + .for_each(|(x, v)| this.stack.bind(x.clone(), Binding::Var(v))); + this.expr(&e) + }), + Body::Builtin => todo!(), + } + } + Expr::Block(_, _, ss, e) => self.scoped(|this| { + ss.iter().for_each(|s| this.stmt(s)); + this.expr(e) + }), + Expr::Query(_, _, _) => todo!(), + Expr::Assoc(_, _, _, _, _, _) => todo!(), + Expr::Match(_, _, e, pes) => { + let mut iter = pes.iter(); + let (Pat::Enum(_, _, _, _, x_then, p), e_then) = iter.next().unwrap() else { + unreachable!(); + }; + let Pat::Var(_, _, x_var) = p.as_ref() else { + unreachable!(); + }; + let (Pat::Wildcard(_, _), e_else) = iter.next().unwrap() else { + unreachable!() + }; + let Value::Variant(v) = self.expr(e) else { + unreachable!(); + }; + if *x_then == v.name { + let v = v.value.as_ref().clone(); + self.stack.bind(x_var.clone(), Binding::Var(v)); + self.expr(e_then) + } else { + self.expr(e_else) + } + } + Expr::Array(_, _, _) => todo!(), + Expr::Assign(_, _, _, _) => todo!(), + Expr::Return(_, _, _) => unreachable!(), + Expr::Continue(_, _) => unreachable!(), + Expr::Break(_, _) => unreachable!(), + Expr::While(_, _, e0, e1) => { + while { + let Value::Bool(v) = self.expr(e0) else { + unreachable!() + }; + v + } { + self.expr(e1); + } + Value::from(Tuple::new(vec![])) + } + Expr::Fun(_, _, _, _, _) => unreachable!(), + Expr::Err(_, _) => unreachable!(), + Expr::Value(_, _) => unreachable!(), + Expr::Infix(_, _, _, _, _) => unreachable!(), + Expr::Postfix(_, _, _, _) => unreachable!(), + Expr::Prefix(_, _, _, _) => unreachable!(), + } + } +} diff --git a/crates/compiler/src/lexer.rs b/crates/compiler/src/lexer.rs new file mode 100644 index 0000000..d3ddab2 --- /dev/null +++ b/crates/compiler/src/lexer.rs @@ -0,0 +1,584 @@ +use crate::diag::Report; + +#[bitmask_enum::bitmask(u128)] +#[bitmask_config(vec_debug)] +pub enum Token { + // Punctuations + Bar, + Colon, + ColonColon, + Comma, + Dot, + DotDot, + Eq, + EqEq, + FatArrow, + Ge, + Gt, + LBrace, + LBrack, + LParen, + Le, + Lt, + Minus, + Not, + NotEq, + Plus, + Question, + RBrace, + RBrack, + RParen, + SemiColon, + Slash, + Star, + Underscore, + // Keywords + And, + As, + Break, + Compute, + Continue, + Def, + Deploy, + Desc, + Else, + Enum, + False, + For, + From, + Fun, + Group, + If, + Impl, + In, + Into, + Join, + Match, + Of, + On, + Or, + Order, + Over, + Return, + Select, + Struct, + Trait, + True, + Type, + Var, + Where, + While, + With, + // Literals + Char, + Code, + Float, + FloatSuffix, + Int, + IntSuffix, + Name, + String, + // Special + Eof, + Err, +} + +impl std::fmt::Display for Token { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match *self { + Token::Eq => write!(f, "="), + Token::EqEq => write!(f, "=="), + Token::Not => write!(f, "!"), + Token::NotEq => write!(f, "!="), + Token::Lt => write!(f, "<"), + Token::Le => write!(f, "<="), + Token::Gt => write!(f, ">"), + Token::Ge => write!(f, ">="), + Token::Plus => write!(f, "+"), + Token::Minus => write!(f, "-"), + Token::Star => write!(f, "*"), + Token::Slash => write!(f, "/"), + Token::Dot => write!(f, "."), + Token::DotDot => write!(f, ".."), + Token::Colon => write!(f, ":"), + Token::ColonColon => write!(f, "::"), + Token::SemiColon => write!(f, ";"), + Token::Comma => write!(f, ","), + Token::LParen => write!(f, "("), + Token::RParen => write!(f, ")"), + Token::LBrace => write!(f, "{{"), + Token::RBrace => write!(f, "}}"), + Token::LBrack => write!(f, "["), + Token::RBrack => write!(f, "]"), + Token::Underscore => write!(f, "_"), + Token::Question => write!(f, "?"), + Token::FatArrow => write!(f, "=>"), + Token::Bar => write!(f, "|"), + // Keywords + Token::And => write!(f, "and"), + Token::Break => write!(f, "break"), + Token::Continue => write!(f, "continue"), + Token::Def => write!(f, "def"), + Token::Deploy => write!(f, "deploy"), + Token::Desc => write!(f, "desc"), + Token::Else => write!(f, "else"), + Token::Enum => write!(f, "enum"), + Token::False => write!(f, "false"), + Token::For => write!(f, "for"), + Token::From => write!(f, "from"), + Token::Fun => write!(f, "fun"), + Token::Group => write!(f, "group"), + Token::If => write!(f, "if"), + Token::Impl => write!(f, "impl"), + Token::In => write!(f, "in"), + Token::Into => write!(f, "into"), + Token::Join => write!(f, "join"), + Token::Match => write!(f, "match"), + Token::On => write!(f, "on"), + Token::Or => write!(f, "or"), + Token::Order => write!(f, "order"), + Token::Over => write!(f, "over"), + Token::Return => write!(f, "return"), + Token::Select => write!(f, "select"), + Token::Struct => write!(f, "struct"), + Token::True => write!(f, "true"), + Token::Type => write!(f, "type"), + Token::Var => write!(f, "var"), + Token::Where => write!(f, "where"), + Token::While => write!(f, "while"), + Token::With => write!(f, "with"), + // Literals + Token::Code => write!(f, ""), + Token::Name => write!(f, ""), + Token::Int => write!(f, ""), + Token::IntSuffix => write!(f, ""), + Token::Float => write!(f, ""), + Token::FloatSuffix => write!(f, ""), + Token::String => write!(f, ""), + Token::Char => write!(f, ""), + Token::Err => write!(f, ""), + Token::Eof => write!(f, ""), + Token::Of => write!(f, "of"), + Token::As => write!(f, "as"), + Token::Compute => write!(f, "compute"), + Token::Trait => write!(f, "trait"), + _ => write!(f, ""), + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct Spanned { + pub span: Span, + pub value: T, +} + +impl Spanned { + pub fn new(span: Span, value: T) -> Spanned { + Spanned { span, value } + } + + pub fn map U>(self, f: F) -> Spanned { + Spanned { + span: self.span, + value: f(self.value), + } + } +} + +impl Spanned>> { + pub fn flatten(self) -> Spanned> { + self.map(|v| v.unwrap_or_default()) + } +} + +impl Spanned> { + pub fn transpose(self) -> Option> { + match self.value { + Some(value) => Some(Spanned { + span: self.span, + value, + }), + None => None, + } + } +} + +impl Spanned { + pub fn text(self, input: &str) -> &str { + let span = self.span; + match self.value { + Token::Code => &input[(span.start() + 3) as usize..(span.end() - 3) as usize], + Token::String => &input[(span.start() + 1) as usize..(span.end() - 1) as usize], + Token::Char => &input[(span.start() + 1) as usize..(span.end() - 1) as usize], + _ => &input[*span.start() as usize..*span.end() as usize], + } + } +} + +#[derive(Clone, Copy, Default)] +pub enum Span { + Source(u16, u32, u32), + #[default] + Generated, +} + +impl Eq for Span {} +impl PartialEq for Span { + fn eq(&self, _: &Self) -> bool { + true + } +} +impl std::hash::Hash for Span { + fn hash(&self, _: &mut H) {} +} + +impl std::fmt::Debug for Span { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Span::Source(file, start, end) => write!(f, "{file}:{start}..{end}"), + Span::Generated => write!(f, "..."), + } + } +} + +impl std::fmt::Display for Span { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Span::Source(file, start, end) => write!(f, "{:?}:{}-{}", file, start, end), + Span::Generated => write!(f, ""), + } + } +} + +impl Span { + pub fn new(file: u16, range: std::ops::Range) -> Span { + Span::Source(file, range.start, range.end) + } + + pub fn file(&self) -> &u16 { + match self { + Span::Source(file, _, _) => file, + Span::Generated => &0, + } + } + + pub fn start(&self) -> &u32 { + match self { + Span::Source(_, start, _) => start, + Span::Generated => &0, + } + } + + pub fn end(&self) -> &u32 { + match self { + Span::Source(_, _, end) => end, + Span::Generated => &0, + } + } +} + +impl std::ops::Add for Span { + type Output = Span; + + fn add(self, other: Span) -> Self::Output { + match (self, other) { + (Span::Generated, Span::Generated) => Span::Generated, + (Span::Generated, Span::Source(file, start, end)) => Span::new(file, start..end), + (Span::Source(file, start, end), Span::Generated) => Span::new(file, start..end), + (Span::Source(file, start, _), Span::Source(_, _, end)) => Span::new(file, start..end), + } + } +} + +pub struct Lexer<'a> { + input: &'a str, + pos: usize, + eof: bool, + pub file: u16, + pub report: Report, +} + +impl<'a> Lexer<'a> { + pub fn new(file: u16, input: &'a str) -> Lexer<'a> { + Lexer { + file, + input, + eof: false, + pos: 0, + report: Report::new(), + } + } + + fn unexpected_char(&mut self, c: char) { + self.report.err( + Span::new(self.file, (self.pos - 1) as u32..self.pos as u32), + "Unexpected character", + format!("Unexpected character '{c}'"), + ); + } + + pub fn text(&self, t: Spanned) -> &'a str { + t.text(self.input) + } + + pub fn lex(&mut self) -> Option> { + loop { + let start = self.pos; + let mut chars = self.input[self.pos..].chars(); + let c = chars.next()?; + self.pos += c.len_utf8(); + + let token = match c { + '#' => { + for c in chars.by_ref() { + if c == '\n' { + break; + } + self.pos += c.len_utf8(); + } + continue; + } + ' ' | '\n' | '\t' => continue, + 'a'..='z' | 'A'..='Z' | '_' => { + while let Some('a'..='z' | 'A'..='Z' | '0'..='9' | '_') = chars.next() { + self.pos += 1; + } + if self.pos - start == 1 && c == '_' { + Token::Underscore + } else { + match &self.input[start..self.pos] { + "and" => Token::And, + "as" => Token::As, + "break" => Token::Break, + "compute" => Token::Compute, + "continue" => Token::Continue, + "def" => Token::Def, + "deploy" => Token::Deploy, + "else" => Token::Else, + "enum" => Token::Enum, + "false" => Token::False, + "for" => Token::For, + "from" => Token::From, + "fun" => Token::Fun, + "group" => Token::Group, + "if" => Token::If, + "impl" => Token::Impl, + "in" => Token::In, + "into" => Token::Into, + "join" => Token::Join, + "match" => Token::Match, + "of" => Token::Of, + "on" => Token::On, + "or" => Token::Or, + "order" => Token::Order, + "over" => Token::Over, + "return" => Token::Return, + "select" => Token::Select, + "struct" => Token::Struct, + "trait" => Token::Trait, + "true" => Token::True, + "type" => Token::Type, + "var" => Token::Var, + "where" => Token::Where, + "while" => Token::While, + "with" => Token::With, + _ => Token::Name, + } + } + } + '0'..='9' => loop { + match chars.next() { + Some('0'..='9') => self.pos += 1, + Some('.') => match chars.next() { + Some('a'..='z' | 'A'..='Z' | '_') => { + break Token::Int; + } + Some('0'..='9') => { + self.pos += 1; + self.pos += 1; + let mut c = chars.next(); + while let Some('0'..='9') = c { + self.pos += 1; + c = chars.next(); + } + if let Some('a'..='z' | 'A'..='Z' | '_') = c { + self.pos += 1; + while let Some('a'..='z' | 'A'..='Z' | '0'..='9' | '_') = + chars.next() + { + self.pos += 1; + } + break Token::FloatSuffix; + } else { + break Token::Float; + } + } + _ => { + self.pos += 1; + break Token::Float; + } + }, + Some(c) => { + if let 'a'..='z' | 'A'..='Z' | '_' = c { + self.pos += 1; + while let Some('a'..='z' | 'A'..='Z' | '0'..='9' | '_') = + chars.next() + { + self.pos += 1; + } + break Token::IntSuffix; + } else { + break Token::Int; + } + } + None => { + break Token::Int; + } + } + }, + '"' => loop { + let c = chars.next()?; + self.pos += c.len_utf8(); + match c { + '\\' => { + let c = chars.next()?; + self.pos += c.len_utf8(); + } + '"' => { + break Token::String; + } + _ => {} + } + }, + '\'' => { + let c = chars.next()?; + self.pos += c.len_utf8(); + if c == '\\' { + let c = chars.next()?; + self.pos += c.len_utf8(); + } + let c = chars.next()?; + self.pos += c.len_utf8(); + if c == '\'' { + Token::Char + } else { + self.unexpected_char(c); + continue; + } + } + '(' => Token::LParen, + ')' => Token::RParen, + '{' => Token::LBrace, + '}' => Token::RBrace, + '[' => Token::LBrack, + ']' => Token::RBrack, + '=' => match chars.next() { + Some('=') => { + self.pos += '='.len_utf8(); + Token::EqEq + } + Some('>') => { + self.pos += '>'.len_utf8(); + Token::FatArrow + } + _ => Token::Eq, + }, + ':' => { + if let Some(':') = chars.next() { + self.pos += ':'.len_utf8(); + Token::ColonColon + } else { + Token::Colon + } + } + '!' => { + if let Some('=') = chars.next() { + self.pos += '='.len_utf8(); + Token::NotEq + } else { + Token::Not + } + } + '<' => { + if let Some('=') = chars.next() { + self.pos += '='.len_utf8(); + Token::Le + } else { + Token::Lt + } + } + '>' => { + if let Some('=') = chars.next() { + self.pos += '='.len_utf8(); + Token::Ge + } else { + Token::Gt + } + } + '.' => { + if let Some('.') = chars.next() { + self.pos += '.'.len_utf8(); + Token::DotDot + } else { + Token::Dot + } + } + ';' => Token::SemiColon, + ',' => Token::Comma, + '+' => Token::Plus, + '|' => Token::Bar, + '-' => { + if let (Some('-'), Some('-')) = (chars.next(), chars.next()) { + self.pos += '-'.len_utf8() * 2; + loop { + let c = chars.next()?; + self.pos += c.len_utf8(); + if c == '-' { + let c = chars.next()?; + self.pos += c.len_utf8(); + if c == '-' { + let c = chars.next()?; + self.pos += c.len_utf8(); + if c == '-' { + break; + } + } + } + } + Token::Code + } else { + Token::Minus + } + } + '*' => Token::Star, + '/' => Token::Slash, + '?' => Token::Question, + t => { + self.unexpected_char(t); + Token::Err + } + }; + return Some(Spanned::new( + Span::new(self.file, start as u32..self.pos as u32), + token, + )); + } + } +} + +impl<'a> Iterator for Lexer<'a> { + type Item = Spanned; + + fn next(&mut self) -> Option { + self.lex().or_else(|| { + if self.eof { + None + } else { + self.eof = true; + let span = Span::new(self.file, self.pos as u32..self.pos as u32); + Some(Spanned::new(span, Token::Eof)) + } + }) + } +} diff --git a/crates/compiler/src/lib.rs b/crates/compiler/src/lib.rs new file mode 100644 index 0000000..3708e38 --- /dev/null +++ b/crates/compiler/src/lib.rs @@ -0,0 +1,258 @@ +#![allow(dead_code)] + +use std::rc::Rc; + +use config::Config; + +use ast::Bound; +use ast::Expr; +use ast::Pat; +use ast::Program; +use ast::Stmt; +use ast::StmtImpl; +use ast::Type; +use diag::Report; +use diag::Sources; +use lexer::Lexer; +use parser::Parser; +use util::trim; + +pub mod annotate; +pub mod apply; +pub mod ast; +pub mod builtins; +pub mod codegen; +pub mod diag; +pub mod display; +pub mod ffi; +pub mod helper; +pub mod infer; +pub mod interpret; +pub mod lexer; +pub mod lift; +pub mod parser; +pub mod prelude; +pub mod print; +pub mod resolve; +pub mod util; +pub mod parser2; +pub mod opt; + +#[derive(Default, Debug)] +pub struct Compiler { + ctx0: resolve::Context, + ctx1: infer::Context, + ctx2: interpret::Context, + pub sources: Sources, + report: Report, + pub config: Config, +} + +impl Drop for Compiler { + fn drop(&mut self) { + if !self.report.is_empty() { + self.report.print(&mut self.sources).unwrap(); + } + } +} + +impl Compiler { + pub fn new(config: Config) -> Self { + Self { + ctx0: resolve::Context::new(), + ctx1: infer::Context::new(), + ctx2: interpret::Context::new(), + sources: Sources::new(), + report: Report::new(), + config, + } + } + + pub fn parse( + &mut self, + name: impl ToString, + input: impl Into>, + f: impl for<'a> Fn(&mut Parser<'a, &mut Lexer<'a>>) -> T, + ) -> Result { + let input = input.into(); + let id = self.sources.add(name, input.clone()); + let mut lexer = Lexer::new(id, input.as_ref()); + let mut parser = Parser::new(&input, &mut lexer); + let result = f(&mut parser); + self.report.merge(&mut parser.report); + self.report.merge(&mut lexer.report); + if self.report.is_empty() { + Ok(result) + } else { + Err((result, self.report())) + } + } + + pub fn resolve(&mut self, name: &str, input: &str) -> Result { + let program = match self.parse(name, input, |parser| parser.parse()) { + Ok(program) => program, + Err((program, e)) => return Err((program, e)), + }; + let result = self.ctx0.resolve(&program); + self.report.merge(&mut self.ctx0.report); + if self.report.is_empty() { + Ok(result) + } else { + Err((result, self.report())) + } + } + + pub fn infer(&mut self, name: &str, input: &str) -> Result { + let program = match self.resolve(name, input) { + Ok(program) => program, + Err((program, e)) => return Err((program, e)), + }; + let program = self.ctx1.infer(&program); + self.report.merge(&mut self.ctx1.report); + if self.report.is_empty() { + Ok(program) + } else { + Err((program, self.report())) + } + } + + pub fn interpret(&mut self, name: &str, input: &str) -> Result { + let program = match self.infer(name, input) { + Ok(program) => program, + Err((program, e)) => return Err((program, e)), + }; + self.ctx2.interpret(&program); + self.report.merge(&mut self.ctx2.report); + self.ok_or_err(program) + } + + fn ok_or_err(&mut self, result: T) -> Result { + if self.report.is_empty() { + Ok(result) + } else { + Err((result, self.report())) + } + } + + pub fn report(&mut self) -> String { + trim(self.report.string(&mut self.sources).unwrap()) + } +} + +impl Expr { + pub fn parse(input: &str) -> Expr { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result, String)> { + Compiler::default() + .parse("test", input, |parser| parser.expr()) + .map(|e| e.unwrap()) + } +} + +impl Type { + pub fn parse(input: &str) -> Type { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result, String)> { + Compiler::default() + .parse("test", input, |parser| parser.ty()) + .map(|t| t.unwrap()) + } +} + +impl Stmt { + pub fn parse(input: &str) -> Stmt { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result, String)> { + Compiler::default() + .parse("test", input, |parser| parser.stmt()) + .map(|s| s.unwrap()) + } +} + +impl Pat { + pub fn parse(input: &str) -> Pat { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result, String)> { + Compiler::default() + .parse("test", input, |parser| parser.pat()) + .map(|p| p.unwrap()) + } +} + +impl Bound { + pub fn parse(input: &str) -> Bound { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result, String)> { + Compiler::default() + .parse("test", input, |parser| parser.bound()) + .map(|t| t.unwrap()) + } +} + +impl StmtImpl { + pub fn parse(input: &str) -> StmtImpl { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result, String)> { + Compiler::default() + .parse("test", input, |parser| parser.stmt_impl()) + .map(|i| i.unwrap()) + } +} + +impl Program { + pub fn parse(input: &str) -> Program { + Self::try_parse(input).unwrap_or_else(|(_, s)| panic!("{}", s)) + } + + pub fn diagnose(s: &str) -> String { + Self::try_parse(s).unwrap_err().1 + } + + pub fn try_parse(input: &str) -> Result { + Compiler::default().parse("test", input, |parser| parser.parse()) + } + + pub fn try_resolve(input: &str) -> Result { + Compiler::default().resolve("test", input) + } + + pub fn try_infer(input: &str) -> Result { + Compiler::default().infer("test", input) + } +} diff --git a/crates/compiler/src/lift.rs b/crates/compiler/src/lift.rs new file mode 100644 index 0000000..9ffa24a --- /dev/null +++ b/crates/compiler/src/lift.rs @@ -0,0 +1,87 @@ +use crate::ast::Expr; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; + +struct Lift {} + +struct Stack(Vec); + +impl Stack { + fn new() -> Stack { + Stack(vec![Scope::new()]) + } +} + +struct Scope(Vec); + +impl Scope { + fn new() -> Scope { + Scope(vec![]) + } +} + +enum Binding {} + +impl Lift { + fn new() -> Lift { + Lift {} + } + + fn lift(&mut self, program: &Program) -> Program { + let stmts = program.stmts.iter().map(|stmt| self.stmt(stmt)).collect(); + Program::new(stmts) + } + + fn stmt(&mut self, stmt: &Stmt) -> Stmt { + match stmt { + Stmt::Var(s) => self.stmt_var(s), + Stmt::Def(s) => self.stmt_def(s), + Stmt::Trait(s) => self.stmt_trait(s), + Stmt::Impl(s) => self.stmt_impl(s), + Stmt::Struct(s) => self.stmt_struct(s), + Stmt::Enum(s) => self.stmt_enum(s), + Stmt::Type(s) => self.stmt_type(s), + Stmt::Expr(s) => self.stmt_expr(s), + Stmt::Err(_) => todo!(), + } + } + + fn stmt_var(&mut self, _: &StmtVar) -> Stmt { + todo!() + } + + fn stmt_def(&mut self, _: &StmtDef) -> Stmt { + todo!() + } + + fn stmt_trait(&self, _: &StmtTrait) -> Stmt { + todo!() + } + + fn stmt_impl(&self, _: &StmtImpl) -> Stmt { + todo!() + } + + fn stmt_struct(&self, _: &StmtStruct) -> Stmt { + todo!() + } + + fn stmt_enum(&self, _: &StmtEnum) -> Stmt { + todo!() + } + + fn stmt_type(&self, _: &StmtType) -> Stmt { + todo!() + } + + fn stmt_expr(&self, _: &Expr) -> Stmt { + todo!() + } +} diff --git a/crates/compiler/src/opt.rs b/crates/compiler/src/opt.rs new file mode 100644 index 0000000..5198409 --- /dev/null +++ b/crates/compiler/src/opt.rs @@ -0,0 +1,9 @@ +use egg::*; + +//use crate::ast::Program; + +pub enum Ir { + Add([Id; 2]), +} + +// impl FromOp for Program {} diff --git a/crates/compiler/src/parser.rs b/crates/compiler/src/parser.rs new file mode 100644 index 0000000..976a434 --- /dev/null +++ b/crates/compiler/src/parser.rs @@ -0,0 +1,1485 @@ +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Index; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::PatArg; +use crate::ast::Program; +use crate::ast::Query; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::TraitDef; +use crate::ast::TraitType; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::diag::Report; +use crate::lexer::Span; +use crate::lexer::Spanned; +use crate::lexer::Token; +use crate::util::expr_and; +use crate::util::expr_block; +use crate::util::expr_bool; +use crate::util::expr_break; +use crate::util::expr_call; +use crate::util::expr_match; +use crate::util::expr_or; +use crate::util::expr_var; +use crate::util::expr_while; +use crate::util::parsed_expr_assoc; +use crate::util::parsed_expr_def; +use crate::util::parsed_expr_enum; +use crate::util::parsed_expr_var; +use crate::util::parsed_pat_enum; +use crate::util::parsed_pat_var; +use crate::util::pat_wild; +use crate::util::stmt_var; +use crate::util::ty_hole; + +pub struct Parser<'a, I> +where + I: Iterator>, +{ + input: &'a str, + lexer: std::iter::Peekable, + pub report: Report, +} + +enum Either { + A(A), + B(B), +} + +impl<'a, I> Parser<'a, I> +where + I: Iterator>, +{ + pub fn new(input: &'a str, lexer: I) -> Self { + let lexer = lexer.peekable(); + let report = Report::new(); + Self { + input, + lexer, + report, + } + } + + fn peek(&mut self) -> Token { + self.lexer.peek().map(|x| x.value).unwrap_or(Token::Eof) + } + + fn next(&mut self) -> Option> { + self.lexer.next() + } + + fn text(&self, t: Spanned) -> &'a str { + t.text(self.input) + } + + #[inline(always)] + fn or_else( + &mut self, + f: impl Fn(&mut Self) -> Option, + or: impl FnOnce(Span) -> T, + ) -> Option { + if let Some(x) = f(self) { + Some(x) + } else { + self.peek_span().map(or) + } + } + + fn optional(&mut self, token: Token) -> Option { + if self.peek() == token { + Some(self.advance()) + } else { + None + } + } + + fn optional_any(&mut self, tokens: [Token; N]) -> Option { + let t = self.peek(); + if tokens.into_iter().any(|t1| t == t1) { + Some(self.advance()) + } else { + None + } + } + + fn advance(&mut self) -> Span { + self.next().unwrap().span + } + + fn peek_span(&mut self) -> Option { + self.lexer.peek().map(|t| t.span) + } + + fn recover(&mut self, tokens: [Token; N]) -> Option> { + loop { + match self.peek() { + t if t == Token::Eof => return None, + t if tokens.contains(&t) => return self.next(), + Token::SemiColon | Token::RBrace | Token::RBrack | Token::RParen => { + return None; + } + _ => self.next(), + }; + } + } + + #[inline(always)] + fn recursive(&mut self, f: impl Fn(&mut Self) -> Option) -> Option { + let red_zone = 32 * 1024; + let stack_size = 1024 * 1024; + stacker::maybe_grow( + red_zone, + stack_size, + #[inline(always)] + || f(self), + ) + } + + fn expect_any(&mut self, tokens: [Token; N]) -> Option> { + match self.peek() { + t if tokens.contains(&t) => Some(self.next().unwrap()), + Token::Eof => { + let s = self.peek_span().unwrap(); + self.report.err( + s, + "Unexpected end of file", + format!( + "Expected {}", + tokens + .into_iter() + .map(|t| format!("`{}`", t)) + .collect::>() + .join(", ") + ), + ); + None + } + Token::RBrace | Token::RBrack | Token::RParen => None, + t => { + let label = format!("Unexpected token `{t}`"); + let msg = format!( + "Expected {}", + tokens + .into_iter() + .map(|t| format!("`{}`", t)) + .collect::>() + .join(", ") + ); + let s = self.advance(); + self.report.err(s, label, msg); + self.recover(tokens) + } + } + } + + fn expect(&mut self, token: Token) -> Option { + Some(self.expect_any([token])?.span) + } + + fn sep_until( + &mut self, + f: impl Fn(&mut Self) -> Option, + sep: Token, + r: Token, + ) -> Option> { + let mut xs = vec![]; + if self.peek() != r { + xs.push(f(self)?); + while self.optional(sep).is_some() { + if self.peek() == r { + println!("{r}"); + break; + } else { + xs.push(f(self)?); + } + } + } + Some(xs) + } + + // Can end with a trailing comma + fn sep_until_cond( + &mut self, + sep: Token, + f: impl Fn(&mut Self) -> Option, + c: impl Fn(&mut Self) -> bool, + ) -> Option> { + let mut xs = vec![]; + if !c(self) { + xs.push(f(self)?); + while self.optional(sep).is_some() { + if !c(self) { + xs.push(f(self)?); + } else { + break; + } + } + } + Some(xs) + } + + fn comma_sep_until_cond( + &mut self, + f: impl Fn(&mut Self) -> Option, + c: impl Fn(&mut Self) -> bool, + ) -> Option> { + let mut xs = vec![]; + if !c(self) { + xs.push(f(self)?); + while self.optional(Token::Comma).is_some() { + if !c(self) { + xs.push(f(self)?); + } else { + break; + } + } + } + Some(xs) + } + + fn sep( + &mut self, + f: impl Fn(&mut Self) -> Option, + sep: Token, + l: Token, + r: Token, + ) -> Option> { + self.expect(l)?; + let xs = self.sep_until(f, sep, r)?; + self.expect(r)?; + Some(xs) + } + + fn comma_sep( + &mut self, + f: impl Fn(&mut Self) -> Option, + l: Token, + r: Token, + ) -> Option> { + self.sep(f, Token::Comma, l, r) + } + + pub fn parse(&mut self) -> Program { + let mut stmts = Vec::new(); + loop { + if let Some(stmt) = self.stmt() { + stmts.push(stmt); + } + while self.optional(Token::SemiColon).is_some() {} + if self.peek() == Token::Eof { + break; + } + } + Program::new(stmts) + } + + fn name(&mut self) -> Option { + match self.peek() { + Token::Name => { + let t = self.next().unwrap(); + let v = self.text(t).to_owned(); + let name = Name::new(t.span, v); + Some(name) + } + _ => None, + } + } + + fn index(&mut self) -> Option { + match self.peek() { + Token::Int => { + let t = self.next().unwrap(); + let v = self.text(t); + match v.parse() { + Ok(v) => Some(Index::new(t.span, v)), + Err(e) => { + self.report + .err(t.span, format!("Invalid index `{}`", v), format!("{e}")); + None + } + } + } + _ => None, + } + } + + pub fn stmt(&mut self) -> Option { + let stmt = match self.peek() { + Token::Def => Stmt::Def(self.stmt_def()?), + Token::Impl => Stmt::Impl(self.stmt_impl()?), + Token::Var => Stmt::Var(self.stmt_var()?), + Token::Struct => Stmt::Struct(self.stmt_struct()?), + Token::Enum => Stmt::Enum(self.stmt_enum()?), + Token::Type => Stmt::Type(self.stmt_type()?), + Token::Trait => Stmt::Trait(self.stmt_trait()?), + _ => Stmt::Expr(self.stmt_expr()?), + }; + Some(stmt) + } + + pub fn stmt_type(&mut self) -> Option { + self.expect(Token::Type)?; + let name = self.name()?; + let generics = self.generics()?; + self.expect(Token::Eq)?; + let ty = self.ty()?; + self.expect(Token::SemiColon)?; + Some(StmtType::new(name.span, name, generics, ty)) + } + + pub fn stmt_expr(&mut self) -> Option { + let expr = self.expr()?; + if !matches!(expr, Expr::Block(..) | Expr::Match(..)) { + self.expect(Token::SemiColon)?; + } + Some(expr) + } + + pub fn unresolved_path(&mut self) -> Option { + let mut segments = vec![]; + segments.push(self.unresolved_path_segment()?); + while self.optional(Token::ColonColon).is_some() { + segments.push(self.unresolved_path_segment()?); + } + Some(UnresolvedPath::new(segments)) + } + + pub fn unresolved_path_segment(&mut self) -> Option<(Name, Vec)> { + let name = self.name()?; + let ts = self.ty_args()?; + Some((name, ts)) + } + + pub fn stmt_def(&mut self) -> Option { + let s0 = self.expect(Token::Def)?; + let name = self.name()?; + let generics = self.generics()?; + let params = self.params()?; + self.expect(Token::Colon)?; + let ty = self.ty()?; + let trs = self.where_clause(|this| matches!(this.peek(), Token::Eq | Token::LBrace))?; + let expr = self.expr_or_block(Self::stmt_expr)?; + Some(StmtDef::new( + s0 + expr.span(), + name, + generics, + trs, + params, + ty, + Body::Expr(expr), + )) + } + + fn where_clause(&mut self, cond: impl Fn(&mut Self) -> bool) -> Option> { + if self.peek() == Token::Where { + self.advance(); + self.comma_sep_until_cond(Self::bound, cond) + } else { + Some(vec![]) + } + } + + pub fn stmt_trait(&mut self) -> Option { + let s0 = self.expect(Token::Trait)?; + let name = self.name()?; + let generics = self.generics()?; + let body = self.where_clause(|this| this.peek() == Token::LBrace)?; + self.expect(Token::LBrace)?; + let mut defs = Vec::new(); + let mut tys = Vec::new(); + loop { + match self.peek() { + Token::Def => defs.push(self.stmt_def_decl()?), + Token::Type => tys.push(self.stmt_type_decl()?), + _ => break, + } + } + let s1 = self.expect(Token::RBrace)?; + Some(StmtTrait::new(s0 + s1, name, generics, body, defs, tys)) + } + + fn stmt_def_decl(&mut self) -> Option { + let s0 = self.expect(Token::Def)?; + let name = self.name()?; + let generics = self.generics()?; + let params = self.params()?; + self.expect(Token::Colon)?; + let ty = self.ty()?; + let trs = self.where_clause(|this| this.peek() == Token::SemiColon)?; + let s1 = self.expect(Token::SemiColon)?; + Some(TraitDef::new(s0 + s1, name, generics, trs, params, ty)) + } + + fn stmt_type_decl(&mut self) -> Option { + self.expect(Token::Type)?; + let name = self.name()?; + let generics = self.generics()?; + self.expect(Token::SemiColon)?; + Some(TraitType::new(name.span, name, generics)) + } + + pub fn stmt_impl(&mut self) -> Option { + let s0 = self.expect(Token::Impl)?; + let generics = self.generics()?; + let head = self.bound()?; + let body = self.where_clause(|this| this.peek() == Token::LBrace)?; + self.expect(Token::LBrace)?; + let mut defs = Vec::new(); + let mut tys = Vec::new(); + loop { + match self.peek() { + Token::Def => defs.push(self.stmt_def()?), + Token::Type => tys.push(self.stmt_type()?), + _ => break, + } + } + let s1 = self.expect(Token::RBrace)?; + Some(StmtImpl::new(s0 + s1, generics, head, body, defs, tys)) + } + + pub fn stmt_struct(&mut self) -> Option { + let s0 = self.expect(Token::Struct)?; + let name = self.name()?; + let generics = self.generics()?; + let fields = if self.peek() == Token::LParen { + self.comma_sep(Self::ty_field, Token::LParen, Token::RParen)? + } else { + vec![] + }; + self.expect(Token::SemiColon)?; + Some(StmtStruct::new(s0, name, generics, fields)) + } + + fn ty_field(&mut self) -> Option<(Name, Type)> { + let name = self.name()?; + self.expect(Token::Colon)?; + let ty = self.ty()?; + Some((name, ty)) + } + + pub fn stmt_enum(&mut self) -> Option { + let s0 = self.expect(Token::Enum)?; + let name = self.name()?; + let generics = self.generics()?; + let variants = self.comma_sep(Self::ty_variant, Token::LBrace, Token::RBrace)?; + Some(StmtEnum::new(s0, name, generics, variants)) + } + + fn ty_variant(&mut self) -> Option<(Name, Type)> { + let name = self.name()?; + let ty = if let Token::LParen = self.peek() { + self.ty_paren()? + } else { + Type::Unresolved(UnresolvedPath::new(vec![(Name::from("Unit"), vec![])])) + }; + Some((name, ty)) + } + + // Returns Either::A(T) for (T) + // Returns Either::B((Span, Vec)) for (), (T,), (T, T, ...) + fn paren( + &mut self, + f: impl Fn(&mut Self) -> Option, + ) -> Option)>> { + let s0 = self.expect(Token::LParen)?; + if let Some(s1) = self.optional(Token::RParen) { + Some(Either::B((s0 + s1, vec![]))) + } else { + let v = f(self)?; + if self.optional(Token::RParen).is_some() { + Some(Either::A(v)) + } else { + let mut vs = vec![v]; + while self.optional(Token::Comma).is_some() { + if self.peek() == Token::RParen { + break; + } else { + vs.push(f(self)?); + } + } + let s1 = self.expect(Token::RParen)?; + Some(Either::B((s0 + s1, vs))) + } + } + } + + fn ty_paren(&mut self) -> Option { + match self.paren(Self::ty)? { + Either::A(t) => Some(t), + Either::B((_, ts)) => Some(Type::Tuple(ts)), + } + } + + fn pat_paren(&mut self) -> Option { + match self.paren(Self::pat)? { + Either::A(p) => Some(p), + Either::B((s, ps)) => Some(Pat::Tuple(s, ty_hole(), ps)), + } + } + + fn expr_paren(&mut self) -> Option { + match self.paren(Self::expr)? { + Either::A(e) => Some(e), + Either::B((s, es)) => Some(Expr::Tuple(s, ty_hole(), es)), + } + } + + fn stmt_assoc_type(&mut self) -> Option<(Name, Type)> { + self.expect(Token::Type)?; + let name = self.name()?; + self.expect(Token::Eq)?; + let ty = self.ty()?; + self.expect(Token::SemiColon)?; + Some((name, ty)) + } + + fn stmt_var(&mut self) -> Option { + let s0 = self.expect(Token::Var)?; + let name = self.name()?; + let ty = if self.optional(Token::Colon).is_some() { + self.ty()? + } else { + ty_hole() + }; + self.expect(Token::Eq)?; + let expr = self.expr()?; + let s1 = self.expect(Token::SemiColon)?; + Some(StmtVar::new(s0 + s1, name, ty, expr)) + } + + pub fn bound(&mut self) -> Option { + let path = self.unresolved_path()?; + let s0 = path.segments.first().unwrap().0.span; + let s1 = path.segments.last().unwrap().0.span; + Some(Bound::Unresolved(s0 + s1, path)) + } + + fn params(&mut self) -> Option> { + self.comma_sep(Self::param, Token::LParen, Token::RParen) + } + + fn param(&mut self) -> Option { + let name = self.name()?; + let ty = self.ty_annot()?; + Some(Param::new(name.span, name, ty)) + } + + fn generics(&mut self) -> Option> { + if self.peek() == Token::LBrack { + self.comma_sep(Self::name, Token::LBrack, Token::RBrack) + } else { + Some(vec![]) + } + } + + fn ty_fun(&mut self) -> Option { + self.expect(Token::Fun)?; + let tys = self.comma_sep(Self::ty, Token::LParen, Token::RParen)?; + self.expect(Token::Colon)?; + let ty = self.ty()?; + Some(Type::Fun(tys, Rc::new(ty))) + } + + pub fn ty(&mut self) -> Option { + self.recursive(|this| this.try_ty(Self::ty0)) + } + + pub fn try_ty(&mut self, f: impl Fn(&mut Self) -> Option) -> Option { + self.or_else(f, |_| Type::Err) + } + + pub fn ty0(&mut self) -> Option { + match self.peek() { + Token::Name => self.ty_name(), + Token::Underscore => self.ty_underscore(), + Token::LParen => self.ty_paren(), + Token::Fun => self.ty_fun(), + _ => None, + } + } + + fn ty_name(&mut self) -> Option { + let path = self.unresolved_path()?; + Some(Type::Unresolved(path)) + } + + fn ty_underscore(&mut self) -> Option { + self.expect(Token::Underscore)?; + Some(ty_hole()) + } + + fn ty_args(&mut self) -> Option> { + if self.peek() == Token::LBrack { + self.comma_sep(Self::ty, Token::LBrack, Token::RBrack) + } else { + Some(vec![]) + } + } + + fn expr_field(&mut self) -> Option<(Name, Expr)> { + let expr = self.expr1()?; + match expr { + Expr::Field(s, t, e, x) => Some((x.clone(), Expr::Field(s, t, e, x))), + Expr::Unresolved(s, t, path) => { + if path.segments.len() == 1 && path.segments[0].1.is_empty() && t == Type::Hole { + let x = path.segments.into_iter().next().unwrap().0; + if self.optional(Token::Eq).is_some() { + let expr = self.expr()?; + Some((x, expr)) + } else { + Some((x.clone(), parsed_expr_var(s, x.to_string().as_str()))) + } + } else { + None + } + } + _ => None, + } + } + + #[inline(always)] + fn expr_block(&mut self) -> Option { + let s0 = self.expect(Token::LBrace)?; + let mut stmts = Vec::new(); + let expr = loop { + let stmt = match self.peek() { + Token::Def => Stmt::Def(self.stmt_def()?), + Token::Var => Stmt::Var(self.stmt_var()?), + Token::Impl => Stmt::Impl(self.stmt_impl()?), + Token::Trait => Stmt::Trait(self.stmt_trait()?), + Token::Struct => Stmt::Struct(self.stmt_struct()?), + Token::Enum => Stmt::Enum(self.stmt_enum()?), + Token::SemiColon => { + self.next(); + continue; + } + Token::RBrace => { + let s1 = self.advance(); + let expr = Expr::Tuple(s0 + s1, ty_hole(), vec![]); + break Expr::Block(s0 + s1, ty_hole(), stmts, Rc::new(expr)); + } + _ => { + let expr = self.expr()?; + if let Expr::Block(..) = expr { + // {{}} + if let Token::RBrace = self.peek() { + let s1 = self.advance(); + break Expr::Block(s0 + s1, ty_hole(), stmts, Rc::new(expr)); + } else { + Stmt::Expr(expr) + } + } else if self.expect(Token::SemiColon).is_some() { + while self.optional(Token::SemiColon).is_some() {} + Stmt::Expr(expr) + } else { + let s1 = self.expect(Token::RBrace)?; + break Expr::Block(s0 + s1, ty_hole(), stmts, Rc::new(expr)); + } + } + }; + stmts.push(stmt); + }; + Some(expr) + } + + fn expr_array(&mut self) -> Option { + let es = self.comma_sep(Self::expr, Token::LBrack, Token::RBrack)?; + Some(Expr::Array(Span::default(), ty_hole(), es)) + } + + fn expr_args(&mut self) -> Option> { + self.comma_sep(Self::expr, Token::LParen, Token::RParen) + } + + fn expr_call(&mut self, e0: Expr) -> Option { + let es = self.expr_args()?; + Some(Expr::Call(e0.span(), ty_hole(), Rc::new(e0), es)) + } + + fn tbinop( + &mut self, + lhs: Expr, + t: Token, + f: impl Fn(&mut Self) -> Option, + trait_name: impl Into, + def_name: impl Into, + ) -> Option { + let s = self.expect(t)?; + let rhs = self.try_expr(f)?; + let op = parsed_expr_assoc(s, trait_name, def_name); + let s1 = lhs.span() + rhs.span(); + Some(Expr::Call(s1, ty_hole(), Rc::new(op), vec![lhs, rhs])) + } + + fn def_binop( + &mut self, + lhs: Expr, + t: Token, + f: impl Fn(&mut Self) -> Option, + def_name: &'static str, + ) -> Option { + let s = self.expect(t)?; + let rhs = self.try_expr(f)?; + let op = parsed_expr_def(s, def_name, vec![]); + let s1 = lhs.span() + rhs.span(); + Some(Expr::Call(s1, ty_hole(), Rc::new(op), vec![lhs, rhs])) + } + + fn unop( + &mut self, + t: Token, + f: impl Fn(&mut Self) -> Option, + trait_name: impl Into, + name: &'static str, + ) -> Option { + let s = self.expect(t)?; + let e = self.try_expr(f)?; + let s1 = s + e.span(); + let op = parsed_expr_assoc(s, trait_name, name); + Some(Expr::Call(s1, ty_hole(), Rc::new(op), vec![e])) + } + + fn expr_dot(&mut self, expr: Expr) -> Option { + let s = self.expect(Token::Dot)?; + match self.peek() { + Token::Name => { + let name = self.name()?; + if let Token::LBrack | Token::LParen = self.peek() { + let ts = self.ty_args()?; + let es = self.expr_args()?; + let span = expr.span() + name.span; + let es = std::iter::once(expr).chain(es).collect::>(); + let e1 = parsed_expr_def(s, name, ts); + Some(Expr::Call(span, ty_hole(), Rc::new(e1), es)) + } else { + Some(Expr::Field(s, ty_hole(), Rc::new(expr), name)) + } + } + Token::Int => { + let i = self.index()?; + Some(Expr::Index(i.span, ty_hole(), Rc::new(expr), i)) + } + _ => None, + } + } + + fn expr_assign(&mut self, lhs: Expr) -> Option { + self.expect(Token::Eq)?; + let rhs = self.try_expr(Self::expr9)?; + let s1 = lhs.span() + rhs.span(); + Some(Expr::Assign(s1, ty_hole(), Rc::new(lhs), Rc::new(rhs))) + } + + // a? + // + // becomes + // + // match a { + // Some(x) => x, + // _ => return None, + // } + fn expr_question(&mut self, lhs: Expr) -> Option { + let s = self.expect(Token::Question)?; + let p0 = parsed_pat_enum(s, "Option", "Some", parsed_pat_var(s, "x")); + let e0 = parsed_expr_var(s, "x"); + let p1 = Pat::Wildcard(s, ty_hole()); + let e1 = Expr::Return(s, ty_hole(), Rc::new(parsed_expr_enum(s, "Option", "None"))); + let expr = Expr::Match(s, ty_hole(), Rc::new(lhs), vec![(p0, e0), (p1, e1)]); + Some(expr) + } + + fn expr_end(&mut self) -> bool { + matches!( + self.peek(), + Token::SemiColon + | Token::Comma + | Token::RBrace + | Token::RBrack + | Token::RParen + | Token::Eof + ) + } + + fn expr_return(&mut self) -> Option { + let s = self.expect(Token::Return)?; + let e = if self.expr_end() { + Expr::Tuple(s, ty_hole(), vec![]) + } else { + self.try_expr(Self::expr9)? + }; + Some(Expr::Return(s, ty_hole(), Rc::new(e))) + } + + fn expr_continue(&mut self) -> Option { + let s = self.expect(Token::Continue)?; + Some(Expr::Continue(s, ty_hole())) + } + + fn expr_break(&mut self) -> Option { + let s = self.expect(Token::Break)?; + Some(Expr::Break(s, ty_hole())) + } + + fn ty_annot(&mut self) -> Option { + if self.optional(Token::Colon).is_some() { + self.ty() + } else { + Some(ty_hole()) + } + } + + fn expr_fun(&mut self) -> Option { + let s = self.expect(Token::Fun)?; + let ps = self.params()?; + let t = self.ty_annot()?; + let e = self.expr_or_block(Self::expr)?; + Some(Expr::Fun(s + e.span(), ty_hole(), ps, t, Rc::new(e))) + } + + fn expr_query(&mut self) -> Option { + let qs = self.query_stmts()?; + let s = qs.first().unwrap().span() + qs.last().unwrap().span(); + Some(Expr::Query(s, ty_hole(), qs)) + } + + fn end_of_query_stmt(&mut self) -> bool { + matches!( + self.peek(), + Token::From + | Token::Where + | Token::Select + | Token::Group + | Token::Order + | Token::Join + | Token::With + | Token::Over + | Token::Into + | Token::Compute + | Token::SemiColon + | Token::RBrace + | Token::RBrack + | Token::RParen + | Token::Eof + ) + } + + fn query_stmts(&mut self) -> Option> { + let mut qs = Vec::new(); + loop { + let q = match self.peek() { + Token::From => self.query_from()?, + Token::Where => self.query_where()?, + Token::Select => self.query_select()?, + Token::Group => self.query_group()?, + Token::Order => self.query_order()?, + Token::Join => self.query_join()?, + Token::With => self.query_with()?, + Token::Over => self.query_over()?, + Token::Into => self.query_into()?, + Token::Compute => self.query_compute()?, + _ => break, + }; + qs.push(q); + } + Some(qs) + } + + fn name_in_expr(&mut self) -> Option<(Name, Expr)> { + let name = self.name()?; + self.expect(Token::In)?; + let expr = self.expr()?; + Some((name, expr)) + } + + fn query_from(&mut self) -> Option { + let s = self.expect(Token::From)?; + let xes = if self.peek() == Token::LBrace { + self.comma_sep(Self::name_in_expr, Token::LBrace, Token::RBrace)? + } else { + self.comma_sep_until_cond(Self::name_in_expr, Self::end_of_query_stmt)? + }; + Some(Query::From(s, ty_hole(), xes)) + } + + fn query_select(&mut self) -> Option { + let s0 = self.expect(Token::Select)?; + let xes = if self.peek() == Token::LBrace { + self.comma_sep(Self::expr_field, Token::LBrace, Token::RBrace)? + } else { + self.comma_sep_until_cond(Self::expr_field, Self::end_of_query_stmt)? + }; + Some(Query::Select(s0, ty_hole(), xes)) + } + + fn name_eq_expr(&mut self) -> Option<(Name, Expr)> { + let name = self.name()?; + self.expect(Token::Eq)?; + let expr = self.expr()?; + Some((name, expr)) + } + + fn query_with(&mut self) -> Option { + let s0 = self.expect(Token::With)?; + let xes = if self.peek() == Token::LBrace { + self.comma_sep(Self::name_eq_expr, Token::LBrace, Token::RBrace)? + } else { + self.comma_sep_until_cond(Self::name_eq_expr, Self::end_of_query_stmt)? + }; + Some(Query::With(s0, ty_hole(), xes)) + } + + fn query_compute(&mut self) -> Option { + let s0 = self.expect(Token::Compute)?; + let aggs = if self.peek() == Token::LBrace { + self.comma_sep(Self::agg, Token::LBrace, Token::RBrace)? + } else { + self.comma_sep_until_cond(Self::agg, Self::end_of_query_stmt)? + }; + Some(Query::Compute(s0, ty_hole(), aggs)) + } + + fn agg(&mut self) -> Option<(Name, Expr, Expr)> { + let x = self.name()?; + self.expect(Token::Eq)?; + let e0 = self.expr()?; + self.expect(Token::Of)?; + let e1 = self.expr()?; + Some((x, e0, e1)) + } + + fn query_where(&mut self) -> Option { + let s0 = self.expect(Token::Where)?; + let e = self.expr()?; + let s = s0 + e.span(); + Some(Query::Where(s, ty_hole(), Rc::new(e))) + } + + fn query_group(&mut self) -> Option { + let s = self.expect(Token::Group)?; + let xs = self.query_stmt_args(Self::name)?; + self.expect(Token::LBrace)?; + let qs = self.query_stmts()?; + self.expect(Token::RBrace)?; + Some(Query::Group(s, ty_hole(), xs, qs)) + } + + fn query_over(&mut self) -> Option { + let s0 = self.expect(Token::Over)?; + let e = self.expr()?; + self.expect(Token::LBrace)?; + let qs = self.query_stmts()?; + self.expect(Token::RBrace)?; + let s = s0 + e.span(); + Some(Query::Over(s, ty_hole(), Rc::new(e), qs)) + } + + fn query_order(&mut self) -> Option { + let s0 = self.expect(Token::Order)?; + let os = self.query_stmt_args(Self::ordering)?; + Some(Query::Order(s0, ty_hole(), os)) + } + + fn ordering(&mut self) -> Option<(Name, bool)> { + let x = self.name()?; + let k = self.optional(Token::Desc).is_some(); + Some((x, k)) + } + + fn query_join(&mut self) -> Option { + let s = self.expect(Token::Join)?; + let xes = self.query_stmt_args(Self::source)?; + self.expect(Token::On)?; + let e = self.expr()?; + let t = ty_hole(); + Some(Query::Join(s, t, xes, Rc::new(e))) + } + + fn source(&mut self) -> Option<(Name, Expr)> { + let x = self.name()?; + self.expect(Token::In)?; + let e = self.expr()?; + Some((x, e)) + } + + fn query_stmt_args(&mut self, f: impl Fn(&mut Self) -> Option) -> Option> { + if self.peek() == Token::LBrace { + self.comma_sep(f, Token::LBrace, Token::RBrace) + } else { + self.comma_sep_until_cond(f, Self::end_of_query_stmt) + } + } + + fn query_into(&mut self) -> Option { + let s = self.expect(Token::Into)?; + let es = self.query_stmt_args(Self::expr)?; + Some(Query::Into(s, ty_hole(), es)) + } + + fn expr_for(&mut self) -> Option { + self.expect(Token::For)?; + let x = self.name()?; + self.expect(Token::In)?; + let e0 = self.expr()?; + let e1 = self.expr_block()?; + // { + // let it = @IntoIterator::into_iter(e0); + // while true { + // match it.next() { + // Option::Some(x) => e1, + // Option::None => break + // } + // } + // } + Some(expr_block( + [stmt_var( + "it", + ty_hole(), + expr_call( + parsed_expr_assoc(Span::default(), "IntoIterator", "into_iter"), + [e0], + ), + )], + expr_while( + expr_bool(true), + expr_match( + expr_call(expr_var("next"), [expr_var("it")]), + [ + ( + parsed_pat_enum( + Span::default(), + "Option", + "Some", + parsed_pat_var(Span::default(), x), + ), + e1, + ), + ( + parsed_pat_enum(Span::default(), "Option", "None", pat_wild()), + expr_break(), + ), + ], + ), + ), + )) + } + + fn expr_while(&mut self) -> Option { + self.expect(Token::While)?; + let e = self.expr()?; + let e1 = self.expr_block_or_expr()?; + let s = e.span() + e1.span(); + Some(Expr::While(s, ty_hole(), Rc::new(e), Rc::new(e1))) + } + + fn expr_match(&mut self) -> Option { + self.expect(Token::Match)?; + let e = self.expr()?; + let arms = self.comma_sep(Self::arm, Token::LBrace, Token::RBrace)?; + Some(Expr::Match(e.span(), ty_hole(), Rc::new(e), arms)) + } + + fn expr_block_or_expr(&mut self) -> Option { + match self.expr_block()? { + Expr::Block(_, _, ss, e) if ss.is_empty() => Some(e.as_ref().clone()), + e => Some(e), + } + } + + fn expr_if(&mut self) -> Option { + self.expect(Token::If)?; + let e = self.expr()?; + let e1 = self.expr_block_or_expr()?; + let e2 = if self.optional(Token::Else).is_some() { + self.expr_block_or_expr()? + } else { + Expr::Tuple(Span::default(), ty_hole(), vec![]) + }; + let p1 = Pat::Bool(Span::default(), ty_hole(), true); + let p2 = Pat::Wildcard(Span::default(), ty_hole()); + Some(Expr::Match( + e.span() + e1.span() + e2.span(), + ty_hole(), + Rc::new(e), + vec![(p1, e1), (p2, e2)], + )) + } + + fn expr_or_block(&mut self, f: impl Fn(&mut Self) -> Option) -> Option { + if self.peek() == Token::LBrace { + self.expr_block() + } else { + self.expect(Token::Eq)?; + f(self) + } + } + + fn arm(&mut self) -> Option<(Pat, Expr)> { + let p = self.pat()?; + self.expect(Token::FatArrow)?; + let e = self.expr()?; + Some((p, e)) + } + + fn expr_annot(&mut self, e: Expr) -> Option { + self.expect(Token::Colon)?; + let t = self.ty()?; + Some(e.of(t)) + } + + #[inline(always)] + fn expr0(&mut self) -> Option { + match self.peek() { + Token::Int => { + let t = self.next().unwrap(); + let v = self.text(t).to_owned(); + Some(Expr::Int(t.span, ty_hole(), v)) + } + Token::IntSuffix => { + // let t = self.next().unwrap(); + // let v = self.text(t).to_owned(); + todo!() + // let v0 = v0.to_owned(); + // let v1 = format!("postfix_{v1}"); + // let s = self.advance(); + // let e = parsed_expr_def(s, v1, vec![]); + // Some(Expr::Call( + // s, + // ty_hole(), + // Rc::new(e), + // vec![Expr::Int(s, ty_hole(), v0)], + // )) + } + Token::Float => { + let t = self.next().unwrap(); + let v = self.text(t).to_owned(); + Some(Expr::Float(t.span, ty_hole(), v)) + } + Token::FloatSuffix => { + todo!() + // let v0 = v0.to_owned(); + // let v1 = format!("postfix_{v1}"); + // let s = self.advance(); + // let e = parsed_expr_def(s, v1, vec![]); + // Some(Expr::Call( + // s, + // ty_hole(), + // Rc::new(e), + // vec![Expr::Float(s, ty_hole(), v0)], + // )) + } + Token::True => { + let s = self.advance(); + Some(Expr::Bool(s, ty_hole(), true)) + } + Token::String => { + let t = self.next().unwrap(); + let v = self.text(t).to_owned(); + Some(Expr::String(t.span, ty_hole(), v)) + } + Token::False => { + let s = self.advance(); + Some(Expr::Bool(s, ty_hole(), false)) + } + Token::Name => self.expr_path(), + Token::LParen => self.expr_paren(), + Token::LBrack => self.expr_array(), + Token::LBrace => self.expr_block(), + Token::Match => self.expr_match(), + Token::If => self.expr_if(), + Token::From => self.expr_query(), + Token::For => self.expr_for(), + Token::While => self.expr_while(), + _ => None, + } + } + + #[inline(always)] + fn expr1(&mut self) -> Option { + let mut expr = self.try_expr(Self::expr0)?; + loop { + expr = match self.peek() { + Token::LParen => self.expr_call(expr)?, + Token::Dot => self.expr_dot(expr)?, + Token::Question => self.expr_question(expr)?, + _ => break Some(expr), + } + } + } + + #[inline(always)] + fn expr2(&mut self) -> Option { + match self.peek() { + Token::Minus => self.unop(Token::Minus, Self::expr2, "Neg", "neg"), + Token::Not => self.unop(Token::Not, Self::expr2, "Not", "not"), + _ => self.try_expr(Self::expr1), + } + } + + #[inline(always)] + fn expr3(&mut self) -> Option { + let mut expr = self.try_expr(Self::expr2)?; + loop { + expr = match self.peek() { + Token::Colon => self.expr_annot(expr)?, + _ => break Some(expr), + } + } + } + + #[inline(always)] + fn expr4(&mut self) -> Option { + let mut expr = self.try_expr(Self::expr3)?; + loop { + expr = match self.peek() { + Token::Star => self.tbinop(expr, Token::Star, Self::expr3, "Mul", "mul")?, + Token::Slash => self.tbinop(expr, Token::Slash, Self::expr3, "Div", "div")?, + _ => break Some(expr), + } + } + } + + #[inline(always)] + fn expr5(&mut self) -> Option { + let mut expr = self.try_expr(Self::expr4)?; + loop { + expr = match self.peek() { + Token::Plus => self.tbinop(expr, Token::Plus, Self::expr4, "Add", "add")?, + Token::Minus => self.tbinop(expr, Token::Minus, Self::expr4, "Sub", "sub")?, + _ => break Some(expr), + } + } + } + + fn temp(span: Span, id: usize) -> (Expr, impl FnOnce(Expr) -> Stmt) { + let name = Name::from(format!("_{id}")); + let var = parsed_expr_var(span, name.clone()); + let stmt = move |e| Stmt::Var(StmtVar::new(span, name, ty_hole(), e)); + (var, stmt) + } + + // f() == g() => f() == g() + // + // f() == g() == h() => { val _0 = f(); + // val _1 = g(); + // _0 == _1 && _1 == h() } + // + // f() == g() == h() == i() => { val _0 = f(); + // val _1 = g(); + // _0 == _1 && + // { val _2 = h(); + // _1 == _2 } } + #[inline(always)] + fn expr6(&mut self) -> Option { + let lhs = self.try_expr(Self::expr5)?; + let op = match self.peek() { + Token::EqEq => parsed_expr_assoc(self.advance(), "PartialEq", "eq"), + Token::NotEq => parsed_expr_assoc(self.advance(), "PartialEq", "ne"), + Token::Lt => parsed_expr_assoc(self.advance(), "PartialOrd", "lt"), + Token::Gt => parsed_expr_assoc(self.advance(), "PartialOrd", "gt"), + Token::Le => parsed_expr_assoc(self.advance(), "PartialOrd", "le"), + Token::Ge => parsed_expr_assoc(self.advance(), "PartialOrd", "ge"), + _ => return Some(lhs), + }; + let rhs = self.try_expr(Self::expr5)?; + let (lhs_var, lhs_stmt) = Self::temp(lhs.span(), 0); + let (rhs_var, rhs_stmt) = Self::temp(rhs.span(), 1); + let (expr, n) = self.expr6_rec(rhs_var.clone(), 2)?; + let t = ty_hole(); + if n > 2 { + let span = lhs.span() + expr.span(); + let expr_op = Expr::Call(span, t.clone(), Rc::new(op), vec![lhs_var, rhs_var]); + let expr_and = expr_and(expr_op, expr).with_span(span); + let stmts = vec![lhs_stmt(lhs), rhs_stmt(rhs)]; + Some(Expr::Block(span, t, stmts, Rc::new(expr_and))) + } else { + Some(Expr::Call(expr.span(), t, Rc::new(op), vec![lhs, rhs])) + } + } + + fn expr6_rec(&mut self, lhs: Expr, id: usize) -> Option<(Expr, usize)> { + let op = match self.peek() { + Token::EqEq => parsed_expr_assoc(self.advance(), "PartialEq", "eq"), + Token::NotEq => parsed_expr_assoc(self.advance(), "PartialEq", "ne"), + Token::Lt => parsed_expr_assoc(self.advance(), "PartialOrd", "lt"), + Token::Gt => parsed_expr_assoc(self.advance(), "PartialOrd", "gt"), + Token::Le => parsed_expr_assoc(self.advance(), "PartialOrd", "le"), + Token::Ge => parsed_expr_assoc(self.advance(), "PartialOrd", "ge"), + _ => return Some((lhs, id)), + }; + let rhs = self.try_expr(Self::expr5)?; + let span = lhs.span() + rhs.span(); + let (rhs_var, rhs_stmt) = Self::temp(span, id); + let (expr, n) = self.expr6_rec(rhs_var.clone(), id + 1)?; + let t = ty_hole(); + if n > id + 1 { + let span = lhs.span() + expr.span(); + let expr_op = Expr::Call(span, ty_hole(), Rc::new(op), vec![lhs, rhs_var]); + let expr_and = expr_and(expr_op, expr).with_span(span); + let stmts = vec![rhs_stmt(rhs)]; + Some((Expr::Block(span, t, stmts, Rc::new(expr_and)), n)) + } else { + Some((Expr::Call(op.span(), t, Rc::new(op), vec![lhs, rhs]), n)) + } + } + + #[inline(always)] + fn expr7(&mut self) -> Option { + let mut expr = self.try_expr(Self::expr6)?; + loop { + expr = match self.peek() { + Token::And => { + let s = self.advance(); + let rhs = self.try_expr(Self::expr6)?; + expr_and(expr, rhs).with_span(s) + } + Token::Or => { + let s = self.advance(); + let rhs = self.try_expr(Self::expr6)?; + expr_or(expr, rhs).with_span(s) + } + _ => break Some(expr), + } + } + } + + #[inline(always)] + fn expr8(&mut self) -> Option { + let expr = self.try_expr(Self::expr7)?; + match self.peek() { + Token::DotDot => self.def_binop(expr, Token::DotDot, Self::expr7, "range"), + _ => Some(expr), + } + } + + #[inline(always)] + fn expr9(&mut self) -> Option { + let expr = self.try_expr(Self::expr8)?; + match self.peek() { + Token::Eq => self.expr_assign(expr), + _ => Some(expr), + } + } + + #[inline(always)] + fn expr10(&mut self) -> Option { + match self.peek() { + Token::Return => self.expr_return(), + Token::Continue => self.expr_continue(), + Token::Break => self.expr_break(), + Token::Fun => self.expr_fun(), + _ => self.try_expr(Self::expr9), + } + } + + #[inline(always)] + fn try_expr(&mut self, f: impl Fn(&mut Self) -> Option) -> Option { + self.or_else( + #[inline(always)] + |this| f(this), + |s| Expr::Err(s, ty_hole()), + ) + } + + pub fn expr(&mut self) -> Option { + self.recursive( + #[inline(always)] + |this| this.try_expr(Self::expr10), + ) + } + + pub fn pat0(&mut self) -> Option { + match self.peek() { + Token::Name => self.pat_path(), + Token::LParen => self.pat_paren(), + Token::Underscore => self.pat_underscore(), + Token::Int => { + let t = self.next().unwrap(); + let v = self.text(t).to_owned(); + Some(Pat::Int(t.span, ty_hole(), v)) + } + Token::String => { + let t = self.next().unwrap(); + let v = self.text(t).to_owned(); + Some(Pat::String(t.span, ty_hole(), v)) + } + _ => None, + } + } + + pub fn pat1(&mut self) -> Option { + let p = self.pat0()?; + match self.peek() { + Token::Colon => { + self.advance(); + let t = self.ty()?; + Some(p.with_ty(t)) + } + _ => Some(p), + } + } + + pub fn try_pat(&mut self, f: impl Fn(&mut Self) -> Option) -> Option { + self.or_else(f, |s| Pat::Err(s, ty_hole())) + } + + pub fn pat(&mut self) -> Option { + self.recursive(|this| this.try_pat(Self::pat1)) + } + + fn pat_underscore(&mut self) -> Option { + let s = self.expect(Token::Underscore)?; + Some(Pat::Wildcard(s, ty_hole())) + } + + fn pat_args(&mut self) -> Option>> { + if self.peek() == Token::LParen { + Some(Some(self.comma_sep( + Self::pat_arg, + Token::LParen, + Token::RParen, + )?)) + } else { + Some(None) + } + } + + fn pat_arg(&mut self) -> Option { + let mut p = self.pat()?; + if let Pat::Unresolved(_, Type::Hole, path, args) = &mut p { + if path.segments.len() == 1 + && path.segments[0].1.is_empty() + && args.is_none() + && self.optional(Token::Eq).is_some() + { + let x = path.segments.pop().unwrap().0; + let p = self.pat()?; + return Some(PatArg::Named(x, p)); + } + } + Some(PatArg::Unnamed(p)) + } + + fn pat_path(&mut self) -> Option { + let path = self.unresolved_path()?; + let args = self.pat_args()?; + Some(Pat::Unresolved(Span::default(), ty_hole(), path, args)) + } + + fn expr_path(&mut self) -> Option { + let path = self.unresolved_path()?; + Some(Expr::Unresolved(Span::default(), ty_hole(), path)) + } +} diff --git a/crates/compiler/src/parser2.rs b/crates/compiler/src/parser2.rs new file mode 100644 index 0000000..dcf6c54 --- /dev/null +++ b/crates/compiler/src/parser2.rs @@ -0,0 +1,614 @@ +//! https://dl.acm.org/doi/pdf/10.1145/947902.947905 +//! +//! The standard method of adding error recovery to a recursive descent +//! parser has been well described by Wirth in [4] and by Amman in [I]. +//! With this method, one modifies the parsing procedure P corresponding to +//! each syntactic class (nonterminal symbol) S as follows. +//! +//! a) Add a parameter, **followers**, whose value includes the set of input +//! symbols which may legally follow this instance of S. +//! b) On entry to P, test that the current input symbol, **sym**, may legally +//! start an instance of S; if it can't, report an error and read input +//! symbols until reaching a legal starter or follower of S. +//! c) On exit from P, test that **sym** may legally follow this instance of S; +//! if it can't, report an error and read input symbols until reaching a +//! legal follower of S. +//! d) Replace each call to any other parsing procedure Q corresponding to +//! a syntactic class T by the call +//! Q([...] + followers) +//! where [...] is the set of symbols which P expects to follow this +//! instance of T. + +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Index; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::diag::Report; +use crate::lexer::Span; +use crate::lexer::Spanned; +use crate::lexer::Token; + +pub struct Parser<'a, I> +where + I: Iterator>, +{ + input: &'a str, + lexer: std::iter::Peekable, + pub report: Report, + parens: Vec, + braces: Vec, + bracks: Vec, +} + +enum Either { + A(A), + B(B), +} + +impl Token { + fn infix_bp(self) -> Option<(u8, u8)> { + let bp = match self { + Token::DotDot => (1, 2), + Token::And | Token::Or => (1, 2), + Token::EqEq | Token::NotEq | Token::Lt | Token::Gt | Token::Le | Token::Ge => (2, 3), + Token::Plus | Token::Minus => (3, 4), + Token::Star | Token::Slash => (4, 5), + _ => return None, + }; + Some(bp) + } + fn prefix_bp(self) -> Option<((), u8)> { + let bp = match self { + Token::Plus | Token::Minus => ((), 6), + _ => return None, + }; + Some(bp) + } + fn postfix_bp(self) -> Option<(u8, ())> { + let bp = match self { + Token::Question | Token::LParen => (7, ()), + _ => return None, + }; + Some(bp) + } +} + +impl<'a, I> Parser<'a, I> +where + I: Iterator>, +{ + pub fn new(input: &'a str, lexer: I) -> Self { + let lexer = lexer.peekable(); + let report = Report::new(); + Self { + input, + lexer, + report, + parens: Vec::new(), + braces: Vec::new(), + bracks: Vec::new(), + } + } + + // Utility functions + + fn peek(&mut self) -> Spanned { + self.lexer.peek().cloned().unwrap() + } + + fn next(&mut self) -> Spanned { + self.lexer.next().unwrap() + } + + fn skip(&mut self) { + self.next(); + } + + fn text(&self, t: Spanned) -> &'a str { + t.text(self.input) + } + + fn optional(&mut self, token: Token, follow: Token) -> Option> { + if follow.contains(self.peek().value) { + return None; + } + self.start(token | follow, follow).ok().and_then(|t| { + if t.value == token { + Some(t) + } else { + None + } + }) + } + + fn eat(&mut self, token: Token, follow: Token) -> bool { + self.optional(token, follow).is_some() + } + + fn eat_all(&mut self, token: Token, follow: Token) { + while self.eat(token, follow) {} + } + + fn at(&mut self, token: Token) -> bool { + self.peek().value == token + } + + fn peek_span(&mut self) -> Span { + self.peek().span + } + + fn next_span(&mut self) -> Span { + self.next().span + } + + fn balanced(&mut self) -> bool { + self.parens.is_empty() && self.braces.is_empty() && self.bracks.is_empty() + } + + // Error recovery takes closing/opening braces into account + // 1. (+ [)]) => Recover at the second ) and report an error: Unexpected token + + // 2. => Recover at the end of the file and report an error: Unmatched + fn recover(&mut self, first: Token, follow: Token, peek: bool) -> Result, Span> { + loop { + let t = self.peek(); + match t.value { + _ if first.contains(t.value) && self.balanced() => { + if peek { + return Ok(t); + } else { + return Ok(self.next()); + } + } + // Should this be here or after? + // Do we need to check if parens/braces/bracks are balanced? + // * A closing token can be in follow, e.g., (a,b,c) + // * An opening token can be in follow, e.g., f() + _ if follow.contains(t.value) => { + if !self.balanced() { + self.parens.drain(..).for_each(|span| { + self.report.err(span, "Unmatched `(`", "expected `)`"); + }); + self.braces.drain(..).for_each(|span| { + self.report.err(span, "Unmatched `{`", "expected `}`"); + }); + self.bracks.drain(..).for_each(|span| { + self.report.err(span, "Unmatched `[`", "expected `]`"); + }); + } + return Err(t.span); + } + Token::LBrace => self.braces.push(t.span), + Token::LParen => self.parens.push(t.span), + Token::LBrack => self.bracks.push(t.span), + Token::RBrace => { + self.braces.pop(); + } + Token::RParen => { + self.parens.pop(); + } + Token::RBrack => { + self.bracks.pop(); + } + _ => { + self.skip(); + } + }; + } + } + + fn expect(&mut self, expected: Token, follow: Token) -> Result, Span> { + let t = self.peek(); + if t.value == expected { + Ok(self.next()) + } else { + self.report.err( + t.span, + format!("Unexpected token {}", t.value), + format!("expected {expected}"), + ); + self.recover(expected, follow, false) + } + } + + fn start(&mut self, first: Token, follow: Token) -> Result, Span> { + let t = self.peek(); + if !first.contains(t.value) { + self.report.err( + t.span, + format!("Unexpected token {}", t.value), + format!("expected one of {:?}", first), + ); + self.recover(first, follow, true) + } else { + Ok(t) + } + } + + fn expect_token(&mut self, expected: Token, follow: Token) -> Result { + self.expect(expected, follow).map(|t| t.value) + } + + fn seq( + &mut self, + f: impl Fn(&mut Self, Token) -> Result, Span>, + sep: Token, + follow: Token, + ) -> Result>>, Span> { + let mut xs = Vec::new(); + if !follow.contains(self.peek().value) { + let x = f(self, follow | sep)?; + let s0 = x.span; + let mut s1 = x.span; + xs.push(x.value); + while self.eat(sep, follow) { + let x = f(self, follow | sep)?; + s1 = x.span; + xs.push(x.value); + } + return Ok(Some(Spanned::new(s0 + s1, xs))); + } + Ok(None) + } + + fn seq_nonempty( + &mut self, + f: impl Fn(&mut Self, Token) -> Result, Span>, + sep: Token, + follow: Token, + ) -> Result>, Span> { + let x = f(self, follow | sep)?; + let s0 = x.span; + let mut s1 = x.span; + let mut xs = vec![x.value]; + while self.eat(sep, follow) { + let x = f(self, follow | sep)?; + s1 = x.span; + xs.push(x.value); + } + Ok(Spanned::new(s0 + s1, xs)) + } + + // )() => Skip the first + fn group( + &mut self, + open: Token, + close: Token, + f: impl Fn(&mut Self, Token) -> Result>, Span>, + follow: Token, + ) -> Result>, Span> { + let t0 = self.expect(open, follow)?; + let x = f(self, follow | close)?; + let t1 = self.expect(close, follow)?; + Ok(Spanned::new(t0.span + t1.span, x.map(|x| x.value))) + } + + // Terminals + + fn name(&mut self, follow: Token) -> Result, Span> { + let t = self.expect(Token::Name, follow)?; + let v = self.text(t).to_owned(); + let name = Name::new(t.span, v); + Ok(Spanned::new(t.span, name)) + } + + fn index(&mut self, follow: Token) -> Result, Span> { + let t = self.expect(Token::Int, follow)?; + let v = self.text(t); + match v.parse() { + Ok(v) => Ok(Spanned::new(t.span, Index::new(t.span, v))), + Err(e) => { + self.report + .err(t.span, format!("Invalid index `{}`", v), format!("{e}")); + Err(t.span) + } + } + } + + pub fn parse( + &mut self, + f: impl Fn(&mut Self, Token) -> Result, Span>, + ) -> Option { + let t = f(self, Token::Eof); + self.expect(Token::Eof, Token::Eof).ok(); + t.ok().map(|x| x.value) + } + + // The parser + pub fn program(&mut self, follow: Token) -> Result, Span> { + let mut stmts = Vec::new(); + let s0 = self.peek_span(); + let mut s1 = s0; + + while !follow.contains(self.peek().value) { + println!("{:?}", self.peek().value); + match self.stmt(follow | Token::SemiColon) { + Ok(stmt) => { + s1 = stmt.span; + stmts.push(stmt.value); + } + Err(span) => { + s1 = span; + stmts.push(Stmt::Err(span)); + } + } + self.eat_all(Token::SemiColon, follow); + } + Ok(Spanned::new(s0 + s1, Program::new(stmts))) + } + + pub fn stmt(&mut self, follow: Token) -> Result, Span> { + let t = self.start( + Token::Def + | Token::Type + | Token::Trait + | Token::Struct + | Token::Enum + | Token::Impl + | Token::Var, + follow, + )?; + match t.value { + Token::Def => self.stmt_def(follow), + t => todo!("{t}"), + } + } + + fn where_clause(&mut self, follow: Token) -> Result>>, Span> { + if follow.contains(self.peek().value) { + return Ok(None); + } + if let Some(t0) = self.optional(Token::Where, follow) { + let xs = self.bounds(follow)?; + if let Some(xs) = xs { + Ok(Some(Spanned::new(t0.span + xs.span, xs.value))) + } else { + Ok(Some(Spanned::new(t0.span, vec![]))) + } + } else { + Ok(None) + } + } + + fn bounds(&mut self, follow: Token) -> Result>>, Span> { + self.seq(Self::bound, Token::Comma, follow) + } + + fn bound(&mut self, follow: Token) -> Result, Span> { + let x = self.path(follow)?; + Ok(Spanned::new(x.span, Bound::Unresolved(x.span, x.value))) + } + + fn path(&mut self, follow: Token) -> Result, Span> { + let xs = self.seq_nonempty(Self::path_segment, Token::ColonColon, follow)?; + Ok(Spanned::new(xs.span, UnresolvedPath::new(xs.value))) + } + + fn ty_args(&mut self, follow: Token) -> Result>>, Span> { + if self.peek().value == Token::LBrack { + self.group( + Token::LBrack, + Token::RBrack, + |p, follow| p.seq(Self::ty, Token::Comma, follow), + follow, + ) + .map(|x| x.transpose()) + } else { + Ok(None) + } + } + + fn path_segment(&mut self, follow: Token) -> Result)>, Span> { + let name = self.name(follow)?; + let args = self.ty_args(follow)?; + if let Some(args) = args { + Ok(Spanned::new( + name.span + args.span, + (name.value, args.value), + )) + } else { + Ok(Spanned::new(name.span, (name.value, vec![]))) + } + } + + fn ty(&mut self, _follows: Token) -> Result, Span> { + Ok(Spanned::new(Span::default(), Type::Err)) + } + + fn generics(&mut self, follow: Token) -> Result>>, Span> { + if self.peek().value == Token::LBrack { + self.group( + Token::LBrack, + Token::RBrack, + |p, follow| p.seq(Self::name, Token::Comma, follow), + follow, + ) + .map(|x| x.transpose()) + } else { + Ok(None) + } + } + + fn params(&mut self, follow: Token) -> Result>, Span> { + self.group( + Token::LParen, + Token::RParen, + |p, follow| p.seq(Self::param, Token::Comma, follow), + follow, + ) + .map(|x| x.flatten()) + } + + fn param(&mut self, follow: Token) -> Result, Span> { + let name = self.name(follow)?; + self.expect(Token::Colon, follow)?; + let ty = self.ty(follow)?; + let span = name.span + ty.span; + Ok(Spanned::new(span, Param::new(span, name.value, ty.value))) + } + + fn stmt_def(&mut self, follow: Token) -> Result, Span> { + let t0 = self.expect(Token::Def, follow)?; + let name = self.name(follow)?; + let generics = self.generics(follow)?; + let params = self.params(follow)?; + self.expect(Token::Colon, follow)?; + let ty = self.ty(follow.or(Token::Where).or(Token::Eq))?; + let where_clause = self.where_clause(follow.or(Token::Eq))?; + self.expect(Token::Eq, follow)?; + let e = self.expr(follow)?; + Ok(Spanned::new( + t0.span + e.span, + Stmt::Def(StmtDef::new( + t0.span + e.span, + name.value, + generics.map(|x| x.value).unwrap_or_default(), + where_clause.map(|x| x.value).unwrap_or_default(), + params.value, + ty.value, + Body::Expr(e.value), + )), + )) + } + + fn expr_tuple(&mut self, follow: Token) -> Result>>, Span> { + self.group( + Token::LParen, + Token::RParen, + |p, follow| p.seq(Self::expr, Token::Comma, follow), + follow, + ) + } + + fn expr_lhs(&mut self, follow: Token) -> Result, Span> { + let t = self.start( + Token::Int + | Token::Float + | Token::String + | Token::Name + | Token::LParen + | Token::Plus + | Token::Minus, + follow, + )?; + let lhs = match t.value { + Token::Int => { + let t = self.next(); + let v = self.text(t).to_owned(); + Expr::Int(t.span, Type::Hole, v) + } + Token::Float => { + let t = self.next(); + let v = self.text(t).to_owned(); + Expr::Float(t.span, Type::Hole, v) + } + Token::String => { + let t = self.next(); + let v = self.text(t).to_owned(); + Expr::String(t.span, Type::Hole, v) + } + Token::Name => { + let path = self.path(follow)?; + Expr::Unresolved(t.span, Type::Hole, path.value) + } + Token::LParen => { + let t = self.expr_tuple(follow)?; + if let Some(es) = t.value { + if es.len() == 1 { + es.into_iter().next().unwrap() + } else { + Expr::Tuple(t.span, Type::Hole, es) + } + } else { + Expr::Tuple(t.span, Type::Hole, vec![]) + } + } + Token::Plus => { + let op = self.next(); + let ((), rbp) = op.value.prefix_bp().unwrap(); + let rhs = self.expr_bp(follow, rbp)?; + Expr::Postfix(op.span, Type::Hole, op.value, Rc::new(rhs.value)) + } + Token::Minus => { + let op = self.next(); + let ((), rbp) = op.value.prefix_bp().unwrap(); + let rhs = self.expr_bp(follow, rbp)?; + Expr::Postfix(op.span, Type::Hole, op.value, Rc::new(rhs.value)) + } + _ => unreachable!(), + }; + Ok(Spanned::new(t.span, lhs)) + } + + fn expr(&mut self, follow: Token) -> Result, Span> { + self.expr_bp(follow, 0) + } + + fn expr_bp(&mut self, follow: Token, min_bp: u8) -> Result, Span> { + let mut lhs = self + .expr_lhs( + follow + | Token::And + | Token::Or + | Token::DotDot + | Token::EqEq + | Token::NotEq + | Token::Lt + | Token::Gt + | Token::Le + | Token::Ge + | Token::Plus + | Token::Minus + | Token::Star + | Token::Slash, + ) + .unwrap_or_else(|s| Spanned::new(s, Expr::Err(s, Type::Hole))); + loop { + let op = self.peek(); + if follow.contains(op.value) { + break; + } + if let Some((lbp, ())) = op.value.postfix_bp() { + if lbp < min_bp { + break; + } + self.next(); + let span = lhs.span + op.span; + lhs = Spanned::new( + span, + Expr::Postfix(span, Type::Hole, op.value, Rc::new(lhs.value)), + ); + continue; + } + if let Some((lbp, rbp)) = op.value.infix_bp() { + if lbp < min_bp { + break; + } + self.next(); + let rhs = self.expr_bp(follow, rbp)?; + let span = lhs.span + rhs.span; + lhs = Spanned::new( + span, + Expr::Infix( + span, + Type::Hole, + op.value, + Rc::new(lhs.value), + Rc::new(rhs.value), + ), + ); + } else { + break; + } + } + Ok(lhs) + } +} diff --git a/crates/compiler/src/prelude.rs b/crates/compiler/src/prelude.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/crates/compiler/src/prelude.rs @@ -0,0 +1 @@ + diff --git a/crates/compiler/src/print.rs b/crates/compiler/src/print.rs new file mode 100644 index 0000000..4b6e75d --- /dev/null +++ b/crates/compiler/src/print.rs @@ -0,0 +1,215 @@ +use crate::ast::Index; +use crate::ast::Name; +use crate::lexer::Token; + +pub trait Print<'b> { + // Required methods + fn fmt(&mut self) -> &mut std::fmt::Formatter<'b>; + fn get_indent(&mut self) -> &mut usize; + fn should_indent(&mut self) -> bool; + + // Default methods + fn tab(&mut self) -> std::fmt::Result { + for _ in 0..*self.get_indent() { + write!(self.fmt(), " ")?; + } + Ok(()) + } + + fn kw(&mut self, s: &str) -> std::fmt::Result { + write!(self.fmt(), "{}", s) + } + + fn space(&mut self) -> std::fmt::Result { + write!(self.fmt(), " ") + } + + fn punct(&mut self, s: &str) -> std::fmt::Result { + write!(self.fmt(), "{}", s) + } + + fn token(&mut self, t: &Token) -> std::fmt::Result { + write!(self.fmt(), "{t}") + } + + fn newline(&mut self) -> std::fmt::Result { + if !self.should_indent() { + writeln!(self.fmt())?; + } + self.tab() + } + + fn sep<'c, T: 'c>( + &mut self, + sep: &str, + space: bool, + iter: impl IntoIterator, + f: impl Fn(&mut Self, &'c T) -> std::fmt::Result, + ) -> std::fmt::Result { + let mut iter = iter.into_iter(); + if let Some(x) = iter.next() { + f(self, x)?; + for x in iter { + self.punct(sep)?; + if space { + self.space()?; + } + f(self, x)?; + } + } + Ok(()) + } + + fn sep_trailing<'c, T: 'c>( + &mut self, + sep: &str, + iter: impl IntoIterator, + f: impl Fn(&mut Self, &'c T) -> std::fmt::Result, + ) -> std::fmt::Result { + let mut iter = iter.into_iter(); + if let Some(x) = iter.next() { + f(self, x)?; + self.punct(sep)?; + if let Some(x) = iter.next() { + self.space()?; + f(self, x)?; + for x in iter { + self.punct(sep)?; + self.space()?; + f(self, x)?; + } + } + } + Ok(()) + } + + fn comma_sep<'c, T: 'c>( + &mut self, + iter: impl IntoIterator, + f: impl Fn(&mut Self, &'c T) -> std::fmt::Result, + ) -> std::fmt::Result { + self.sep(",", true, iter, f) + } + + fn comma_sep_trailing<'c, T: 'c>( + &mut self, + iter: impl IntoIterator, + f: impl Fn(&mut Self, &'c T) -> std::fmt::Result, + ) -> std::fmt::Result { + self.sep_trailing(",", iter, f) + } + + fn newline_comma_sep<'c, T: 'c>( + &mut self, + iter: impl IntoIterator, + f: impl Fn(&mut Self, &'c T) -> std::fmt::Result, + ) -> std::fmt::Result { + let mut iter = iter.into_iter(); + if let Some(x) = iter.next() { + self.newline()?; + f(self, x)?; + self.punct(",")?; + for x in iter { + self.newline()?; + f(self, x)?; + self.punct(",")?; + } + } + Ok(()) + } + + fn newline_sep<'c, T: 'c>( + &mut self, + iter: impl IntoIterator, + f: impl Fn(&mut Self, &'c T) -> std::fmt::Result, + ) -> std::fmt::Result { + self.sep("\n", false, iter, f) + } + + fn group( + &mut self, + f: impl Fn(&mut Self) -> std::fmt::Result, + l: &str, + r: &str, + ) -> std::fmt::Result { + self.punct(l)?; + f(self)?; + self.punct(r)?; + Ok(()) + } + + fn indented(&mut self, f: impl Fn(&mut Self) -> std::fmt::Result) -> std::fmt::Result { + *self.get_indent() += 1; + f(self)?; + *self.get_indent() -= 1; + Ok(()) + } + + fn brace(&mut self, fun: impl Fn(&mut Self) -> std::fmt::Result) -> std::fmt::Result { + self.group(fun, "{", "}") + } + + fn paren(&mut self, fun: impl Fn(&mut Self) -> std::fmt::Result) -> std::fmt::Result { + self.group(fun, "(", ")") + } + + fn brack(&mut self, fun: impl Fn(&mut Self) -> std::fmt::Result) -> std::fmt::Result { + self.group(fun, "[", "]") + } + + fn name(&mut self, s: &Name) -> std::fmt::Result { + write!(self.fmt(), "{}", &s.data) + } + + fn index(&mut self, i: &Index) -> std::fmt::Result { + write!(self.fmt(), "{}", i.data) + } + + fn lit(&mut self, s: impl std::fmt::Display) -> std::fmt::Result { + write!(self.fmt(), "{}", s) + } + + fn str(&mut self, s: &str) -> std::fmt::Result { + self.punct("\"")?; + self.lit(s)?; + self.punct("\"") + } + + fn scope( + &mut self, + items: &[T], + f: impl Fn(&mut Self, &T) -> std::fmt::Result, + ) -> std::fmt::Result { + self.brace(|this| { + if items.is_empty() { + Ok(()) + } else { + this.indented(|this| { + this.newline()?; + this.newline_sep(items, |this, item| f(this, item)) + })?; + this.newline() + } + }) + } + + fn comma_scope( + &mut self, + items: &[T], + f: impl Fn(&mut Self, &T) -> std::fmt::Result, + ) -> std::fmt::Result { + self.brace(|this| { + if items.is_empty() { + Ok(()) + } else { + this.indented(|this| { + this.newline_sep(items, |this, item| { + f(this, item)?; + this.punct(",") + }) + })?; + this.newline() + } + }) + } +} diff --git a/crates/compiler/src/resolve.rs b/crates/compiler/src/resolve.rs new file mode 100644 index 0000000..1a27b8f --- /dev/null +++ b/crates/compiler/src/resolve.rs @@ -0,0 +1,1223 @@ +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::PatArg; +use crate::ast::Program; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::TraitDef; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::diag::Report; +use crate::lexer::Span; + +fn names_to_string(names: &[T], f: impl FnMut(&T) -> String) -> String { + names.iter().map(f).collect::>().join(", ") +} + +impl std::ops::Deref for Context { + type Target = Stack; + fn deref(&self) -> &Self::Target { + &self.stack + } +} + +impl std::ops::DerefMut for Context { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.stack + } +} + +#[derive(Debug)] +pub struct Stack(Vec); + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Scope(Vec<(Name, Binding)>); + +#[derive(Debug, Clone, PartialEq, Eq)] +enum Binding { + Enum(usize, Vec), + Struct(usize, Vec), + BuiltinType(usize), + BuiltinDef(usize), + Generic, + TypeAlias(usize), + Trait(usize, Vec<(Name, usize)>, Vec<(Name, usize)>), + Var, + Def(usize), +} + +impl Stack { + fn bind(&mut self, name: impl Into, binding: Binding) { + self.0.last_mut().unwrap().0.push((name.into(), binding)); + } + + fn get(&self, x: &Name) -> Option<&Binding> { + self.0.iter().rev().find_map(|s| { + s.0.iter() + .rev() + .find_map(|(y, b)| if y == x { Some(b) } else { None }) + }) + } + + fn traits(&self) -> impl Iterator { + self.0 + .iter() + .rev() + .flat_map(|s| s.0.iter()) + .filter_map(|(x, b)| match b { + Binding::Trait(n, xs0, xs1) => Some((x, *n, xs0.as_slice(), xs1.as_slice())), + _ => None, + }) + } +} + +#[derive(Debug)] +pub struct Context { + stack: Stack, + pub report: Report, +} + +impl Default for Context { + fn default() -> Self { + Self::new() + } +} + +impl Context { + pub fn new() -> Context { + let mut stack = Stack(vec![Scope(vec![])]); + // Types + stack.bind("i32", Binding::BuiltinType(0)); + stack.bind("f32", Binding::BuiltinType(0)); + stack.bind("i64", Binding::BuiltinType(0)); + stack.bind("bool", Binding::BuiltinType(0)); + stack.bind("Vec", Binding::BuiltinType(1)); + stack.bind("VecIterator", Binding::BuiltinType(1)); + stack.bind("Stream", Binding::BuiltinType(1)); + stack.bind("StreamIterator", Binding::BuiltinType(1)); + stack.bind("Option", Binding::BuiltinType(1)); + // Traits + stack.bind( + "Iterator", + Binding::Trait(1, vec![], vec![(Name::from("Item"), 0)]), + ); + stack.bind( + "IntoIterator", + Binding::Trait( + 1, + vec![], + vec![(Name::from("Item"), 0), (Name::from("IntoIter"), 0)], + ), + ); + stack.bind( + "Add", + Binding::Trait( + 2, + vec![(Name::from("add"), 0)], + vec![(Name::from("Output"), 0)], + ), + ); + stack.bind( + "Sub", + Binding::Trait( + 2, + vec![(Name::from("sub"), 0)], + vec![(Name::from("Output"), 0)], + ), + ); + stack.bind( + "Mul", + Binding::Trait( + 2, + vec![(Name::from("mul"), 0)], + vec![(Name::from("Output"), 0)], + ), + ); + stack.bind( + "Div", + Binding::Trait( + 2, + vec![(Name::from("div"), 0)], + vec![(Name::from("Output"), 0)], + ), + ); + stack.bind( + "Eq", + Binding::Trait( + 1, + vec![(Name::from("eq"), 0), (Name::from("ne"), 0)], + vec![], + ), + ); + stack.bind( + "Not", + Binding::Trait(1, vec![(Name::from("not"), 0)], vec![]), + ); + stack.bind( + "Ord", + Binding::Trait(1, vec![(Name::from("cmp"), 0)], vec![]), + ); + stack.bind( + "Clone", + Binding::Trait(1, vec![(Name::from("clone"), 0)], vec![]), + ); + stack.bind("Copy", Binding::Trait(1, vec![], vec![])); + stack.bind( + "Display", + Binding::Trait(1, vec![(Name::from("to_string"), 0)], vec![]), + ); + let report = Report::new(); + Context { stack, report } + } + + fn scoped_block(&mut self, f: F) -> T + where + F: FnOnce(&mut Self) -> T, + { + self.stack.0.push(Scope(vec![])); + let t = f(self); + self.stack.0.pop(); + t + } + + fn not_found(&mut self, name: &Name, expected: &'static str) { + self.report.err( + name.span, + format!("Name `{}` not found.", name), + format!("Expected {}.", expected), + ); + } + + fn unexpected(&mut self, name: &Name, found: &'static str, expected: &'static str) { + self.report.err( + name.span, + format!("Unexpected {found} `{name}`."), + format!("Expected {expected}."), + ); + } + + fn wrong_arity(&mut self, name: &Name, found: usize, expected: usize) { + self.report.err( + name.span, + format!( + "Wrong number of type arguments. Found {}, expected {}", + found, expected + ), + format!("Expected {} arguments.", expected), + ); + } + + fn expected_assoc(&mut self, kind: &'static str, x: &Name) { + self.report.err( + x.span, + format!("Expected an associated {kind} `{x}::<{kind}>`.",), + format!("Expected an associated {kind}."), + ); + } + + fn unexpected_assoc(&mut self, kind0: &'static str, kind1: &'static str, x0: &Name, x1: &Name) { + self.report.err( + x1.span, + format!("Found unexpected associated {kind1} `{x0}::{x1}`.",), + format!("{kind0} `{x0}` has no associated {kind1} `{x1}`.",), + ); + } + + fn wrong_fields(&mut self, name: &Name, found: &[(Name, T)], expected: &[Name]) { + let found = names_to_string(found, |(x, _)| format!("{x}")); + let expected = names_to_string(expected, |x| format!("{x}")); + self.report.err( + name.span, + format!("Wrong fields provided. Found {name}({found}), expected {name}({expected})",), + format!("Expected {name}({expected}) fields."), + ); + } + + fn wrong_items( + &mut self, + kind: &'static str, + name: &Name, + found: &[(Name, usize)], + expected: &[(Name, usize)], + ) { + let found = names_to_string(found, |(x, _)| format!("`{x}`")); + let expected = names_to_string(expected, |(x, _)| format!("`{x}`")); + self.report.err( + name.span, + format!("Wrong {kind}s implemented for {name}. Found {{ {found} }}, expected {{ {expected} }}",), + format!("Expected {{ {expected} }}."), + ); + } + + fn wrong_variant(&mut self, name: &Name, found: &(Name, T), expected: &[Name]) { + let found = &found.0; + let expected = names_to_string(expected, |x| format!("{x}")); + self.report.err( + name.span, + format!("Wrong variant provided. Found {found}, expected {expected}",), + format!("Expected one of {{ {expected} }} variants."), + ); + } + + fn expected_name(&mut self, e: &Expr) { + self.report.err( + e.span(), + "Expected a field label.", + "Only ` = ` is allowed.", + ); + } + + pub fn resolve(&mut self, p: &Program) -> Program { + p.stmts.iter().for_each(|stmt| self.declare_stmt(stmt)); + let stmts = p.stmts.iter().map(|stmt| self.stmt(stmt)).collect(); + Program::new(stmts) + } + + pub fn declare_stmt(&mut self, s: &Stmt) { + match s { + Stmt::Var(_) => {} + Stmt::Def(s) => self.declare_stmt_def(s), + Stmt::Trait(s) => self.declare_stmt_trait(s), + Stmt::Impl(_) => {} + Stmt::Struct(s) => self.declare_stmt_struct(s), + Stmt::Enum(s) => self.declare_stmt_enum(s), + Stmt::Type(s) => self.declare_stmt_type(s), + Stmt::Expr(_) => {} + Stmt::Err(_) => todo!(), + } + } + + pub fn declare_stmt_def(&mut self, s: &StmtDef) { + let name = s.name.clone(); + self.bind(name, Binding::Def(s.generics.len())); + } + + pub fn declare_stmt_trait(&mut self, s: &StmtTrait) { + let name = s.name.clone(); + let def_names = s + .defs + .iter() + .map(|d| (d.name.clone(), d.generics.len())) + .collect(); + let type_names = s + .types + .iter() + .map(|t| (t.name.clone(), t.generics.len())) + .collect(); + self.bind( + name.clone(), + Binding::Trait(s.generics.len(), def_names, type_names), + ); + } + + pub fn declare_stmt_struct(&mut self, s: &StmtStruct) { + let name = s.name.clone(); + let field_names = s.fields.iter().map(|(x, _)| x.clone()).collect(); + self.bind(name.clone(), Binding::Struct(s.generics.len(), field_names)); + } + + pub fn declare_stmt_enum(&mut self, s: &StmtEnum) { + let name = s.name.clone(); + let variant_names = s.variants.iter().map(|(x, _)| x.clone()).collect(); + self.bind(name.clone(), Binding::Enum(s.generics.len(), variant_names)); + } + + pub fn declare_stmt_type(&mut self, s: &StmtType) { + let name = s.name.clone(); + self.bind(name.clone(), Binding::TypeAlias(s.generics.len())); + } + + pub fn stmt(&mut self, s: &Stmt) -> Stmt { + match s { + Stmt::Var(s) => Stmt::Var(self.stmt_var(s)), + Stmt::Def(s) => Stmt::Def(self.stmt_def(s)), + Stmt::Trait(s) => Stmt::Trait(self.stmt_trait(s)), + Stmt::Impl(s) => Stmt::Impl(self.stmt_impl(s)), + Stmt::Struct(s) => Stmt::Struct(self.stmt_struct(s)), + Stmt::Enum(s) => Stmt::Enum(self.stmt_enum(s)), + Stmt::Type(s) => Stmt::Type(self.stmt_type(s)), + Stmt::Expr(s) => Stmt::Expr(self.expr(s)), + Stmt::Err(_) => todo!(), + } + } + + pub fn stmt_var(&mut self, s: &StmtVar) -> StmtVar { + let span = s.span; + let name = s.name.clone(); + let ty = self.ty(&s.ty); + let expr = self.expr(&s.expr); + self.bind(name.clone(), Binding::Var); + StmtVar::new(span, name, ty, expr) + } + + pub fn stmt_def(&mut self, s: &StmtDef) -> StmtDef { + let span = s.span; + let name = s.name.clone(); + self.scoped_block(|ctx| { + let generics = s.generics.clone(); + generics + .iter() + .for_each(|g| ctx.bind(g.clone(), Binding::Generic)); + let preds = s.where_clause.iter().map(|p| ctx.bound(p)).collect(); + let params = s.params.iter().map(|p| ctx.param(p)).collect(); + let ty = ctx.ty(&s.ty); + let body = ctx.body(&s.body); + StmtDef::new(span, name, generics, preds, params, ty, body) + }) + } + + pub fn body(&mut self, body: &Body) -> Body { + match body { + Body::Expr(e) => Body::Expr(self.expr(e)), + Body::Builtin => Body::Builtin, + } + } + + pub fn stmt_trait(&mut self, s: &StmtTrait) -> StmtTrait { + let span = s.span; + let name = s.name.clone(); + self.scoped_block(|ctx| { + let generics = s.generics.clone(); + generics + .iter() + .for_each(|g| ctx.bind(g.clone(), Binding::Generic)); + let body = s.bounds.iter().map(|p| ctx.bound(p)).collect(); + let defs = s.defs.iter().map(|d| ctx.trait_def(d)).collect(); + let types = s.types.clone(); + StmtTrait::new(span, name, generics, body, defs, types) + }) + } + + pub fn trait_def(&mut self, s: &TraitDef) -> TraitDef { + let span = s.span; + let name = s.name.clone(); + let generics = s.generics.clone(); + let preds = s.bounds.iter().map(|p| self.bound(p)).collect(); + let params = s.params.iter().map(|p| self.param(p)).collect(); + let ty = self.ty(&s.ty); + TraitDef::new(span, name, generics, preds, params, ty) + } + + pub fn stmt_impl(&mut self, s: &StmtImpl) -> StmtImpl { + let span = s.span; + let generics = s.generics.clone(); + self.scoped_block(|ctx| { + for generic in &generics { + ctx.bind(generic.clone(), Binding::Generic); + } + let defs = s + .defs + .iter() + .map(|d| (d.name.clone(), d.generics.len())) + .collect(); + let types = s + .types + .iter() + .map(|t| (t.name.clone(), t.generics.len())) + .collect(); + let head = ctx.head(&s.head, Some(&(defs, types))); + let body = s + .where_clause + .iter() + .map(|p| ctx.bound(p)) + .collect::>(); + let defs = s.defs.iter().map(|d| ctx.stmt_def(d)).collect(); + let types = s.types.iter().map(|t| ctx.stmt_type(t)).collect(); + StmtImpl::new(span, generics, head, body, defs, types) + }) + } + + pub fn stmt_struct(&mut self, s: &StmtStruct) -> StmtStruct { + let span = s.span; + let name = s.name.clone(); + self.scoped_block(|ctx| { + let generics = s.generics.clone(); + for generic in &generics { + ctx.bind(generic.clone(), Binding::Generic); + } + let fields = s + .fields + .iter() + .map(|(x, t)| (x.clone(), ctx.ty(t))) + .collect(); + StmtStruct::new(span, name.clone(), generics, fields) + }) + } + + pub fn stmt_enum(&mut self, s: &StmtEnum) -> StmtEnum { + let span = s.span; + let name = s.name.clone(); + self.scoped_block(|ctx| { + let generics = s.generics.clone(); + for generic in &generics { + ctx.bind(generic.clone(), Binding::Generic); + } + let variants = s + .variants + .iter() + .map(|(x, t)| (x.clone(), ctx.ty(t))) + .collect(); + StmtEnum::new(span, name.clone(), generics, variants) + }) + } + + pub fn stmt_type(&mut self, s: &StmtType) -> StmtType { + let span = s.span; + let name = s.name.clone(); + self.scoped_block(|ctx| { + let generics = s.generics.clone(); + generics + .iter() + .for_each(|g| ctx.bind(g.clone(), Binding::Generic)); + let ty = ctx.ty(&s.ty); + StmtType::new(span, name, generics, ty) + }) + } + + pub fn param(&mut self, s: &Param) -> Param { + let span = s.span; + let name = s.name.clone(); + let ty = self.ty(&s.ty); + self.bind(name.clone(), Binding::Var); + Param::new(span, name, ty) + } + + pub fn path(&mut self, p: &UnresolvedPath) -> UnresolvedPath { + let segments = p + .segments + .iter() + .map(|(x, ts)| (x.clone(), ts.iter().map(|t| self.ty(t)).collect::>())) + .collect(); + UnresolvedPath::new(segments) + } + + pub fn ty(&mut self, t: &Type) -> Type { + match t { + Type::Cons(..) => unreachable!(), + Type::Alias(..) => unreachable!(), + Type::Unresolved(p) => self.resolve_type_path(p), + Type::Assoc(..) => unreachable!(), + Type::Hole => Type::Hole, + Type::Var(_) => unreachable!(), + Type::Err => Type::Err, + Type::Generic(x) => Type::Generic(x.clone()), + Type::Fun(ts, t) => { + let ts = ts.iter().map(|t| self.ty(t)).collect(); + let t = self.ty(t); + Type::Fun(ts, Rc::new(t)) + } + Type::Tuple(ts) => { + let ts = ts.iter().map(|t| self.ty(t)).collect(); + Type::Tuple(ts) + } + Type::Record(xts) => { + let xts = xts.iter().map(|(x, t)| (x.clone(), self.ty(t))).collect(); + Type::Record(xts) + } + Type::Array(t, n) => { + let t = self.ty(t); + let n = *n; + Type::Array(Rc::new(t), n) + } + Type::Never => Type::Never, + } + } + + pub fn expr(&mut self, e: &Expr) -> Expr { + let t = self.ty(e.ty()); + let s = e.span(); + match e { + Expr::Def(..) => unreachable!(), + Expr::Var(..) => unreachable!(), + Expr::Unresolved(_s, _t, path) => self.resolve_expr_path(s, t, path), + Expr::Int(s, t, v) => { + let t = self.ty(t); + let v = v.clone(); + Expr::Int(*s, t, v) + } + Expr::Float(s, t, v) => { + let t = self.ty(t); + let v = v.clone(); + Expr::Float(*s, t, v) + } + Expr::Bool(s, t, v) => { + let t = self.ty(t); + Expr::Bool(*s, t, *v) + } + Expr::Tuple(s, t, es) => { + let t = self.ty(t); + let es = es.iter().map(|e| self.expr(e)).collect(); + Expr::Tuple(*s, t, es) + } + Expr::Struct(..) => unreachable!(), + Expr::Enum(..) => unreachable!(), + Expr::Call(s, t, e, es) => self.call(*s, t, e, es), + Expr::String(_, _, v) => { + let v = v.clone(); + Expr::String(s, t, v) + } + Expr::Field(_, _, e, x) => { + let e = self.expr(e); + let x = x.clone(); + Expr::Field(s, t, Rc::new(e), x) + } + Expr::Block(_, _, ss, e) => { + let ss = ss.iter().map(|s| self.stmt(s)).collect(); + let e = self.expr(e); + Expr::Block(s, t, ss, Rc::new(e)) + } + Expr::Query(..) => { + todo!() + } + Expr::Assoc(..) => unreachable!(), + Expr::Index(_, _, e, i) => { + let e = self.expr(e); + let i = *i; + Expr::Index(s, t, Rc::new(e), i) + } + Expr::Array(_, _, es) => { + let es = es.iter().map(|e| self.expr(e)).collect(); + Expr::Array(s, t, es) + } + Expr::Err(_, _) => Expr::Err(s, t), + Expr::Assign(_, _, e0, e1) => { + let e0 = self.expr(e0); + let e1 = self.expr(e1); + let e1 = self.lvalue(&e1); + Expr::Assign(s, t, Rc::new(e0), Rc::new(e1)) + } + Expr::Return(_, _, e) => { + let e = self.expr(e); + Expr::Return(s, t, Rc::new(e)) + } + Expr::Continue(_, _) => Expr::Continue(s, t), + Expr::Break(_, _) => Expr::Break(s, t), + Expr::Fun(_, _, ps, t1, e) => { + let ps = ps.iter().map(|p| self.param(p)).collect(); + let t1 = self.ty(t1); + let e = self.expr(e); + Expr::Fun(s, t, ps, t1, Rc::new(e)) + } + Expr::Match(_, _, e, xps) => { + let e = self.expr(e); + let xps = xps + .iter() + .map(|(p, e)| (self.pat(p), self.expr(e))) + .collect(); + Expr::Match(s, t, Rc::new(e), xps) + } + Expr::While(_, _, e0, e1) => { + let e0 = self.expr(e0); + let e1 = self.expr(e1); + Expr::While(s, t, Rc::new(e0), Rc::new(e1)) + } + Expr::Record(_, _, xes) => { + let xes = xes.iter().map(|(x, e)| (x.clone(), self.expr(e))).collect(); + Expr::Record(s, t, xes) + } + Expr::Value(_, _) => unreachable!(), + Expr::Infix(_, _, _, _, _) => unreachable!(), + Expr::Postfix(_, _, _, _) => unreachable!(), + Expr::Prefix(_, _, _, _) => unreachable!(), + } + } + + fn call(&mut self, s: Span, t1: &Type, e: &Expr, es: &[Expr]) -> Expr { + let t1 = self.ty(t1); + if let Expr::Unresolved(_s, _t, path) = e { + let path = self.path(path); + let mut iter = path.segments.into_iter().peekable(); + let (x0, ts0) = iter.next().unwrap(); + match self.get(&x0) { + Some(Binding::Struct(n, xs)) => { + if ts0.len() != *n && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Expr::Err(s, t1); + } + let ts0 = (ts0.is_empty()) + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Struct", "field", &x0, x1); + return Expr::Err(s, t1); + } + let xs = xs.clone(); + let xes: Vec<_> = es.iter().flat_map(|e| self.field(e)).collect(); + if !Self::fields_are_defined(&xs, &xes) { + self.wrong_fields(&x0, &xes, &xs); + return Expr::Err(s, t1); + } + return Expr::Struct(s, t1, x0, ts0, xes); + } + Some(Binding::Enum(n, xs)) => { + if ts0.len() != *n && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Expr::Err(s, t1); + } + let ts0 = (ts0.is_empty()) + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + if iter.peek().is_none() { + self.expected_assoc("variant", &x0); + return Expr::Err(s, t1); + } + let (x1, ts1) = iter.next().unwrap(); + if !xs.contains(&x1) { + self.unexpected_assoc("Enum", "variant", &x0, &x1); + return Expr::Err(s, t1); + } + if !ts1.is_empty() { + self.wrong_arity(&x1, ts1.len(), 0); + return Expr::Err(s, t1); + } + if let Some((x2, _)) = iter.next() { + self.unexpected_assoc("Enum", "item", &x1, &x2); + return Expr::Err(s, t1); + } + let es = es.iter().map(|e| self.expr(e)).collect::>(); + let e = match es.len() { + 1 => es.into_iter().next().unwrap(), + _ => Expr::Tuple(s, Type::Hole, es), + }; + return Expr::Enum(s, t1, x0, ts0, x1, Rc::new(e)); + } + _ => {} + } + } + let e = self.expr(e); + let es = es.iter().map(|e| self.expr(e)).collect(); + Expr::Call(s, t1, Rc::new(e), es) + } + + fn field(&mut self, e: &Expr) -> Option<(Name, Expr)> { + let s = e.span(); + let t = self.ty(e.ty()); + match e { + Expr::Field(_, _, e, x) => { + let e = self.expr(e); + let x = x.clone(); + Some((x, e)) + } + Expr::Assign(_, _, e0, e1) => { + let e1 = self.expr(e1); + if let Expr::Unresolved(_, _, path) = &**e0 { + let mut iter = path.segments.iter(); + let (x0, ts0) = iter.next().unwrap(); + if !ts0.is_empty() { + self.wrong_arity(x0, ts0.len(), 0); + return None; + } + if iter.next().is_some() { + self.report.err( + x0.span, + format!("Found unexpected associated item `::{x0}`.",), + "Fields no associated items.", + ); + return None; + } + Some((x0.clone(), e1)) + } else { + self.expected_name(e0); + None + } + } + Expr::Unresolved(_, _, path) => { + let mut iter = path.segments.iter(); + let (x0, ts0) = iter.next().unwrap(); + match self.get(x0) { + Some(Binding::Var) => { + if !ts0.is_empty() { + self.wrong_arity(x0, ts0.len(), 0); + return None; + } + if let Some((x1, _)) = iter.next() { + self.report.err( + x1.span, + format!("Found unexpected associated item `::{x1}`.",), + "Variables have no associated items.", + ); + return None; + } + Some((x0.clone(), Expr::Var(s, t, x0.clone()))) + } + Some(b) => { + self.unexpected(x0, b.name(), "variable"); + None + } + None => { + self.not_found(x0, "variable"); + None + } + } + } + _ => { + self.report.err( + e.span(), + "Not a field.", + "Expected ` = `, `` or `.`.", + ); + None + } + } + } + + fn pat(&mut self, p: &Pat) -> Pat { + let t = self.ty(p.ty()); + let s = p.span(); + match p { + Pat::Unresolved(_, _, path, args) => self.resolve_pat_path(s, t, path, args), + Pat::Var(_, _, x) => Pat::Var(s, t, x.clone()), + Pat::Tuple(_, _, ts) => { + let ts = ts.iter().map(|t| self.pat(t)).collect(); + Pat::Tuple(s, t, ts) + } + Pat::Struct(..) => unreachable!(), + Pat::Enum(..) => unreachable!(), + Pat::Int(_, _, v) => Pat::Int(s, t, v.clone()), + Pat::String(_, _, v) => Pat::String(s, t, v.clone()), + Pat::Wildcard(_, _) => Pat::Wildcard(s, t), + Pat::Bool(_, _, v) => Pat::Bool(s, t, *v), + Pat::Err(_, _) => Pat::Err(s, t), + } + } + + fn unnamed_pat_args(&mut self, args: Option>, fieldless: bool) -> Option> { + if args.is_none() && fieldless { + return Some(vec![]); + } + let args = args.unwrap(); + let mut ps = Vec::with_capacity(args.len()); + for arg in args { + match arg { + PatArg::Named(x, p) => { + self.report.err( + x.span, + format!("Expected ``, found `{x} = {p}`.",), + "Expected unnamed pattern ``.", + ); + return None; + } + PatArg::Unnamed(p) => ps.push(p.clone()), + } + } + Some(ps) + } + + fn named_pat_args(&mut self, args: Option>) -> Option> { + if args.is_none() { + return Some(vec![]); + } + let args = args.unwrap(); + let mut xps = Vec::with_capacity(args.len()); + for arg in args { + match arg { + PatArg::Named(x, p) => xps.push((x.clone(), p.clone())), + PatArg::Unnamed(p) => { + self.report.err( + p.span(), + format!("Expected `{p} = `.",), + format!("Expected named pattern `{p} = `."), + ); + return None; + } + } + } + Some(xps) + } + + #[allow(clippy::type_complexity)] + pub fn head( + &mut self, + bound: &Bound, + expected: Option<&(Vec<(Name, usize)>, Vec<(Name, usize)>)>, + ) -> Bound { + let span = bound.span(); + match bound { + Bound::Unresolved(_, path) => self.resolve_bound_path(span, path, expected), + Bound::Trait(_, _, _) => unreachable!(), + Bound::Err(_) => Bound::Err(span), + } + } + + pub fn bound(&mut self, bound: &Bound) -> Bound { + self.head(bound, None) + } + + fn lvalue(&mut self, e: &Expr) -> Expr { + match e { + Expr::Var(s, t, x) => Expr::Var(*s, t.clone(), x.clone()), + Expr::Field(s, t, e, x) => { + let e = self.lvalue(e.as_ref()); + Expr::Field(*s, t.clone(), Rc::new(e), x.clone()) + } + Expr::Index(s, t, e, i) => { + let e = self.lvalue(e.as_ref()); + Expr::Index(*s, t.clone(), Rc::new(e), *i) + } + _ => { + self.report.err( + e.span(), + "Expression is not an lvalue.", + "Only variables, field access, and tuple access are allowed.", + ); + Expr::Err(e.span(), e.ty().clone()) + } + } + } + + fn fields_are_defined(expected: &[Name], provided: &[(Name, T)]) -> bool { + provided.iter().all(|(x, _)| expected.contains(x)) + && expected + .iter() + .all(|x| provided.iter().any(|(y, _)| x == y)) + } + + fn items_are_defined(expected: &[(Name, usize)], provided: &[(Name, usize)]) -> bool { + provided + .iter() + .all(|(x0, n0)| expected.iter().any(|(x1, n1)| x0 == x1 && n0 == n1)) + && expected + .iter() + .all(|(x0, n0)| provided.iter().any(|(x1, n1)| x0 == x1 && n0 == n1)) + } + + #[allow(clippy::type_complexity)] + fn resolve_bound_path( + &mut self, + span: Span, + path: &UnresolvedPath, + expected: Option<&(Vec<(Name, usize)>, Vec<(Name, usize)>)>, + ) -> Bound { + let path = self.path(path); + let mut iter = path.segments.into_iter().peekable(); + let (x0, ts0) = iter.next().unwrap(); + match self.get(&x0) { + Some(Binding::Trait(n, expected_defs, expected_types)) => { + if *n != ts0.len() { + self.wrong_arity(&x0.clone(), ts0.len(), *n); + return Bound::Err(span); + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Trait", "item", &x0, x1); + return Bound::Err(span); + } + if let Some((found_defs, found_types)) = expected { + if !Self::items_are_defined(expected_defs, found_defs) { + let expected_defs = expected_defs.clone(); + self.wrong_items("def", &x0, found_defs, &expected_defs); + return Bound::Err(span); + } + if !Self::items_are_defined(expected_types, found_types) { + let expected_types = expected_types.clone(); + self.wrong_items("type", &x0, found_types, &expected_types); + return Bound::Err(span); + } + } + Bound::Trait(span, x0.clone(), ts0.clone()) + } + Some(b) => { + self.unexpected(&x0, b.name(), "trait"); + Bound::Err(span) + } + None => { + self.not_found(&x0, "trait"); + Bound::Err(span) + } + } + } + + fn resolve_expr_path(&mut self, s: Span, t: Type, path: &UnresolvedPath) -> Expr { + let path = self.path(path); + let mut iter = path.segments.into_iter().peekable(); + let (x0, ts0) = iter.next().unwrap(); + match self.get(&x0) { + Some(Binding::Var) => { + if !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), 0); + return Expr::Err(s, t.clone()); + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Variable", "item", &x0, x1); + return Expr::Err(s, t.clone()); + } + Expr::Var(s, t, x0.clone()) + } + Some(Binding::Def(n)) => { + if ts0.len() != *n && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Expr::Err(s, t); + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Def", "item", &x0, x1); + return Expr::Err(s, t); + } + let ts0 = (ts0.is_empty()) + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + Expr::Def(s, t, x0.clone(), ts0.clone()) + } + // Unit Struct + Some(Binding::Struct(n, xs)) => { + if ts0.len() != *n && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Expr::Err(s, t.clone()); + } + if !xs.is_empty() { + let xs = xs.clone(); + self.wrong_fields::(&x0, &[], &xs); + return Expr::Err(s, t.clone()); + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Struct", "item", &x0, x1); + return Expr::Err(s, t); + } + let ts0 = ts0 + .is_empty() + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + let t = self.ty(&t); + let x0 = x0.clone(); + Expr::Struct(s, t, x0, ts0.clone(), vec![]) + } + Some(Binding::Trait(n, def_names, _)) => { + if *n != ts0.len() && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Expr::Err(s, t); + } + if iter.peek().is_none() { + self.expected_assoc("type", &x0); + return Expr::Err(s, t); + } + let (x1, ts1) = iter.peek().unwrap(); + let result = def_names.iter().find(|(x2, _)| x2 == x1); + if result.is_none() { + self.unexpected_assoc("Trait", "type", &x0, x1); + return Expr::Err(s, t); + } + let (_, n2) = result.unwrap(); + if ts1.len() != *n2 && !ts1.is_empty() { + self.wrong_arity(x1, ts1.len(), *n2); + return Expr::Err(s, t); + } + let ts0 = ts0 + .is_empty() + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + Expr::Assoc(s, t, x0.clone(), ts0.clone(), x1.clone(), ts1.clone()) + } + Some(b) => { + self.unexpected(&x0, b.name(), "expression"); + Expr::Err(s, t.clone()) + } + None => { + for (tr_x, tr_n, tr_def_xs, _) in self.stack.traits() { + for (tr_def_x, tr_def_n) in tr_def_xs { + if &x0 == tr_def_x && (ts0.len() == *tr_def_n || ts0.is_empty()) { + let ts0 = ts0 + .is_empty() + .then(|| (0..*tr_def_n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + let tr_ts = (0..tr_n).map(|_| Type::Hole).collect::>(); + return Expr::Assoc(s, t, tr_x.clone(), tr_ts, tr_def_x.clone(), ts0); + } + } + } + self.not_found(&x0, "expression"); + Expr::Err(s, t.clone()) + } + } + } + + fn resolve_type_path(&mut self, p: &UnresolvedPath) -> Type { + let p = self.path(p); + let mut iter = p.segments.into_iter().peekable(); + let (x0, ts0) = iter.next().unwrap(); + match self.get(&x0) { + Some(Binding::Generic) => { + if !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), 0); + return Type::Err; + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Generic", "item", &x0, x1); + return Type::Err; + } + Type::Generic(x0.clone()) + } + Some(Binding::Enum(n, _) | Binding::Struct(n, _) | Binding::BuiltinType(n)) => { + if ts0.len() != *n { + self.wrong_arity(&x0, ts0.len(), *n); + return Type::Err; + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Type", "item", &x0, x1); + return Type::Err; + } + Type::Cons(x0.clone(), ts0.clone()) + } + Some(Binding::TypeAlias(n)) => { + if *n != ts0.len() { + self.wrong_arity(&x0, ts0.len(), *n); + return Type::Err; + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Type", "item", &x0, x1); + return Type::Err; + } + Type::Alias(x0.clone(), ts0.clone()) + } + Some(Binding::Trait(n, _, type_names)) => { + if *n != ts0.len() { + self.wrong_arity(&x0, ts0.len(), *n); + return Type::Err; + } + if iter.peek().is_none() { + self.expected_assoc("type", &x0); + return Type::Err; + } + let (x1, ts1) = iter.next().unwrap(); + let result = type_names.iter().find(|(x2, _)| x2 == &x1); + if result.is_none() { + self.unexpected_assoc("Trait", "type", &x0, &x1); + return Type::Err; + } + let (_, n2) = result.unwrap(); + if ts1.len() != *n2 { + self.wrong_arity(&x1, ts1.len(), *n2); + return Type::Err; + } + Type::Assoc(x0.clone(), ts0.clone(), x1.clone(), ts1.clone()) + } + Some(b) => { + self.unexpected(&x0, b.name(), "type"); + Type::Err + } + None => { + self.not_found(&x0, "type"); + Type::Err + } + } + } + + fn resolve_pat_path( + &mut self, + s: Span, + t: Type, + path: &UnresolvedPath, + args: &Option>, + ) -> Pat { + let path = self.path(path); + let mut iter = path.segments.into_iter().peekable(); + let (x0, ts0) = iter.next().unwrap(); + match self.get(&x0) { + Some(Binding::Enum(n, xs)) => { + if ts0.len() != *n && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Pat::Err(s, t.clone()); + } + let ts0 = ts0 + .is_empty() + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + if iter.peek().is_none() { + self.expected_assoc("variant", &x0); + return Pat::Err(s, t.clone()); + } + let (x1, ts1) = iter.next().unwrap(); + if !xs.contains(&x1) { + self.unexpected_assoc("Enum", "variant", &x0, &x1); + return Pat::Err(s, t.clone()); + } + if !ts1.is_empty() { + self.wrong_arity(&x1, ts1.len(), 0); + return Pat::Err(s, t.clone()); + } + if let Some((x2, _)) = iter.peek() { + self.unexpected_assoc("Enum", "item", &x1, x2); + return Pat::Err(s, t.clone()); + } + let args = args.clone(); + let xs = xs.clone(); + let result = self.unnamed_pat_args(args, xs.is_empty()); + if result.is_none() { + return Pat::Err(s, t.clone()); + } + let ps = result.unwrap(); + let p = match ps.len() { + 1 => ps.into_iter().next().unwrap(), + _ => Pat::Tuple(s, Type::Hole, ps), + }; + Pat::Enum(s, t, x0.clone(), ts0.clone(), x1.clone(), Rc::new(p)) + } + Some(Binding::Struct(n, xs)) => { + if ts0.len() != *n && !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), *n); + return Pat::Err(s, t.clone()); + } + let ts0 = ts0 + .is_empty() + .then(|| (0..*n).map(|_| Type::Hole).collect()) + .unwrap_or(ts0); + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Struct", "item", &x0, x1); + return Pat::Err(s, t.clone()); + } + let args = args.clone(); + let xs = xs.clone(); + let xps = self.named_pat_args(args); + if xps.is_none() { + return Pat::Err(s, t.clone()); + } + let xps = xps.unwrap(); + if !Self::fields_are_defined(&xs, &xps) { + self.wrong_fields(&x0, &xps, &xs); + return Pat::Err(s, t.clone()); + } + Pat::Struct(s, t, x0.clone(), ts0.clone(), xps) + } + Some(b) => { + self.unexpected(&x0, b.name(), "pattern"); + Pat::Err(s, t.clone()) + } + None => { + if !ts0.is_empty() { + self.wrong_arity(&x0, ts0.len(), 0); + return Pat::Err(s, t.clone()); + } + if let Some((x1, _)) = iter.peek() { + self.unexpected_assoc("Struct", "item", &x0, x1); + return Pat::Err(s, t.clone()); + } + Pat::Var(s, t, x0.clone()) + } + } + } +} + +impl Binding { + fn name(&self) -> &'static str { + match self { + Binding::Enum(_, _) => "enum", + Binding::Struct(_, _) => "struct", + Binding::BuiltinType(_) => "type", + Binding::Generic => "generic", + Binding::TypeAlias(..) => "type alias", + Binding::Trait(..) => "trait", + Binding::Var => "variable", + Binding::Def(..) => "definition", + Binding::BuiltinDef(_) => "builtin def", + } + } +} diff --git a/crates/compiler/src/util.rs b/crates/compiler/src/util.rs new file mode 100644 index 0000000..5d80de0 --- /dev/null +++ b/crates/compiler/src/util.rs @@ -0,0 +1,995 @@ +use std::rc::Rc; + +use crate::ast::Body; +use crate::ast::Bound; +use crate::ast::Expr; +use crate::ast::Index; +use crate::ast::Name; +use crate::ast::Param; +use crate::ast::Pat; +use crate::ast::PatArg; +use crate::ast::Program; +use crate::ast::Query; +use crate::ast::Stmt; +use crate::ast::StmtDef; +use crate::ast::StmtEnum; +use crate::ast::StmtImpl; +use crate::ast::StmtStruct; +use crate::ast::StmtTrait; +use crate::ast::StmtType; +use crate::ast::StmtVar; +use crate::ast::TraitDef; +use crate::ast::TraitType; +use crate::ast::Type; +use crate::ast::UnresolvedPath; +use crate::lexer::Span; + +pub fn program(ss: [Stmt; N]) -> Program { + Program::new(vec(ss)) +} + +pub fn stmt_trait( + x: &'static str, + gs: [&'static str; N], + body: [Bound; M], + defs: [TraitDef; K], + types: [TraitType; L], +) -> Stmt { + StmtTrait::new( + span(), + name(x), + map(gs, name), + vec(body), + vec(defs), + vec(types), + ) + .into() +} + +fn vec(xs: [T; N]) -> Vec { + xs.into_iter().collect() +} + +fn map(xs: [T; N], f: impl Fn(T) -> U) -> Vec { + xs.into_iter().map(f).collect() +} + +// Create a Rule: +// impl<{gs}> {head} where {body} +pub fn stmt_impl( + gs: [&'static str; N], + head: Bound, + body: [Bound; M], + defs: [Stmt; K], + types: [Stmt; L], +) -> Stmt { + StmtImpl::new( + span(), + map(gs, name), + head, + vec(body), + map(defs, |s| { + if let Stmt::Def(s) = s { + s + } else { + unreachable!() + } + }), + map(types, |s| { + if let Stmt::Type(s) = s { + s + } else { + unreachable!() + } + }), + ) + .into() +} + +// Create a Fact: +// impl<{gs}> {head} +pub fn fact( + gs: [&'static str; N], + head: Bound, + defs: [StmtDef; M], + types: [StmtType; K], +) -> StmtImpl { + StmtImpl::new( + span(), + map(gs, name), + head, + vec([]), + vec(defs), + vec(types), + ) +} + +// Create a predicate: +// {t0}: {name}<{t1},..,{tn},{assoc}> +pub fn bound(x: &'static str, types: [Type; N]) -> Bound { + Bound::Trait(span(), name(x), vec(types)) +} + +pub fn bound_err() -> Bound { + Bound::Err(span()) +} + +pub fn ty_alias(x: &'static str, ts: [Type; N]) -> Type { + Type::Alias(name(x), vec(ts)) +} + +pub fn ty(x: &'static str) -> Type { + debug_assert!(!x.starts_with('?')); + ty_con(x, []) +} + +pub fn ty_err() -> Type { + Type::Err +} + +pub fn ty_hole() -> Type { + Type::Hole +} + +pub fn name(x: &'static str) -> Name { + Name::from(x) +} + +pub fn ty_con(x: &'static str, types: [Type; N]) -> Type { + Type::Cons(name(x), vec(types)) +} + +pub fn ty_tuple(ts: [Type; N]) -> Type { + Type::Tuple(vec(ts)) +} + +pub fn ty_fun(ts: [Type; N], t: Type) -> Type { + Type::Fun(vec(ts), Rc::new(t)) +} + +pub fn ty_var(x: &'static str) -> Type { + debug_assert!(x.starts_with('?')); + Type::Var(name(x)) +} + +pub fn ty_gen(x: &'static str) -> Type { + Type::Generic(name(x)) +} + +pub fn ty_assoc( + x0: &'static str, + ts0: [Type; N], + x1: &'static str, + ts1: [Type; M], +) -> Type { + Type::Assoc(name(x0), vec(ts0), name(x1), vec(ts1)) +} + +pub mod unresolved { + use std::rc::Rc; + + use super::parsed_expr_def; + use super::vec; + use crate::ast::Bound; + use crate::ast::Expr; + use crate::ast::Name; + use crate::ast::Pat; + use crate::ast::PatArg; + use crate::ast::Type; + use crate::ast::UnresolvedPath; + + use super::expr_assign; + use super::expr_call; + use super::map; + use super::name; + use super::parsed_expr_var; + use super::span; + use super::ty_hole; + + pub fn bound(x: &'static str, ts: [Type; N]) -> Bound { + Bound::Unresolved(span(), unresolved_name(x, ts)) + } + + pub fn pat_var(x: &'static str) -> Pat { + Pat::Unresolved(span(), ty_hole(), unresolved_name(x, []), None) + } + + pub fn expr_var(x: &'static str) -> Expr { + parsed_expr_var(span(), x) + } + + pub fn expr_struct( + x: &'static str, + ts: [Type; N], + xes: [(&'static str, Expr); M], + ) -> Expr { + Expr::Call( + span(), + ty_hole(), + Rc::new(parsed_expr_def(span(), x, vec(ts))), + map(xes, |(x, e)| expr_assign(parsed_expr_var(span(), x), e)), + ) + } + + pub fn expr_def(x: &'static str, ts: [Type; N]) -> Expr { + Expr::Unresolved(span(), ty_hole(), unresolved_name(x, ts)) + } + + pub fn expr_variant( + x0: &'static str, + ts: [Type; N], + x1: &'static str, + es: [Expr; M], + ) -> Expr { + Expr::Call( + span(), + ty_hole(), + Rc::new(Expr::Unresolved( + span(), + ty_hole(), + path([(name(x0), vec(ts)), (name(x1), vec([]))]), + )), + vec(es), + ) + } + + pub fn expr_unit_variant( + x0: &'static str, + ts: [Type; N], + x1: &'static str, + ) -> Expr { + Expr::Unresolved( + span(), + ty_hole(), + path([(name(x0), vec(ts)), (name(x1), vec([]))]), + ) + } + pub fn expr_call_direct( + x: &'static str, + ts: [Type; N], + es: [Expr; M], + ) -> Expr { + expr_call(expr_def(x, ts), es) + } + + pub fn pat_enum( + x0: &'static str, + ts: [Type; N], + x1: &'static str, + p: Pat, + ) -> Pat { + Pat::Unresolved( + span(), + ty_hole(), + path([(name(x0), vec(ts)), (name(x1), vec([]))]), + Some(vec([PatArg::Unnamed(p)])), + ) + } + + pub fn pat_struct( + x0: &'static str, + ts: [Type; N], + xps: [(&'static str, Pat); M], + ) -> Pat { + Pat::Unresolved( + span(), + ty_hole(), + path([(name(x0), vec(ts))]), + Some(map(xps, |(x, p)| PatArg::Named(name(x), p))), + ) + } + + pub fn pat_unit_struct(x: &'static str, ts: [Type; N]) -> Pat { + Pat::Unresolved(span(), ty_hole(), path([(name(x), vec(ts))]), None) + } + + pub fn pat_punned_struct( + x: &'static str, + ts: [Type; N], + ps: [Pat; M], + ) -> Pat { + Pat::Unresolved( + span(), + ty_hole(), + path([(name(x), vec(ts))]), + Some(map(ps, PatArg::Unnamed)), + ) + } + + pub fn path(segments: [(Name, Vec); N]) -> UnresolvedPath { + UnresolvedPath::new(vec(segments)) + } + + pub fn unresolved_name(x: &'static str, ts: [Type; N]) -> UnresolvedPath { + let name = Name::from(x); + let tys = vec(ts); + UnresolvedPath::new(vec([(name, tys)])) + } + + pub fn ty_con(x: &'static str, ts: [Type; N]) -> Type { + Type::Unresolved(UnresolvedPath::new(vec([(name(x), vec(ts))]))) + } + + pub fn ty(x: &'static str) -> Type { + Type::Unresolved(unresolved_name(x, [])) + } + + pub fn ty_assoc(x0: &'static str, ts: [Type; N], x1: &'static str) -> Type { + Type::Unresolved(UnresolvedPath::new(vec([ + (name(x0), vec(ts)), + (name(x1), vec([])), + ]))) + } + pub fn expr_assoc(x0: &'static str, ts: [Type; N], x1: &'static str) -> Expr { + Expr::Unresolved( + span(), + ty_hole(), + path([(name(x0), vec(ts)), (name(x1), vec([]))]), + ) + } +} + +pub fn expr_assoc( + x0: &'static str, + ts0: [Type; N], + x1: &'static str, + ts1: [Type; M], +) -> Expr { + Expr::Assoc( + span(), + ty_hole(), + name(x0), + vec(ts0), + name(x1), + vec(ts1), + ) +} + +pub fn expr_assign(e0: Expr, e1: Expr) -> Expr { + Expr::Assign(span(), ty_hole(), Rc::new(e0), Rc::new(e1)) +} + +// pub fn stmt_mod(x: &'static str, ss: [Stmt; N]) -> Stmt { +// StmtMod::new(span(), name(x), Vec(ss)).into() +// } +// +// pub fn stmt_use(x: [&'static str; N]) -> Stmt { +// StmtUse::new(span(), Path::new(map(x, name))).into() +// } + +pub fn stmt_var(x: &'static str, t: Type, e: Expr) -> Stmt { + StmtVar::new(span(), name(x), t, e).into() +} + +pub fn stmt_type(x: &'static str, generics: [&'static str; N], t: Type) -> Stmt { + StmtType::new(span(), name(x), map(generics, name), t).into() +} + +pub fn stmt_expr(e: Expr) -> Stmt { + Stmt::Expr(e) +} + +pub fn expr_unit() -> Expr { + Expr::Tuple(span(), ty_hole(), vec([])) +} + +pub fn ty_unit() -> Type { + Type::Tuple(vec([])) +} + +pub fn expr_struct( + x: &'static str, + ts: [Type; N], + xes: [(&'static str, Expr); M], +) -> Expr { + Expr::Struct( + span(), + ty_hole(), + name(x), + vec(ts), + map(xes, |(x, e)| (name(x), e)), + ) +} + +pub fn expr_tuple(es: [Expr; N]) -> Expr { + Expr::Tuple(span(), ty_hole(), vec(es)) +} + +pub fn expr_array(es: [Expr; N]) -> Expr { + Expr::Array(span(), ty_hole(), vec(es)) +} + +pub fn expr_index(e1: Expr, i: Index) -> Expr { + Expr::Index(span(), ty_hole(), Rc::new(e1), i) +} + +pub fn index(i: &'static str) -> Index { + Index::new(span(), i.parse().unwrap()) +} + +pub fn expr_field(e: Expr, x: &'static str) -> Expr { + Expr::Field(span(), ty_hole(), Rc::new(e), name(x)) +} + +pub fn expr_enum( + x0: &'static str, + ts: [Type; N], + x1: &'static str, + e: Expr, +) -> Expr { + Expr::Enum( + span(), + ty_hole(), + name(x0), + vec(ts), + name(x1), + Rc::new(e), + ) +} + +pub fn stmt_def( + x: &'static str, + gs: [&'static str; N], + ps: [(&'static str, Type); K], + t: Type, + qs: [Bound; M], + e: Expr, +) -> Stmt { + StmtDef::new( + span(), + name(x), + map(gs, name), + vec(qs), + map(ps, |(s, t)| Param::new(span(), name(s), t)), + t, + Body::Expr(e), + ) + .into() +} + +pub fn tr_def( + x: &'static str, + gs: [&'static str; N], + ps: [(&'static str, Type); K], + qs: [Bound; M], + t: Type, +) -> TraitDef { + TraitDef::new( + span(), + name(x), + map(gs, name), + vec(qs), + map(ps, |(s, t)| Param::new(span(), name(s), t)), + t, + ) +} + +pub fn tr_type(x: &'static str, gs: [&'static str; N]) -> TraitType { + TraitType::new(span(), name(x), map(gs, name)) +} + +pub fn stmt_struct( + x: &'static str, + gs: [&'static str; N], + ps: [(&'static str, Type); M], +) -> Stmt { + StmtStruct::new( + span(), + name(x), + map(gs, name), + map(ps, |(s, t)| (name(s), t)), + ) + .into() +} + +pub fn stmt_enum( + x: &'static str, + gs: [&'static str; N], + ps: [(&'static str, Type); M], +) -> Stmt { + StmtEnum::new( + span(), + name(x), + map(gs, name), + map(ps, |(s, t)| (name(s), t)), + ) + .into() +} + +pub fn expr_call(e: Expr, es: [Expr; N]) -> Expr { + Expr::Call(span(), ty_hole(), Rc::new(e), vec(es)) +} + +pub fn parsed_binop(s: Span, tr: &'static str, op: &'static str, e0: Expr, e1: Expr) -> Expr { + Expr::Call( + s, + ty_hole(), + Rc::new(parsed_expr_assoc(span(), tr, op)), + vec([e0, e1]), + ) +} + +pub fn parsed_expr_unop(s: Span, tr: &'static str, op: &'static str, e: Expr) -> Expr { + Expr::Call( + s, + ty_hole(), + Rc::new(parsed_expr_assoc(span(), tr, op)), + vec([e]), + ) +} + +pub fn expr_add(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "Add", "add", e0, e1) +} + +pub fn expr_sub(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "Sub", "sub", e0, e1) +} + +pub fn expr_mul(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "Mul", "mul", e0, e1) +} + +pub fn expr_div(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "Div", "div", e0, e1) +} + +pub fn expr_eq(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "PartialEq", "eq", e0, e1) +} + +pub fn expr_ne(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "PartialEq", "ne", e0, e1) +} + +pub fn expr_lt(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "PartialOrd", "lt", e0, e1) +} + +pub fn expr_le(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "PartialOrd", "le", e0, e1) +} + +pub fn expr_gt(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "PartialOrd", "gt", e0, e1) +} + +pub fn expr_ge(e0: Expr, e1: Expr) -> Expr { + parsed_binop(span(), "PartialOrd", "ge", e0, e1) +} + +pub fn expr_and(e0: Expr, e1: Expr) -> Expr { + Expr::Match( + span(), + ty_hole(), + Rc::new(e0), + vec([(pat_bool(true), e1), (pat_wild(), expr_bool(false))]), + ) +} + +pub fn expr_or(e0: Expr, e1: Expr) -> Expr { + Expr::Match( + span(), + ty_hole(), + Rc::new(e0), + vec([(pat_bool(true), expr_bool(true)), (pat_wild(), e1)]), + ) +} + +pub fn expr_not(e: Expr) -> Expr { + parsed_expr_unop(span(), "Not", "not", e) +} + +pub fn expr_neg(e: Expr) -> Expr { + parsed_expr_unop(span(), "Neg", "neg", e) +} + +pub fn expr_var(x: &'static str) -> Expr { + Expr::Var(span(), ty_hole(), name(x)) +} + +pub fn pat_var(x: &'static str) -> Pat { + Pat::Var(span(), ty_hole(), name(x)) +} + +pub fn pat_int(i: &'static str) -> Pat { + Pat::Int(span(), ty_hole(), i.to_owned()) +} + +pub fn pat_string(s: &'static str) -> Pat { + Pat::String(span(), ty_hole(), s.to_owned()) +} + +pub fn pat_unit() -> Pat { + Pat::Tuple(span(), ty_hole(), vec([])) +} + +pub fn pat_bool(b: bool) -> Pat { + Pat::Bool(span(), ty_hole(), b) +} + +pub fn pat_wild() -> Pat { + Pat::Wildcard(span(), ty_hole()) +} + +pub fn pat_tuple(ps: [Pat; N]) -> Pat { + Pat::Tuple(span(), ty_hole(), vec(ps)) +} + +pub fn pat_enum(x0: &'static str, ts: [Type; N], x1: &'static str, p: Pat) -> Pat { + Pat::Enum( + span(), + ty_hole(), + name(x0), + vec(ts), + name(x1), + Rc::new(p), + ) +} + +pub fn pat_struct( + x: &'static str, + ts: [Type; N], + xps: [(&'static str, Pat); M], +) -> Pat { + Pat::Struct( + span(), + ty_hole(), + name(x), + vec(ts), + map(xps, |(x, p)| (name(x), p)), + ) +} + +pub fn pat_annot(t: Type, p: Pat) -> Pat { + p.with_ty(t) +} + +pub fn expr_match(e: Expr, arms: [(Pat, Expr); N]) -> Expr { + Expr::Match(span(), ty_hole(), Rc::new(e), vec(arms)) +} + +pub fn expr_def(x: &'static str, ts: [Type; N]) -> Expr { + Expr::Def(span(), ty_hole(), name(x), vec(ts)) +} + +pub fn expr_int(i: &'static str) -> Expr { + Expr::Int(span(), ty_hole(), i.to_owned()) +} + +pub fn expr_float(f: &'static str) -> Expr { + Expr::Float(span(), ty_hole(), f.to_owned()) +} + +pub fn expr_bool(b: bool) -> Expr { + Expr::Bool(span(), ty_hole(), b) +} + +pub fn expr_string(s: &'static str) -> Expr { + Expr::String(span(), ty_hole(), s.to_owned()) +} + +pub fn expr_block(ss: [Stmt; N], e: Expr) -> Expr { + Expr::Block(span(), ty_hole(), vec(ss), Rc::new(e)) +} + +pub fn spanned_expr_block(span: Span, ss: [Stmt; N], e: Expr) -> Expr { + Expr::Block(span, ty_hole(), vec(ss), Rc::new(e)) +} + +pub fn expr_err() -> Expr { + Expr::Err(span(), ty_hole()) +} + +pub fn expr_fun(ps: [&'static str; N], e: Expr) -> Expr { + Expr::Fun( + span(), + ty_hole(), + map(ps, |s| Param::new(span(), name(s), ty_hole())), + ty_hole(), + Rc::new(e), + ) +} + +pub fn expr_fun_typed(ps: [(&'static str, Type); N], t: Type, e: Expr) -> Expr { + Expr::Fun( + span(), + ty_hole(), + map(ps, |(s, t)| Param::new(span(), name(s), t)), + t, + Rc::new(e), + ) +} + +pub fn expr_return(e: Expr) -> Expr { + Expr::Return(span(), ty_hole(), Rc::new(e)) +} + +pub fn expr_continue() -> Expr { + Expr::Continue(span(), ty_hole()) +} + +pub fn expr_break() -> Expr { + Expr::Break(span(), ty_hole()) +} + +pub fn expr_query(qs: [Query; N]) -> Expr { + Expr::Query(span(), ty_hole(), vec(qs)) +} + +pub fn query_select(fields: [(&'static str, Expr); N]) -> Query { + Query::Select(span(), ty_hole(), map(fields, |(s, e)| (name(s), e))) +} + +pub fn query_where(e: Expr) -> Query { + Query::Where(span(), ty_hole(), Rc::new(e)) +} + +pub fn query_from(xes: [(&'static str, Expr); N]) -> Query { + Query::From(span(), ty_hole(), map(xes, |(s, e)| (name(s), e))) +} + +pub fn query_into(es: [Expr; N]) -> Query { + Query::Into(span(), ty_hole(), vec(es)) +} + +pub fn query_with(xes: [(&'static str, Expr); N]) -> Query { + Query::With(span(), ty_hole(), map(xes, |(s, e)| (name(s), e))) +} + +pub fn query_join(xes: [(&'static str, Expr); N], e: Expr) -> Query { + Query::Join( + span(), + ty_hole(), + map(xes, |(s, e)| (name(s), e)), + Rc::new(e), + ) +} + +pub fn query_group(xs: [&'static str; N], qs: [Query; M]) -> Query { + Query::Group(span(), ty_hole(), map(xs, name), vec(qs)) +} + +pub fn query_over(e: Expr, qs: [Query; N]) -> Query { + Query::Over(span(), ty_hole(), Rc::new(e), vec(qs)) +} + +pub fn query_compute(aggs: [(&'static str, Expr, Expr); N]) -> Query { + Query::Compute( + span(), + ty_hole(), + map(aggs, |(x, e0, e1)| (name(x), e0, e1)), + ) +} + +pub fn expr_while(e0: Expr, e1: Expr) -> Expr { + Expr::While(span(), ty_hole(), Rc::new(e0), Rc::new(e1)) +} + +pub fn span() -> Span { + Span::default() +} + +pub fn trim(s: String) -> String { + // Trim space right before \n on each line + s.trim_end() + .lines() + .map(|line| line.trim_end().to_string()) + .collect::>() + .join("\n") +} + +pub fn seg(x: &'static str, ts: [Type; N]) -> (Name, Vec) { + (name(x), vec(ts)) +} + +pub fn parsed_pat_var(s: Span, x: impl Into) -> Pat { + Pat::Unresolved( + s, + ty_hole(), + UnresolvedPath::new(vec([(x.into(), vec([]))])), + Some(vec([])), + ) +} + +pub fn parsed_pat_enum(s: Span, x0: &'static str, x1: &'static str, p: Pat) -> Pat { + Pat::Unresolved( + s, + ty_hole(), + UnresolvedPath::new(vec([(name(x0), vec([])), (name(x1), vec([]))])), + Some(vec([PatArg::Unnamed(p)])), + ) +} + +pub fn parsed_expr_enum(s: Span, x0: &'static str, x1: &'static str) -> Expr { + Expr::Unresolved( + s, + ty_hole(), + UnresolvedPath::new(vec([(name(x0), vec([])), (name(x1), vec([]))])), + ) +} + +pub fn parsed_expr_var(s: Span, x: impl Into) -> Expr { + Expr::Unresolved( + s, + ty_hole(), + UnresolvedPath::new(vec([(x.into(), vec([]))])), + ) +} + +pub fn parsed_expr_def(s: Span, x: impl Into, ts: Vec) -> Expr { + Expr::Unresolved(s, ty_hole(), UnresolvedPath::new(vec([(x.into(), ts)]))) +} + +pub fn parsed_expr_assoc(s: Span, x0: impl Into, x1: impl Into) -> Expr { + Expr::Unresolved( + s, + ty_hole(), + UnresolvedPath::new(vec([(x0.into(), vec([])), (x1.into(), vec([]))])), + ) +} + +pub mod types { + use crate::ast::Type; + + use super::ty; + use super::ty_con; + + pub fn ty_vec(t: Type) -> Type { + ty_con("Vec", [t]) + } + + pub fn ty_stream(t: Type) -> Type { + ty_con("Stream", [t]) + } + + pub fn ty_i32() -> Type { + ty("i32") + } + + pub fn ty_i64() -> Type { + ty("i64") + } + + pub fn ty_bool() -> Type { + ty("bool") + } + + pub fn ty_f32() -> Type { + ty("f32") + } +} + +pub mod traits { + use crate::ast::Bound; + use crate::ast::Stmt; + use crate::ast::StmtImpl; + use crate::ast::Type; + + use super::bound; + use super::map; + use super::name; + use super::span; + use super::stmt_type; + use super::ty_assoc; + use super::vec; + + pub fn imp( + gs: [&'static str; N], + head: Bound, + where_clause: [Bound; M], + defs: [Stmt; K], + types: [Stmt; L], + ) -> StmtImpl { + StmtImpl::new( + span(), + map(gs, name), + head, + vec(where_clause), + map(defs, |s| { + if let Stmt::Def(s) = s { + s + } else { + unreachable!() + } + }), + map(types, |s| { + if let Stmt::Type(s) = s { + s + } else { + unreachable!() + } + }), + ) + } + + pub fn impl_clone( + gs: [&'static str; N], + t: Type, + where_clause: [Bound; M], + ) -> StmtImpl { + imp(gs, tr_clone(t), where_clause, [], []) + } + + pub fn tr_clone(t: Type) -> Bound { + bound("Clone", [t]) + } + + pub fn impl_iterator( + gs: [&'static str; N], + t: Type, + t1: Type, + where_clause: [Bound; M], + ) -> StmtImpl { + imp( + gs, + tr_iterator(t), + where_clause, + [], + [stmt_type("Item", [], t1)], + ) + } + + pub fn tr_iterator(t0: Type) -> Bound { + bound("Iterator", [t0]) + } + + pub fn ty_iterator_item(t: Type) -> Type { + ty_assoc("Iterator", [t], "Item", []) + } + + pub fn impl_add( + gs: [&'static str; N], + ts: [Type; 2], + t: Type, + where_clause: [Bound; M], + ) -> StmtImpl { + imp( + gs, + tr_add(ts), + where_clause, + [], + [stmt_type("Output", [], t)], + ) + } + + pub fn tr_add(ts: [Type; 2]) -> Bound { + bound("Add", ts) + } + + pub fn ty_add_output(ts: [Type; 2]) -> Type { + ty_assoc("Add", ts, "Output", []) + } + + pub fn impl_intoiterator( + gs: [&'static str; N], + self_ty: Type, + item_ty: Type, + intoiter_ty: Type, + where_clause: [Bound; M], + ) -> StmtImpl { + imp( + gs, + tr_intoiterator(self_ty), + where_clause, + [], + [ + stmt_type("Item", [], item_ty), + stmt_type("IntoIter", [], intoiter_ty), + ], + ) + } + + // TODO: Need to be able to apply associated types + pub fn tr_intoiterator(t0: Type) -> Bound { + bound("IntoIterator", [t0]) + } + + pub fn ty_intoiterator_item(t0: Type) -> Type { + ty_assoc("IntoIterator", [t0], "Item", []) + } + + pub fn ty_intoiterator_intoiter(t0: Type) -> Type { + ty_assoc("IntoIterator", [t0], "IntoIter", []) + } +} diff --git a/crates/compiler/tests/display.rs b/crates/compiler/tests/display.rs new file mode 100644 index 0000000..f8d769e --- /dev/null +++ b/crates/compiler/tests/display.rs @@ -0,0 +1,175 @@ +use compiler::util::expr_add; +use compiler::util::expr_bool; +use compiler::util::expr_div; +use compiler::util::expr_eq; +use compiler::util::expr_int; +use compiler::util::expr_mul; +use compiler::util::expr_ne; +use compiler::util::expr_string; +use compiler::util::expr_sub; +use compiler::util::expr_tuple; +use compiler::util::stmt_struct; +use compiler::util::ty; +use compiler::util::ty_fun; +use compiler::util::ty_tuple; + +#[test] +fn test_display_int0() { + let a = expr_int("1").to_string(); + let b = "1"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_float1() { + let a = expr_int("1.0").to_string(); + let b = "1.0"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_string1() { + let a = expr_string("abc").to_string(); + let b = "\"abc\""; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_string2() { + let a = expr_string("abc\ndef").to_string(); + let b = "\"abc\ndef\""; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_bool0() { + let a = expr_bool(true).to_string(); + let b = "true"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_bool1() { + let a = expr_bool(false).to_string(); + let b = "false"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop0() { + let a = expr_add(expr_int("1"), expr_int("2")).to_string(); + let b = "Add::add(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop1() { + let a = expr_sub(expr_int("1"), expr_int("2")).to_string(); + let b = "Sub::sub(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop2() { + let a = expr_mul(expr_int("1"), expr_int("2")).to_string(); + let b = "Mul::mul(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop3() { + let a = expr_div(expr_int("1"), expr_int("2")).to_string(); + let b = "Div::div(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop4() { + let a = expr_eq(expr_int("1"), expr_int("2")).to_string(); + let b = "PartialEq::eq(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop5() { + let a = expr_ne(expr_int("1"), expr_int("2")).to_string(); + let b = "PartialEq::ne(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_binop6() { + let a = expr_add(expr_int("1"), expr_add(expr_int("2"), expr_int("3"))).to_string(); + let b = "Add::add(1, Add::add(2, 3))"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_expr_tuple0() { + let a = expr_tuple([]).to_string(); + let b = "()"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_expr_tuple1() { + let a = expr_tuple([expr_int("1")]).to_string(); + let b = "(1,)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_expr_tuple2() { + let a = expr_tuple([expr_int("1"), expr_int("2")]).to_string(); + let b = "(1, 2)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_type_tuple0() { + let a = ty_tuple([]).to_string(); + let b = "()"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_type_tuple1() { + let a = ty_tuple([ty("i32")]).to_string(); + let b = "(i32,)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_type_tuple2() { + let a = ty_tuple([ty("i32"), ty("i32")]).to_string(); + let b = "(i32, i32)"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_type_fun0() { + let a = ty_fun([ty("i32")], ty("i32")).to_string(); + let b = "fun(i32): i32"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_stmt_struct0() { + let a = stmt_struct("S", [], []).to_string(); + let b = "struct S;"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_stmt_struct1() { + let a = stmt_struct("S", [], [("x", ty("i32"))]).to_string(); + let b = "struct S(x:i32);"; + assert!(a == b, "{}\n{}", a, b); +} + +#[test] +fn test_display_stmt_struct2() { + let a = stmt_struct("S", [], [("x", ty("i32")), ("y", ty("i32"))]).to_string(); + let b = "struct S(x:i32, y:i32);"; + assert!(a == b, "{}\n{}", a, b); +} diff --git a/crates/compiler/tests/infer.rs b/crates/compiler/tests/infer.rs new file mode 100644 index 0000000..c8edb1d --- /dev/null +++ b/crates/compiler/tests/infer.rs @@ -0,0 +1,322 @@ +use compiler::ast::Program; + +macro_rules! ok { + {$s:tt} => { { Program::try_infer(indoc::indoc! { $s }).unwrap_or_else(|(_, s)| panic!("{s}")) } } +} + +macro_rules! ng { + {$s:tt} => { { Program::try_infer(indoc::indoc! { $s }).map(|v| panic!("Unexpected {v}")).unwrap_err() } } +} + +macro_rules! ty { + {$s:tt} => { { Program::try_resolve(indoc::indoc! { $s }).unwrap_or_else(|(_, s)| panic!("{s}")) } } +} + +#[test] +fn test_infer_literal0() { + let a = ok!("1;"); + let b = ty!("1:i32;"); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def0() { + let a = ok!(" + def f(): i32 = 0; + f(); + "); + let b = ty!(" + def f(): i32 = 0:i32; + (f:(fun():i32))():i32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def1() { + let a = ok!("def f(x: i32): i32 = 0;"); + let b = ty!("def f(x: i32): i32 = 0:i32;"); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def2() { + let a = ok!(" + def f(x: i32): i32 = x; + f(0); + "); + let b = ty!(" + def f(x: i32): i32 = x:i32; + (f:(fun(i32):i32))(0:i32):i32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def3() { + let (a, msg) = ng!("def f(x: i32): f32 = x;"); + let b = ty!("def f(x: i32): f32 = x:i32;"); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); + assert_eq!( + msg, + indoc::indoc! {" + Error: Type mismatch + ╭─[test:1:1] + │ + 1 │ def f(x: i32): f32 = x; + │ ┬┬─ + │ ╰──── Found i32 + │ │ + │ ╰─── Expected f32 + ───╯"} + ) +} + +#[test] +fn test_infer_def4() { + let a = ok!("def f[T](x: T): T = x;"); + let b = ty!("def f[T](x: T): T = x:T;"); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def5() { + let a = ok!(" + def f[T](x: T): T = x; + f(0); + "); + let b = ty!(" + def f[T](x: T): T = x:T; + (f[i32]:(fun(i32):i32))(0:i32):i32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def6() { + let a = ok!(" + def f[T](x: T): T = x; + f(0); + f(0.0); + "); + let b = ty!(" + def f[T](x: T): T = x:T; + (f[i32]:(fun(i32):i32))(0:i32):i32; + (f[f32]:(fun(f32):f32))(0.0:f32):f32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def7() { + let a = ok!(" + def f[T](x: T): T = x; + def g[T](x: T): T = f(x); + f(0); + "); + let b = ty!(" + def f[T](x: T): T = x:T; + def g[T](x: T): T = (f[T]:fun(T):T)(x:T):T; + (f[i32]:(fun(i32):i32))(0:i32):i32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_def8() { + let a = ok!(" + def f[T](x: T): T = f(x); + "); + let b = ty!(" + def f[T](x: T): T = (f[T]:fun(T):T)(x:T):T; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_struct0() { + let a = ok!(" + struct Foo(x:i32); + Foo(x=0); + "); + let b = ty!(" + struct Foo(x:i32); + Foo(x=(0:i32)):Foo; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_struct1() { + let a = ok!(" + struct Foo[T](x:T); + Foo(x=0); + "); + let b = ty!(" + struct Foo[T](x:T); + Foo[i32](x=(0:i32)):Foo[i32]; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_struct2() { + let a = ok!(" + Foo(x=0); + struct Foo[T](x:T); + "); + let b = ty!(" + Foo[i32](x=(0:i32)):Foo[i32]; + struct Foo[T](x:T); + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_struct3() { + let a = ok!(" + struct Foo[T](x:T); + var s = Foo(x=0); + s.x; + "); + let b = ty!(" + struct Foo[T](x:T); + var s:Foo[i32] = Foo[i32](x=(0:i32)):Foo[i32]; + ((s:Foo[i32]).x):i32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_enum0() { + let a = ok!(" + enum Foo { Bar(i32), Baz(f32) } + Foo::Bar(0); + "); + let b = ty!(" + enum Foo { Bar(i32), Baz(f32) } + Foo::Bar(0:i32):Foo; + "); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_infer_enum1() { + let a = ok!(" + enum Foo[T] { Bar(T), Baz(T) } + Foo::Bar(0); + "); + let b = ty!(" + enum Foo[T] { Bar(T), Baz(T) } + Foo[i32]::Bar(0:i32):Foo[i32]; + "); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_infer_impl0() { + let a = ok!(" + trait Foo[T] { def f(x: T): T; } + impl Foo[i32] { def f(x: i32): i32 = x; } + f(0); + "); + let b = ty!(" + trait Foo[T] { def f(x: T): T; } + impl Foo[i32] { def f(x: i32): i32 = x:i32; } + ((Foo[i32]::f):(fun(i32):i32))(0:i32):i32; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_impl1() { + let (_, msg) = ng!(" + trait Foo[T] { def f(x: T): T; } + impl Foo[f32] { def f(x: i32): i32 = x; } + f(0);"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Unsolved goal + ╭─[test:1:7] + │ + 1 │ trait Foo[T] { def f(x: T): T; } + │ ─┬─ + │ ╰─── Could not solve goal + ───╯"} + ); +} + +#[test] +fn test_infer_impl2() { + let a = ok!(" + trait Foo[T] {} + def f[T](x: T): T where Foo[T] = x; + "); + let b = ty!(" + trait Foo[T] {} + def f[T](x: T): T where Foo[T] = x:T; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_impl3() { + let a = ok!(" + trait Foo[T] { def f(x: T): T; } + def g[T](x: T): T where Foo[T] = g(x); + "); + let b = ty!(" + trait Foo[T] { def f(x: T): T; } + def g[T](x: T): T where Foo[T] = (g[T]:fun(T):T)(x:T):T; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_impl4() { + let a = ok!(" + trait Foo[T] { def f(x: T): T; } + impl[T] Foo[T] { def f(x: T): T = x; } + "); + let b = ty!(" + trait Foo[T] { def f(x: T): T; } + impl[T] Foo[T] { def f(x: T): T = x:T; } + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_impl5() { + let a = ok!(" + trait Foo[T] { def f(x: T): T; } + def g[T](x: T): T where Foo[T] = f(x); + "); + let b = ty!(" + trait Foo[T] { def f(x: T): T; } + def g[T](x: T): T where Foo[T] = (Foo[T]::f:fun(T):T)(x:T):T; + "); + assert!(a == b, "{}\n\n{}", a.display_types(), b.display_types()); +} + +#[test] +fn test_infer_impl6() { + let a = ok!(" + trait Foo[T] { def f(x: T): T; } + impl Foo[i32] { def f(x: i32): i32 = x; } + def g[T](x: T): T where Foo[T] = Foo[T]::f(x); + "); + let b = ty!(" + trait Foo[T] { def f(x: T): T; } + impl Foo[i32] { def f(x: i32): i32 = x:i32; } + def g[T](x: T): T where Foo[T] = (Foo[T]::f:fun(T):T)(x:T):T; + "); + assert_eq!(a, b, "{a}\n\n{b}"); +} + +// #[test] +// fn test_infer_add2() { +// let a = ok!("1 + 1;"); +// let b = ty!("Add[i32](1:i32, 1:i32):i32"); +// assert_eq!(a, b, "{a}\n\n{b}"); +// } diff --git a/crates/compiler/tests/interpret.rs b/crates/compiler/tests/interpret.rs new file mode 100644 index 0000000..5e7830f --- /dev/null +++ b/crates/compiler/tests/interpret.rs @@ -0,0 +1,12 @@ +// use compiler::ast::Expr; + +// macro_rules! ok { +// ($e:expr) => { +// Expr::eval(indoc::indoc!($e)) +// }; +// } + +#[test] +fn test_interpret0() { + // let a = ok!("1 + 2 + 3;"); +} diff --git a/crates/compiler/tests/lexer.rs b/crates/compiler/tests/lexer.rs new file mode 100644 index 0000000..845eb8e --- /dev/null +++ b/crates/compiler/tests/lexer.rs @@ -0,0 +1,381 @@ +use compiler::diag::Sources; +use compiler::lexer::Lexer; +use compiler::lexer::Token; + +fn next<'a>(lexer: &mut Lexer<'a>) -> Option<(std::ops::Range, Token, &'a str)> { + lexer + .next() + .map(|t| ((*t.span.start()..*t.span.end()), t.value, lexer.text(t))) +} + +#[test] +fn test_lexer_int0() { + let lexer = &mut Lexer::new(0, "123"); + assert_eq!(next(lexer), Some((0..3, Token::Int, "123"))); + assert_eq!(next(lexer), Some((3..3, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_int_suffix0() { + let lexer = &mut Lexer::new(0, "60s"); + assert_eq!(next(lexer), Some((0..3, Token::IntSuffix, "60s"))); + assert_eq!(next(lexer), Some((3..3, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_int_suffix1() { + let lexer = &mut Lexer::new(0, "60_foo"); + assert_eq!(next(lexer), Some((0..6, Token::IntSuffix, "60_foo"))); + assert_eq!(next(lexer), Some((6..6, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_float0() { + let lexer = &mut Lexer::new(0, "123.456"); + assert_eq!(next(lexer), Some((0..7, Token::Float, "123.456"))); + assert_eq!(next(lexer), Some((7..7, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_float1() { + let lexer = &mut Lexer::new(0, "123."); + assert_eq!(next(lexer), Some((0..4, Token::Float, "123."))); + assert_eq!(next(lexer), Some((4..4, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_float_suffix0() { + let lexer = &mut Lexer::new(0, "60.0ms"); + assert_eq!(next(lexer), Some((0..6, Token::FloatSuffix, "60.0ms"))); + assert_eq!(next(lexer), Some((6..6, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_float_suffix1() { + let lexer = &mut Lexer::new(0, "60.0_foo"); + assert_eq!(next(lexer), Some((0..8, Token::FloatSuffix, "60.0_foo"))); + assert_eq!(next(lexer), Some((8..8, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_name0() { + let lexer = &mut Lexer::new(0, "abc"); + assert_eq!(next(lexer), Some((0..3, Token::Name, "abc"))); + assert_eq!(next(lexer), Some((3..3, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_name1() { + let lexer = &mut Lexer::new(0, "_ _1 _a a_ a_1"); + assert_eq!(next(lexer), Some((0..1, Token::Underscore, "_"))); + assert_eq!(next(lexer), Some((2..4, Token::Name, "_1"))); + assert_eq!(next(lexer), Some((5..7, Token::Name, "_a"))); + assert_eq!(next(lexer), Some((8..10, Token::Name, "a_"))); + assert_eq!(next(lexer), Some((11..14, Token::Name, "a_1"))); + assert_eq!(next(lexer), Some((14..14, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_keywords0() { + let lexer = &mut Lexer::new(0, "def impl struct enum var type"); + assert_eq!(next(lexer), Some((0..3, Token::Def, "def"))); + assert_eq!(next(lexer), Some((4..8, Token::Impl, "impl"))); + assert_eq!(next(lexer), Some((9..15, Token::Struct, "struct"))); + assert_eq!(next(lexer), Some((16..20, Token::Enum, "enum"))); + assert_eq!(next(lexer), Some((21..24, Token::Var, "var"))); + assert_eq!(next(lexer), Some((25..29, Token::Type, "type"))); + assert_eq!(next(lexer), Some((29..29, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_keywords1() { + let lexer = &mut Lexer::new( + 0, + "true false or and if else while for break continue return match fun", + ); + assert_eq!(next(lexer), Some((0..4, Token::True, "true"))); + assert_eq!(next(lexer), Some((5..10, Token::False, "false"))); + assert_eq!(next(lexer), Some((11..13, Token::Or, "or"))); + assert_eq!(next(lexer), Some((14..17, Token::And, "and"))); + assert_eq!(next(lexer), Some((18..20, Token::If, "if"))); + assert_eq!(next(lexer), Some((21..25, Token::Else, "else"))); + assert_eq!(next(lexer), Some((26..31, Token::While, "while"))); + assert_eq!(next(lexer), Some((32..35, Token::For, "for"))); + assert_eq!(next(lexer), Some((36..41, Token::Break, "break"))); + assert_eq!(next(lexer), Some((42..50, Token::Continue, "continue"))); + assert_eq!(next(lexer), Some((51..57, Token::Return, "return"))); + assert_eq!(next(lexer), Some((58..63, Token::Match, "match"))); + assert_eq!(next(lexer), Some((64..67, Token::Fun, "fun"))); + assert_eq!(next(lexer), Some((67..67, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_keywords2() { + let lexer = &mut Lexer::new(0, "from into where select group with over join on"); + assert_eq!(next(lexer), Some((0..4, Token::From, "from"))); + assert_eq!(next(lexer), Some((5..9, Token::Into, "into"))); + assert_eq!(next(lexer), Some((10..15, Token::Where, "where"))); + assert_eq!(next(lexer), Some((16..22, Token::Select, "select"))); + assert_eq!(next(lexer), Some((23..28, Token::Group, "group"))); + assert_eq!(next(lexer), Some((29..33, Token::With, "with"))); + assert_eq!(next(lexer), Some((34..38, Token::Over, "over"))); + assert_eq!(next(lexer), Some((39..43, Token::Join, "join"))); + assert_eq!(next(lexer), Some((44..46, Token::On, "on"))); + assert_eq!(next(lexer), Some((46..46, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_punct0() { + let lexer = &mut Lexer::new(0, "= == != < <= > >= + - * / . .. , : ; ? _ => ::"); + assert_eq!(next(lexer), Some((0..1, Token::Eq, "="))); + assert_eq!(next(lexer), Some((2..4, Token::EqEq, "=="))); + assert_eq!(next(lexer), Some((5..7, Token::NotEq, "!="))); + assert_eq!(next(lexer), Some((8..9, Token::Lt, "<"))); + assert_eq!(next(lexer), Some((10..12, Token::Le, "<="))); + assert_eq!(next(lexer), Some((13..14, Token::Gt, ">"))); + assert_eq!(next(lexer), Some((15..17, Token::Ge, ">="))); + assert_eq!(next(lexer), Some((18..19, Token::Plus, "+"))); + assert_eq!(next(lexer), Some((20..21, Token::Minus, "-"))); + assert_eq!(next(lexer), Some((22..23, Token::Star, "*"))); + assert_eq!(next(lexer), Some((24..25, Token::Slash, "/"))); + assert_eq!(next(lexer), Some((26..27, Token::Dot, "."))); + assert_eq!(next(lexer), Some((28..30, Token::DotDot, ".."))); + assert_eq!(next(lexer), Some((31..32, Token::Comma, ","))); + assert_eq!(next(lexer), Some((33..34, Token::Colon, ":"))); + assert_eq!(next(lexer), Some((35..36, Token::SemiColon, ";"))); + assert_eq!(next(lexer), Some((37..38, Token::Question, "?"))); + assert_eq!(next(lexer), Some((39..40, Token::Underscore, "_"))); + assert_eq!(next(lexer), Some((41..43, Token::FatArrow, "=>"))); + assert_eq!(next(lexer), Some((44..46, Token::ColonColon, "::"))); + assert_eq!(next(lexer), Some((46..46, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_string0() { + let lexer = &mut Lexer::new(0, r#""abc""#); + assert_eq!(next(lexer), Some((0..5, Token::String, "abc"))); + assert_eq!(next(lexer), Some((5..5, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_string1() { + let lexer = &mut Lexer::new(0, r#""abc\"def""#); + assert_eq!(next(lexer), Some((0..10, Token::String, r#"abc\"def"#))); + assert_eq!(next(lexer), Some((10..10, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_char0() { + let lexer = &mut Lexer::new(0, "'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j'"); + assert_eq!(next(lexer), Some((0..3, Token::Char, "a"))); + assert_eq!(next(lexer), Some((4..7, Token::Char, "b"))); + assert_eq!(next(lexer), Some((8..11, Token::Char, "c"))); + assert_eq!(next(lexer), Some((12..15, Token::Char, "d"))); + assert_eq!(next(lexer), Some((16..19, Token::Char, "e"))); + assert_eq!(next(lexer), Some((20..23, Token::Char, "f"))); + assert_eq!(next(lexer), Some((24..27, Token::Char, "g"))); + assert_eq!(next(lexer), Some((28..31, Token::Char, "h"))); + assert_eq!(next(lexer), Some((32..35, Token::Char, "i"))); + assert_eq!(next(lexer), Some((36..39, Token::Char, "j"))); + assert_eq!(next(lexer), Some((39..39, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_char1() { + let lexer = &mut Lexer::new(0, r"'\n' '\t' '\r' '\0' '\\' '\''"); + assert_eq!(next(lexer), Some((0..4, Token::Char, r"\n"))); + assert_eq!(next(lexer), Some((5..9, Token::Char, r"\t"))); + assert_eq!(next(lexer), Some((10..14, Token::Char, r"\r"))); + assert_eq!(next(lexer), Some((15..19, Token::Char, r"\0"))); + assert_eq!(next(lexer), Some((20..24, Token::Char, r"\\"))); + assert_eq!(next(lexer), Some((25..29, Token::Char, r"\'"))); + assert_eq!(next(lexer), Some((29..29, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_separators0() { + let lexer = &mut Lexer::new(0, "[[]] (()) {{}}"); + assert_eq!(next(lexer), Some((0..1, Token::LBrack, "["))); + assert_eq!(next(lexer), Some((1..2, Token::LBrack, "["))); + assert_eq!(next(lexer), Some((2..3, Token::RBrack, "]"))); + assert_eq!(next(lexer), Some((3..4, Token::RBrack, "]"))); + assert_eq!(next(lexer), Some((5..6, Token::LParen, "("))); + assert_eq!(next(lexer), Some((6..7, Token::LParen, "("))); + assert_eq!(next(lexer), Some((7..8, Token::RParen, ")"))); + assert_eq!(next(lexer), Some((8..9, Token::RParen, ")"))); + assert_eq!(next(lexer), Some((10..11, Token::LBrace, "{"))); + assert_eq!(next(lexer), Some((11..12, Token::LBrace, "{"))); + assert_eq!(next(lexer), Some((12..13, Token::RBrace, "}"))); + assert_eq!(next(lexer), Some((13..14, Token::RBrace, "}"))); + assert_eq!(next(lexer), Some((14..14, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_code0() { + let lexer = &mut Lexer::new(0, "--- fn main() {} ---"); + assert_eq!(next(lexer), Some((0..20, Token::Code, " fn main() {} "))); + assert_eq!(next(lexer), Some((20..20, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_code1() { + let lexer = &mut Lexer::new(0, "1 + 2; --- fn main() {} --- 3 + 4;"); + assert_eq!(next(lexer), Some((0..1, Token::Int, "1"))); + assert_eq!(next(lexer), Some((2..3, Token::Plus, "+"))); + assert_eq!(next(lexer), Some((4..5, Token::Int, "2"))); + assert_eq!(next(lexer), Some((5..6, Token::SemiColon, ";"))); + assert_eq!(next(lexer), Some((7..27, Token::Code, " fn main() {} "))); + assert_eq!(next(lexer), Some((28..29, Token::Int, "3"))); + assert_eq!(next(lexer), Some((30..31, Token::Plus, "+"))); + assert_eq!(next(lexer), Some((32..33, Token::Int, "4"))); + assert_eq!(next(lexer), Some((33..34, Token::SemiColon, ";"))); + assert_eq!(next(lexer), Some((34..34, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_code2() { + let lexer = &mut Lexer::new(0, "-- -"); + assert_eq!(next(lexer), Some((0..1, Token::Minus, "-"))); + assert_eq!(next(lexer), Some((1..2, Token::Minus, "-"))); + assert_eq!(next(lexer), Some((3..4, Token::Minus, "-"))); + assert_eq!(next(lexer), Some((4..4, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_code3() { + let lexer = &mut Lexer::new(0, "--- -- - ---"); + assert_eq!(next(lexer), Some((0..12, Token::Code, " -- - "))); + assert_eq!(next(lexer), Some((12..12, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_comments0() { + let lexer = &mut Lexer::new(0, "1 # + 2"); + assert_eq!(next(lexer), Some((0..1, Token::Int, "1"))); + assert_eq!(next(lexer), Some((7..7, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_comments1() { + let lexer = &mut Lexer::new(0, "1 # + 2\n3"); + assert_eq!(next(lexer), Some((0..1, Token::Int, "1"))); + assert_eq!(next(lexer), Some((8..9, Token::Int, "3"))); + assert_eq!(next(lexer), Some((9..9, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_err0() { + let lexer = &mut Lexer::new(0, "\\ % ^ & ~ ` $"); + assert_eq!(next(lexer), Some((0..1, Token::Err, "\\"))); + assert_eq!(next(lexer), Some((2..3, Token::Err, "%"))); + assert_eq!(next(lexer), Some((4..5, Token::Err, "^"))); + assert_eq!(next(lexer), Some((6..7, Token::Err, "&"))); + assert_eq!(next(lexer), Some((8..9, Token::Err, "~"))); + assert_eq!(next(lexer), Some((10..11, Token::Err, "`"))); + assert_eq!(next(lexer), Some((12..13, Token::Err, "$"))); + assert_eq!(next(lexer), Some((13..13, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(!lexer.report.is_empty()); +} + +#[test] +fn test_lexer_err1() { + let mut sources = Sources::new(); + let source = "%"; + let file = sources.add("file", source); + let lexer = &mut Lexer::new(file, source); + assert_eq!(next(lexer), Some((0..1, Token::Err, "%"))); + assert_eq!(next(lexer), Some((1..1, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert_eq!( + lexer.report.string(&mut sources).unwrap(), + indoc::indoc! {" + Error: Unexpected character + ╭─[file:1:1] + │ + 1 │ % + │ ┬ + │ ╰── Unexpected character '%' + ───╯ + + "} + ); +} + +#[test] +fn test_lexer_unused0() { + let lexer = &mut Lexer::new(0, "-> <- ..="); + assert_eq!(next(lexer), Some((0..1, Token::Minus, "-"))); + assert_eq!(next(lexer), Some((1..2, Token::Gt, ">"))); + assert_eq!(next(lexer), Some((3..4, Token::Lt, "<"))); + assert_eq!(next(lexer), Some((4..5, Token::Minus, "-"))); + assert_eq!(next(lexer), Some((6..8, Token::DotDot, ".."))); + assert_eq!(next(lexer), Some((8..9, Token::Eq, "="))); + assert_eq!(next(lexer), Some((9..9, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_eof0() { + let lexer = &mut Lexer::new(0, ""); + assert_eq!(next(lexer), Some((0..0, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} + +#[test] +fn test_lexer_eof1() { + let lexer = &mut Lexer::new(0, " "); + assert_eq!(next(lexer), Some((1..1, Token::Eof, ""))); + assert_eq!(next(lexer), None); + assert!(lexer.report.is_empty()); +} diff --git a/crates/compiler/tests/parser.rs b/crates/compiler/tests/parser.rs new file mode 100644 index 0000000..70531a5 --- /dev/null +++ b/crates/compiler/tests/parser.rs @@ -0,0 +1,1610 @@ +use compiler::ast::Expr; +use compiler::ast::Pat; +use compiler::ast::Program; +use compiler::ast::Stmt; +use compiler::ast::StmtImpl; +use compiler::ast::Type; +use compiler::util::expr_add; +use compiler::util::expr_and; +use compiler::util::expr_array; +use compiler::util::expr_assign; +use compiler::util::expr_block; +use compiler::util::expr_bool; +use compiler::util::expr_break; +use compiler::util::expr_call; +use compiler::util::expr_continue; +use compiler::util::expr_div; +use compiler::util::expr_eq; +use compiler::util::expr_err; +use compiler::util::expr_field; +use compiler::util::expr_float; +use compiler::util::expr_fun; +use compiler::util::expr_fun_typed; +use compiler::util::expr_ge; +use compiler::util::expr_gt; +use compiler::util::expr_index; +use compiler::util::expr_int; +use compiler::util::expr_le; +use compiler::util::expr_lt; +use compiler::util::expr_match; +use compiler::util::expr_mul; +use compiler::util::expr_ne; +use compiler::util::expr_neg; +use compiler::util::expr_not; +use compiler::util::expr_or; +use compiler::util::expr_query; +use compiler::util::expr_return; +use compiler::util::expr_sub; +use compiler::util::expr_tuple; +use compiler::util::expr_unit; +use compiler::util::index; +use compiler::util::pat_bool; +use compiler::util::pat_int; +use compiler::util::pat_tuple; +use compiler::util::pat_wild; +use compiler::util::program; +use compiler::util::query_compute; +use compiler::util::query_from; +use compiler::util::query_group; +use compiler::util::query_into; +use compiler::util::query_over; +use compiler::util::query_select; +use compiler::util::query_where; +use compiler::util::query_with; +use compiler::util::stmt_def; +use compiler::util::stmt_enum; +use compiler::util::stmt_expr; +use compiler::util::stmt_impl; +use compiler::util::stmt_struct; +use compiler::util::stmt_type; +use compiler::util::stmt_var; +use compiler::util::ty_err; +use compiler::util::ty_fun; +use compiler::util::ty_hole; +use compiler::util::ty_tuple; +use compiler::util::unresolved::bound; +use compiler::util::unresolved::expr_assoc; +use compiler::util::unresolved::expr_call_direct; +use compiler::util::unresolved::expr_def; +use compiler::util::unresolved::expr_struct; +use compiler::util::unresolved::expr_unit_variant; +use compiler::util::unresolved::expr_var; +use compiler::util::unresolved::expr_variant; +use compiler::util::unresolved::pat_enum; +use compiler::util::unresolved::pat_struct; +use compiler::util::unresolved::pat_unit_struct; +use compiler::util::unresolved::pat_var; +use compiler::util::unresolved::ty; +use compiler::util::unresolved::ty_assoc; +use compiler::util::unresolved::ty_con; + +#[test] +fn test_parser_expr_int0() { + let a = Expr::parse("1"); + let b = expr_int("1"); + assert_eq!(a, b); +} + +#[ignore] +#[test] +fn test_parser_expr_int1() { + let a = Expr::parse("123s"); + let b = expr_call_direct("postfix_s", [], [expr_int("123")]); + assert_eq!(a, b); +} + +#[test] +fn test_parser_expr_float0() { + let a = Expr::parse("1.0"); + let b = expr_float("1.0"); + assert_eq!(a, b); +} + +#[ignore] +#[test] +fn test_parser_expr_float1() { + let a = Expr::parse("1.0s"); + let b = expr_call_direct("postfix_s", [], [expr_float("1.0")]); + assert_eq!(a, b); +} + +#[test] +fn test_parser_expr_binop_add0() { + let a = Expr::parse("1 + 2"); + let b = expr_add(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_sub0() { + let a = Expr::parse("1 - 2"); + let b = expr_sub(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_mul0() { + let a = Expr::parse("1 * 2"); + let b = expr_mul(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_div0() { + let a = Expr::parse("1 / 2"); + let b = expr_div(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_eq0() { + let a = Expr::parse("1 == 2"); + let b = expr_eq(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_ne0() { + let a = Expr::parse("1 != 2"); + let b = expr_ne(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_le0() { + let a = Expr::parse("1 <= 2"); + let b = expr_le(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_ge0() { + let a = Expr::parse("1 >= 2"); + let b = expr_ge(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_lt0() { + let a = Expr::parse("1 < 2"); + let b = expr_lt(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_gt0() { + let a = Expr::parse("1 > 2"); + let b = expr_gt(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_and0() { + let a = Expr::parse("1 and 2"); + let b = expr_and(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_or0() { + let a = Expr::parse("1 or 2"); + let b = expr_or(expr_int("1"), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_add_mul0() { + let a = Expr::parse("1 + 2 * 3"); + let b = expr_add(expr_int("1"), expr_mul(expr_int("2"), expr_int("3"))); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_mul_add0() { + let a = Expr::parse("1 * 2 + 3"); + let b = expr_add(expr_mul(expr_int("1"), expr_int("2")), expr_int("3")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_add_div0() { + let a = Expr::parse("1 + 2 / 3"); + let b = expr_add(expr_int("1"), expr_div(expr_int("2"), expr_int("3"))); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_div_add0() { + let a = Expr::parse("1 / 2 + 3"); + let b = expr_add(expr_div(expr_int("1"), expr_int("2")), expr_int("3")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_mul_div0() { + let a = Expr::parse("1 * 2 / 3"); + let b = expr_div(expr_mul(expr_int("1"), expr_int("2")), expr_int("3")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_add_add0() { + let a = Expr::parse("1 + 2 + 3"); + let b = expr_add(expr_add(expr_int("1"), expr_int("2")), expr_int("3")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_eq_eq0() { + let a = Expr::parse("1 == 2 == 3"); + let b = expr_block( + [ + stmt_var("_0", ty_hole(), expr_int("1")), + stmt_var("_1", ty_hole(), expr_int("2")), + ], + expr_and( + expr_eq(expr_var("_0"), expr_var("_1")), + expr_eq(expr_var("_1"), expr_int("3")), + ), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_eq_eq_eq0() { + let a = Expr::parse("1 == 2 == 3 == 4"); + let b = expr_block( + [ + stmt_var("_0", ty_hole(), expr_int("1")), + stmt_var("_1", ty_hole(), expr_int("2")), + ], + expr_and( + expr_eq(expr_var("_0"), expr_var("_1")), + expr_block( + [stmt_var("_2", ty_hole(), expr_int("3"))], + expr_and( + expr_eq(expr_var("_1"), expr_var("_2")), + expr_eq(expr_var("_2"), expr_int("4")), + ), + ), + ), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_binop_eq_eq_le0() { + let a = Expr::parse("1 == 2 == 3 <= 4"); + let b = expr_block( + [ + stmt_var("_0", ty_hole(), expr_int("1")), + stmt_var("_1", ty_hole(), expr_int("2")), + ], + expr_and( + expr_eq(expr_var("_0"), expr_var("_1")), + expr_block( + [stmt_var("_2", ty_hole(), expr_int("3"))], + expr_and( + expr_eq(expr_var("_1"), expr_var("_2")), + expr_le(expr_var("_2"), expr_int("4")), + ), + ), + ), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_unop_neg0() { + let a = Expr::parse("-1"); + let b = expr_neg(expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_unop_neg_add0() { + let a = Expr::parse("-1 + 2"); + let b = expr_add(expr_neg(expr_int("1")), expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_unop_not0() { + let a = Expr::parse("!1"); + let b = expr_not(expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_call0() { + let a = Expr::parse("x(1)"); + let b = expr_call_direct("x", [], [expr_int("1")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_call1() { + let a = Expr::parse("1(x)"); + let b = expr_call(expr_int("1"), [expr_var("x")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_var0() { + let a = Expr::parse("x"); + let b = expr_var("x"); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_var1() { + let a = Expr::parse("x[i32]"); + let b = expr_def("x", [ty("i32")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_var0() { + let a = Pat::parse("x"); + let b = pat_var("x"); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_enum0() { + let a = Pat::parse("S::V(x)"); + let b = pat_enum("S", [], "V", pat_var("x")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_enum1() { + let a = Pat::parse("S[i32]::V(x)"); + let b = pat_enum("S", [ty("i32")], "V", pat_var("x")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_struct0() { + let a = Pat::parse("S(x=x,y=y)"); + let b = pat_struct("S", [], [("x", pat_var("x")), ("y", pat_var("y"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_struct1() { + let a = Pat::parse("S[i32](x=x,y=y)"); + let b = pat_struct("S", [ty("i32")], [("x", pat_var("x")), ("y", pat_var("y"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_struct2() { + let a = Pat::parse("S[i32]"); + let b = pat_unit_struct("S", [ty("i32")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_struct3() { + let a = Pat::parse("S[]"); + let b = pat_unit_struct("S", []); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_if0() { + let a = Expr::parse("if true { 1 }"); + let b = expr_match( + expr_bool(true), + [(pat_bool(true), expr_int("1")), (pat_wild(), expr_unit())], + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_if1() { + let a = Program::parse("if true { 1 } if false { 2 }"); + let b = program([ + stmt_expr(expr_match( + expr_bool(true), + [(pat_bool(true), expr_int("1")), (pat_wild(), expr_unit())], + )), + stmt_expr(expr_match( + expr_bool(false), + [(pat_bool(true), expr_int("2")), (pat_wild(), expr_unit())], + )), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_if_else0() { + let a = Expr::parse("if true { 1 } else { 2 }"); + let b = expr_match( + expr_bool(true), + [(pat_bool(true), expr_int("1")), (pat_wild(), expr_int("2"))], + ); + assert!(a == b, "{a}\n{b}"); +} + +// #[test] +// fn test_parser_expr_if_else1() { +// let a = Expr::parse("if true { 1; 2 } else { 3; 4 }"); +// let b = expr_if_else( +// expr_bool(true), +// [ +// ( +// pat_bool(true), +// expr_block([stmt_expr(expr_int("1"))], expr_int("2")), +// ), +// ( +// pat_wild(), +// expr_block([stmt_expr(expr_int("3"))], expr_int("4")), +// ), +// ], +// ); +// assert!(a == b, "{a}\n{b}"); +// } + +#[test] +fn test_parser_expr_match0() { + let a = Expr::parse("match 1 { 1 => 2, _ => 3 }"); + let b = expr_match( + expr_int("1"), + [(pat_int("1"), expr_int("2")), (pat_wild(), expr_int("3"))], + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_match1() { + let a = Expr::parse("match x { 1 => 2, _ => 3 }"); + let b = expr_match( + expr_var("x"), + [(pat_int("1"), expr_int("2")), (pat_wild(), expr_int("3"))], + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_method_call0() { + let a = Expr::parse("1.foo()"); + let b = expr_call_direct("foo", [], [expr_int("1")]); + assert!(a == b, "{a}\n{b}"); + let a = Expr::parse("1.foo(2)"); + let b = expr_call_direct("foo", [], [expr_int("1"), expr_int("2")]); + assert!(a == b, "{a}\n{b}"); + let a = Expr::parse("1.foo(2,)"); + let b = expr_call_direct("foo", [], [expr_int("1"), expr_int("2")]); + assert!(a == b, "{a}\n{b}"); + let a = Expr::parse("1.foo(2, 3)"); + let b = expr_call_direct("foo", [], [expr_int("1"), expr_int("2"), expr_int("3")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_method_call1() { + let a = Expr::parse("1.foo[i32]()"); + let b = expr_call_direct("foo", [ty("i32")], [expr_int("1")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def0() { + let a = Stmt::parse("def id(x: i32): i32 = x;"); + let b = stmt_def("id", [], [("x", ty("i32"))], ty("i32"), [], expr_var("x")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def1() { + let a = Stmt::parse("def id(x: i32): i32 { x }"); + let b = stmt_def( + "id", + [], + [("x", ty("i32"))], + ty("i32"), + [], + expr_block([], expr_var("x")), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def2() { + let a = Stmt::parse("def id(x: i32, y: i32): i32 = x;"); + let b = stmt_def( + "id", + [], + [("x", ty("i32")), ("y", ty("i32"))], + ty("i32"), + [], + expr_var("x"), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def3() { + let a = Stmt::parse("def id(x: i32, y: i32): i32 = x + y;"); + let b = stmt_def( + "id", + [], + [("x", ty("i32")), ("y", ty("i32"))], + ty("i32"), + [], + expr_add(expr_var("x"), expr_var("y")), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def4() { + let a = Stmt::parse("def id(x: i32, y: i32): i32 = x + y * 2;"); + let b = stmt_def( + "id", + [], + [("x", ty("i32")), ("y", ty("i32"))], + ty("i32"), + [], + expr_add(expr_var("x"), expr_mul(expr_var("y"), expr_int("2"))), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def5() { + let a = Stmt::parse("def debug(x: i32): i32 { print(x); x }"); + let b = stmt_def( + "debug", + [], + [("x", ty("i32"))], + ty("i32"), + [], + expr_block( + [stmt_expr(expr_call_direct("print", [], [expr_var("x")]))], + expr_var("x"), + ), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def6() { + let a = Stmt::parse("def f(x: i32): i32 = x;"); + let b = stmt_def("f", [], [("x", ty("i32"))], ty("i32"), [], expr_var("x")); + assert_eq!(a, b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def7() { + let a = Stmt::parse("def f(x: i32,): i32 = x;"); + let b = stmt_def("f", [], [("x", ty("i32"))], ty("i32"), [], expr_var("x")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def8() { + let a = Stmt::parse("def f(x: i32, y: i32): i32 = x;"); + let b = stmt_def( + "f", + [], + [("x", ty("i32")), ("y", ty("i32"))], + ty("i32"), + [], + expr_var("x"), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_generics0() { + let a = Stmt::parse("def f[](): i32 = 1;"); + let b = stmt_def("f", [], [], ty("i32"), [], expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_generics1() { + let a = Stmt::parse("def f[T](): i32 = 1;"); + let b = stmt_def("f", ["T"], [], ty("i32"), [], expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_generics2() { + let a = Stmt::parse("def f[T,](): i32 = 1;"); + let b = stmt_def("f", ["T"], [], ty("i32"), [], expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_generics3() { + let a = Stmt::parse("def f[T, U](): i32 = 1;"); + let b = stmt_def("f", ["T", "U"], [], ty("i32"), [], expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_where0() { + let a = Stmt::parse("def x(): i32 where = 1;"); + let b = stmt_def("x", [], [], ty("i32"), [], expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_where1() { + let a = Stmt::parse("def x(): i32 where Clone[i32] = 1;"); + let b = stmt_def( + "x", + [], + [], + ty("i32"), + [bound("Clone", [ty("i32")])], + expr_int("1"), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_where2() { + let a = Stmt::parse("def x(): i32 where Clone[i32], Copy[i32] = 1;"); + let b = stmt_def( + "x", + [], + [], + ty("i32"), + [bound("Clone", [ty("i32")]), bound("Copy", [ty("i32")])], + expr_int("1"), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_where3() { + let a = Stmt::parse("def x(): i32 where Clone[i32], Copy[i32], = 1;"); + let b = stmt_def( + "x", + [], + [], + ty("i32"), + [bound("Clone", [ty("i32")]), bound("Copy", [ty("i32")])], + expr_int("1"), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_def_where4() { + let a = Stmt::parse("def x(): i32 where { 1 }"); + let b = stmt_def("x", [], [], ty("i32"), [], expr_block([], expr_int("1"))); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_impl_where0() { + let a = Stmt::parse("impl Copy[i32] where Clone[i32] {}"); + let b = stmt_impl( + [], + bound("Copy", [ty("i32")]), + [bound("Clone", [ty("i32")])], + [], + [], + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program0() { + let a = Program::parse( + "def id(x: i32): i32 = x; + def main(): i32 = id(42);", + ); + let b = program([ + stmt_def("id", [], [("x", ty("i32"))], ty("i32"), [], expr_var("x")), + stmt_def( + "main", + [], + [], + ty("i32"), + [], + expr_call_direct("id", [], [expr_int("42")]), + ), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_impl0() { + let a = Stmt::parse( + "impl Eq[bool] { + def eq(x: bool, y: bool): bool = true; + }", + ); + let b = stmt_impl( + [], + bound("Eq", [ty("bool")]), + [], + [stmt_def( + "eq", + [], + [("x", ty("bool")), ("y", ty("bool"))], + ty("bool"), + [], + expr_bool(true), + )], + [], + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_impl1() { + StmtImpl::parse( + "impl[T, R] Add[Vec[T], R] where Add[T, R] { + type Output = Vec[Add[T, R]::Output]; + }", + ); +} + +#[test] +fn test_parser_stmt_var0() { + let a = Stmt::parse("var x = 1;"); + let b = stmt_var("x", ty_hole(), expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_var1() { + let a = Stmt::parse("var x: i32 = 1;"); + let b = stmt_var("x", ty("i32"), expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_var2() { + let a = Program::parse("var x = 1; var y = x;"); + let b = program([ + stmt_var("x", ty_hole(), expr_int("1")), + stmt_var("y", ty_hole(), expr_var("x")), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_assign0() { + let a = Expr::parse("x = 1"); + let b = expr_assign(expr_var("x"), expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_type0() { + let a = Stmt::parse("type T = i32;"); + let b = stmt_type("T", [], ty("i32")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_type1() { + let a = Stmt::parse("type T[U] = U;"); + let b = stmt_type("T", ["U"], ty("U")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_type2() { + let a = Stmt::parse("type T[U] = (U, U);"); + let b = stmt_type("T", ["U"], ty_tuple([ty("U"), ty("U")])); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_struct0() { + let a = Stmt::parse("struct S;"); + let b = stmt_struct("S", [], []); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_struct_err0() { + let a = Stmt::diagnose("struct S"); + assert_eq!( + a, + indoc::indoc! {" + Error: Unexpected end of file + ╭─[test:1:9] + │ + 1 │ struct S + │ │ + │ ╰─ Expected `;` + ───╯"} + ); +} + +#[test] +fn test_parser_stmt_struct1() { + let a = Stmt::parse("struct S();"); + let b = stmt_struct("S", [], []); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_struct2() { + let a = Stmt::parse("struct S(x:i32);"); + let b = stmt_struct("S", [], [("x", ty("i32"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_struct3() { + let a = Stmt::parse("struct S(x:i32);"); + let b = stmt_struct("S", [], [("x", ty("i32"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_struct4() { + let a = Stmt::parse("struct S[T](x:T);"); + let b = stmt_struct("S", ["T"], [("x", ty("T"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_struct0() { + let a = Expr::parse("S(x=1)"); + let b = expr_struct("S", [], [("x", expr_int("1"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_struct1() { + let a = Expr::parse("S(x=x)"); + let b = expr_struct("S", [], [("x", expr_var("x"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_struct2() { + let a = Expr::parse("s.x.y"); + let b = expr_field(expr_field(expr_var("s"), "x"), "y"); + assert!(a == b, "{a}\n{b}"); +} + +// Field punning is done at resolution time. +#[test] +fn test_parser_expr_struct3() { + let a = Expr::parse("S(x=s.x)"); + let b = expr_struct("S", [], [("x", expr_field(expr_var("s"), "x"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_struct5() { + let a = Expr::parse("S[i32](x=1)"); + let b = expr_struct("S", [ty("i32")], [("x", expr_int("1"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_enum0() { + let a = Stmt::parse("enum E { A(i32), B(i32) }"); + let b = stmt_enum("E", [], [("A", ty("i32")), ("B", ty("i32"))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_enum0() { + let a = Expr::parse("E::A"); + let b = expr_unit_variant("E", [], "A"); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_enum1() { + let a = Expr::parse("E::A()"); + let b = expr_variant("E", [], "A", []); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_enum2() { + let a = Expr::parse("E::A(1,)"); + let b = expr_variant("E", [], "A", [expr_int("1")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_enum3() { + let a = Expr::parse("E::A(1, 2)"); + let b = expr_variant("E", [], "A", [expr_int("1"), expr_int("2")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_enum4() { + let a = Expr::parse("E[i32]::A(1, 2)"); + let b = expr_variant("E", [ty("i32")], "A", [expr_int("1"), expr_int("2")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_array0() { + let a = Expr::parse("[1, 2, 3]"); + let b = expr_array([expr_int("1"), expr_int("2"), expr_int("3")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_tuple0() { + let a = Expr::parse("()"); + let b = expr_tuple([]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_tuple1() { + let a = Expr::parse("(1,)"); + let b = expr_tuple([expr_int("1")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_tuple2() { + let a = Expr::parse("(1, 2)"); + let b = expr_tuple([expr_int("1"), expr_int("2")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_tuple3() { + let a = Expr::parse("a.0"); + let b = expr_index(expr_var("a"), index("0")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_tuple0() { + let a = Pat::parse("()"); + let b = pat_tuple([]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_tuple1() { + let a = Pat::parse("(1,)"); + let b = pat_tuple([pat_int("1")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_pat_tuple2() { + let a = Pat::parse("(1, 2)"); + let b = pat_tuple([pat_int("1"), pat_int("2")]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace0() { + let a = Program::parse("{1}"); + let b = program([stmt_expr(expr_block([], expr_int("1")))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace1() { + let a = Program::parse("{1} {2}"); + let b = program([ + stmt_expr(expr_block([], expr_int("1"))), + stmt_expr(expr_block([], expr_int("2"))), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace2() { + let a = Program::parse("{{1}}"); + let b = program([stmt_expr(expr_block([], expr_block([], expr_int("1"))))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace3() { + let a = Program::parse("{{1} {2}}"); + let b = program([stmt_expr(expr_block( + [stmt_expr(expr_block([], expr_int("1")))], + expr_block([], expr_int("2")), + ))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace4() { + let a = Program::parse("{{1};{2}}"); + let b = program([stmt_expr(expr_block( + [stmt_expr(expr_block([], expr_int("1")))], + expr_block([], expr_int("2")), + ))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace5() { + let a = Program::parse("{{1};{2};}"); + let b = program([stmt_expr(expr_block( + [ + stmt_expr(expr_block([], expr_int("1"))), + stmt_expr(expr_block([], expr_int("2"))), + ], + expr_unit(), + ))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace6() { + let a = Program::parse("{;}"); + let b = program([stmt_expr(expr_block([], expr_unit()))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace7() { + let a = Program::parse("{;;;;;;;;}"); + let b = program([stmt_expr(expr_block([], expr_unit()))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_brace8() { + let a = Expr::parse("{1;2}"); + let b = expr_block([stmt_expr(expr_int("1"))], expr_int("2")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_paren0() { + let a = Program::parse("();"); + let b = program([stmt_expr(expr_unit())]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_paren1() { + let a = Program::parse("(());"); + let b = program([stmt_expr(expr_unit())]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_program_paren2() { + let a = Program::parse("({});"); + let b = program([stmt_expr(expr_block([], expr_unit()))]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_assoc0() { + let a = Expr::parse("Iterator[Vec[i32]]::next"); + let b = expr_assoc("Iterator", [ty_con("Vec", [ty("i32")])], "next"); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_type_assoc0() { + let a = Type::parse("Iterator[Vec[i32]]::Item"); + let b = ty_assoc("Iterator", [ty_con("Vec", [ty("i32")])], "Item"); + assert_eq!(a, b); +} + +#[test] +fn test_parser_expr_query0() { + let a = Expr::parse("from x in [1, 2, 3] "); + let b = expr_query([query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )])]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query1() { + let a = Expr::parse( + "from x in source() + select {x=f(), y=g()} + into sink()", + ); + let b = expr_query([ + query_from([("x", expr_call_direct("source", [], []))]), + query_select([ + ("x", expr_call_direct("f", [], [])), + ("y", expr_call_direct("g", [], [])), + ]), + query_into([expr_call_direct("sink", [], [])]), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query2() { + let a = Expr::parse( + "from x in [1, 2, 3] + select {x=1, y=2} + where x > 1", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_select([("x", expr_int("1")), ("y", expr_int("2"))]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query3() { + let a = Expr::parse( + "from x in [1, 2, 3] + select {x=1, y=2} + where x > 1 + select {x=1, y=2}", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_select([("x", expr_int("1")), ("y", expr_int("2"))]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + query_select([("x", expr_int("1")), ("y", expr_int("2"))]), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query4() { + let a = Expr::parse( + "from x in [1, 2, 3] + with y = f(x)", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_with([("y", expr_call_direct("f", [], [expr_var("x")]))]), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query5() { + let a = Expr::parse( + "from x in [1, 2, 3] + group x { + select {x=1, y=2} + with z = f(x) + where x > 1 + }", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_group( + ["x"], + [ + query_select([("x", expr_int("1")), ("y", expr_int("2"))]), + query_with([("z", expr_call_direct("f", [], [expr_var("x")]))]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + ], + ), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query6() { + let a = Expr::parse( + "from x in [1, 2, 3] + group x { + compute total = sum of x + }", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_group( + ["x"], + [query_compute([("total", expr_var("sum"), expr_var("x"))])], + ), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query7() { + let a = Expr::parse( + "from x in [1, 2, 3] + group x { + compute { + total = sum of x, + lowest = min of x, + highest = max of x + } + }", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_group( + ["x"], + [query_compute([ + ("total", expr_var("sum"), expr_var("x")), + ("lowest", expr_var("min"), expr_var("x")), + ("highest", expr_var("max"), expr_var("x")), + ])], + ), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query8() { + let a = Expr::parse( + "from x in [1, 2, 3] + over tumbling(1) { + compute { + total = sum of x, + lowest = min of x, + highest = max of x + } + select {x=1, y=2} + where x > 1 + }", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_over( + expr_call_direct("tumbling", [], [expr_int("1")]), + [ + query_compute([ + ("total", expr_var("sum"), expr_var("x")), + ("lowest", expr_var("min"), expr_var("x")), + ("highest", expr_var("max"), expr_var("x")), + ]), + query_select([("x", expr_int("1")), ("y", expr_int("2"))]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + ], + ), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query9() { + let a = Expr::parse( + "from x in [1, 2, 3] + select x=1, y=2, z=3 + where x > 1", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_select([ + ("x", expr_int("1")), + ("y", expr_int("2")), + ("z", expr_int("3")), + ]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + ]); + assert!(a == b, "{a:?}\n{b:?}"); +} + +#[test] +fn test_parser_expr_query10() { + let a = Expr::parse( + "from x in [1, 2, 3] + select x=1, y=2, z=3 + where x > 1", + ); + let b = expr_query([ + query_from([( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + )]), + query_select([ + ("x", expr_int("1")), + ("y", expr_int("2")), + ("z", expr_int("3")), + ]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + ]); + assert!(a == b, "{a:?}\n{b:?}"); +} + +#[test] +fn test_parser_expr_query11() { + let a = Expr::parse( + "from x in [1, 2, 3], + y in [1, 2, 3] + compute + highest = max of x, + lowest = min of x + select x, y, z=3 + with + x = f(x), + y = g(x) + where x > 1 + into sink()", + ); + let b = expr_query([ + query_from([ + ( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + ), + ( + "y", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + ), + ]), + query_compute([ + ("highest", expr_var("max"), expr_var("x")), + ("lowest", expr_var("min"), expr_var("x")), + ]), + query_select([ + ("x", expr_var("x")), + ("y", expr_var("y")), + ("z", expr_int("3")), + ]), + query_with([ + ("x", expr_call_direct("f", [], [expr_var("x")])), + ("y", expr_call_direct("g", [], [expr_var("x")])), + ]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + query_into([expr_call_direct("sink", [], [])]), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_query12() { + let a = Expr::parse( + "from x in [1, 2, 3], + y in [1, 2, 3] + group x, y { + select {x=1, y=2} + } + into sink()", + ); + let b = expr_query([ + query_from([ + ( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + ), + ( + "y", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + ), + ]), + query_group( + ["x", "y"], + [query_select([("x", expr_int("1")), ("y", expr_int("2"))])], + ), + query_into([expr_call_direct("sink", [], [])]), + ]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_stmt_query() { + let a = Stmt::parse( + "from x in [1, 2, 3], + y in [1, 2, 3] + compute + highest = max of x, + lowest = min of x + select x, y, z=3 + with + x = f(x), + y = g(x) + where x > 1 + into sink(), + sink();", + ); + let b = stmt_expr(expr_query([ + query_from([ + ( + "x", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + ), + ( + "y", + expr_array([expr_int("1"), expr_int("2"), expr_int("3")]), + ), + ]), + query_compute([ + ("highest", expr_var("max"), expr_var("x")), + ("lowest", expr_var("min"), expr_var("x")), + ]), + query_select([ + ("x", expr_var("x")), + ("y", expr_var("y")), + ("z", expr_int("3")), + ]), + query_with([ + ("x", expr_call_direct("f", [], [expr_var("x")])), + ("y", expr_call_direct("g", [], [expr_var("x")])), + ]), + query_where(expr_gt(expr_var("x"), expr_int("1"))), + query_into([ + expr_call_direct("sink", [], []), + expr_call_direct("sink", [], []), + ]), + ])); + assert_eq!(a, b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_fun0() { + let a = Expr::parse("fun() = 1"); + let b = expr_fun([], expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_fun1() { + let a = Expr::parse("fun(x: i32): i32 = 1"); + let b = expr_fun_typed([("x", ty("i32"))], ty("i32"), expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_fun2() { + let a = Expr::parse("fun(x) = fun(y) = 1"); + let b = expr_fun(["x"], expr_fun(["y"], expr_int("1"))); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_type_fun0() { + let a = Type::parse("fun(i32, i32): i32"); + let b = ty_fun([ty("i32"), ty("i32")], ty("i32")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_type_fun1() { + let a = Type::parse("fun(i32): fun(i32): i32"); + let b = ty_fun([ty("i32")], ty_fun([ty("i32")], ty("i32"))); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_return0() { + let a = Expr::parse("return 1"); + let b = expr_return(expr_int("1")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_return1() { + let a = Expr::parse("return"); + let b = expr_return(expr_unit()); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_continue0() { + let a = Expr::parse("continue"); + let b = expr_continue(); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_break0() { + let a = Expr::parse("break"); + let b = expr_break(); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_unexpected_eof0() { + let a = Stmt::diagnose("def f(x: i32): i32 = 1"); + assert_eq!( + a, + indoc::indoc! {" + Error: Unexpected end of file + ╭─[test:1:23] + │ + 1 │ def f(x: i32): i32 = 1 + │ │ + │ ╰─ Expected `;` + ───╯"} + ); +} + +#[test] +fn test_parser_unexpected_token0() { + let a = Stmt::diagnose("def f(x: i32): i32 = 1 2"); + assert_eq!( + a, + indoc::indoc! {" + Error: Unexpected token `` + ╭─[test:1:24] + │ + 1 │ def f(x: i32): i32 = 1 2 + │ ┬ + │ ╰── Expected `;` + ───╯"} + ); +} + +#[test] +fn test_parser_recover0() { + let a = Stmt::parse("def f(x: i32): i32 = +;"); + let b = stmt_def( + "f", + [], + [("x", ty("i32"))], + ty("i32"), + [], + expr_add(expr_err(), expr_err()), + ); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_recover1() { + let (a, msg) = Stmt::try_parse("def f(x: +): i32 = 1;").unwrap_err(); + let a = a.unwrap(); + let b = stmt_def("f", [], [("x", ty_err())], ty("i32"), [], expr_int("1")); + assert!(a == b, "{a}\n{b}"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Unexpected token `+` + ╭─[test:1:10] + │ + 1 │ def f(x: +): i32 = 1; + │ ┬ + │ ╰── Expected `)` + ───╯"}, + ) +} + +#[test] +fn test_parser_pat_annotate0() { + let a = Pat::try_parse("1:i32").unwrap(); + let b = pat_int("1").with_ty(ty("i32")); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_parser_expr_annotate0() { + let a = Expr::try_parse("1:i32").unwrap(); + let b = expr_int("1").of(ty("i32")); + assert!(a == b, "{a}\n{b}"); +} + +#[ignore] +#[test] +fn test_parser_depth0() { + let r = format!("{}{}", "{".repeat(1000), "}".repeat(1000)); + let _ = Expr::parse(&r); +} diff --git a/crates/compiler/tests/parser2.rs b/crates/compiler/tests/parser2.rs new file mode 100644 index 0000000..8bc355a --- /dev/null +++ b/crates/compiler/tests/parser2.rs @@ -0,0 +1,26 @@ +use compiler::lexer::Lexer; +use compiler::parser2::Parser; + +#[ignore] +#[test] +fn test0() { + let source = "def f(a:i32): i32 = 1+1*1;"; + let lexer = Lexer::new(0, source); + let _output = Parser::new(source, lexer).parse(Parser::program); +} + +#[ignore] +#[test] +fn test1() { + let source = "def f(a:i32): i32 = 1+1*1;"; + let lexer = Lexer::new(0, source); + let _output = Parser::new(source, lexer).parse(Parser::program); +} + +#[ignore] +#[test] +fn test2() { + let source = "def f(a:i32): i32 = 1+1*1;"; + let lexer = Lexer::new(0, source); + let _output = Parser::new(source, lexer).parse(Parser::program); +} diff --git a/crates/compiler/tests/resolve.rs b/crates/compiler/tests/resolve.rs new file mode 100644 index 0000000..aab7c0e --- /dev/null +++ b/crates/compiler/tests/resolve.rs @@ -0,0 +1,578 @@ +use compiler::ast::Program; +use compiler::util::bound; +use compiler::util::bound_err; +use compiler::util::expr_assoc; +use compiler::util::expr_call; +use compiler::util::expr_def; +use compiler::util::expr_enum; +use compiler::util::expr_err; +use compiler::util::expr_int; +use compiler::util::expr_struct; +use compiler::util::expr_tuple; +use compiler::util::expr_var; +use compiler::util::program; +use compiler::util::stmt_def; +use compiler::util::stmt_enum; +use compiler::util::stmt_expr; +use compiler::util::stmt_impl; +use compiler::util::stmt_struct; +use compiler::util::stmt_trait; +use compiler::util::stmt_type; +use compiler::util::stmt_var; +use compiler::util::tr_def; +use compiler::util::tr_type; +use compiler::util::ty; +use compiler::util::ty_alias; +use compiler::util::ty_assoc; +use compiler::util::ty_con; +use compiler::util::ty_err; +use compiler::util::ty_gen; +use compiler::util::ty_hole; +use compiler::util::ty_tuple; +use compiler::util::types::ty_i32; + +fn diff(a: impl std::fmt::Debug, b: impl std::fmt::Debug) -> String { + let a = format!("{:#?}", a); + let b = format!("{:#?}", b); + let mut output = String::new(); + let diff = similar::TextDiff::from_lines(&a, &b); + for change in diff.iter_all_changes() { + let sign = match change.tag() { + similar::ChangeTag::Delete => "-", + similar::ChangeTag::Insert => "+", + similar::ChangeTag::Equal => " ", + }; + output.push_str(&format!("{}{}", sign, change)); + } + output +} + +macro_rules! ok { + {$s:tt} => { { Program::try_resolve(indoc::indoc! { $s }).unwrap_or_else(|(_, s)| panic!("{}", s)) } } +} + +macro_rules! err { + {$s:tt} => { { Program::try_resolve(indoc::indoc! { $s }).unwrap_err() } } +} + +#[test] +fn test_resolve_var0() { + let a = ok!("var x = 0; x;"); + let b = program([ + stmt_var("x", ty_hole(), expr_int("0")), + stmt_expr(expr_var("x")), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_var_err0() { + let (a, msg) = err!("var x = 0; y;"); + let b = program([ + stmt_var("x", ty_hole(), expr_int("0")), + stmt_expr(expr_err()), + ]); + assert!(a == b, "{a}\n\n{b}"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Name `y` not found. + ╭─[test:1:12] + │ + 1 │ var x = 0; y; + │ ┬ + │ ╰── Expected expression. + ───╯"}, + "{msg}" + ) +} + +#[test] +fn test_resolve_def0() { + let a = ok!("def f(): i32 = 0; f();"); + let b = program([ + stmt_def("f", [], [], ty_i32(), [], expr_int("0")), + stmt_expr(expr_call(expr_def("f", []), [])), + ]); + assert!(a == b, "{a:?}\n\n{b:?}"); +} + +#[test] +fn test_resolve_def1() { + let a = ok!("def f(x: i32): i32 = x;"); + let b = program([stmt_def( + "f", + [], + [("x", ty_i32())], + ty_i32(), + [], + expr_var("x"), + )]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_def2() { + let a = ok!("def f(x: i32): i32 = f(x);"); + let b = program([stmt_def( + "f", + [], + [("x", ty_i32())], + ty_i32(), + [], + expr_call(expr_def("f", []), [expr_var("x")]), + )]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_def_param1() { + let (a, msg) = err!("def f(): i32 = x;"); + let b = program([stmt_def("f", [], [], ty_i32(), [], expr_err())]); + assert!(a == b, "{a}\n\n{b}"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Name `x` not found. + ╭─[test:1:16] + │ + 1 │ def f(): i32 = x; + │ ┬ + │ ╰── Expected expression. + ───╯"} + ) +} + +#[test] +fn test_resolve_def_generic() { + let a = ok!("def f[T](x: T): T = x;"); + let b = program([stmt_def( + "f", + ["T"], + [("x", ty_gen("T"))], + ty_gen("T"), + [], + expr_var("x"), + )]); + assert!(a == b, "{a}\n{b}"); +} + +#[test] +fn test_resolve_type0() { + let a = ok!("type T = i32; + var x: T = 0;"); + let b = program([ + stmt_type("T", [], ty_i32()), + stmt_var("x", ty_alias("T", []), expr_int("0")), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_type1() { + let a = ok!("type T[U] = (i32, U); + var x: T[i32] = (0, 0);"); + let b = program([ + stmt_type("T", ["U"], ty_tuple([ty_i32(), ty_gen("U")])), + stmt_var( + "x", + ty_alias("T", [ty_i32()]), + expr_tuple([expr_int("0"), expr_int("0")]), + ), + ]); + assert!(a == b, "{}", diff(&a, &b)); +} + +#[test] +fn test_resolve_type2() { + let (a, msg) = err!( + "type T[U] = (i32, U); + var x: T[i32, i32] = (0, 0);" + ); + let b = program([ + stmt_type("T", ["U"], ty_tuple([ty_i32(), ty_gen("U")])), + stmt_var("x", ty_err(), expr_tuple([expr_int("0"), expr_int("0")])), + ]); + assert!(a == b, "{a}\n\n{b}"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Wrong number of type arguments. Found 2, expected 1 + ╭─[test:2:8] + │ + 2 │ var x: T[i32, i32] = (0, 0); + │ ┬ + │ ╰── Expected 1 arguments. + ───╯"} + ); +} + +#[test] +fn test_resolve_trait0() { + let a = ok!("trait Trait[T] { + def f(x:T): T; + }"); + let b = program([stmt_trait( + "Trait", + ["T"], + [], + [tr_def("f", [], [("x", ty_gen("T"))], [], ty_gen("T"))], + [], + )]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_trait_assoc0() { + let a = ok!("trait Trait[T] { + def f(x:T): T; + } + def g[T](x:T): T where Trait[T] = f(x);"); + let b = program([ + stmt_trait( + "Trait", + ["T"], + [], + [tr_def("f", [], [("x", ty_gen("T"))], [], ty_gen("T"))], + [], + ), + stmt_def( + "g", + ["T"], + [("x", ty_gen("T"))], + ty_gen("T"), + [bound("Trait", [ty_gen("T")])], + expr_call(expr_assoc("Trait", [ty_hole()], "f", []), [expr_var("x")]), + ), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_trait_impl0() { + let a = ok!("trait Trait[T] { + def f(x:T): T; + } + impl Trait[i32] { + def f(x:i32): i32 = x; + }"); + let b = program([ + stmt_trait( + "Trait", + ["T"], + [], + [tr_def("f", [], [("x", ty_gen("T"))], [], ty_gen("T"))], + [], + ), + stmt_impl( + [], + bound("Trait", [ty_i32()]), + [], + [stmt_def( + "f", + [], + [("x", ty_i32())], + ty_i32(), + [], + expr_var("x"), + )], + [], + ), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[ignore] +#[test] +fn test_resolve_trait_impl1() { + let a = ok!("trait Trait[T] { + type A[U]; + } + impl Trait[i32] { + type A[U] = U; + }"); + let b = program([ + stmt_trait("Trait", ["T"], [], [], [tr_type("f", [])]), + stmt_impl( + [], + bound("Trait", [ty_i32()]), + [], + [], + [stmt_type("A", ["U"], ty_gen("U"))], + ), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_trait_impl2() { + let (a, msg) = err!( + "trait Trait[T] { + def f(x: T): T; + } + impl Trait[i32] { + def g(x: i32): i32 = x; + }" + ); + let b = program([ + stmt_trait( + "Trait", + ["T"], + [], + [tr_def("f", [], [("x", ty_gen("T"))], [], ty_gen("T"))], + [], + ), + stmt_impl( + [], + bound_err(), + [], + [stmt_def( + "g", + [], + [("x", ty_i32())], + ty_i32(), + [], + expr_var("x"), + )], + [], + ), + ]); + assert!(a == b, "{a}\n\n{b}"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Wrong defs implemented for Trait. Found { `g` }, expected { `f` } + ╭─[test:4:6] + │ + 4 │ impl Trait[i32] { + │ ──┬── + │ ╰──── Expected { `f` }. + ───╯"} + ); +} + +#[test] +fn test_resolve_struct0() { + let a = ok!("struct S[T](x:T);"); + let b = program([stmt_struct("S", ["T"], [("x", ty_gen("T"))])]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_struct1() { + let a = ok!("struct S[T](x:T); + var s: S[i32] = S[i32](x=0);"); + let b = program([ + stmt_struct("S", ["T"], [("x", ty_gen("T"))]), + stmt_var( + "s", + ty_con("S", [ty_i32()]), + expr_struct("S", [ty_i32()], [("x", expr_int("0"))]), + ), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_struct2() { + let (a, msg) = err!( + "struct S(x:i32); + S(y=0);" + ); + let b = program([ + stmt_struct("S", [], [("x", ty_i32())]), + stmt_expr(expr_err()), + ]); + assert!(a == b, "{a}\n\n{b}"); + assert_eq!( + msg, + indoc::indoc! {" + Error: Wrong fields provided. Found S(y), expected S(x) + ╭─[test:2:1] + │ + 2 │ S(y=0); + │ ┬ + │ ╰── Expected S(x) fields. + ───╯"} + ); +} + +#[test] +fn test_resolve_struct3() { + let a = ok!("struct S; + var s: S = S;"); + let b = program([ + stmt_struct("S", [], []), + stmt_var("s", ty("S"), expr_struct("S", [], [])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_struct4() { + let a = ok!("struct S[T](x:T); + var s = S(x=0);"); + let b = program([ + stmt_struct("S", ["T"], [("x", ty_gen("T"))]), + stmt_var( + "s", + ty_hole(), + expr_struct("S", [ty_hole()], [("x", expr_int("0"))]), + ), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_enum0() { + let a = ok!("enum E[T] { A(T) }"); + let b = program([stmt_enum("E", ["T"], [("A", ty_gen("T"))])]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_enum1() { + let a = ok!("enum E[T] { A(T) } + var e: E[i32] = E[i32]::A(0);"); + let b = program([ + stmt_enum("E", ["T"], [("A", ty_gen("T"))]), + stmt_var( + "e", + ty_con("E", [ty_i32()]), + expr_enum("E", [ty_i32()], "A", expr_int("0")), + ), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_unordered0() { + let a = ok!("def f(): i32 = g(); + def g(): i32 = 0;"); + let b = program([ + stmt_def("f", [], [], ty_i32(), [], expr_call(expr_def("g", []), [])), + stmt_def("g", [], [], ty_i32(), [], expr_int("0")), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_unordered1() { + let a = ok!("def f(): i32 = g(); + def g(): i32 = f();"); + let b = program([ + stmt_def("f", [], [], ty_i32(), [], expr_call(expr_def("g", []), [])), + stmt_def("g", [], [], ty_i32(), [], expr_call(expr_def("f", []), [])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_unordered2() { + let a = ok!("type A = B; + type B = A;"); + let b = program([ + stmt_type("A", [], ty_alias("B", [])), + stmt_type("B", [], ty_alias("A", [])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_expr_assoc0() { + let a = ok!("trait Trait { + def f(x: i32): i32; + } + Trait::f(0);"); + let b = program([ + stmt_trait( + "Trait", + [], + [], + [tr_def("f", [], [("x", ty_i32())], [], ty_i32())], + [], + ), + stmt_expr(expr_call(expr_assoc("Trait", [], "f", []), [expr_int("0")])), + ]); + assert!(a == b, "{}", diff(&a, &b)); +} + +#[test] +fn test_resolve_expr_assoc1() { + let a = ok!("trait Trait { + def f(x: i32): i32; + } + f(0);"); + let b = program([ + stmt_trait( + "Trait", + [], + [], + [tr_def("f", [], [("x", ty_i32())], [], ty_i32())], + [], + ), + stmt_expr(expr_call(expr_assoc("Trait", [], "f", []), [expr_int("0")])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_expr_assoc2() { + let a = ok!("trait Trait[A] { + def f(x: A): A; + } + Trait[i32]::f(0);"); + let b = program([ + stmt_trait( + "Trait", + ["A"], + [], + [tr_def("f", [], [("x", ty_gen("A"))], [], ty_gen("A"))], + [], + ), + stmt_expr(expr_call( + expr_assoc("Trait", [ty_i32()], "f", []), + [expr_int("0")], + )), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_type_assoc0() { + let a = ok!("trait Trait { + type A; + } + type B = Trait::A;"); + let b = program([ + stmt_trait("Trait", [], [], [], [tr_type("A", [])]), + stmt_type("B", [], ty_assoc("Trait", [], "A", [])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_type_assoc1() { + let a = ok!("trait Trait[T] { + type A; + } + type B = Trait[i32]::A;"); + let b = program([ + stmt_trait("Trait", ["T"], [], [], [tr_type("A", [])]), + stmt_type("B", [], ty_assoc("Trait", [ty_i32()], "A", [])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} + +#[test] +fn test_resolve_type_assoc2() { + let a = ok!("trait Trait[T] { + type A[U]; + } + type B = Trait[i32]::A[i32];"); + let b = program([ + stmt_trait("Trait", ["T"], [], [], [tr_type("A", ["U"])]), + stmt_type("B", [], ty_assoc("Trait", [ty_i32()], "A", [ty_i32()])), + ]); + assert!(a == b, "{a}\n\n{b}"); +} diff --git a/crates/compiler/tests/ser.rs b/crates/compiler/tests/ser.rs new file mode 100644 index 0000000..288be87 --- /dev/null +++ b/crates/compiler/tests/ser.rs @@ -0,0 +1,207 @@ +use std::rc::Rc; + +use serde::de::DeserializeSeed; + +use compiler::ast::Type; +use compiler::builtins::Array; +use compiler::builtins::Record; +use compiler::builtins::Tuple; +use compiler::builtins::Value; + +use compiler::builtins::de::Seed; + +#[test] +fn test_serde_i32() { + let v0 = Value::from(1); + let s = serde_json::to_string(&v0).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t = Type::Cons("i32".into(), vec![]); + let v1 = Seed(t).deserialize(&mut de).unwrap(); + assert_eq!(v0, v1); + assert_eq!(s, "1"); +} + +#[test] +fn test_serde_vec() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(3); + let v3 = Value::from(runtime::builtins::vec::Vec::from(vec![v0, v1, v2])); + let s = serde_json::to_string(&v3).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("Vec".into(), vec![t0]); + let v4 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v3, v4); + assert_eq!(s, "[1,2,3]"); +} + +#[test] +fn test_serde_tuple() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(runtime::builtins::im_string::String::from("Hello")); + let v3 = Value::from(Tuple::new(vec![v0, v1, v2])); + let s = serde_json::to_string(&v3).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("i32".into(), vec![]); + let t2 = Type::Cons("String".into(), vec![]); + let t3 = Type::Tuple(vec![t0, t1, t2]); + let v4 = Seed(t3).deserialize(&mut de).unwrap(); + assert_eq!(v3, v4); + assert_eq!(s, r#"[1,2,"Hello"]"#); +} + +#[test] +fn test_serde_record() { + let v0 = Value::from(1); + let v1 = Value::from(runtime::builtins::im_string::String::from("Hello")); + let v2 = Value::from(Record::new(vec![ + ("a".into(), v0.clone()), + ("b".into(), v1.clone()), + ])); + let v2_permut = Value::from(Record::new(vec![("b".into(), v1), ("a".into(), v0)])); + let s = serde_json::to_string(&v2).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("String".into(), vec![]); + let t2 = Type::Record(vec![("a".into(), t0), ("b".into(), t1)]); + let v3 = Seed(t2).deserialize(&mut de).unwrap(); + assert!(v2 == v3 || v2_permut == v3); + assert!((s == r#"{"a":1,"b":"Hello"}"#) || (s == r#"{"b":"Hello","a":1}"#)); +} + +#[test] +fn test_serde_dict() { + let k0 = Value::from(runtime::builtins::im_string::String::from("a")); + let k1 = Value::from(runtime::builtins::im_string::String::from("b")); + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(runtime::builtins::dict::Dict::from( + vec![(k0, v0), (k1, v1)] + .into_iter() + .collect::>(), + )); + let s = serde_json::to_string(&v2).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("String".into(), vec![]); + let t1 = Type::Cons("i32".into(), vec![]); + let t2 = Type::Cons("Dict".into(), vec![t0, t1]); + let v3 = Seed(t2).deserialize(&mut de).unwrap(); + assert_eq!(v2, v3); + assert!((s == r#"{"a":1,"b":2}"#) || (s == r#"{"b":2,"a":1}"#)); +} + +#[test] +fn test_serde_array() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(3); + let v3 = Value::from(Array(vec![v0, v1, v2])); + let s = serde_json::to_string(&v3).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Array(Rc::new(t0), Some(3)); + let v4 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v3, v4); + assert_eq!(s, "[1,2,3]"); +} + +#[test] +fn test_serde_set() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(runtime::builtins::set::Set::from( + vec![v0, v1] + .into_iter() + .collect::>(), + )); + let s = serde_json::to_string(&v2).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("Set".into(), vec![t0]); + let v3 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v2, v3); + assert!((s == r#"[1,2]"#) || (s == r#"[2,1]"#)); +} + +#[test] +fn test_serde_option_some() { + let v0 = Value::from(1); + let v1 = Value::from(runtime::builtins::option::Option::some(Rc::new(v0))); + let s = serde_json::to_string(&v1).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("Option".into(), vec![t0]); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v1, v2); + assert_eq!(s, "1"); +} + +#[test] +fn test_serde_option_none() { + let v0 = Value::from(runtime::builtins::option::Option::none()); + let s = serde_json::to_string(&v0).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("Option".into(), vec![t0]); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v0, v2); + assert_eq!(s, "null"); +} + +#[test] +fn test_serde_result_ok() { + let v0 = Value::from(1); + let v1 = Value::from(runtime::builtins::result::Result::ok(Rc::new(v0))); + let s = serde_json::to_string(&v1).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("Result".into(), vec![t0]); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v1, v2); + assert_eq!(s, r#"{"Ok":1}"#); +} + +#[test] +fn test_serde_result_err() { + let v0 = runtime::builtins::string::String::from("Hello"); + let v1 = Value::from(runtime::builtins::result::Result::error(v0)); + let s = serde_json::to_string(&v1).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = Type::Cons("i32".into(), vec![]); + let t1 = Type::Cons("Result".into(), vec![t0]); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v1, v2); + assert_eq!(s, r#"{"Err":"Hello"}"#); +} + +// #[test] +// fn test_serde_matrix() { +// use compiler::builtins::Matrix; +// let v9 = Value::from(Matrix::I32(runtime::builtins::matrix::Matrix::zeros( +// vec![2, 2].into(), +// ))); +// let s = serde_json::to_string(&v9).unwrap(); +// let mut de = serde_json::Deserializer::from_str(&s); +// let t0 = Type::Cons("i32".into(), vec![]); +// let t1 = Type::Cons("Matrix".into(), vec![t0]); +// let v10 = Seed(t1).deserialize(&mut de).unwrap(); +// assert_eq!(v9, v10); +// assert_eq!(s, r#"{"v":1,"dim":[2,2],"data":[0,0,0,0]}"#); +// } + +#[test] +fn test_serde_type_variable() { + let mut de = serde_json::Deserializer::from_str("1"); + let t = Type::Var("a".into()); + assert!(Seed(t).deserialize(&mut de).is_err()); +} + +#[test] +fn test_serde_type_error() { + let mut de = serde_json::Deserializer::from_str("1.0"); + let t = Type::Cons("i32".into(), vec![]); + assert!(Seed(t).deserialize(&mut de).is_err()); +} diff --git a/crates/compiler/tests/source.rs b/crates/compiler/tests/source.rs new file mode 100644 index 0000000..6968450 --- /dev/null +++ b/crates/compiler/tests/source.rs @@ -0,0 +1,6 @@ +#[test] +fn test_source0() { + let mut sources = compiler::diag::Sources::new(); + assert_eq!(sources.add("file0", "val x = 0;"), 0); + assert_eq!(sources.add("file1", "def f() = 1;"), 1); +} diff --git a/crates/compiler/tests/traits.rs b/crates/compiler/tests/traits.rs new file mode 100644 index 0000000..13daa40 --- /dev/null +++ b/crates/compiler/tests/traits.rs @@ -0,0 +1,242 @@ +use compiler::ast::Bound; +use compiler::ast::StmtImpl; +use compiler::infer::Context; +use compiler::infer::solve; +use compiler::infer::unify; +use compiler::util::traits::impl_add; +use compiler::util::traits::impl_clone; +use compiler::util::traits::impl_intoiterator; +use compiler::util::traits::impl_iterator; +use compiler::util::traits::tr_add; +use compiler::util::traits::tr_clone; +use compiler::util::traits::tr_intoiterator; +use compiler::util::traits::tr_iterator; +use compiler::util::traits::ty_add_output; +use compiler::util::traits::ty_intoiterator_intoiter; +use compiler::util::traits::ty_iterator_item; +use compiler::util::ty; +use compiler::util::ty_con; +use compiler::util::ty_gen; +use compiler::util::types::ty_i32; +use compiler::util::types::ty_i64; +use compiler::util::types::ty_stream; +use compiler::util::types::ty_vec; + +fn debug(impls: &[StmtImpl], goal: &Bound) { + println!("impls:"); + for i in impls { + println!(" {}", i); + } + println!("goal: {}", goal); +} + +// impl[T] Clone[Vec[T]] where Clone[T] {} +// Goal: Clone[Vec[i32]] +#[test] +fn test_trait1() { + let impls = [impl_clone(["T"], ty_gen("T"), [])]; + let mut sub = vec![]; + let goal = tr_clone(ty_i32()); + let mut ctx = Context::new(); + + debug(&impls, &goal); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); +} + +// impl Clone[i32] {} +// Goal: Clone[i32] +#[test] +fn test_trait2() { + let impls = [impl_clone([], ty_i32(), [])]; + let mut sub = vec![]; + + let goal = tr_clone(ty_i32()); + let mut ctx = Context::new(); + + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); +} + +// impl[T] Clone[Vec[T]] where Clone[T] {} +// impl Clone[i32] {} +// Goal: Clone[Vec[i32]] +#[test] +fn test_trait3() { + let impls = [ + impl_clone(["T"], ty_vec(ty_gen("T")), [tr_clone(ty_gen("T"))]), + impl_clone([], ty_i32(), []), + ]; + let mut sub = vec![]; + + let goal = tr_clone(ty_vec(ty_i32())); + let mut ctx = Context::new(); + + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); +} + +// impl[T] Clone[Vec[T]] where Clone[T] {} +// impl Clone[i32] {} +// Goal: Clone[Vec[Vec[i32]]] +#[test] +fn test_trait4() { + let impls = [ + impl_clone(["T"], ty_vec(ty_gen("T")), [tr_clone(ty_gen("T"))]), + impl_clone([], ty_i32(), []), + ]; + + let mut sub = vec![]; + let goal = tr_clone(ty_vec(ty_vec(ty_i32()))); + + let mut ctx = Context::new(); + + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); +} + +// impl[T] Iterator[Vec[?T]] { type Item = T; } +// Goal: Iterator[Vec[i32], Item = ?A] +// Unify: i32 and Iterator[Vec[i32]]::Item +#[ignore] +#[test] +fn test_trait5() { + let impls = [impl_iterator(["T"], ty_vec(ty_gen("T")), ty_gen("T"), [])]; + let mut sub = vec![]; + let goal = tr_iterator(ty_vec(ty_i32())); + let mut ctx = Context::new(); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); + let t0 = ty_iterator_item(ty_vec(ty_i32())); + let t1 = ty_i32(); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +// impl Add[i32, i32] { type Output = i32; } +// impl Add[f32, f32] { type Output = f32; } +// Goal: Add[i32, i32, Output = ?X] +#[ignore] +#[test] +fn test_trait6() { + let impls = [ + impl_add([], [ty_i32(), ty_i32()], ty_i32(), []), + impl_add([], [ty("f32"), ty("f32")], ty("f32"), []), + ]; + let mut sub = vec![]; + let goal = tr_add([ty_i32(), ty_i32()]); + let mut ctx = Context::new(); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); + let t0 = ty_add_output([ty_i32(), ty_i32()]); + let t1 = ty_i32(); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +// impl Add[i32, i32] { type Output = i32; } +// impl[T, R] Add[Vec[?T], ?R] where Add[?T, ?R] { +// type Output = Vec[Add[?T, ?R]::Output]; +// } +// Goal: Add[Vec[i32], i32, Output = ?Y] +// Unify: Vec[i32] and Add[Vec[i32], i32]::Output +#[ignore] +#[test] +fn test_trait7() { + let impls = [ + impl_add([], [ty_i32(), ty_i32()], ty_i32(), []), + impl_add( + ["T", "R"], + [ty_vec(ty_gen("T")), ty_gen("R")], + ty_vec(ty_add_output([ty_gen("T"), ty_gen("R")])), + [tr_add([ty_gen("T"), ty_gen("R")])], + ), + ]; + let mut sub = vec![]; + let goal = tr_add([ty_vec(ty_i32()), ty_i32()]); + let mut ctx = Context::new(); + let impls = impls + .into_iter() + .map(|i| i.annotate(&mut ctx)) + .collect::>(); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); + let t0 = ty_add_output([ty_vec(ty_i32()), ty_i32()]); + let t1 = ty_vec(ty_i32()); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +// impl Add[i32, i32] { type Output = i32; } +// impl Add[i64, i32] { type Output = i64; } +// Goal: Add[i64, i32, Output = ?X] +// Unify: i64 and Add[i64, i32]::Output +#[ignore] +#[test] +fn test_trait8() { + let impls = [ + impl_add([], [ty_i32(), ty_i32()], ty_i32(), []), + impl_add([], [ty_i64(), ty_i32()], ty_i64(), []), + ]; + let mut sub = vec![]; + let goal = tr_add([ty_i64(), ty_i32()]); + let mut ctx = Context::new(); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); + let t0 = ty_add_output([ty_i64(), ty_i32()]); + let t1 = ty_i64(); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +// impl[T] IntoIterator[Vec[?T]] { +// type Item = ?T; +// type IntoIter = VecIterator[?T]; +// } +// impl[T] Iterator[VecIterator[?T]] { +// type Item = ?T; +// } +// Goal: IntoIterator[Vec[i32], Item = ?A, IntoIter = ?B] +// Unify: VecIterator[i32] and Vec[i32]::IntoIter +#[ignore] +#[test] +fn test_trait9() { + let impls = [ + impl_intoiterator( + ["T"], + ty_vec(ty_gen("T")), + ty_gen("T"), + ty_con("VecIterator", [ty_gen("T")]), + [], + ), + impl_iterator(["T"], ty_con("VecIterator", [ty_gen("T")]), ty_gen("T"), []), + ]; + let mut sub = vec![]; + let goal = tr_intoiterator(ty_vec(ty_i32())); + let mut ctx = Context::new(); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); + let t0 = ty_intoiterator_intoiter(ty_vec(ty_i32())); + let t1 = ty_con("VecIterator", [ty_i32()]); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +// impl[T] IntoIterator[Vec[?T]] { +// type Item = ?T; +// type IntoIter = VecIterator[?T]; +// } +// impl IntoIterator[Stream[?T]] { +// type Item = ?T; +// type IntoIter = Stream[?T]; +// } +#[test] +fn test_trait10() { + let impls = [ + impl_intoiterator( + ["T"], + ty_vec(ty_gen("T")), + ty_gen("T"), + ty_con("VecIterator", [ty_gen("T")]), + [] + ), + impl_intoiterator( + ["T"], + ty_stream(ty_gen("T")), + ty_gen("T"), + ty_stream(ty_gen("T")), + [] + ), + ]; + + let mut sub = vec![]; + let goal = tr_intoiterator(ty_vec(ty_i32())); + let mut ctx = Context::new(); + assert!(solve(&goal, &impls, &[], &mut sub, &mut ctx).is_some()); +} diff --git a/crates/compiler/tests/unify.rs b/crates/compiler/tests/unify.rs new file mode 100644 index 0000000..2d6f699 --- /dev/null +++ b/crates/compiler/tests/unify.rs @@ -0,0 +1,97 @@ +use compiler::infer::unify; +use compiler::util::ty; +use compiler::util::ty_con; +use compiler::util::ty_var; + +#[test] +fn test_unify_atom0() { + let mut sub = vec![]; + let t0 = ty("i32"); + let t1 = ty("i32"); + assert!(unify(&mut sub, &t0, &t1).is_ok()); + assert!(sub.is_empty()); +} + +#[test] +fn test_unify_atom1() { + let mut sub = vec![]; + let t0 = ty("i32"); + let t1 = ty("i64"); + assert_eq!(unify(&mut sub, &t0, &t1), Err((ty("i32"), ty("i64")))); + assert!(sub.is_empty()); +} + +#[test] +fn test_unify_var0() { + let mut sub = vec![]; + let t0 = ty_var("?T"); + let t1 = ty("i32"); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_var1() { + let mut sub = vec![]; + let t0 = ty("i32"); + let t1 = ty_var("?T"); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_var2() { + let mut sub = vec![]; + let t0 = ty_var("?T"); + let t1 = ty_var("?U"); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_var3() { + let mut sub = vec![("T".into(), ty("i32")), ("U".into(), ty("i32"))]; + let t0 = ty_var("?T"); + let t1 = ty_var("?U"); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_tc0() { + let mut sub = vec![("T".into(), ty("i32"))]; + let t0 = ty_con("Vec", [ty_var("?T")]); + let t1 = ty_con("Vec", [ty("i32")]); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_tc1() { + let mut sub = Vec::new(); + let t0 = ty_con("Vec", [ty_var("?T")]); + let t1 = ty_con("Vec", [ty_var("?U")]); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_tc2() { + let mut sub = vec![("T".into(), ty("i32"))]; + let t0 = ty_con("Vec", [ty_con("Vec", [ty_var("?T")])]); + let t1 = ty_con("Vec", [ty_con("Vec", [ty_var("?U")])]); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_tc3() { + let mut sub = vec![("T".into(), ty_con("Vec", [ty("i32")]))]; + let t0 = ty_con("Vec", [ty_var("?T")]); + let t1 = ty_con("Vec", [ty_con("Vec", [ty("i32")])]); + assert!(unify(&mut sub, &t0, &t1).is_ok()); +} + +#[test] +fn test_unify_tc4() { + let mut sub = vec![("?T".into(), ty("i32"))]; + let t0 = ty_con("Vec", [ty_var("?T")]); + let t1 = ty_con("Vec", [ty("i64")]); + assert_eq!( + unify(&mut sub, &t0, &t1), + Err((ty_con("Vec", [ty("i32")]), t1)) + ); +} diff --git a/crates/config/Cargo.toml b/crates/config/Cargo.toml new file mode 100644 index 0000000..8151764 --- /dev/null +++ b/crates/config/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "config" +version.workspace = true +edition.workspace = true + +[features] +parse = ["clap"] + +[dependencies] +clap = { version = "4.4.16", features = ["derive", "string"], optional = true } diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs new file mode 100644 index 0000000..19e8b00 --- /dev/null +++ b/crates/config/src/lib.rs @@ -0,0 +1,31 @@ +use std::path::PathBuf; + +#[cfg(feature = "clap")] +fn history() -> std::ffi::OsString { + std::env::temp_dir() + .join("aqua") + .join("history.txt") + .into_os_string() +} + +#[derive(Debug, Default, Clone)] +#[cfg_attr(feature = "clap", derive(clap::Parser))] +pub struct Config { + /// Read source from file + pub file: Option, + /// Loads file statement-by-statement into the REPL. + #[cfg_attr(feature = "clap", clap(long))] + pub interactive: bool, + /// Print version + #[cfg_attr(feature = "clap", clap(long))] + pub version: bool, + #[cfg_attr(feature = "clap", clap(long, default_value = history()))] + pub history: PathBuf, +} + +#[cfg(feature = "clap")] +impl Config { + pub fn parse() -> Self { + ::parse() + } +} diff --git a/crates/macros/.DS_Store b/crates/macros/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a874b5768f336915163bb88cd434575b859f936 GIT binary patch literal 6148 zcmeH~Jr2S!425ml0g0s}V-^m;4I%_5-~tF3k&vj^b9A16778<}(6eNJu~Vz<8=6`~ zboab&MFtUB!i}=AFfm2m$tVxGT*u4pe81nUlA49C} z?O@64YO)2RT{MRe%{!}2F))pG(Sih~)xkgosK7*lF7m<7{{#Hn{6A@7N(HFEpDCdI z{j+?hCuCh!N@BV}~~!FyM@Fk^OtXxgFkvG0gZo?)1Uu zjLY#doLE!4{}$=6K2f6- zkOFfB?sM6B{ePza(f`j$T1f#Za8nA{YWuR?@Jdx%7nk!|+vt0`=X}%MI1dVkD96Mo i$6RSw@pkx7C7R^SIri5L_B literal 0 HcmV?d00001 diff --git a/crates/macros/src/lib.rs b/crates/macros/src/lib.rs new file mode 100644 index 0000000..de7c196 --- /dev/null +++ b/crates/macros/src/lib.rs @@ -0,0 +1,47 @@ +use proc_macro::TokenStream; + +mod proc_macro_attrs; +mod proc_macro_derives; +mod proc_macros; +pub(crate) mod utils; + +#[proc_macro_derive(Send)] +pub fn derive_send(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_send(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(Sync)] +pub fn derive_sync(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_sync(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(Unpin)] +pub fn derive_unpin(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_unpin(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(DeepClone)] +pub fn derive_deep_clone(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_deep_clone(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(Timestamp, attributes(timestamp))] +pub fn derive_extract_timestamp(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_extract_timestamp(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(New)] +pub fn derive_new(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_new(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +/// Unwraps a value out of an enum-variant. Panics if it's the wrong variant. +#[proc_macro] +pub fn unwrap(input: TokenStream) -> TokenStream { + proc_macros::unwrap(input) +} + +#[proc_macro_attribute] +pub fn data(_attr: TokenStream, input: TokenStream) -> TokenStream { + proc_macro_attrs::data(syn::parse_macro_input!(input as syn::DeriveInput)) +} diff --git a/crates/macros/src/proc_macro_attrs.rs b/crates/macros/src/proc_macro_attrs.rs new file mode 100644 index 0000000..5bf1754 --- /dev/null +++ b/crates/macros/src/proc_macro_attrs.rs @@ -0,0 +1,12 @@ +use proc_macro as pm; + +#[allow(unused)] +pub(crate) fn data(mut item: syn::DeriveInput) -> pm::TokenStream { + quote::quote! { + #[derive(Debug, Clone, Send, DeepClone, serde::Serialize, serde::Deserialize, Timestamp, New)] + #[serde(crate = "runtime::prelude::serde")] + // #[serde(bound(deserialize = ""))] + #item + } + .into() +} diff --git a/crates/macros/src/proc_macro_attrs/.DS_Store b/crates/macros/src/proc_macro_attrs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e7febe5418bc5a722d2b96aa95d364dcba1295e4 GIT binary patch literal 6148 zcmeHKyG{c^3>-rwBBe=5xxc_4oTBgrd;qUYffOlH5|s8jew*ro-Z9)~TDVCKQX? z>2DDZ>k?(ffEc)B;5xTU@BjDIU*`YIB<;k282DEV*lhi pm::TokenStream { + let mut inputs = item.sig.inputs.clone().into_iter().collect::>(); + let fn_name = &item.sig.ident; + let name = crate::utils::new_id(format!("export_{}", fn_name)); + let output = &item.sig.output; + let (impl_generics, _, where_clause) = item.sig.generics.split_for_impl(); + let (ids, tys): (Vec<_>, Vec<_>) = inputs + .iter() + .map(|i| match i { + syn::FnArg::Receiver(_) => unreachable!(), + syn::FnArg::Typed(i) => (&i.pat, &i.ty), + }) + .unzip(); + if item.sig.asyncness.is_some() { + quote! { + #item + pub async fn #name #impl_generics ((#(#ids,)*):(#(#tys,)*)) #output #where_clause { + #fn_name(#(#ids,)*).await + } + } + } else { + quote! { + #item + pub fn #name #impl_generics ((#(#ids,)*):(#(#tys,)*)) #output #where_clause { + #fn_name(#(#ids,)*) + } + } + } + .into() +} diff --git a/crates/macros/src/proc_macro_attrs/export/impls.rs b/crates/macros/src/proc_macro_attrs/export/impls.rs new file mode 100644 index 0000000..832937f --- /dev/null +++ b/crates/macros/src/proc_macro_attrs/export/impls.rs @@ -0,0 +1,67 @@ +use proc_macro as pm; +use quote::quote; + +pub(crate) fn export(_attr: syn::AttributeArgs, item: syn::ItemImpl) -> pm::TokenStream { + let mut functions = Vec::new(); + let ty_name = if let syn::Type::Path(x) = item.self_ty.as_ref() { + &x.path.segments.last().unwrap().ident + } else { + unreachable!("Found non-path type in impl") + }; + let (_, ty_generics, _) = item.generics.split_for_impl(); + let impl_generics = &item.generics.params; + let where_clause = &item.generics.where_clause; + for item in &item.items { + if let syn::ImplItem::Method(item) = item { + let mut inputs = item.sig.inputs.clone().into_iter().collect::>(); + let method_name = &item.sig.ident; + let name = crate::utils::new_id(format!("{}_{}", ty_name, method_name)); + let output = &item.sig.output; + // Replace receiver with parameter + if let Some(syn::FnArg::Receiver(r)) = inputs.first() { + assert!(r.reference.is_none(), "Found reference to receiver"); + inputs[0] = syn::parse_quote!(self_param: #ty_name #ty_generics); + } + let (ids, tys): (Vec<_>, Vec<_>) = inputs + .iter() + .map(|i| match i { + syn::FnArg::Receiver(_) => unreachable!(), + syn::FnArg::Typed(i) => (&i.pat, &i.ty), + }) + .unzip(); + // Merge generics and predicates + let generics = match (&item.sig.generics.params, impl_generics) { + (gs0, gs1) if !gs0.is_empty() && !gs1.is_empty() => quote!(<#gs0, #gs1>), + (gs0, _) if !gs0.is_empty() => quote!(<#gs0>), + (_, gs1) if !gs1.is_empty() => quote!(<#gs1>), + _ => quote!(), + }; + let where_clause = match (where_clause, &item.sig.generics.where_clause) { + (Some(w0), Some(w1)) => quote!(where #w0, #w1), + (Some(w), None) | (None, Some(w)) => quote!(where #w), + (None, None) => quote!(), + }; + // Construct wrapper + let item = if item.sig.asyncness.is_some() { + quote! { + pub async fn #name #generics ((#(#ids,)*):(#(#tys,)*)) #output #where_clause { + #ty_name::#method_name(#(#ids,)*).await + } + } + } else { + quote! { + pub fn #name #generics (#(#ids: #tys,)*) #output #where_clause { + #ty_name::#method_name(#(#ids,)*) + } + } + }; + functions.push(item); + } + } + + quote::quote!( + #item + #(#functions)* + ) + .into() +} diff --git a/crates/macros/src/proc_macro_attrs/rewrite/.DS_Store b/crates/macros/src/proc_macro_attrs/rewrite/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bd2ca2d0ac7c369fb4a7ec0fd685030a235a5462 GIT binary patch literal 6148 zcmeH~JqiLr422W5Sg_gBavBfd4TeQe-~~i21q-p2Il3=D2)kN~$O|NIl9?#`6+0Ud z(cymHi1Z@T!A)gtVPcA0<#E29F30QjGTNPG7H9Aqll{?QCL}-tBtQZrKmtEO!0v5W zw+v+@0TLjA7Xf=e6u47N#UX0)Iw87u)@I xz(eKT`u2EMKV;R`4G#6=2&0bxBz6_A;BMG2wt&{u7K#dt9|Denfdsxv;0YdB4+j7M literal 0 HcmV?d00001 diff --git a/crates/macros/src/proc_macro_attrs/rewrite/enums.rs b/crates/macros/src/proc_macro_attrs/rewrite/enums.rs new file mode 100644 index 0000000..f545ffc --- /dev/null +++ b/crates/macros/src/proc_macro_attrs/rewrite/enums.rs @@ -0,0 +1,25 @@ +use proc_macro as pm; +use quote::quote; + +#[allow(unused)] +pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemEnum) -> pm::TokenStream { + item.vis = syn::parse_quote!(pub); + item.generics.params.iter_mut().for_each(|g| { + if let syn::GenericParam::Type(t) = g { + t.bounds.push(syn::parse_quote!(Data)) + } + }); + + let (impl_generics, type_generics, where_clause) = item.generics.split_for_impl(); + + let variant_id = item.variants.iter().map(|v| &v.ident).collect::>(); + + quote!( + use prelude::*; + + #[derive(Clone, Debug, Unpin, Serialize, Deserialize)] + #[serde(bound = "")] + #item + ) + .into() +} diff --git a/crates/macros/src/proc_macro_attrs/rewrite/externs.rs b/crates/macros/src/proc_macro_attrs/rewrite/externs.rs new file mode 100644 index 0000000..fbf5765 --- /dev/null +++ b/crates/macros/src/proc_macro_attrs/rewrite/externs.rs @@ -0,0 +1,19 @@ +use proc_macro as pm; + +pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemFn) -> pm::TokenStream { + let unmangled: syn::Path = crate::utils::get_attr_val("unmangled", &attr); + let ids = item.sig.inputs.iter().map(|arg| { + if let syn::FnArg::Typed(p) = arg { + p.pat.as_ref() + } else { + unreachable!() + } + }); + item.sig.abi = None; + if item.sig.asyncness.is_some() { + item.block = syn::parse_quote!({ #unmangled(#(#ids),*).await }); + } else { + item.block = syn::parse_quote!({ #unmangled(#(#ids),*) }); + } + quote::quote!(#item).into() +} diff --git a/crates/macros/src/proc_macro_attrs/rewrite/functions.rs b/crates/macros/src/proc_macro_attrs/rewrite/functions.rs new file mode 100644 index 0000000..52305df --- /dev/null +++ b/crates/macros/src/proc_macro_attrs/rewrite/functions.rs @@ -0,0 +1,10 @@ +use proc_macro as pm; + +pub(crate) fn rewrite(_attr: syn::AttributeArgs, mut item: syn::ItemFn) -> pm::TokenStream { + item.sig.generics.params.iter_mut().for_each(|p| { + if let syn::GenericParam::Type(p) = p { + p.bounds.push(syn::parse_quote!(Data)); + } + }); + quote::quote!(#item).into() +} diff --git a/crates/macros/src/proc_macro_attrs/rewrite/main.rs b/crates/macros/src/proc_macro_attrs/rewrite/main.rs new file mode 100644 index 0000000..f1dec39 --- /dev/null +++ b/crates/macros/src/proc_macro_attrs/rewrite/main.rs @@ -0,0 +1,5 @@ +use proc_macro as pm; + +pub(crate) fn rewrite(_attr: syn::AttributeArgs, _item: syn::ItemFn) -> pm::TokenStream { + todo!() +} diff --git a/crates/macros/src/proc_macro_attrs/rewrite/structs.rs b/crates/macros/src/proc_macro_attrs/rewrite/structs.rs new file mode 100644 index 0000000..66ab7ec --- /dev/null +++ b/crates/macros/src/proc_macro_attrs/rewrite/structs.rs @@ -0,0 +1,51 @@ +use proc_macro as pm; +use quote::quote; + +#[allow(unused)] +pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemStruct) -> pm::TokenStream { + item.vis = syn::parse_quote!(pub); + item.fields.iter_mut().for_each(|field| { + field.vis = syn::parse_quote!(pub); + }); + item.generics.params.iter_mut().for_each(|g| { + if let syn::GenericParam::Type(t) = g { + t.bounds.push(syn::parse_quote!(Data)) + } + }); + let (impl_generics, type_generics, where_clause) = item.generics.split_for_impl(); + + let wrapper_id = item.ident.clone(); + item.ident = crate::utils::new_id(format!("_{}", wrapper_id)); + let id = &item.ident; + + let field_id = item.fields.iter().map(|f| &f.ident).collect::>(); + + let (inner_type, inner_expr) = + if crate::utils::has_meta_key("compact", &crate::utils::get_metas(&attr)) { + (quote::quote!(#id #type_generics), quote::quote!(data)) + } else { + ( + quote::quote!(Rc<#id #type_generics>), + quote::quote!(Rc::new(data)), + ) + }; + + quote!( + use prelude::*; + + #[derive(Clone, Debug, Unpin, Serialize, Deserialize)] + #[serde(bound = "")] + pub struct #wrapper_id #impl_generics(pub #inner_type) #where_clause; + + impl #impl_generics #wrapper_id #type_generics #where_clause { + pub fn new(data: #id #type_generics) -> Self { + Self(#inner_expr) + } + } + + #[derive(Clone, Debug, Unpin, Serialize, Deserialize)] + #[serde(bound = "")] + #item + ) + .into() +} diff --git a/crates/macros/src/proc_macro_derives.rs b/crates/macros/src/proc_macro_derives.rs new file mode 100644 index 0000000..9617ae5 --- /dev/null +++ b/crates/macros/src/proc_macro_derives.rs @@ -0,0 +1,165 @@ +use proc_macro::TokenStream; +use syn::TypeParam; + +pub fn derive_send(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + quote::quote!(unsafe impl #impl_generics Send for #name #type_generics #where_clause {}).into() +} + +pub fn derive_sync(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + quote::quote!(unsafe impl #impl_generics Sync for #name #type_generics #where_clause {}).into() +} + +pub fn derive_unpin(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + quote::quote!(impl #impl_generics Unpin for #name #type_generics #where_clause {}).into() +} + +pub fn derive_deep_clone(mut input: syn::DeriveInput) -> TokenStream { + for param in &mut input.generics.params { + if let syn::GenericParam::Type(TypeParam { bounds, .. }) = param { + bounds.push(syn::parse_quote!(DeepClone)); + } + } + + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + match &input.data { + syn::Data::Struct(data) => { + let fields = data.fields.iter().enumerate().map(|(i, field)| { + if let Some(name) = &field.ident { + quote::quote!(#name: <_ as DeepClone>::deep_clone(&self.#name)) + } else { + let index = syn::Index::from(i); + quote::quote!(#index: <_ as DeepClone>::deep_clone(&self.#index)) + } + }); + quote::quote!( + impl #impl_generics DeepClone for #name #type_generics #where_clause { + #[inline(always)] + fn deep_clone(&self) -> Self { + Self { + #(#fields),* + } + } + } + ) + .into() + } + syn::Data::Enum(data) => { + let variants = data.variants.iter().map(|variant| { + let name = &variant.ident; + let names = variant.fields.iter().enumerate().map(|(i, field)| { + if let Some(name) = &field.ident { + quote::quote!(#name) + } else { + let index = syn::Index::from(i); + let id = + syn::Ident::new(&format!("field{}", i), proc_macro2::Span::call_site()); + quote::quote!(#index: #id) + } + }); + let fields = variant.fields.iter().enumerate().map(|(i, field)| { + if let Some(name) = &field.ident { + quote::quote!(#name: <_ as DeepClone>::deep_clone(&self.#name)) + } else { + let index = syn::Index::from(i); + let id = + syn::Ident::new(&format!("field{}", i), proc_macro2::Span::call_site()); + quote::quote!(#index: <_ as DeepClone>::deep_clone(#id)) + } + }); + quote::quote!(Self::#name { #(#names),* } => Self::#name { #(#fields),* }) + }); + quote::quote!( + impl #impl_generics DeepClone for #name #type_generics #where_clause { + #[inline(always)] + fn deep_clone(&self) -> Self { + match self { + #(#variants),* + } + } + } + ) + .into() + } + syn::Data::Union(_) => unreachable!(), + } +} + +pub(crate) fn derive_extract_timestamp(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + + let timestamp_field = if let syn::Data::Struct(data) = &input.data { + data.fields + .iter() + .find_map(|f| { + f.attrs + .iter() + .find_map(|attr| attr.path().is_ident("timestamp").then(|| Some(f))) + }) + .flatten() + } else { + None + }; + + if let Some(field) = timestamp_field { + let field_name = &field.ident; + quote::quote! { + impl #impl_generics ::runtime::traits::Timestamp for #name #type_generics #where_clause { + #[inline(always)] + fn timestamp(&self) -> Time { + Time::from_milliseconds(self.#field_name as i128) + } + } + } + .into() + } else { + quote::quote!().into() + } +} + +pub(crate) fn derive_new(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = input.ident; + let vis = input.vis; + + let fields = if let syn::Data::Struct(data) = input.data { + if let syn::Fields::Named(fields) = data.fields { + fields.named + } else { + panic!("#[derive(New)] only supports structs with named fields"); + } + } else { + panic!("#[derive(New)] only supports structs"); + }; + + let params = fields.iter().map(|f| { + let name = &f.ident; + let ty = &f.ty; + quote::quote! { #name: #ty } + }); + + let init_fields = fields.iter().map(|f| { + let name = &f.ident; + quote::quote! { #name: #name } + }); + + let gen = quote::quote! { + impl #impl_generics #name #type_generics #where_clause { + #[inline(always)] + #vis fn new(#(#params),*) -> Self { + Self { + #(#init_fields),* + } + } + } + }; + + gen.into() +} diff --git a/crates/macros/src/proc_macros.rs b/crates/macros/src/proc_macros.rs new file mode 100644 index 0000000..f9baf40 --- /dev/null +++ b/crates/macros/src/proc_macros.rs @@ -0,0 +1,8 @@ +use proc_macro::TokenStream; + +pub fn unwrap(input: TokenStream) -> TokenStream { + let mut iter = input.into_iter(); + let expr: syn::Expr = crate::utils::parse(&mut iter); + let path: syn::Path = crate::utils::parse(&mut iter); + quote::quote!(if let #path(v) = &#expr { v.clone() } else { unreachable!() }).into() +} diff --git a/crates/macros/src/utils.rs b/crates/macros/src/utils.rs new file mode 100644 index 0000000..050af0e --- /dev/null +++ b/crates/macros/src/utils.rs @@ -0,0 +1,12 @@ +use proc_macro as pm; + +pub(crate) fn parse(input: &mut impl Iterator) -> T { + let mut stream = pm::TokenStream::new(); + for token in input.by_ref() { + match token { + pm::TokenTree::Punct(t) if t.as_char() == ',' => break, + _ => stream.extend([token]), + } + } + syn::parse::(stream).unwrap() +} diff --git a/crates/opt/Cargo.lock b/crates/opt/Cargo.lock new file mode 100644 index 0000000..fdcf679 --- /dev/null +++ b/crates/opt/Cargo.lock @@ -0,0 +1,221 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "algebraic-solver2" +version = "0.1.0" +dependencies = [ + "egg", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "egg" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96beaf9d35dbc4686bc86a4ecb851fd6a406f0bf32d9f646b1225a5c5cf5b5d7" +dependencies = [ + "env_logger", + "fxhash", + "hashbrown", + "indexmap", + "instant", + "log", + "smallvec", + "symbol_table", + "symbolic_expressions", + "thiserror", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "log", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "symbol_table" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32bf088d1d7df2b2b6711b06da3471bc86677383c57b27251e18c56df8deac14" +dependencies = [ + "ahash", + "hashbrown", +] + +[[package]] +name = "symbolic_expressions" +version = "5.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c68d531d83ec6c531150584c42a4290911964d5f0d79132b193b67252a23b71" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" diff --git a/crates/opt/Cargo.toml b/crates/opt/Cargo.toml new file mode 100644 index 0000000..2e83c8e --- /dev/null +++ b/crates/opt/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "opt" +version.workspace = true +edition.workspace = true + +[dependencies] +egg = "0.9.5" diff --git a/crates/opt/src/analysis.rs b/crates/opt/src/analysis.rs new file mode 100644 index 0000000..449d693 --- /dev/null +++ b/crates/opt/src/analysis.rs @@ -0,0 +1,58 @@ +#![allow(unused)] +use std::collections::HashSet; + +use egg::merge_option; +use egg::Analysis; +use egg::DidMerge; +use egg::Id; +use egg::PatternAst; + +use crate::lang::AquaLang; + +pub struct PartialEval; + +#[derive(Debug)] +pub struct Data { + free: HashSet, + constant: Option<(AquaLang, PatternAst)>, +} + +// impl Analysis for PartialEval { +// type Data = Data; +// +// fn make(egraph: &egg::EGraph, enode: &AquaLang) -> Self::Data { +// let f = |i: &Id| egraph[*i].data.free.iter().cloned(); +// let mut free = HashSet::default(); +// match enode { +// AquaLang::Var(v) => { +// free.insert(*v); +// } +// AquaLang::Let([v, a, b]) => { +// free.extend(f(b)); +// free.remove(v); +// free.extend(f(a)); +// } +// AquaLang::Lambda([v, a]) | AquaLang::Fix([v, a]) => { +// free.extend(f(a)); +// free.remove(v); +// } +// _ => enode.for_each(|c| free.extend(&egraph[c].data.free)), +// } +// let constant = eval(egraph, enode); +// Data { constant, free } +// } +// +// fn merge(&mut self, to: &mut Self::Data, from: Self::Data) -> egg::DidMerge { +// let before_len = to.free.len(); +// // to.free.extend(from.free); +// to.free.retain(|i| from.free.contains(i)); +// // compare lengths to see if I changed to or from +// DidMerge( +// before_len != to.free.len(), +// to.free.len() != from.free.len(), +// ) | merge_option(&mut to.constant, from.constant, |a, b| { +// assert_eq!(a.0, b.0, "Merged non-equal constants"); +// DidMerge(false, false) +// }) +// } +// } diff --git a/crates/opt/src/cost.rs b/crates/opt/src/cost.rs new file mode 100644 index 0000000..7bf1753 --- /dev/null +++ b/crates/opt/src/cost.rs @@ -0,0 +1,20 @@ +use egg::CostFunction; +use egg::Language; + +use crate::lang::AquaLang; + +pub struct Inverter; + +impl CostFunction for Inverter { + type Cost = usize; + + fn cost(&mut self, enode: &AquaLang, mut costs: C) -> Self::Cost + where + C: FnMut(egg::Id) -> Self::Cost, + { + match enode { + AquaLang::Symbol(s) if s.as_str() == "x" => 100, + _ => enode.fold(1, |sum, id| sum.saturating_add(costs(id))), + } + } +} diff --git a/crates/opt/src/lang.rs b/crates/opt/src/lang.rs new file mode 100644 index 0000000..e665fc2 --- /dev/null +++ b/crates/opt/src/lang.rs @@ -0,0 +1,56 @@ +use egg::define_language; +use egg::Id; + +define_language! { + pub enum AquaLang { + Num(i32), + Bool(bool), + + "add" = Add([Id; 2]), + "mul" = Mul([Id; 2]), + "div" = Div([Id; 2]), + "sub" = Sub([Id; 2]), + "pow" = Pow([Id; 2]), + "log" = Ln([Id; 2]), + "sqrt" = Sqrt([Id; 1]), + "sin" = Sin([Id; 1]), + "cos" = Cos([Id; 1]), + + "inv" = Inv([Id; 1]), + + "eq" = Eq([Id; 2]), + "le" = Le([Id; 2]), + "lt" = Lt([Id; 2]), + "and" = And([Id; 2]), + "or" = Or([Id; 2]), + "not" = Not([Id; 1]), + + "if" = If([Id; 3]), + + "min" = Min([Id; 2]), + "max" = Max([Id; 2]), + + "fun" = Fun(Vec), + "call" = Call([Id; 2]), + "compose" = Compose([Id; 2]), + "_" = Wild, + "seq" = Seq([Id; 2]), + "val" = Val([Id; 3]), + "use" = Use([Id; 1]), + + "tuple" = Tuple(Vec), + + "map" = Map([Id; 1]), + "filter" = Filter([Id; 1]), + "filtermap" = FilterMap([Id; 1]), + "fold" = Fold([Id; 3]), + "foldmap" = FoldMap([Id; 4]), + + "enum" = Enum([Id; 3]), + "pair" = Pair([Id; 2]), + "fst" = Fst([Id; 1]), + "snd" = Snd([Id; 1]), + + Symbol(egg::Symbol), + } +} diff --git a/crates/opt/src/lib.rs b/crates/opt/src/lib.rs new file mode 100644 index 0000000..a85dc24 --- /dev/null +++ b/crates/opt/src/lib.rs @@ -0,0 +1,103 @@ +pub mod rules; +pub mod lang; +pub mod analysis; +pub mod cost; +use lang::AquaLang; + +use egg::*; + +fn paren(s: &str) -> String { + if s.starts_with('(') { + s.to_string() + } else { + format!("({})", s) + } +} + +pub struct Solver(Vec>); + +impl Solver { + pub fn new() -> Self { + Self(vec![]) + } + pub fn load(mut self, rules: Vec>) -> Self { + self.0.extend(rules); + self + } + + pub fn check_associativity(&self, expr: &str) -> Result<(), String> { + let lhs = paren( + &expr + .replace("?x", &paren(&expr.replace("?x", "a").replace("?y", "b"))) + .replace("?y", "c"), + ); + + let rhs = paren( + &expr + .replace("?x", "a") + .replace("?y", &paren(&expr.replace("?x", "b").replace("?y", "c"))), + ); + + self.check(&lhs, &rhs) + } + + // f(x, y) = f(y, x) + pub fn check_commutativity(&self, expr: &str) -> Result<(), String> { + let lhs = paren(&expr.replace("?x", "a").replace("?y", "b")); + let rhs = paren(&expr.replace("?x", "b").replace("?y", "a")); + + self.check(&lhs, &rhs) + } + + pub fn check(&self, lhs: &str, rhs: &str) -> Result<(), String> { + println!("Checking {} == {}", lhs, rhs); + let start = lhs.parse().unwrap(); + let goals = [rhs.parse().unwrap()]; + + let runner = Runner::default() + .with_explanations_enabled() + .with_expr(&start); + + let id = runner.egraph.find(*runner.roots.last().unwrap()); + let goals_vec = goals.to_vec(); + + let mut runner = runner + .with_hook(move |r| { + if goals_vec + .iter() + .all(|g: &Pattern<_>| g.search_eclass(&r.egraph, id).is_some()) + { + Err("Proved all goals".into()) + } else { + Ok(()) + } + }) + .run(&self.0); + + for (i, goal) in goals.iter().enumerate() { + for goal in goals.iter() { + if let Some(matches) = goal.search_eclass(&runner.egraph, id) { + let subst = matches.substs[0].clone(); + runner = runner.without_explanation_length_optimization(); + let mut explained = runner.explain_matches(&start, &goal.ast, &subst); + explained.get_string_with_let(); + let flattened = explained.make_flat_explanation().clone(); + let vanilla_len = flattened.len(); + explained.check_proof(&self.0); + + runner = runner.with_explanation_length_optimization(); + let mut explained_short = runner.explain_matches(&start, &goal.ast, &subst); + explained_short.get_string_with_let(); + let short_len = explained_short.get_flat_strings().len(); + assert!(short_len <= vanilla_len); + explained_short.check_proof(&self.0); + } + } + if goal.search_eclass(&runner.egraph, id).is_none() { + return Err(format!("Goal {} not proved: {start} != {goal}", i)); + } + } + + Ok(()) + } +} diff --git a/crates/opt/src/rules.rs b/crates/opt/src/rules.rs new file mode 100644 index 0000000..65f1f17 --- /dev/null +++ b/crates/opt/src/rules.rs @@ -0,0 +1,242 @@ +use egg::Analysis; +use egg::Rewrite; + +use egg::rewrite as rw; + +use crate::AquaLang; + +pub fn arithmetic>() -> Vec> { + vec![ + // Addition + rw!("add-0"; "(add ?a 0)" => "?a"), + rw!("add-commutative"; "(add ?a ?b)" => "(add ?b ?a)"), + rw!("add-associative"; "(add ?a (add ?b ?c))" => "(add (add ?a ?b) ?c)"), + // Subtraction + rw!("sub-0"; "(sub ?a 0)" => "?a"), + rw!("sub-cancel"; "(sub ?a ?a)" => "0"), + rw!("sub => add-sub"; "(sub ?a ?b)" => "(add ?a (mul -1 ?b))"), + rw!("sub-semi-associative"; "(sub (sub ?a ?b) ?c)" => "(sub ?a (add ?b ?c))"), + // Multiplication + rw!("mul-0"; "(mul ?a 0)" => "0"), + rw!("mul-1"; "(mul ?a 1)" => "?a"), + rw!("mul-commutative"; "(mul ?a ?b)" => "(mul ?b ?a)"), + rw!("mul-associative"; "(mul ?a (mul ?b ?c))" => "(mul (mul ?a ?b) ?c)"), + // Division + rw!("div-1"; "(div ?a 1)" => "?a"), + rw!("div-cancel"; "(div ?a ?a)" => "1"), + rw!("div => mul-pow"; "(div ?a ?b)" => "(mul ?a (pow ?b -1))"), + rw!("div-semi-associative"; "(div (div ?a ?b) ?c)" => "(div ?a (mul ?b ?c))"), + // Addition-Multiplication + rw!("add-mul-distribute"; "(mul ?a (add ?b ?c))" => "(add (mul ?a ?b) (mul ?a ?c))"), + rw!("add-mul-factor" ; "(add (mul ?a ?b) (mul ?a ?c))" => "(mul ?a (add ?b ?c))"), + // Addition-Subtraction + rw!("add-sub-cancel"; "(sub (add ?a ?x) ?a)" => "?x"), + rw!("sub-add-cancel"; "(add (sub ?a ?x) ?a)" => "?x"), + // Multiplication-Division + rw!("mul-div-cancel"; "(div (mul ?a ?b) ?a)" => "?b"), + rw!("div-mul-cancel"; "(mul (div ?a ?b) ?b)" => "?a"), + ] +} + +pub fn logarithmic>() -> Vec> { + vec![ + // Logarithm + rw!("log-base-1"; "(log 1 ?a)" => "0"), + // Logarithm-Mixed + rw!("log-mul"; "(log ?base (mul ?a ?b))" => "(add (log ?base ?a) (log ?base ?b))"), + rw!("log-div"; "(log ?base (div ?a ?b))" => "(sub (log ?base ?a) (log ?base ?b))"), + rw!("log-pow"; "(log ?base1 (pow ?base2 ?exp))" => "(mul ?base2 (log ?base1 ?exp))"), + rw!("log-log"; "(log ?base (log ?base ?a))" => "?a"), + ] +} + +pub fn power>() -> Vec> { + vec![ + // Power + rw!("pow-exp-0"; "(pow ?base 0)" => "1"), + rw!("pow-exp-1"; "(pow ?base 1)" => "?base"), + rw!("pow-base-0"; "(pow 0 ?exp)" => "0"), + rw!("pow-base-1"; "(pow 1 ?exp)" => "1"), + // Power-Mixed + rw!("pow-mul"; "(mul (pow ?base ?exp1) (pow ?base ?exp2))" => "(pow ?base (add ?exp1 ?exp2))"), + rw!("pow-pow"; "(pow (pow ?base ?exp1) ?exp2)" => "(pow ?base (mul ?exp1 ?exp2))"), + rw!("pow-div"; "(div (pow ?base ?exp1) (pow ?base ?exp2))" => "(pow ?base (sub ?exp1 ?exp2))"), + // Sqrt-pow + rw!("sqrt-pow-2"; "(sqrt (pow ?base 2))" => "?base"), + rw!("pow-2-sqrt"; "(pow (sqrt ?base) 2)" => "?base"), + rw!("sqrt-pow-2-inv"; "?base" => "(sqrt (pow ?base 2))"), + rw!("pow-2-sqrt-inv"; "?base" => "(pow (sqrt ?base) 2)"), + ] +} + +pub fn trigonometric>() -> Vec> { + vec![ + // Sine and Cosine + rw!("sin-sum"; "(sin (add ?a ?b))" => "(add (mul (sin ?a) (cos ?b)) (mul (cos ?a) (sin ?b)))"), + rw!("sin-difference"; "(sin (sub ?a ?b))" => "(sub (mul (sin ?a) (cos ?b)) (mul (cos ?a) (sin ?b)))"), + rw!("cos-sum"; "(cos (add ?a ?b))" => "(sub (mul (cos ?a) (cos ?b)) (mul (sin ?a) (sin ?b)))"), + rw!("cos-difference"; "(cos (sub ?a ?b))" => "(add (mul (cos ?a) (cos ?b)) (mul (sin ?a) (sin ?b)))"), + rw!("sin-double-angle"; "(sin (mul 2 ?a))" => "(mul (mul 2 (sin ?a)) (cos ?a))"), + rw!("cos-double-angle"; "(cos (mul 2 ?a))" => "(sub (pow (cos ?a) 2) (pow (sin ?a) 2))"), + rw!("sin-half-angle"; "(pow (sin (div ?a 2)) 2)" => "(div (sub 1 (cos ?a)) 2)"), + rw!("cos-half-angle"; "(pow (cos (div ?a 2)) 2)" => "(div (add 1 (cos ?a)) 2)"), + rw!("sin-cos-product-to-sum"; "(mul (sin ?a) (cos ?b))" => "(div (add (sin (sub ?a ?b)) (sin (add ?a ?b))) 2)"), + rw!("cos-sin-product-to-sum"; "(mul (cos ?a) (sin ?b))" => "(div (sub (sin (add ?a ?b)) (sin (sub ?a ?b))) 2)"), + rw!("cos-cos-product-to-sum"; "(mul (cos ?a) (cos ?b))" => "(div (add (cos (sub ?a ?b)) (cos (add ?a ?b))) 2)"), + rw!("sin-sin-product-to-sum"; "(mul (sin ?a) (sin ?b))" => "(div (sub (cos (sub ?a ?b)) (cos (add ?a ?b))) 2)"), + rw!("sin-sum-to-product"; "(add (sin ?a) (sin ?b))" => "(mul (mul 2 (sin (div (add ?a ?b) 2))) (cos (div (sub ?a ?b) 2)))"), + rw!("sin-difference-to-product"; "(sub (sin ?a) (sin ?b))" => "(mul (mul 2 (cos (div (add ?a ?b) 2))) (sin (div (sub ?a ?b) 2)))"), + rw!("cos-sum-to-product"; "(add (cos ?a) (cos ?b))" => "(mul (mul 2 (cos (div (add ?a ?b) 2))) (cos (div (sub ?a ?b) 2)))"), + rw!("cos-difference-to-product"; "(sub (cos ?a) (cos ?b))" => "(mul (mul -2 (sin (div (add ?a ?b) 2))) (sin (div (sub ?a ?b) 2)))"), + ] +} + +pub fn logical>() -> Vec> { + vec![ + // Not + rw!("not-not"; "(not (not ?a))" => "?a"), + rw!("not-true"; "(not true)" => "false"), + rw!("not-false"; "(not false)" => "true"), + // And + rw!("and-true"; "(and ?a true)" => "?a"), + rw!("and-false"; "(and ?a false)" => "false"), + rw!("and-associative"; "(and ?a (and ?b ?c))" => "(and (and ?a ?b) ?c)"), + rw!("and-commutative"; "(and ?a ?b)" => "(and ?b ?a)"), + // rw!("and-idempotence"; "(and ?a ?a)" => "?a"), + // Or + rw!("or-true"; "(or ?a true)" => "true"), + rw!("or-false"; "(or ?a false)" => "?a"), + rw!("or-associative"; "(or ?a (or ?b ?c))" => "(or (or ?a ?b) ?c)"), + rw!("or-commutative"; "(or ?a ?b)" => "(or ?b ?a)"), + rw!("or-idempotence"; "(or ?a ?a)" => "?a"), + // Not-And-Or + rw!("and-or-distribute"; "(and ?a (or ?b ?c))" => "(or (and ?a ?b) (and ?a ?c))"), + rw!("or-and-distribute"; "(or ?a (and ?b ?c))" => "(and (or ?a ?b) (or ?a ?c))"), + rw!("not-and"; "(not (and ?a ?b))" => "(or (not ?a) (not ?b))"), + rw!("not-or"; "(not (or ?a ?b))" => "(and (not ?a) (not ?b))"), + ] +} + +pub fn relational>() -> Vec> { + vec![ + // Eq + rw!("eq-reflexive"; "(eq ?a ?a)" => "true"), + rw!("eq-commutative"; "(eq ?a ?b)" => "(eq ?b ?a)"), + rw!("eq-transitive"; "(and (eq ?a ?b) (eq ?b ?c))" => "(eq ?a ?c)"), + // Le + rw!("le-reflexive"; "(le ?a ?a)" => "true"), + rw!("le-antisymmetric"; "(and (le ?a ?b) (le ?b ?a))" => "(eq ?a ?b)"), + rw!("le-transitive"; "(and (le ?a ?b) (le ?b ?c))" => "(le ?a ?c)"), + rw!("le-negate"; "(le ?a ?b)" => "(not (lt ?b ?a))"), + rw!("le-negate-rev"; "(le ?a ?b)" => "(not (lt ?b ?a))"), + rw!("le-decompose"; "(le ?a ?b)" => "(or (lt ?a ?b) (eq ?a ?b))"), + // Lt + rw!("lt-anti-reflexive"; "(lt ?a ?a)" => "false"), + rw!("lt-transitive"; "(and (lt ?a ?b) (lt ?b ?c))" => "(lt ?a ?c)"), + rw!("lt-assymetric"; "(lt ?a ?b)" => "(not (lt ?b ?a))"), + rw!("lt-negate"; "(lt ?a ?b)" => "(not (le ?b ?a))"), + rw!("lt-negate-rev"; "(not (lt ?a ?b))" => "(le ?b ?a)"), + ] +} + +pub fn if_else>() -> Vec> { + vec![ + // If (Flatten) + rw!("if-true"; "(if true ?then ?else)" => "?then"), + rw!("if-false"; "(if false ?then ?else)" => "?else"), + rw!("if-true-false"; "(if ?cond true false)" => "?cond"), + rw!("if-true-true"; "(if ?cond true true)" => "true"), + rw!("if-false-true"; "(if ?cond false true)" => "(not ?cond)"), + rw!("if-false-false"; "(if false ?then ?else)" => "?else"), + rw!("if-elim"; "(if ?cond ?branch ?branch)" => "?branch"), + rw!("if-negate"; "(if (not ?cond) ?branch1 ?branch2)" => "(if ?cond ?branch2 ?branch1)"), + rw!("if-negate-rev"; "(if ?cond ?branch1 ?branch2)" => "(if (not ?cond) ?branch2 ?branch1)"), + rw!("if-associate-1"; "(if ?cond1 (if ?cond2 ?then ?else1) ?else2)" => "(if (and ?cond1 ?cond2) ?then (if ?cond1 ?else1 ?else2))"), + rw!("if-associate-2"; "(if ?cond1 ?then1 (if ?cond2 ?then2 ?else))" => "(if (and ?cond1 (not ?cond2)) ?else (if ?cond1 ?then1 ?then2))"), + rw!("if-cond-swap"; "(if (if ?cond ?a ?b) ?c ?d)" => "(if ?cond (if ?a ?c ?d) (if ?b ?c ?d))"), + rw!("if-cond-elim-then"; "(if ?cond (if ?cond ?a ?b) ?c)" => "(if ?cond ?a ?c)"), + rw!("if-cond-elim-else"; "(if ?cond ?a (if ?cond ?b ?c))" => "(if ?cond ?a ?c)"), + rw!("if-cond-flatten"; "(if ?cond (if ?cond ?a ?b) ?c)" => "(if ?cond ?a ?c)"), + ] +} + +pub fn min_max>() -> Vec> { + vec![ + // Min, Max + rw!("min-associative"; "(min ?a (min ?b ?c))" => "(min (min ?a ?b) ?c)"), + rw!("max-associative"; "(max ?a (max ?b ?c))" => "(max (max ?a ?b) ?c)"), + rw!("min-commutative"; "(min ?a ?b)" => "(min ?b ?a)"), + rw!("max-commutative"; "(max ?a ?b)" => "(max ?b ?a)"), + ] +} + +pub fn inverse>() -> Vec> { + vec![rw!("inv-mul"; "(inv (add (mul ?a ?b) ?c))" => "(div (inv (add ?a ?b))")] +} + +pub fn function>() -> Vec> { + vec![ + rw!("fun-lift"; "?x" => "(fun _ ?x)"), + rw!("compose"; "(compose ?f ?g)" => "(fun a (call ?f (call ?g a)))"), + ] +} + +pub fn for_loop>() -> Vec> { + vec![ + rw!("for-to-fold"; "(for ?x ?iter ?init ?body)" => "(fold ?iter ?init (lambda (?x ?acc) ?body))"), + ] +} + +pub fn filter>() -> Vec> { + vec![ + rw!("filter-filter"; "(filter (filter ?x ?f) ?g)" => "(filter ?x ((fun a (and (call ?f a) (call ?g a))))"), + rw!("filter-2x"; "(filter (filter ?x ?f) ?f)" => "(filter ?x ?f"), + rw!("filter-map"; "(map (filter ?x ?f) ?g)" => "(filtermap (fun a (if (call ?f a) (enum Option Some ?a) (enum Option None unit))))"), + rw!("filter-true"; "(filter ?x (fun ?a true))" => "?x"), + ] +} + +pub fn map>() -> Vec> { + vec![ + rw!("map-map"; "(map (map ?x ?f) ?g)" => "(map ?x (compose ?f ?g))"), + rw!("map-id"; "(map ?x (fun ?a ?a))" => "?x"), + ] +} + +// (fold ?x ?init ?lift ?combine ?lower) +pub fn fold>() -> Vec> { + vec![ + rw!("fold-fusion"; + "(pair (fold ?x ?init0 ?combine0) (fold ?x ?init1 ?combine1))" => + "(fold + ?x + (fun elem (pair (call ?init0 elem) (call ?init1 elem))) + (fun acc (fun elem + (pair + (call (call ?combine0 (fst acc)) elem) + (call (call ?combine1 (snd acc)) elem)))))"), + rw!("fold-sum-mul"; "(fold ?x 0 (fun ?acc (fun ?elem (add ?acc (mul ?const ?elem)))))" => + "(mul ?const (fold ?x 0 (fun ?acc (fun ?elem (add ?acc ?elem)))))"), + ] +} + +pub fn foldmap>() -> Vec> { + vec![ + rw!("fold-to-foldmap"; "(fold (map ?x ?f) ?init ?lift ?combine ?lower)" => + "(fold ?x ?init (compose ?lift ?f) ?combine ?lower)"), + rw!("foldmap-fusion"; "(pair + (foldmap ?x (?id0 ?lift0 ?combine0 ?lower0)) + (foldmap ?x (?id1 ?lift1 ?combine1 ?lower1)) + )" => "(foldmap (?x + (pair ?id0 ?id1) + (fun a (pair (call ?lift0 a) (call ?lift1 a))) + (fun a (fun b (pair (?combine0 (fst a) (fst b) ) + (?combine1 (snd a) (snd b) )))) + (fun a (pair (?lower0 (fst a)) + (?lower1 (snd a))))))"), + rw!("map-fold"; "(fold (map ?x ?f) ?init ?lift ?combine ?lower)" => + "(fold ?x ?init (compose ?lift ?f) ?combine ?lower)"), + rw!("fold-map"; "(map (fold ?x ?init ?lift ?combine ?lower) ?f)" => + "(fold ?x ?init ?lift ?combine (compose ?lower ?f)"), + ] +} diff --git a/crates/opt/tests/basic.rs b/crates/opt/tests/basic.rs new file mode 100644 index 0000000..9ed11f1 --- /dev/null +++ b/crates/opt/tests/basic.rs @@ -0,0 +1,52 @@ +use opt::rules; +use opt::Solver; + +// f(?x,?y) = ?x * ?y +#[test] +fn test_product() { + let f = "(mul ?x ?y)"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_associativity(f).is_ok()); + assert!(solver.check_commutativity(f).is_ok()); +} + +#[test] +fn test_division() { + let f = "(div ?x ?y)"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_associativity(f).is_err()); + assert!(solver.check_commutativity(f).is_err()); +} + +#[test] +fn test_subtraction() { + let f = "(sub ?x ?y)"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_associativity(f).is_err()); + assert!(solver.check_commutativity(f).is_err()); +} + +// sqrt(?x^2) = ?x +// sqrt(?x)^2 = ?x +#[test] +fn test_sqrt_pow() { + let f0 = "(sqrt (pow ?x 2))"; + let f1 = "(pow (sqrt ?x) 2)"; + let solver = Solver::new().load(rules::arithmetic()).load(rules::power()); + + assert!(solver.check(f0, "?x").is_ok()); + assert!(solver.check(f1, "?x").is_ok()); +} + +// f(?x,?y) = ?x + ?y +#[test] +fn test_sum() { + let f = "(add ?x ?y)"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_associativity(f).is_ok()); + assert!(solver.check_commutativity(f).is_ok()); +} diff --git a/crates/opt/tests/dataflow.rs b/crates/opt/tests/dataflow.rs new file mode 100644 index 0000000..82314a9 --- /dev/null +++ b/crates/opt/tests/dataflow.rs @@ -0,0 +1,17 @@ +use opt::rules; +use opt::Solver; + +#[test] +fn test_fold_fold() { + let lhs = "(pair (fold ?x ?init0 ?combine0) (fold ?x ?init1 ?combine1))"; + let rhs = "(fold + ?x + (fun elem (pair (call ?init0 elem) (call ?init1 elem))) + (fun acc (fun elem + (pair + (call (call ?combine0 (fst acc)) elem) + (call (call ?combine1 (snd acc)) elem)))))"; + let s = Solver::new().load(rules::fold()).load(rules::function()); + + assert!(s.check(lhs, rhs).is_ok()); +} diff --git a/crates/opt/tests/udaf.rs b/crates/opt/tests/udaf.rs new file mode 100644 index 0000000..97c838a --- /dev/null +++ b/crates/opt/tests/udaf.rs @@ -0,0 +1,138 @@ +// Commutative = We can keep one partial aggregate +// Associative = We can keep a tree of partial aggregates + +// These tests verify algebraic properties of advanced UDAFs (User Defined Aggregate Functions) +// that contain composite expressions. These tests use an algebraic solver to rewrite the +// expressions to verify if they are commutative and associative. + +use opt::rules; +use opt::Solver; + +// f(?x,?y) = ?x + ?y + 2 +// f(?y,?x) = ?y + ?x + 2 +#[test] +fn test_sum_const() { + let f = "(add (add ?x ?y) 2)"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_associativity(f).is_ok()); + assert!(solver.check_commutativity(f).is_ok()); +} + +// f(?x,?y) = ?x^2 + ?y^2 +#[test] +fn test_pow_sum() { + let f = "(add (pow ?x 2) (pow ?y 2))"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_commutativity(f).is_ok()); + assert!(solver.check_associativity(f).is_err()); +} + +// f(?x,?y) = sqrt(?x^2 + ?y^2) +#[test] +fn test_euclidean_norm() { + let f = "(sqrt (add (pow ?x 2) (pow ?y 2)))"; + let solver = Solver::new().load(rules::arithmetic()).load(rules::power()); + + assert!(solver.check_commutativity(f).is_ok()); + assert!(solver.check_associativity(f).is_ok()); +} + +// f(?x,?y) = ?x * ?y * 2 +#[test] +fn test_product_const() { + let f = "(mul (mul ?x ?y) 2)"; + let solver = Solver::new().load(rules::arithmetic()); + + assert!(solver.check_associativity(f).is_ok()); + assert!(solver.check_commutativity(f).is_ok()); +} + +// Trigonometric functions +// f(?x,?y) = sin(?x) + sin(?y) +#[test] +fn test_sin_sum() { + let f = "(add (sin ?x) (sin ?y))"; + let solver = Solver::new() + .load(rules::arithmetic()) + .load(rules::trigonometric()); + + assert!(solver.check_commutativity(f).is_ok()); + assert!(solver.check_associativity(f).is_err()); +} + +#[test] +fn test_cos_sum() { + let f = "(add (cos ?x) (cos ?y))"; + let solver = Solver::new() + .load(rules::arithmetic()) + .load(rules::trigonometric()); + + assert!(solver.check_commutativity(f).is_ok()); + assert!(solver.check_associativity(f).is_err()); +} + +#[test] +fn test_cond_min() { + let f = "(if (le ?x ?y) ?x ?y)"; + let solver = Solver::new() + .load(rules::relational()) + .load(rules::if_else()); + assert!(solver.check_commutativity(f).is_ok()); + // assert!(solver.check_associativity(f).is_ok()); +} + +#[test] +fn test_cond_max() { + let f = "(if (le ?x ?y) ?y ?x)"; + let solver = Solver::new() + .load(rules::relational()) + .load(rules::if_else()); + + assert!(solver.check_commutativity(f).is_ok()); + // assert!(solver.check_associativity(f).is_ok()); +} + +#[test] +fn test_min() { + let f = "(min ?x ?y)"; + let solver = Solver::new().load(rules::min_max()); + + assert!(solver.check_commutativity(f).is_ok()); + assert!(solver.check_associativity(f).is_ok()); +} + +#[test] +fn test_max() { + let f = "(max ?x ?y)"; + let solver = Solver::new().load(rules::min_max()); + + assert!(solver.check_commutativity(f).is_ok()); + assert!(solver.check_associativity(f).is_ok()); +} + +// #[test] +// fn test_sum_vec() { +// todo!() +// } + +#[test] +fn test_fun() { + let solver = Solver::new().load(rules::function()); + + assert!(solver.check("(fun ?a ?b)", "(fun ?x ?y)").is_ok()); +} + +#[test] +fn test_fun_call() { + let solver = Solver::new(); //.load(rules::function()); + + assert!(solver.check("?x", "?x").is_ok()); +} + +#[test] +fn test_stddev() { + let solver = Solver::new().load(rules::arithmetic()).load(rules::power()); + assert!(solver.check_associativity("(fold)").is_ok()); +} diff --git a/crates/repl/Cargo.toml b/crates/repl/Cargo.toml new file mode 100644 index 0000000..9e3c1dd --- /dev/null +++ b/crates/repl/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "repl" +version.workspace = true +edition.workspace = true + +[dependencies] +compiler = { path = "../compiler" } + +anyhow = { version = "1.0.75" } +regex = { version = "1.10.3" } +rustyline = { version = "13.0.0", features = ["derive", "custom-bindings"] } +colored = { version = "2.0.4" } diff --git a/crates/repl/src/helper/completer.rs b/crates/repl/src/helper/completer.rs new file mode 100644 index 0000000..e48d606 --- /dev/null +++ b/crates/repl/src/helper/completer.rs @@ -0,0 +1,55 @@ +// use compiler_passes_lexer::tokens::KEYWORDS; +use rustyline::completion::Completer; +use rustyline::completion::Pair; +use rustyline::Result; + +pub struct KeywordCompleter; + +impl Default for KeywordCompleter { + fn default() -> Self { + Self::new() + } +} + +impl KeywordCompleter { + pub fn new() -> Self { + Self + } +} + +impl Completer for KeywordCompleter { + type Candidate = Pair; + + fn complete( + &self, + line: &str, + pos: usize, + _ctx: &rustyline::Context<'_>, + ) -> Result<(usize, Vec)> { + todo!() + // let mut start = pos - 1; + // let mut end = pos; + // let chars = line.chars().collect::>(); + // while start > 0 { + // match chars[start] { + // 'a'..='z' => start -= 1, + // _ => break, + // } + // } + // while end < line.len() { + // match chars[end] { + // 'a'..='z' => end += 1, + // _ => break, + // } + // } + // let matches = KEYWORDS + // .into_iter() + // .filter(|cmd| cmd.starts_with(&line[start..end])) + // .map(|x| Pair { + // display: x.to_string(), + // replacement: x.to_string(), + // }) + // .collect(); + // Ok((start, matches)) + } +} diff --git a/crates/repl/src/helper/highlighter.rs b/crates/repl/src/helper/highlighter.rs new file mode 100644 index 0000000..f2c9c6b --- /dev/null +++ b/crates/repl/src/helper/highlighter.rs @@ -0,0 +1,152 @@ +#![allow(unused)] +use std::borrow::Cow; +use std::fmt::Display; + +use colored::Colorize; +use regex::Regex; +use rustyline::highlight::Highlighter; + +pub struct SyntaxHighlighter { + pub regex: Regex, +} + +impl Default for SyntaxHighlighter { + fn default() -> Self { + Self::new() + } +} + +fn join(patterns: impl IntoIterator) -> String { + patterns + .into_iter() + .map(|pattern| pattern.to_string()) + .collect::>() + .join("|") +} + +fn capture_group(name: impl Display, pattern: impl Display) -> String { + format!(r"(?P<{name}>{pattern})") +} + +fn word(pattern: impl Display) -> String { + format!(r"\b(?:{pattern})\b") +} + +fn followed_by(a: impl Display, b: impl Display) -> String { + format!(r"{a} *{b}") +} + +fn maybe(a: impl Display) -> String { + format!(r"(?:{a})?") +} + +impl SyntaxHighlighter { + pub fn new() -> Self { + let pattern = &join([ + capture_group("keyword", word(join(KEYWORDS))), + capture_group("numeric", word(join(NUMERICS))), + capture_group("string", join(STRINGS)), + capture_group("builtin", word(join(BUILTINS))), + capture_group("comment", r"#.*"), + ]); + Self { + regex: Regex::new(pattern).unwrap(), + } + } +} + +impl Highlighter for SyntaxHighlighter { + fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> { + self.regex.replace_all(line, |caps: ®ex::Captures| { + if let Some(s) = caps.name("keyword") { + s.as_str().color(KEYWORD_COLOR).bold().to_string() + } else if let Some(s) = caps.name("numeric") { + s.as_str().color(NUMERIC_COLOR).to_string() + } else if let Some(s) = caps.name("string") { + s.as_str().color(STRING_COLOR).to_string() + } else if let Some(s) = caps.name("builtin") { + s.as_str().color(BUILTIN_COLOR).bold().to_string() + } else if let Some(s) = caps.name("comment") { + s.as_str().color(COMMENT_COLOR).to_string() + } else { + unreachable!() + } + }) + } + + fn highlight_char(&self, line: &str, pos: usize, forced: bool) -> bool { + self.regex.is_match(line) + } +} + +pub const KEYWORDS: &[&str] = &[ + "mod", "and", "as", "break", "continue", "def", "desc", "else", "for", "from", "fun", "group", + "if", "in", "into", "join", "loop", "match", "not", "on", "or", "of", "return", "select", + "compute", "type", "val", "var", "where", "with", "while", "use", "union", "over", "roll", + "order", "enum", +]; + +pub const NUMERICS: &[&str] = &[ + "0[bB][0-1][_0-1]*", + "0[oO][0-7][_0-7]*", + "[0-9][_0-9]*", + "0[xX][0-9a-fA-F][_0-9a-fA-F]*", +]; + +pub const BUILTINS: &[&str] = &["true", "false"]; + +pub const STRINGS: &[&str] = &[r#""([^"\\]|\\.)*""#, r"'[^']'"]; + +pub const COMMENTS: &[&str] = &["#[^\r\n]*", "#[^\n]*"]; + +pub const TYPES: &[&str] = &[ + "i8", + "i16", + "i32", + "i64", + "i128", + "u8", + "u16", + "u32", + "u64", + "u128", + "f32", + "f64", + "Int", + "Float", + "bool", + "char", + "String", + "Vec", + "Option", + "Result", + "Set", + "Dict", + "Stream", + "Matrix", + "File", + "SocketAddr", + "Url", + "Path", + "Duration", + "Time", +]; + +use colored::Color; +use colored::Color::TrueColor; + +const fn rgb(r: u8, g: u8, b: u8) -> Color { + Color::TrueColor { r, g, b } +} + +pub const KEYWORD_COLOR: Color = rgb(0, 95, 135); +pub const MACRO_COLOR: Color = rgb(95, 135, 0); +pub const VAR_COLOR: Color = rgb(255, 0, 0); +pub const VAL_COLOR: Color = rgb(68, 68, 68); +pub const TYPE_COLOR: Color = rgb(0, 135, 0); +pub const DEF_COLOR: Color = rgb(0, 135, 175); +pub const NUMERIC_COLOR: Color = rgb(215, 95, 0); +pub const VARIANT_COLOR: Color = rgb(0, 135, 0); +pub const STRING_COLOR: Color = rgb(95, 135, 0); +pub const BUILTIN_COLOR: Color = rgb(0, 135, 0); +pub const COMMENT_COLOR: Color = rgb(135, 135, 135); diff --git a/crates/repl/src/helper/hinter.rs b/crates/repl/src/helper/hinter.rs new file mode 100644 index 0000000..12ed69e --- /dev/null +++ b/crates/repl/src/helper/hinter.rs @@ -0,0 +1,5 @@ +use rustyline::hint::Hinter; +use rustyline::Hinter; + +use super::Repl; + diff --git a/crates/repl/src/helper/mod.rs b/crates/repl/src/helper/mod.rs new file mode 100644 index 0000000..7a3fd37 --- /dev/null +++ b/crates/repl/src/helper/mod.rs @@ -0,0 +1,153 @@ +use std::borrow::Cow; + +pub mod completer; +pub mod highlighter; +pub mod validator; + +use colored::Color; +use colored::Color::Green; +use colored::Colorize; +use rustyline::completion::Completer; +use rustyline::completion::FilenameCompleter; +use rustyline::completion::Pair; +use rustyline::config::Configurer; +use rustyline::highlight::Highlighter; +use rustyline::highlight::MatchingBracketHighlighter; +use rustyline::hint::Hinter; +use rustyline::hint::HistoryHinter; +use rustyline::history::FileHistory; +use rustyline::validate::MatchingBracketValidator; +use rustyline::validate::ValidationContext; +use rustyline::validate::ValidationResult; +use rustyline::validate::ValidationResult::Incomplete; +use rustyline::validate::ValidationResult::Invalid; +use rustyline::validate::ValidationResult::Valid; +use rustyline::validate::Validator; +use rustyline::Cmd; +use rustyline::CompletionType; +use rustyline::EditMode; +use rustyline::Editor; +use rustyline::KeyCode; +use rustyline::KeyEvent; +use rustyline::Modifiers; +use rustyline::Result; + +use completer::KeywordCompleter; +use highlighter::SyntaxHighlighter; +use validator::StatementValidator; + +pub(crate) struct Helper { + validator1: MatchingBracketValidator, + validator2: StatementValidator, + completer1: FilenameCompleter, + // completer2: KeywordCompleter, + highlighter1: SyntaxHighlighter, + highlighter2: MatchingBracketHighlighter, + hinter: HistoryHinter, + pub(crate) prompt_color: Color, +} + +impl rustyline::Helper for Helper {} + +impl Default for Helper { + fn default() -> Self { + Self { + validator1: MatchingBracketValidator::new(), + validator2: StatementValidator::new(), + completer1: FilenameCompleter::new(), + // completer2: KeywordCompleter::new(), + highlighter1: SyntaxHighlighter::new(), + highlighter2: MatchingBracketHighlighter::new(), + hinter: HistoryHinter {}, + prompt_color: Green, + } + } +} + +impl Helper { + pub(crate) fn new() -> Self { + Self::default() + } +} + +impl Completer for Helper { + type Candidate = Pair; + + fn complete( + &self, + line: &str, + pos: usize, + ctx: &rustyline::Context<'_>, + ) -> Result<(usize, Vec)> { + self.completer1.complete(line, pos, ctx) + // let (start, matches) = self.completer1.complete(line, pos, ctx)?; + // if !matches.is_empty() { + // Ok((start, matches)) + // } else { + // self.completer2.complete(line, pos, ctx) + // } + } +} + +impl Validator for Helper { + fn validate(&self, ctx: &mut ValidationContext) -> Result { + if let r @ (Incomplete | Invalid(_)) = self.validator1.validate(ctx)? { + return Ok(r); + } + if let r @ (Incomplete | Invalid(_)) = self.validator2.validate(ctx)? { + return Ok(r); + } + Ok(Valid(None)) + } +} + +impl Highlighter for Helper { + fn highlight<'l>(&self, line: &'l str, pos: usize) -> Cow<'l, str> { + let line = self.highlighter1.highlight(line, pos); + match line { + Cow::Borrowed(line) => self.highlighter2.highlight(line, pos), + Cow::Owned(line) => match self.highlighter2.highlight(line.as_str(), pos) { + Cow::Borrowed(line) => Cow::Owned(line.to_string()), + Cow::Owned(line) => Cow::Owned(line), + }, + } + } + + fn highlight_prompt<'b, 's: 'b, 'p: 'b>( + &'s self, + prompt: &'p str, + default: bool, + ) -> Cow<'b, str> { + if default { + Cow::Owned(prompt.color(self.prompt_color).to_string()) + } else { + Cow::Borrowed(prompt) + } + } + + fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> { + Cow::Borrowed(hint) + } + + fn highlight_candidate<'c>( + &self, + candidate: &'c str, + completion: CompletionType, + ) -> Cow<'c, str> { + let _ = completion; + Cow::Borrowed(candidate) + } + + fn highlight_char(&self, line: &str, pos: usize, forced: bool) -> bool { + self.highlighter1.highlight_char(line, pos, forced) + || self.highlighter2.highlight_char(line, pos, forced) + } +} + +impl Hinter for Helper { + type Hint = String; + + fn hint(&self, line: &str, pos: usize, ctx: &rustyline::Context<'_>) -> Option { + self.hinter.hint(line, pos, ctx) + } +} diff --git a/crates/repl/src/helper/validator.rs b/crates/repl/src/helper/validator.rs new file mode 100644 index 0000000..333a5be --- /dev/null +++ b/crates/repl/src/helper/validator.rs @@ -0,0 +1,70 @@ +use colored::Color::Blue; +use colored::Colorize; +use rustyline::validate::ValidationContext; +use rustyline::validate::ValidationResult; +use rustyline::validate::Validator; +use rustyline::Result; + +#[derive(Default)] +pub struct StatementValidator; + +impl StatementValidator { + pub fn new() -> Self { + Self + } +} + +impl Validator for StatementValidator { + fn validate(&self, ctx: &mut ValidationContext) -> Result { + let input = ctx.input(); + let stmts = StatementIterator::new(input); + if (stmts.count() > 0 && input.ends_with(';')) || input.ends_with('\n') { + Ok(ValidationResult::Valid(None)) + } else if input.is_empty() { + Ok(ValidationResult::Invalid(Some( + " Enter statement".color(Blue).to_string(), + ))) + } else { + return Ok(ValidationResult::Incomplete); + } + } +} + +pub struct StatementIterator<'a> { + input: &'a str, +} + +impl<'a> StatementIterator<'a> { + pub fn new(input: &'a str) -> Self { + Self { + input: input.trim(), + } + } +} + +impl<'a> Iterator for StatementIterator<'a> { + type Item = &'a str; + + fn next(&mut self) -> Option { + let mut depth = 0; + let mut end = 0; + for (i, c) in self.input.char_indices() { + match c { + '(' | '{' | '[' => depth += 1, + ')' | '}' | ']' => depth -= 1, + ';' if depth == 0 => { + end = i; + break; + } + _ => continue, + } + } + if end == 0 { + None + } else { + let stmt = &self.input[..end + 1].trim(); + self.input = &self.input[end + 1..]; + Some(stmt) + } + } +} diff --git a/crates/repl/src/lib.rs b/crates/repl/src/lib.rs new file mode 100644 index 0000000..786ea1c --- /dev/null +++ b/crates/repl/src/lib.rs @@ -0,0 +1,142 @@ +#![allow(unused)] + +use compiler::ast::Program; +use compiler::Compiler; +use helper::validator::StatementIterator; + +use std::io; +use std::io::LineWriter; +use std::io::Write; +use std::process::exit; +use std::rc::Rc; + +use anyhow::Result; +use colored::Color; +use colored::Color::Blue; +use colored::Color::Green; +use colored::Color::Red; +use colored::Colorize; +use rustyline::completion::FilenameCompleter; +use rustyline::config::Configurer; +use rustyline::error::ReadlineError; +use rustyline::highlight::MatchingBracketHighlighter; +use rustyline::hint::HistoryHinter; +use rustyline::history::FileHistory; +use rustyline::validate::MatchingBracketValidator; +use rustyline::Cmd; +use rustyline::CompletionType; +use rustyline::EditMode; +use rustyline::Editor; +use rustyline::EventHandler; + +pub mod helper; +use crate::helper::Helper; + +use rustyline::history::MemHistory; +use rustyline::KeyCode; +use rustyline::KeyEvent; +use rustyline::Modifiers; + +#[derive(Debug)] +pub struct Repl { + pub(crate) count: usize, + pub(crate) editor: Editor, + pub(crate) compiler: Compiler, +} + +impl Drop for Repl { + fn drop(&mut self) { + self.editor.save_history(&self.compiler.config.history).ok(); + } +} + +impl Repl { + pub fn new(compiler: Compiler) -> Self { + let mut editor = Self::editor(); + if !compiler.config.history.exists() { + std::fs::create_dir_all(compiler.config.history.parent().unwrap()) + .expect("Unable to create history directory"); + std::fs::File::create(&compiler.config.history).expect("Unable to create history"); + } + editor.load_history(&compiler.config.history).ok(); + Self { + count: 0, + editor, + compiler, + } + } + + fn editor() -> Editor { + let mut editor = Editor::new().expect("Unable to create editor"); + editor.set_helper(Some(Helper::default())); + editor + .set_history_ignore_dups(true) + .expect("Unable to set history ignore dups"); + editor.set_edit_mode(EditMode::Vi); + editor.set_completion_type(CompletionType::List); + editor.bind_sequence(KeyEvent::ctrl('j'), Cmd::NextHistory); + editor.bind_sequence(KeyEvent::ctrl('k'), Cmd::PreviousHistory); + editor.bind_sequence(KeyEvent::ctrl('l'), Cmd::ClearScreen); + editor.bind_sequence(KeyEvent::ctrl('c'), Cmd::Interrupt); + editor.bind_sequence(KeyEvent::ctrl('v'), Cmd::YankPop); + editor.bind_sequence( + KeyEvent::ctrl('M'), + Cmd::AcceptOrInsertLine { + accept_in_the_middle: false, + }, + ); + editor.bind_sequence( + KeyEvent(KeyCode::Enter, Modifiers::CTRL), + Cmd::HistorySearchForward, + ); + editor + } + + pub(crate) fn color(&mut self, color: Color) { + self.editor.helper_mut().unwrap().prompt_color = color; + } + + pub(crate) fn readline(&mut self) -> std::result::Result { + self.count += 1; + self.editor.readline(">> ") + } + + pub fn run(&mut self, initial: Option) -> Result<()> { + self.color(Color::Green); + let mut stmts = Some(initial.iter().flat_map(|s| StatementIterator::new(s))); + loop { + let input = stmts + .as_mut() + .and_then(Iterator::next) + .map(|stmt| self.editor.readline_with_initial(">> ", (stmt, ""))) + .unwrap_or_else(|| self.editor.readline(">> ")); + match input { + Ok(input) => { + let input: Rc = Rc::from(input); + self.editor.add_history_entry(input.as_ref()); + match self.compiler.parse(self.count, input, |p| p.parse()) { + Ok(v) => { + println!("{v}"); + self.color(Green); + } + Err((_, s)) => { + println!("{s}"); + self.color(Red); + } + } + } + Err(ReadlineError::Interrupted) => { + stmts = None; + eprintln!("Interrupted"); + self.color(Red); + } + Err(ReadlineError::Eof) => break, + Err(err) => { + eprintln!("Error: {:?}", err); + break; + } + } + } + Ok(()) + } +} diff --git a/crates/runtime/.cargo/config.toml b/crates/runtime/.cargo/config.toml new file mode 100644 index 0000000..bff29e6 --- /dev/null +++ b/crates/runtime/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +rustflags = ["--cfg", "tokio_unstable"] diff --git a/crates/runtime/Cargo.toml b/crates/runtime/Cargo.toml new file mode 100644 index 0000000..cc14f3f --- /dev/null +++ b/crates/runtime/Cargo.toml @@ -0,0 +1,89 @@ +[package] +name = "runtime" +version.workspace = true +edition.workspace = true + +[features] +opt = ["itoa", "atoi", "ryu", "lexical-parse-float", "rustc-hash", "jemalloc", "btree-slab"] +# model = ["ort"] +default = ["opt"] + +[dependencies] +macros = { path = "../macros" } + +# rdkafka = { version = "0.36.2" } +tokio = { version = "1.36.0", features = ["full"] } +tracing = { version = "0.1.40" } +num = { version = "0.4.1" } +derive_more = { version = "0.99.17", features = ["deref", "deref_mut"], default-features = false } + +serde = { version = "1.0.197", features = ["derive", "rc"] } +serde_derive = { version = "1.0.197" } + +serde_json = { version = "1.0.114" } +tokio-stream = { version = "0.1.14" } +tokio-util = { version = "0.7.10", features = ["full"] } +futures = { version = "0.3.30" } + +csv-core = { version = "0.1.11" } + +time = { version = "0.3.34", features = ["serde-human-readable", "std", "macros"] } +# tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } + +# Optimisations + +# Smol +arrayvec = { version = "0.7.4" } +halfbrown = { version = "0.2.4" } +smallvec = "1.13.1" +smol_str = { version = "0.2.1", features = ["serde"] } + +# raw-cpuid = { version = "11.0.1", features = ["serde"] } +rustc-hash = { version = "1.1.0", optional = true } +ryu = { version = "1.0.17", optional = true } +itoa = { version = "1.0.10", optional = true } +lexical-parse-float = { version = "0.8.5", optional = true, default-features = false, features = ["compact"] } +atoi = { version = "2.0.0", optional = true, default-features = false } +smartstring = { version = "1.0.1", optional = true, features = ["serde"] } +btree-slab = { version = "0.6.1", optional = true } + +[target.'cfg(not(target_env = "msvc"))'.dependencies] +jemalloc = { version = "0.5.4", optional = true, package = "tikv-jemallocator" } + +# TODO: Extensions + +# url = { version = "2.5.0", features = ["serde"] } +# sled = { version = "0.34.7" } +# hyper = { version = "1.1.0" } +# once_cell = { version = "1.19.0" } +# ort = { version = "1.16.3" , optional = true } +# num-traits = { version = "0.2.17" } +# ndarray = { version = "0.15.6", features = ["serde"] } +# image = { version = "0.24.8" } + +[dev-dependencies] +criterion = "0.5.1" + +# String +smartstring = "1.0.1" +smol_str = "0.2.1" +smallstr = "0.3.0" +lasso = "0.7.2" + +# Serialisation +serde = { version = "1.0.197", features = ["derive", "rc"] } +ciborium = "0.2.2" # CBOR +rmp = "0.8.12" # MessagePack +flexbuffers = "2.0.0" # FlexBuffers + +# HashMap +halfbrown = "0.2.4" + +# Vec +arrayvec = "0.7.4" + +rand = "0.8.5" + +[[bench]] +name = "vec" +harness = false diff --git a/crates/runtime/benches/iter.rs b/crates/runtime/benches/iter.rs new file mode 100644 index 0000000..dc3d733 --- /dev/null +++ b/crates/runtime/benches/iter.rs @@ -0,0 +1,255 @@ + +// use criterion::{black_box, criterion_group, criterion_main, Criterion}; +// +// fn impl0(c: &mut Criterion) { +// c.bench_function("impl_iterator", |b| { +// b.iter(|| { +// let iter = (0..1_000_000).map(|x| x * 2); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn dyn0(c: &mut Criterion) { +// c.bench_function("boxed_iterator", |b| { +// b.iter(|| { +// let iter: Box> = Box::new((0..1_000_000).map(|x| x * 2)); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn eager0(c: &mut Criterion) { +// c.bench_function("eager_iterator", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .collect::>() +// .into_iter() +// .map(|x| x * 2); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn impl1(c: &mut Criterion) { +// c.bench_function("impl_iterator_complex", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .map(|x| x * 2) +// .filter(|&x| x % 3 == 0) +// .take(500) +// .enumerate() +// .map(|(i, x)| x + i as i32); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn dyn1(c: &mut Criterion) { +// c.bench_function("boxed_iterator_complex", |b| { +// b.iter(|| { +// let iter = Box::new((0..1_000_000).map(|x| x * 2)) as Box>; +// let iter = Box::new(iter.filter(|&x| x % 3 == 0)) as Box>; +// let iter = Box::new(iter.take(500)) as Box>; +// let iter = Box::new(iter.enumerate()) as Box>; +// let iter = Box::new(iter.map(|(i, x)| x + i as i32)) as Box>; +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn eager1(c: &mut Criterion) { +// c.bench_function("eager_iterator_complex", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .collect::>() +// .into_iter() +// .map(|x| x * 2) +// .collect::>() +// .into_iter() +// .filter(|&x| x % 3 == 0) +// .collect::>() +// .into_iter() +// .take(500) +// .collect::>() +// .into_iter() +// .enumerate() +// .collect::>() +// .into_iter() +// .map(|(i, x)| x + i as i32); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn impl2(c: &mut Criterion) { +// c.bench_function("impl_iterator_more_complex", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .map(|x| x * 2) +// .filter(|&x| x % 3 == 0) +// .take(500) +// .enumerate() +// .map(|(i, x)| x + i as i32) +// .skip(100) +// .zip(100..600) +// .fold(0, |acc, (a, b)| acc + a + b); +// black_box(iter); +// }); +// }); +// } +// +// fn dyn2(c: &mut Criterion) { +// c.bench_function("boxed_iterator_more_complex", |b| { +// b.iter(|| { +// let iter = Box::new(0..1_000_000) as Box>; +// let iter = Box::new(iter.map(|x| x * 2)) as Box>; +// let iter = Box::new(iter.filter(|&x| x % 3 == 0)) as Box>; +// let iter = Box::new(iter.take(500)) as Box>; +// let iter = Box::new(iter.enumerate()) as Box>; +// let iter = Box::new(iter.map(|(i, x)| x + i as i32)) as Box>; +// let iter = Box::new(iter.skip(100)) as Box>; +// let iter = Box::new(iter.zip(100..600)) as Box>; +// let result = iter.fold(0, |acc, (a, b)| acc + a + b); +// black_box(result); +// }); +// }); +// } +// +// fn eager2(c: &mut Criterion) { +// c.bench_function("eager_iterator_more_complex", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .collect::>() +// .into_iter() +// .map(|x| x * 2) +// .collect::>() +// .into_iter() +// .filter(|&x| x % 3 == 0) +// .collect::>() +// .into_iter() +// .take(500) +// .collect::>() +// .into_iter() +// .enumerate() +// .collect::>() +// .into_iter() +// .map(|(i, x)| x + i as i32) +// .collect::>() +// .into_iter() +// .skip(100) +// .collect::>() +// .into_iter() +// .zip(100..600) +// .collect::>() +// .into_iter() +// .fold(0, |acc, (a, b)| acc + a + b); +// black_box(iter); +// }); +// }); +// } +// +// fn impl3(c: &mut Criterion) { +// c.bench_function("impl_iterator_maps", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .map(|x| x * 2) +// .map(|x| x + 1) +// .map(|x| x * 3) +// .map(|x| x - 1) +// .map(|x| x / 2) +// .map(|x| x + 1) +// .map(|x| x * 3); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn f1(x: i32) -> i32 { +// x * 2 +// } +// fn f2(x: i32) -> i32 { +// x + 1 +// } +// fn f3(x: i32) -> i32 { +// x * 3 +// } +// fn f4(x: i32) -> i32 { +// x - 1 +// } +// fn f5(x: i32) -> i32 { +// x / 2 +// } +// fn f6(x: i32) -> i32 { +// x + 1 +// } +// fn f7(x: i32) -> i32 { +// x * 3 +// } +// fn impl_fn3(c: &mut Criterion) { +// c.bench_function("impl_iterator_maps", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .map(f1) +// .map(f2) +// .map(f3) +// .map(f4) +// .map(f5) +// .map(f6) +// .map(f7); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn dyn3(c: &mut Criterion) { +// c.bench_function("boxed_iterator_maps", |b| { +// b.iter(|| { +// let iter = Box::new(0..1_000_000) as Box>; +// let iter = Box::new(iter.map(|x| x * 2)) as Box>; +// let iter = Box::new(iter.map(|x| x + 1)) as Box>; +// let iter = Box::new(iter.map(|x| x * 3)) as Box>; +// let iter = Box::new(iter.map(|x| x - 1)) as Box>; +// let iter = Box::new(iter.map(|x| x / 2)) as Box>; +// let iter = Box::new(iter.map(|x| x + 1)) as Box>; +// let iter = Box::new(iter.map(|x| x * 3)) as Box>; +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// fn eager3(c: &mut Criterion) { +// c.bench_function("eager_iterator_maps", |b| { +// b.iter(|| { +// let iter = (0..1_000_000) +// .collect::>() +// .into_iter() +// .map(|x| x * 2) +// .collect::>() +// .into_iter() +// .map(|x| x + 1) +// .collect::>() +// .into_iter() +// .map(|x| x * 3) +// .collect::>() +// .into_iter() +// .map(|x| x - 1) +// .collect::>() +// .into_iter() +// .map(|x| x / 2) +// .collect::>() +// .into_iter() +// .map(|x| x + 1) +// .collect::>() +// .into_iter() +// .map(|x| x * 3); +// black_box(iter.collect::>()); +// }); +// }); +// } +// +// criterion_group!(g0, impl0, dyn0, eager0); +// criterion_group!(g1, impl1, dyn1, eager1); +// criterion_group!(g2, impl2, dyn2, eager2); +// criterion_group!(g3, impl3, dyn3, eager3, impl_fn3); +// criterion_main!(g0, g1, g2, g3); diff --git a/crates/runtime/benches/vec.rs b/crates/runtime/benches/vec.rs new file mode 100644 index 0000000..a268646 --- /dev/null +++ b/crates/runtime/benches/vec.rs @@ -0,0 +1,58 @@ +use criterion::black_box; +use criterion::criterion_group; +use criterion::criterion_main; +use criterion::Criterion; + +use std::cell::RefCell; +use std::rc::Rc; + +fn for_each_iter(c: &mut Criterion) { + c.bench_function("for_each_iter", |b| { + b.iter(|| { + let iter = 0..1_000_000; + iter.for_each(|x| { + black_box(x); + }); + }); + }); +} + +fn for_each_dyn_iter(c: &mut Criterion) { + c.bench_function("for_each_dyn_iter", |b| { + b.iter(|| { + let iter: Box> = Box::new(0..1_000_000); + iter.for_each(|x| { + black_box(x); + }); + }); + }); +} + +fn push_vec(c: &mut Criterion) { + c.bench_function("push_vec", |b| { + b.iter(|| { + let mut v = std::vec::Vec::::with_capacity(1_000_000); + for i in 0..1_000_000 { + let i = black_box(i); + v.push(i); + } + }); + }); +} + +fn push_rc_refcell_vec(c: &mut Criterion) { + c.bench_function("push_rc_refcell_vec", |b| { + b.iter(|| { + let v = Rc::new(RefCell::new(Vec::::with_capacity(1_000_000))); + for i in 0..1_000_000 { + let mut v = black_box(v.borrow_mut()); + let i = black_box(i); + v.push(i); + } + }); + }); +} + +criterion_group!(b0, for_each_iter, for_each_dyn_iter); +criterion_group!(b1, push_vec, push_rc_refcell_vec); +criterion_main!(b0, b1); diff --git a/crates/runtime/src/builtins/aggregator.rs b/crates/runtime/src/builtins/aggregator.rs new file mode 100644 index 0000000..08c04a1 --- /dev/null +++ b/crates/runtime/src/builtins/aggregator.rs @@ -0,0 +1,39 @@ +#![allow(unused)] + +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::vec::Vec; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum Aggregator { + Incremental { + lift: F0, + combine: F1, + lower: F2, + }, + Holistic { + compute: F3, + }, +} + +impl Aggregator P, fn(P, P) -> P, fn(P) -> O, fn(Vec) -> O> { + pub fn incremental( + lift: fn(I) -> P, + combine: fn(P, P) -> P, + lower: fn(P) -> O, + ) -> Self { + Self::Incremental { + lift, + combine, + lower, + } + } +} + +impl Aggregator (), fn((), ()) -> (), fn() -> (), fn(Vec) -> O> { + pub fn holistic(compute: fn(Vec) -> O) -> Self { + Self::Holistic { compute } + } +} diff --git a/crates/runtime/src/builtins/array.rs b/crates/runtime/src/builtins/array.rs new file mode 100644 index 0000000..26ff21a --- /dev/null +++ b/crates/runtime/src/builtins/array.rs @@ -0,0 +1,130 @@ +use macros::Send; +use macros::Sync; +use macros::Unpin; + +use std::hash::Hash; +use std::marker::PhantomData; +use std::mem::MaybeUninit; + +use serde::de::SeqAccess; +use serde::de::Visitor; +use serde::ser::SerializeTuple; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; + +use crate::HashMap; +use crate::builtins::dict::Dict; +use crate::builtins::set::Set; +use crate::builtins::vec::Vec; +use crate::traits::DeepClone; + +#[derive(Clone, Debug, Send, Sync, Unpin, Eq, PartialEq, Hash)] +#[repr(C)] +pub struct Array(pub [T; N]); + +impl DeepClone for Array { + fn deep_clone(&self) -> Self { + let data = { + let mut data: [MaybeUninit; N] = unsafe { MaybeUninit::uninit().assume_init() }; + for (new, old) in data.iter_mut().zip(self.0.iter()) { + new.write(old.deep_clone()); + } + unsafe { std::mem::transmute_copy::<[MaybeUninit; N], [T; N]>(&data) } + }; + Array(data) + } +} + +impl Array { + pub fn new(data: [T; N]) -> Self { + Array(data) + } + + pub fn set(mut self, index: usize, value: T) -> Self { + self.0[index] = value; + self + } + + pub fn get(self, index: usize) -> T + where + T: Clone, + { + self.0[index].clone() + } + + pub fn into_vec(self) -> Vec + where + T: Clone, + { + Vec::from(self.0.to_vec()) + } + + pub fn into_set(self) -> Set + where + T: Clone + Hash + Eq, + { + Set::from(self.0.into_iter().collect::>()) + } +} + +impl Array<(K, V), N> +where + K: Clone + Eq + Hash, + V: Clone, +{ + pub fn into_dict(self) -> Dict + where + V: Clone, + { + Dict::from(self.0.into_iter().collect::>()) + } +} + +impl From<[T; N]> for Array { + fn from(data: [T; N]) -> Self { + Array(data) + } +} + +impl Serialize for Array { + fn serialize(&self, s: S) -> Result { + let mut s = s.serialize_tuple(N)?; + for item in &self.0 { + s.serialize_element(item)?; + } + s.end() + } +} + +impl<'de, T: Deserialize<'de>, const N: usize> Deserialize<'de> for Array { + fn deserialize>(d: D) -> Result, D::Error> { + Ok(Array(d.deserialize_tuple(N, ArrayVisitor(PhantomData))?)) + } +} + +struct ArrayVisitor(PhantomData); + +impl<'de, T: Deserialize<'de>, const N: usize> Visitor<'de> for ArrayVisitor { + type Value = [T; N]; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + formatter.write_str(&format!("an array of length {}", N)) + } + + #[inline] + fn visit_seq>(self, mut seq: A) -> Result { + let mut data = std::vec::Vec::with_capacity(N); + for _ in 0..N { + match (seq.next_element())? { + Some(val) => data.push(val), + None => return Err(serde::de::Error::invalid_length(N, &self)), + } + } + match data.try_into() { + Ok(arr) => Ok(arr), + Err(_) => unreachable!(), + } + } +} diff --git a/crates/runtime/src/builtins/assigner.rs b/crates/runtime/src/builtins/assigner.rs new file mode 100644 index 0000000..6c0f787 --- /dev/null +++ b/crates/runtime/src/builtins/assigner.rs @@ -0,0 +1,36 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::duration::Duration; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +#[repr(C)] +pub enum Assigner { + Tumbling { length: Duration }, + Sliding { duration: Duration, step: Duration }, + Session { gap: Duration }, + Counting { length: i32 }, + Moving { length: i32, step: i32 }, +} + +impl Assigner { + pub fn tumbling(length: Duration) -> Self { + Self::Tumbling { length } + } + + pub fn sliding(length: Duration, step: Duration) -> Self { + Self::Sliding { duration: length, step } + } + + pub fn session(gap: Duration) -> Self { + Self::Session { gap } + } + + pub fn counting(length: i32) -> Self { + Self::Counting { length } + } + + pub fn moving(length: i32, step: i32) -> Self { + Self::Moving { length, step } + } +} diff --git a/crates/runtime/src/builtins/blob.rs b/crates/runtime/src/builtins/blob.rs new file mode 100644 index 0000000..b597883 --- /dev/null +++ b/crates/runtime/src/builtins/blob.rs @@ -0,0 +1,14 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::unchecked_cell::UncheckedCell; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub struct Blob(pub(crate) UncheckedCell>); + +impl Blob { + pub fn new(bytes: std::vec::Vec) -> Self { + Self(UncheckedCell::new(bytes)) + } +} diff --git a/crates/runtime/src/builtins/cell.rs b/crates/runtime/src/builtins/cell.rs new file mode 100644 index 0000000..6418cc4 --- /dev/null +++ b/crates/runtime/src/builtins/cell.rs @@ -0,0 +1,51 @@ +use macros::DeepClone; +use macros::Send; +use macros::Sync; +use macros::Unpin; +use serde::Deserialize; +use serde::Serialize; + +use crate::traits::DeepClone; + +#[derive(DeepClone, Send, Sync, Unpin, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)] +#[repr(C)] +pub struct Cell(pub std::rc::Rc>); + +impl Clone for Cell { + fn clone(&self) -> Self { + Cell(self.0.clone()) + } +} + +impl std::hash::Hash for Cell +where + T: std::hash::Hash, +{ + fn hash(&self, state: &mut H) { + self.0.borrow().hash(state); + } +} + +impl std::fmt::Debug for Cell { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.as_ref().fmt(f) + } +} + +impl Cell { + pub fn new(value: T) -> Cell { + Cell(std::rc::Rc::new(std::cell::RefCell::new(value))) + } + + pub fn as_mut(&self) -> std::cell::RefMut { + self.0.borrow_mut() + } + + pub fn as_ref(&self) -> std::cell::Ref { + self.0.borrow() + } + + pub fn share(&self) -> Self { + self.clone() + } +} diff --git a/crates/runtime/src/builtins/channel.rs b/crates/runtime/src/builtins/channel.rs new file mode 100644 index 0000000..943ee6a --- /dev/null +++ b/crates/runtime/src/builtins/channel.rs @@ -0,0 +1 @@ +pub mod spsc; diff --git a/crates/runtime/src/builtins/channel/spsc.rs b/crates/runtime/src/builtins/channel/spsc.rs new file mode 100644 index 0000000..cb6a5c5 --- /dev/null +++ b/crates/runtime/src/builtins/channel/spsc.rs @@ -0,0 +1,193 @@ +use derive_more::Deref; +use derive_more::DerefMut; +use std::cell::RefCell; +use std::collections::VecDeque; +use std::future::Future; +use std::pin::Pin; +use std::rc::Rc; +use std::task::Context; +use std::task::Poll; +use std::task::Waker; + +use arrayvec::ArrayVec; +use macros::Send; +use macros::Sync; +use macros::Unpin; + +pub fn channel(cap: usize) -> (Sender, Receiver) { + let channel = Channel(Rc::new(RefCell::new(ChannelInner { + buffer: VecDeque::with_capacity(cap), + waker: None, + }))); + (Sender(channel.clone()), Receiver(channel)) +} + +pub struct ChannelInner { + buffer: VecDeque, + waker: Option, +} + +#[derive(Deref, DerefMut)] +pub struct Channel(pub(crate) Rc>>); + +impl Clone for Channel { + fn clone(&self) -> Self { + Channel(self.0.clone()) + } +} + +#[derive(Send, Sync)] +pub struct Sender(pub(crate) Channel); + +impl Clone for Sender { + fn clone(&self) -> Self { + Sender(self.0.clone()) + } +} + +#[derive(Send, Sync, Deref)] +pub struct Receiver(pub(crate) Channel); + +impl Clone for Receiver { + fn clone(&self) -> Self { + Receiver(self.0.clone()) + } +} + +#[derive(Unpin)] +pub struct SenderFuture { + chan: Channel, + data: Option, +} + +#[derive(Unpin)] +pub struct BatchSenderFuture { + chan: Channel, + data: ArrayVec, +} + +#[derive(Unpin)] +pub struct ReceiverFuture { + chan: Channel, +} + +#[derive(Unpin)] +pub struct BatchReceiverFuture { + chan: Channel, +} + +impl Sender { + pub fn send(&self, data: T) -> SenderFuture { + SenderFuture { + chan: self.0.clone(), + data: Some(data), + } + } + + pub fn send_batch(&self, mut data: ArrayVec) -> BatchSenderFuture { + data.reverse(); + BatchSenderFuture { + chan: self.0.clone(), + data, + } + } +} + +impl Receiver { + pub fn recv(&self) -> ReceiverFuture { + ReceiverFuture { + chan: self.0.clone(), + } + } + pub fn recv_batch(&self) -> BatchReceiverFuture { + BatchReceiverFuture { + chan: self.0.clone(), + } + } +} + +impl Future for ReceiverFuture { + type Output = T; + + fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { + let mut chan = self.chan.as_ref().borrow_mut(); + if let Some(data) = chan.buffer.pop_back() { + if let Some(waker) = chan.waker.take() { + waker.wake(); + } + Poll::Ready(data) + } else { + chan.waker = Some(cx.waker().clone()); + Poll::Pending + } + } +} + +impl Future for SenderFuture { + type Output = (); + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let this = self.as_mut().get_mut(); + let mut chan = this.chan.as_ref().borrow_mut(); + if chan.buffer.len() < chan.buffer.capacity() { + let data = this.data.take().unwrap(); + if let Some(waker) = chan.waker.take() { + waker.wake(); + } + chan.buffer.push_front(data); + Poll::Ready(()) + } else { + chan.waker = Some(cx.waker().clone()); + Poll::Pending + } + } +} + +impl Future for BatchReceiverFuture { + type Output = ArrayVec; + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { + let this = self.as_mut().get_mut(); + let mut chan = this.chan.as_ref().borrow_mut(); + if !chan.buffer.is_empty() { + let mut data = ArrayVec::new(); + for _ in 0..N.min(chan.buffer.len()) { + data.push(chan.buffer.pop_back().unwrap()); + } + if let Some(waker) = chan.waker.take() { + waker.wake(); + } + Poll::Ready(data) + } else { + chan.waker = Some(cx.waker().clone()); + Poll::Pending + } + } +} + +impl Future for BatchSenderFuture { + type Output = (); + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let this = self.as_mut().get_mut(); + let mut chan = this.chan.as_ref().borrow_mut(); + let data = &mut this.data; + let (len, cap) = { (chan.buffer.len(), chan.buffer.capacity()) }; + if len < cap { + for _ in 0..data.len().min(len) { + chan.buffer.push_front(data.pop().unwrap()); + } + if let Some(waker) = chan.waker.take() { + waker.wake(); + } + if data.is_empty() { + Poll::Ready(()) + } else { + Poll::Pending + } + } else { + chan.waker = Some(cx.waker().clone()); + Poll::Pending + } + } +} diff --git a/crates/runtime/src/builtins/cow.rs b/crates/runtime/src/builtins/cow.rs new file mode 100644 index 0000000..fab7d96 --- /dev/null +++ b/crates/runtime/src/builtins/cow.rs @@ -0,0 +1,95 @@ +use runtime_macros::Send; +use runtime_macros::Share; +use runtime_macros::Sync; +use runtime_macros::Unpin; +use serde::Deserialize; +use serde::Serialize; + +use runtime_traits::Share; + +#[derive( + Share, Clone, Send, Sync, Unpin, Serialize, Deserialize, Eq, PartialEq, Hash, Ord, PartialOrd, +)] +#[repr(C)] +pub struct Cow(pub std::rc::Rc); + +impl std::fmt::Debug for Cow { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.as_ref().fmt(f) + } +} + +impl std::ops::Deref for Cow { + type Target = T; + + fn deref(&self) -> &Self::Target { + self.0.as_ref() + } +} + +impl AsRef for Cow { + fn as_ref(&self) -> &T { + self.0.as_ref() + } +} + +impl Cow { + /// Create a new cow. + pub fn new(value: T) -> Cow { + Cow(std::rc::Rc::new(value)) + } + + /// Copy the value of the cow. + pub fn copy(&self) -> T + where + T: Clone, + { + self.0.as_ref().clone() + } + + /// Take the value of the cow. If the cow is shared, it will be cloned. + pub fn take(self) -> T + where + T: Clone, + { + match std::rc::Rc::try_unwrap(self.0) { + Ok(this) => this, + Err(this) => this.as_ref().clone(), + } + } + + /// Update the value of the cow. If the cow is shared, it will be cloned. + pub fn update(&mut self, f: impl FnOnce(&mut T) -> O) -> O + where + T: Clone, + { + if let Some(this) = std::rc::Rc::get_mut(&mut self.0) { + f(this) + } else { + let mut this = self.copy(); + let o = f(&mut this); + self.0 = std::rc::Rc::new(this); + o + } + } + + /// Map the value of the cow. If the cow is shared, it will be cloned. + pub fn map(self, f: impl FnOnce(T) -> O) -> O + where + T: Clone, + { + match std::rc::Rc::try_unwrap(self.0) { + Ok(this) => f(this), + Err(this) => f(this.as_ref().clone()), + } + } + + /// Set the value of the cow. If the cow is shared, it will be cloned. + /// This is useful to prevent reallocating new cells. + pub fn set(&mut self, value: T) { + match std::rc::Rc::get_mut(&mut self.0) { + Some(this) => *this = value, + None => self.0 = std::rc::Rc::new(value), + } + } +} diff --git a/crates/runtime/src/builtins/dataflow.rs b/crates/runtime/src/builtins/dataflow.rs new file mode 100644 index 0000000..0794d35 --- /dev/null +++ b/crates/runtime/src/builtins/dataflow.rs @@ -0,0 +1,13 @@ +#[derive(Debug)] +pub struct Dataflow { + pub tx: tokio::sync::broadcast::Sender<()>, +} + +impl Dataflow { + pub fn new(tx: tokio::sync::broadcast::Sender<()>) -> Self { + Self { tx } + } + pub fn run(self) { + self.tx.send(()).unwrap(); + } +} diff --git a/crates/runtime/src/builtins/dataframe.rs b/crates/runtime/src/builtins/dataframe.rs new file mode 100644 index 0000000..511a975 --- /dev/null +++ b/crates/runtime/src/builtins/dataframe.rs @@ -0,0 +1,13 @@ +// use crate::cow::Cow; +// use crate::vec::Vec; +// +// pub struct DataFrame(pub Cow); +// +// pub struct Series(pub Cow); +// +// impl DataFrame { +// pub fn new(columns: Vec) -> Self { +// DataFrame(polars::prelude::DataFrame::new(columns.0.take())) +// } +// +// } diff --git a/crates/runtime/src/builtins/dict.rs b/crates/runtime/src/builtins/dict.rs new file mode 100644 index 0000000..9da0b10 --- /dev/null +++ b/crates/runtime/src/builtins/dict.rs @@ -0,0 +1,73 @@ +// use std::borrow::Borrow; +use std::hash::Hash; + +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::unchecked_cell::UncheckedCell; +use crate::traits::Data; +use crate::traits::DeepClone; +use crate::traits::Key; +use crate::HashMap; + +#[derive(Default, Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +#[repr(C)] +pub struct Dict(pub(crate) UncheckedCell>); + +impl DeepClone for Dict { + fn deep_clone(&self) -> Self { + todo!() + // let map = self + // .0 + // .iter() + // .map(|(k, v)| (k.deep_clone(), v.deep_clone())) + // .collect(); + // Dict(map) + } +} + +impl Dict { + pub fn new() -> Dict { + Dict(UncheckedCell::new(HashMap::default())) + } + + pub fn get(&self, key: impl std::borrow::Borrow) -> Option + where + K: Clone, + V: Clone, + { + self.0.get(key.borrow()).cloned() + } + + pub fn insert(&self, key: K, val: V) + where + K: Clone, + V: Clone, + { + // Safety: This is an atomic operation. + unsafe { + self.0.as_mut_unchecked().insert(key, val); + } + } + + pub fn remove(&self, key: impl std::borrow::Borrow) + where + K: Clone, + V: Clone, + { + // Safety: This is an atomic operation. + unsafe { + self.0.as_mut_unchecked().remove(key.borrow()); + } + } + + pub fn contains_key(&self, key: impl std::borrow::Borrow) -> bool { + self.0.contains_key(key.borrow()) + } +} + +impl From> for Dict { + fn from(map: HashMap) -> Self { + Dict(UncheckedCell::new(map)) + } +} diff --git a/crates/runtime/src/builtins/duration.rs b/crates/runtime/src/builtins/duration.rs new file mode 100644 index 0000000..8fd7490 --- /dev/null +++ b/crates/runtime/src/builtins/duration.rs @@ -0,0 +1,86 @@ +use serde::Deserialize; +use serde::Serialize; + +#[derive(Clone, Copy, Serialize, Deserialize, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[repr(C)] +pub struct Duration(pub time::Duration); + +impl Duration { + pub const fn zero() -> Self { + Self::from_seconds(0) + } + + pub const fn from_weeks(weeks: i64) -> Self { + Self(time::Duration::weeks(weeks)) + } + + pub const fn from_days(days: i64) -> Self { + Self(time::Duration::days(days)) + } + + pub const fn from_hours(hours: i64) -> Self { + Self(time::Duration::hours(hours)) + } + + pub const fn from_minutes(minutes: i64) -> Self { + Self(time::Duration::minutes(minutes)) + } + + pub const fn from_seconds(seconds: i64) -> Self { + Self(time::Duration::seconds(seconds)) + } + + pub const fn from_milliseconds(milliseconds: i64) -> Self { + Self(time::Duration::milliseconds(milliseconds)) + } + + pub const fn from_microseconds(microseconds: i64) -> Self { + Self(time::Duration::microseconds(microseconds)) + } + + pub const fn from_nanoseconds(nanoseconds: i64) -> Self { + Self(time::Duration::nanoseconds(nanoseconds)) + } + + pub fn seconds(self) -> i64 { + self.0.whole_seconds() + } + + pub fn milliseconds(self) -> i128 { + self.0.whole_milliseconds() + } + + pub fn microseconds(self) -> i128 { + self.0.whole_microseconds() + } + + pub fn nanoseconds(self) -> i128 { + self.0.whole_nanoseconds() + } + + pub fn days(self) -> i64 { + self.0.whole_days() + } + + pub fn hours(self) -> i64 { + self.0.whole_hours() + } + + pub fn weeks(self) -> i64 { + self.0.whole_weeks() + } + + pub(crate) fn to_std(self) -> std::time::Duration { + let whole_seconds = self.0.whole_seconds() as u64; + let subsec_nanos = self.0.subsec_nanoseconds() as u32; + std::time::Duration::new(whole_seconds, subsec_nanos) + } +} + +impl std::ops::Rem for Duration { + type Output = Self; + + fn rem(self, rhs: Self) -> Self { + Duration::from_seconds(self.seconds() % rhs.seconds()) + } +} diff --git a/crates/runtime/src/builtins/encoding.rs b/crates/runtime/src/builtins/encoding.rs new file mode 100644 index 0000000..956db6b --- /dev/null +++ b/crates/runtime/src/builtins/encoding.rs @@ -0,0 +1,18 @@ +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +#[repr(C)] +pub enum Encoding { + Csv { sep: char }, + Json, +} + +impl Encoding { + pub fn csv(sep: char) -> Self { + Self::Csv { sep } + } + pub fn json() -> Self { + Self::Json + } +} diff --git a/crates/runtime/src/builtins/file.rs b/crates/runtime/src/builtins/file.rs new file mode 100644 index 0000000..efaa686 --- /dev/null +++ b/crates/runtime/src/builtins/file.rs @@ -0,0 +1,33 @@ +use std::io::Read; + +use crate::builtins::blob::Blob; +use crate::builtins::path::Path; +use crate::builtins::string::String; + +#[derive(Debug, Clone)] +#[repr(C)] +pub struct File(pub std::rc::Rc>); + +impl File { + pub fn open(path: impl Into) -> Self { + File::from(std::fs::File::open(path.into().0).unwrap()) + } + + pub fn read_to_string(self) -> String { + let mut string = std::string::String::new(); + self.0.borrow_mut().read_to_string(&mut string).unwrap(); + String::from(string) + } + + pub fn read_to_bytes(self) -> Blob { + let mut vec = std::vec::Vec::new(); + self.0.borrow_mut().read_to_end(&mut vec).unwrap(); + Blob::new(vec) + } +} + +impl From for File { + fn from(file: std::fs::File) -> Self { + Self(std::rc::Rc::new(std::cell::RefCell::new(file))) + } +} diff --git a/crates/runtime/src/builtins/im_string.rs b/crates/runtime/src/builtins/im_string.rs new file mode 100644 index 0000000..af399fa --- /dev/null +++ b/crates/runtime/src/builtins/im_string.rs @@ -0,0 +1,50 @@ +use serde_derive::Deserialize; +use serde_derive::Serialize; + +use crate::traits::DeepClone; +use smol_str::SmolStr; + +#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub struct String(pub(crate) smol_str::SmolStr); + +impl PartialEq for String { + #[inline(always)] + fn eq(&self, other: &str) -> bool { + self.0 == other + } +} + +impl<'a> PartialEq<&'a str> for String { + #[inline(always)] + fn eq(&self, other: &&'a str) -> bool { + self.0 == *other + } +} + +impl DeepClone for String { + #[inline(always)] + fn deep_clone(&self) -> Self { + Self(self.0.clone()) + } +} + +impl String { + #[inline(always)] + pub fn new>(s: T) -> Self { + Self(SmolStr::from(s.as_ref())) + } +} + +impl<'a> From<&'a str> for String { + #[inline(always)] + fn from(s: &'a str) -> Self { + Self(SmolStr::from(s)) + } +} + +impl From for String { + #[inline(always)] + fn from(s: std::string::String) -> Self { + Self(SmolStr::from(s)) + } +} diff --git a/crates/runtime/src/builtins/image.rs b/crates/runtime/src/builtins/image.rs new file mode 100644 index 0000000..f9f08a8 --- /dev/null +++ b/crates/runtime/src/builtins/image.rs @@ -0,0 +1,192 @@ +use image::io::Reader; +use image::DynamicImage; +use image::GenericImage; +use image::GenericImageView; +use image::ImageFormat; +use ndarray::ArrayBase; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; +use std::io::Cursor; + +use crate::builtins::array::Array; +use crate::builtins::blob::Blob; +use crate::builtins::cell::Cell; +use crate::builtins::matrix::Matrix; +use crate::builtins::path::Path; +use crate::traits::Share; + +#[derive(Clone, Debug, Serialize, Deserialize)] +#[repr(C)] +pub struct Image(pub Cell); + +#[derive(Clone, Debug)] +pub struct Inner(pub DynamicImage); + +impl std::ops::Deref for Inner { + type Target = DynamicImage; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl std::ops::DerefMut for Inner { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl Share for Inner { + fn share(&self) -> Self { + Self(self.0.clone()) + } +} + +impl Serialize for Inner { + fn serialize(&self, serializer: S) -> Result { + let mut bytes = std::vec::Vec::new(); + self.0 + .write_to(&mut Cursor::new(&mut bytes), ImageFormat::Png) + .unwrap(); + serializer.serialize_bytes(&bytes) + } +} + +impl<'de> Deserialize<'de> for Inner { + fn deserialize>(deserializer: D) -> Result { + let bytes = std::vec::Vec::::deserialize(deserializer)?; + let image = Reader::new(Cursor::new(bytes)) + .with_guessed_format() + .unwrap() + .decode() + .unwrap(); + Ok(Self(image)) + } +} + +impl Image { + pub fn new(data: Blob) -> Image { + let rd = Reader::new(Cursor::new(data.0.as_slice())) + .with_guessed_format() + .expect("Unknown image format"); + let img = rd.decode().expect("Failed to decode image"); + Image::from(img) + } + + pub fn crop(self, x: u32, y: u32, new_w: u32, new_h: u32) -> Self { + Image::from(self.0.crop_imm(x, y, new_w, new_h)) + } + + pub fn center_crop(self, new_w: u32, new_h: u32) -> Self { + let old_w = self.0.width(); + let old_h = self.0.height(); + self.crop((old_w - new_w) / 2, (old_h - new_h) / 2, new_w, new_h) + } + + pub fn resize(self, new_w: u32, new_h: u32) -> Self { + Image(Cell::new(Inner(self.0.resize_exact( + new_w, + new_h, + image::imageops::FilterType::Nearest, + )))) + } + + pub fn resize_width(self, new_w: u32) -> Self { + let old_w = self.0.width(); + let old_h = self.0.height(); + let new_h = (old_h as f32 * (new_w as f32 / old_w as f32)) as u32; + self.resize(new_w, new_h) + } + + pub fn resize_height(self, new_h: u32) -> Self { + let old_w = self.0.width(); + let old_h = self.0.height(); + let new_w = (old_w as f32 * (new_h as f32 / old_h as f32)) as u32; + self.resize(new_w, new_h) + } + + pub fn into_matrix(self) -> Matrix { + let w = self.0.width() as usize; + let h = self.0.height() as usize; + let mut array = ArrayBase::zeros(vec![3, w, h]); + for (x, y, rgb) in self.0.pixels() { + let x = x as usize; + let y = y as usize; + array[[0, x, y]] = rgb[0] as f32; + array[[1, x, y]] = rgb[1] as f32; + array[[2, x, y]] = rgb[2] as f32; + } + Matrix::from(array) + } + + pub fn into_matrix_rgba(self) -> Matrix { + let w = self.0.width() as usize; + let h = self.0.height() as usize; + let mut array = ArrayBase::zeros(vec![4, w, h]); + for (x, y, rgb) in self.0.pixels() { + let x = x as usize; + let y = y as usize; + array[[0, x, y]] = rgb[0] as f32; + array[[1, x, y]] = rgb[1] as f32; + array[[2, x, y]] = rgb[2] as f32; + array[[3, x, y]] = rgb[3] as f32; + } + Matrix::from(array) + } + + pub fn from_matrix(matrix: Matrix) -> Self { + let w = matrix.0.shape()[1]; + let h = matrix.0.shape()[2]; + let mut img = DynamicImage::new_rgb8(w as u32, h as u32); + for x in 0..w { + for y in 0..h { + img.put_pixel( + x as u32, + y as u32, + image::Rgba([ + matrix.0[[0, x, y]] as u8, + matrix.0[[1, x, y]] as u8, + matrix.0[[2, x, y]] as u8, + matrix.0[[3, x, y]] as u8, + ]), + ); + } + } + Image::from(img) + } + + pub fn save(self, path: Path) { + self.0.save(path.0).unwrap(); + } + + pub fn height(self) -> u32 { + self.0.height() + } + + pub fn width(self) -> u32 { + self.0.width() + } + + pub fn draw_box(mut self, x: u32, y: u32, w: u32, h: u32, rgba: Array) { + let rgba = rgba.0.into(); + if x + w >= self.0.width() || y + h >= self.0.height() { + panic!("Box out of bounds"); + } + for i in 0..w { + self.0.put_pixel(x + i, y, rgba); + self.0.put_pixel(x + i, y + h, rgba); + } + for i in 0..h { + self.0.put_pixel(x, y + i, rgba); + self.0.put_pixel(x + w, y + i, rgba); + } + } +} + +impl From for Image { + fn from(image: DynamicImage) -> Self { + Image(Cell::new(Inner(image))) + } +} diff --git a/crates/runtime/src/builtins/keyed_stream.rs b/crates/runtime/src/builtins/keyed_stream.rs new file mode 100644 index 0000000..5ef3e5c --- /dev/null +++ b/crates/runtime/src/builtins/keyed_stream.rs @@ -0,0 +1,53 @@ +mod drain; +mod filter; +mod flat_map; +mod fork; +pub mod incr_window; +mod join; +mod keyby; +mod map; +mod merge; +mod scan; +mod sink; +mod unkey; +mod window; + +use tokio::sync::mpsc::Receiver; +use tokio::sync::mpsc::Sender; + +use crate::builtins::time::Time; +use crate::traits::Data; +use crate::traits::Key; +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Serialize, Deserialize)] +pub enum KeyedEvent { + Data(Time, K, T), + Watermark(Time), + Snapshot(usize), + Sentinel, +} + +pub struct KeyedStream(pub(crate) Receiver>); + +pub struct KeyedCollector(pub(crate) Sender>); + +impl KeyedStream { + pub async fn recv(&mut self) -> KeyedEvent { + self.0.recv().await.unwrap_or(KeyedEvent::Sentinel) + } +} + +impl KeyedCollector { + pub async fn send(&self, event: KeyedEvent) { + self.0.send(event).await.ok(); + } +} + +impl KeyedStream { + pub(crate) fn new() -> (KeyedCollector, KeyedStream) { + let (tx, rx) = tokio::sync::mpsc::channel(100); + (KeyedCollector(tx), KeyedStream(rx)) + } +} diff --git a/crates/runtime/src/builtins/keyed_stream/drain.rs b/crates/runtime/src/builtins/keyed_stream/drain.rs new file mode 100644 index 0000000..84fd22d --- /dev/null +++ b/crates/runtime/src/builtins/keyed_stream/drain.rs @@ -0,0 +1,18 @@ +use crate::runner::context::Context; +use crate::traits::Data; +use crate::traits::Key; + +use super::KeyedEvent; +use super::KeyedStream; + +impl KeyedStream { + pub fn drain(mut self, ctx: &mut Context) { + ctx.sink(|| async move { + loop { + if let KeyedEvent::Sentinel = self.recv().await { + break; + } + } + }); + } +} diff --git a/crates/runtime/src/builtins/keyed_stream/filter.rs b/crates/runtime/src/builtins/keyed_stream/filter.rs new file mode 100644 index 0000000..526c4be --- /dev/null +++ b/crates/runtime/src/builtins/keyed_stream/filter.rs @@ -0,0 +1,28 @@ +use crate::runner::context::Context; +use crate::traits::Data; +use crate::traits::Key; + +use super::KeyedEvent; +use super::KeyedStream; + +impl KeyedStream { + pub fn filter(mut self, ctx: &mut Context, f: fn(&T) -> bool) -> KeyedStream { + ctx.keyed_operator(|tx| async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k, v) => { + if f(&v) { + tx.send(KeyedEvent::Data(t, k, v)).await; + } + } + KeyedEvent::Watermark(t) => tx.send(KeyedEvent::Watermark(t)).await, + KeyedEvent::Snapshot(i) => tx.send(KeyedEvent::Snapshot(i)).await, + KeyedEvent::Sentinel => { + tx.send(KeyedEvent::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/keyed_stream/flat_map.rs b/crates/runtime/src/builtins/keyed_stream/flat_map.rs new file mode 100644 index 0000000..9f76d68 --- /dev/null +++ b/crates/runtime/src/builtins/keyed_stream/flat_map.rs @@ -0,0 +1,36 @@ +use crate::builtins::vec::Vec; +use crate::runner::context::Context; +use crate::traits::Data; +use crate::traits::Key; + +use super::KeyedEvent; +use super::KeyedStream; + +impl KeyedStream +where + K: Key, + T: Data, +{ + pub fn flat_map(mut self, ctx: &mut Context, f: fn(T) -> Vec) -> KeyedStream + where + O: Data, + { + ctx.keyed_operator(|tx| async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k, v) => { + for v in f(v).iter() { + tx.send(KeyedEvent::Data(t, k.deep_clone(), v)).await; + } + } + KeyedEvent::Watermark(t) => tx.send(KeyedEvent::Watermark(t)).await, + KeyedEvent::Snapshot(i) => tx.send(KeyedEvent::Snapshot(i)).await, + KeyedEvent::Sentinel => { + tx.send(KeyedEvent::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/keyed_stream/fork.rs b/crates/runtime/src/builtins/keyed_stream/fork.rs new file mode 100644 index 0000000..28cf2de --- /dev/null +++ b/crates/runtime/src/builtins/keyed_stream/fork.rs @@ -0,0 +1,43 @@ +use crate::runner::context::Context; +use crate::traits::Data; +use crate::traits::Key; + +use super::KeyedEvent; +use super::KeyedStream; + +impl KeyedStream { + pub fn split(mut self, ctx: &mut Context) -> (Self, Self) { + ctx.keyed_co_operator(|tx1, tx2| async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k1, v1) => { + let k2 = k1.deep_clone(); + let v2 = v1.deep_clone(); + tokio::join!( + tx1.send(KeyedEvent::Data(t, k2, v2)), + tx2.send(KeyedEvent::Data(t, k1, v1)), + ) + } + KeyedEvent::Watermark(t) => { + tokio::join!( + tx1.send(KeyedEvent::Watermark(t)), + tx2.send(KeyedEvent::Watermark(t)) + ) + } + KeyedEvent::Snapshot(i) => { + tokio::join!( + tx1.send(KeyedEvent::Snapshot(i)), + tx2.send(KeyedEvent::Snapshot(i)) + ) + } + KeyedEvent::Sentinel => { + tokio::join!( + tx1.send(KeyedEvent::Sentinel), + tx2.send(KeyedEvent::Sentinel) + ) + } + }; + } + }) + } +} diff --git a/crates/runtime/src/builtins/keyed_stream/incr_window.rs b/crates/runtime/src/builtins/keyed_stream/incr_window.rs new file mode 100644 index 0000000..82098c4 --- /dev/null +++ b/crates/runtime/src/builtins/keyed_stream/incr_window.rs @@ -0,0 +1,107 @@ +use crate::HashMap; +use crate::BTreeMap; + +use std::collections::hash_map::Entry; +use std::ops::Range; + +use crate::builtins::assigner::Assigner; +use crate::builtins::duration::Duration; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; +use crate::traits::Key; + +use super::KeyedEvent; +use super::KeyedStream; + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct Properties { + pub associative: bool, + pub commutative: bool, +} + +impl KeyedStream { + pub fn incr_window( + self, + ctx: &mut Context, + assigner: Assigner, + lift: impl Fn(&T) -> P + Send + 'static, + combine: impl Fn(&P, P) -> P + Send + 'static, + lower: impl Fn(K, &P, Range { + ctx.operator(|tx| async move { + let mut acc = init; + loop { + match self.recv().await { + Event::Data(t, v) => { + acc = fun(v, acc); + tx.send(Event::Data(t, acc.deep_clone())).await; + } + Event::Watermark(t) => { + tx.send(Event::Watermark(t)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/sink.rs b/crates/runtime/src/builtins/stream/sink.rs new file mode 100644 index 0000000..d6f6a1e --- /dev/null +++ b/crates/runtime/src/builtins/stream/sink.rs @@ -0,0 +1,161 @@ +#![allow(unused)] +use futures::SinkExt; +use tokio::io::AsyncWriteExt; +use tokio::io::BufWriter; + +use crate::builtins::encoding::Encoding; +use crate::builtins::path::Path; +use crate::builtins::socket::SocketAddr; +// use crate::builtins::url::Url; +use crate::builtins::writer::Writer; +use crate::formats::Encode; +use crate::runner::context::Context; +use crate::traits::Data; + +use super::Event; +use super::Stream; + +impl Stream { + pub fn sink(self, ctx: &mut Context, writer: Writer, encoding: Encoding) { + let mut this = self; + let (tx, rx) = tokio::sync::mpsc::channel(100); + ctx.sink(|| async move { + loop { + let event = this.recv().await; + match event { + Event::Data(_, data) => tx.send(data).await.unwrap(), + Event::Watermark(_) => continue, + Event::Snapshot(_) => todo!(), + Event::Sentinel => break, + } + } + }); + Self::sink_encoding(ctx, rx, writer, encoding); + } + + // async fn write_http( + // rx: tokio::sync::mpsc::Receiver, + // url: Url, + // encoder: impl Encode + 'static, + // ) { + // todo!() + // let uri: Uri = url.0.to_string().parse().unwrap(); + // let client = hyper::Client::new(); + // let (mut tx1, rx1) = futures::channel::mpsc::channel(100); + // let req = Request::builder() + // .method(Method::POST) + // .uri(uri) + // .header("content-type", encoder.content_type()) + // .body(Body::wrap_stream(rx1)) + // .unwrap(); + // client.request(req).await.unwrap(); + // let mut buf = vec![0; 1024]; + // loop { + // match rx.recv().await { + // Some(data) => match encoder.encode(&data, &mut buf) { + // Ok(n) => { + // tracing::info!("Encoded: {:?}", data); + // let bytes: Result<_, std::io::Error> = + // Ok(hyper::body::Bytes::from(buf[0..n].to_vec())); + // tx1.send(bytes).await.unwrap(); + // } + // Err(e) => tracing::info!("Failed to encode: {}", e), + // }, + // None => break, + // } + // } + // } + + async fn write_pipe( + mut rx: tokio::sync::mpsc::Receiver, + mut encoder: impl Encode + Send + 'static, + tx: impl AsyncWriteExt + Unpin, + ) { + let mut tx = BufWriter::new(tx); + let mut buf = vec![0; 1024]; + loop { + match rx.recv().await { + Some(data) => match encoder.encode(&data, &mut buf) { + Ok(n) => { + tracing::info!("Encoded: {:?}", data); + tx.write_all(&buf[0..n]).await.unwrap(); + } + Err(e) => tracing::info!("Failed to encode: {}", e), + }, + None => { + tx.flush().await.unwrap(); + break; + } + } + } + } + + async fn write_file( + rx: tokio::sync::mpsc::Receiver, + path: Path, + encoder: impl Encode + Send + 'static, + ) { + match tokio::fs::File::create(&path.0).await { + Ok(tx) => Self::write_pipe(rx, encoder, tx).await, + Err(e) => panic!("Failed to open file `{}`: {}", path.0.display(), e), + } + } + + async fn write_socket( + mut rx: tokio::sync::mpsc::Receiver, + addr: SocketAddr, + mut encoder: impl Encode + 'static, + ) { + tracing::info!("Connecting to {}", addr.0); + let socket = tokio::net::TcpStream::connect(addr.0).await.unwrap(); + tracing::info!("Connected to {}", addr.0); + let mut tx = tokio_util::codec::Framed::new(socket, tokio_util::codec::LinesCodec::new()); + let mut buf = vec![0; 1024]; + while let Some(data) = rx.recv().await { + match encoder.encode(&data, &mut buf) { + Ok(n) => { + tracing::info!("Encoded: {:?}", data); + let s = std::str::from_utf8(&buf[0..n - 1]).unwrap(); // -1 to remove trailing newline + tracing::info!("Sending: [{}]", s); + tx.send(s).await.unwrap(); + } + Err(e) => tracing::info!("Failed to encode: {}", e), + } + } + } + + fn sink_encoding( + ctx: &mut Context, + rx: tokio::sync::mpsc::Receiver, + writer: Writer, + encoding: Encoding, + ) { + match encoding { + Encoding::Csv { sep } => { + let encoder = crate::formats::csv::ser::Writer::new(sep); + Self::sink_writer(ctx, rx, writer, encoder); + } + Encoding::Json => { + let encoder = crate::formats::json::ser::Writer::new(); + Self::sink_writer(ctx, rx, writer, encoder); + } + } + } + + fn sink_writer( + ctx: &mut Context, + rx: tokio::sync::mpsc::Receiver, + writer: Writer, + encoder: impl Encode + Send + 'static, + ) { + ctx.spawn(async move { + match writer { + Writer::Stdout => Self::write_pipe(rx, encoder, tokio::io::stdout()).await, + Writer::File { path } => Self::write_file(rx, path, encoder).await, + // Writer::Http { url } => Self::write_http(rx, url, encoder).await, + Writer::Tcp { addr } => Self::write_socket(rx, addr, encoder).await, + Writer::Kafka { addr: _, topic: _ } => todo!(), + } + }); + } +} diff --git a/crates/runtime/src/builtins/stream/source.rs b/crates/runtime/src/builtins/stream/source.rs new file mode 100644 index 0000000..93bf6a3 --- /dev/null +++ b/crates/runtime/src/builtins/stream/source.rs @@ -0,0 +1,245 @@ +use crate::formats::Decode; +use crate::runner::context::Context; + +use time::OffsetDateTime; +use tokio::io::AsyncBufReadExt; +use tokio::io::AsyncReadExt; +use tokio::io::BufReader; +use tokio_stream::StreamExt; + +use crate::builtins::duration::Duration; +use crate::builtins::encoding::Encoding; +use crate::builtins::path::Path; +use crate::builtins::reader::Reader; +use crate::builtins::socket::SocketAddr; +use crate::builtins::stream::Event; +use crate::builtins::time::Time; +use crate::builtins::time_source::TimeSource; +// use crate::builtins::url::Url; +use crate::traits::Data; + +use super::Stream; + +impl Stream { + pub fn source( + ctx: &mut Context, + reader: Reader, + encoding: Encoding, + time_source: TimeSource Time + Send + 'static>, + ) -> Stream { + Self::source_encoding(ctx, reader, encoding, time_source) + } + + fn source_encoding( + ctx: &mut Context, + reader: Reader, + encoding: Encoding, + time_source: TimeSource Time + Send + 'static>, + ) -> Stream { + match encoding { + Encoding::Csv { sep } => { + let decoder = crate::formats::csv::de::Reader::<1024>::new(sep); + Self::sink_reader(ctx, reader, decoder, time_source) + } + Encoding::Json => { + let decoder = crate::formats::json::de::Reader::new(); + Self::sink_reader(ctx, reader, decoder, time_source) + } + } + } + + async fn read_pipe( + rx: impl AsyncReadExt + Unpin, + mut decoder: impl Decode + 'static, + watch: bool, + tx: tokio::sync::mpsc::Sender, + ) { + let mut rx = BufReader::with_capacity(1024 * 30, rx); + let mut buf = Vec::with_capacity(1024 * 30); + loop { + match rx.read_until(b'\n', &mut buf).await { + Ok(0) => { + tracing::info!("EOF"); + if watch { + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; + } else { + break; + } + } + Ok(n) => match decoder.decode(&buf[0..n]) { + Ok(data) => { + tracing::info!("Decoded: {:?}", data); + tx.send(data).await.unwrap(); + buf.clear(); + } + Err(e) => tracing::info!("Failed to decode: {}", e), + }, + Err(e) => panic!("Failed to read from stdin: {}", e), + } + } + } + + async fn read_file( + path: Path, + decoder: impl Decode + 'static, + watch: bool, + tx2: tokio::sync::mpsc::Sender, + ) { + match tokio::fs::File::open(&path.0).await { + Ok(rx) => Self::read_pipe(rx, decoder, watch, tx2).await, + Err(e) => panic!("Failed to open file `{}`: {}", path.0.display(), e), + } + } + + async fn read_socket( + addr: SocketAddr, + mut decoder: impl Decode + 'static, + tx: tokio::sync::mpsc::Sender, + ) { + tracing::info!("Trying to listen on {}", addr.0); + let socket = tokio::net::TcpListener::bind(addr.0).await.unwrap(); + tracing::info!("Listening on {}", addr.0); + let (socket, _) = socket.accept().await.unwrap(); + tracing::info!("Accepted connection from {}", addr.0); + let mut rx = tokio_util::codec::Framed::new(socket, tokio_util::codec::LinesCodec::new()); + loop { + match rx.next().await { + Some(Ok(line)) => match decoder.decode(line.as_bytes()) { + Ok(data) => { + tracing::info!("Decoded: {:?}", data); + tx.send(data).await.unwrap() + } + Err(e) => tracing::info!("Failed to decode: {}", e), + }, + Some(Err(e)) => tracing::info!("Failed to read: {}", e), + None => break, + } + } + } + + // #[allow(unused)] + // async fn read_http(url: Url, decoder: impl Decode + 'static, tx: tokio::sync::mpsc::Sender) { + // todo!() + // let uri: Uri = url.0.to_string().parse().unwrap(); + // let client = hyper::Client::new(); + // let mut resp = client.get(uri).await.unwrap(); + // loop { + // match resp.body_mut().data().await { + // Some(Ok(chunk)) => match decoder.decode(&chunk) { + // Ok(data) => { + // tracing::info!("Decoded: {:?}", data); + // tx.send(data).await.unwrap(); + // } + // Err(e) => tracing::info!("Failed to decode: {}", e), + // }, + // Some(Err(e)) => tracing::info!("Failed to read: {}", e), + // None => break, + // } + // } + // } + + fn sink_reader( + ctx: &mut Context, + reader: Reader, + decoder: impl Decode + Send + 'static, + time_source: TimeSource Time + Send + 'static>, + ) -> Stream { + let (tx2, rx2) = tokio::sync::mpsc::channel(10); + ctx.spawn(async move { + match reader { + Reader::Stdin => Self::read_pipe(tokio::io::stdin(), decoder, false, tx2).await, + Reader::File { path, watch } => Self::read_file(path, decoder, watch, tx2).await, + // Reader::Http { url } => Self::read_http(url, decoder, tx2).await, + Reader::Tcp { addr } => Self::read_socket(addr, decoder, tx2).await, + Reader::Kafka { addr: _, topic: _ } => todo!(), + } + }); + Self::source_event_time(ctx, rx2, time_source) + } + + fn source_event_time( + ctx: &mut Context, + rx: tokio::sync::mpsc::Receiver, + time_source: TimeSource Time + Send + 'static>, + ) -> Stream { + match time_source { + TimeSource::Ingestion { watermark_interval } => { + Self::source_ingestion_time(ctx, rx, watermark_interval) + } + TimeSource::Event { + extractor, + watermark_interval, + slack, + } => Self::_source_event_time(ctx, rx, extractor, watermark_interval, slack), + } + } + + fn source_ingestion_time( + ctx: &mut Context, + mut rx: tokio::sync::mpsc::Receiver, + watermark_interval: Duration, + ) -> Stream { + ctx.operator(|tx1| async move { + let mut watermark_interval = tokio::time::interval(watermark_interval.to_std()); + loop { + tokio::select! { + _ = watermark_interval.tick() => { + tx1.send(Event::Watermark(Time::now())).await; + }, + data = rx.recv() => { + match data { + Some(data) => tx1.send(Event::Data(Time::now(), data)).await, + None => { + tx1.send(Event::Sentinel).await; + break; + }, + } + } + } + } + }) + } + + fn _source_event_time( + ctx: &mut Context, + mut rx: tokio::sync::mpsc::Receiver, + extractor: impl Fn(&T) -> Time + Send + 'static, + watermark_interval: Duration, + slack: Duration, + ) -> Stream { + ctx.operator(|tx| async move { + let mut latest_time = OffsetDateTime::UNIX_EPOCH; + let slack = slack.to_std(); + let mut watermark_interval = tokio::time::interval(watermark_interval.to_std()); + let mut watermark = OffsetDateTime::UNIX_EPOCH; + loop { + tokio::select! { + _ = watermark_interval.tick() => { + if latest_time > OffsetDateTime::UNIX_EPOCH { + watermark = latest_time - slack; + tx.send(Event::Watermark(Time(watermark))).await; + } + }, + data = rx.recv() => { + match data { + Some(data) => { + let time = extractor(&data); + if time.0 < watermark { + continue; + } + if time.0 > latest_time { + latest_time = time.0; + } + tx.send(Event::Data(time, data)).await; + } + None => { + tx.send(Event::Sentinel).await; + break; + }, + } + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/window.rs b/crates/runtime/src/builtins/stream/window.rs new file mode 100644 index 0000000..5d3637f --- /dev/null +++ b/crates/runtime/src/builtins/stream/window.rs @@ -0,0 +1,35 @@ +use crate::builtins::duration::Duration; +use crate::builtins::time::Time; + +pub mod count_sliding_aligned_commutative_associative; +pub mod count_sliding_holistic; +pub mod count_sliding_invertible; +pub mod count_tumbling_holistic; + +pub mod time_sliding_aligned_commutative_associative; +pub mod time_sliding_aligned_holistic; +pub mod time_sliding_commutative_invertible; +pub mod time_sliding_invertible; +pub mod time_tumbling_holistic; + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct WindowRange { + pub t0: Time, + pub t1: Time, +} + +impl WindowRange { + pub fn new(t0: Time, t1: Time) -> Self { + Self { t0, t1 } + } + + pub fn of(time: Time, duration: Duration, step: Duration) -> Self { + let t0 = align(time, step); + let t1 = t0 + duration; + Self { t0, t1 } + } +} + +pub fn align(time: Time, step: Duration) -> Time { + time.div_floor(step) * step +} diff --git a/crates/runtime/src/builtins/stream/window/count_sliding_aligned_commutative_associative.rs b/crates/runtime/src/builtins/stream/window/count_sliding_aligned_commutative_associative.rs new file mode 100644 index 0000000..f2bd683 --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/count_sliding_aligned_commutative_associative.rs @@ -0,0 +1,64 @@ +use std::collections::VecDeque; + +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::runner::context::Context; +use crate::traits::Data; + +impl Stream { + #[allow(clippy::too_many_arguments)] + pub fn count_sliding_aligned_commutative_associative_window( + mut self, + ctx: &mut Context, + size: usize, + step: usize, + _init: P, + lift: impl Fn(&T) -> P + Send + 'static, + combine: impl Fn(&P, &P) -> P + Send + 'static, + lower: impl Fn(&P) -> O + Send + 'static, + ) -> Stream + where + P: Data, + O: Data, + { + assert!(size % step == 0); + ctx.operator(|tx| async move { + let mut s: VecDeque

= VecDeque::new(); + let mut n = 0; + loop { + match self.recv().await { + Event::Data(time, data) => { + let data = lift(&data); + if n % step == 0 { + s.push_back(data); + } else { + let agg = s.back_mut().unwrap(); + *agg = combine(&agg, &data); + } + if n == size { + let agg = s.pop_front().unwrap(); + let agg = s + .range(0..(size / step) - 1) + .fold(agg, |agg, data| combine(&agg, &data)); + let data = lower(&agg); + tx.send(Event::Data(time, data)).await; + n -= step; + } else { + n += 1; + } + } + Event::Watermark(time) => { + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/window/count_sliding_holistic.rs b/crates/runtime/src/builtins/stream/window/count_sliding_holistic.rs new file mode 100644 index 0000000..8520eda --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/count_sliding_holistic.rs @@ -0,0 +1,60 @@ +use std::collections::VecDeque; + +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::runner::context::Context; +use crate::traits::Data; + +impl Stream { + pub fn count_sliding_holistic_window( + mut self, + ctx: &mut Context, + size: usize, + step: usize, + compute: impl Fn(Window) -> O + Send + 'static, + ) -> Stream + where + O: Data, + { + ctx.operator(|tx| async move { + let mut s: VecDeque = VecDeque::with_capacity(size); + loop { + match self.recv().await { + Event::Data(time, data) => { + s.push_back(data); + if s.len() == size { + let result = compute(Window::new(&s)); + for _ in 0..step { + s.pop_front(); + } + tx.send(Event::Data(time, result.deep_clone())).await; + } + } + Event::Watermark(time) => { + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} + +pub struct Window<'a, T> { + data: &'a VecDeque, +} + +impl<'a, T> Window<'a, T> { + fn new(data: &'a VecDeque) -> Self { + Self { data } + } + pub fn iter(&self) -> std::collections::vec_deque::Iter<'a, T> { + self.data.iter() + } +} diff --git a/crates/runtime/src/builtins/stream/window/count_sliding_invertible.rs b/crates/runtime/src/builtins/stream/window/count_sliding_invertible.rs new file mode 100644 index 0000000..2eb12b6 --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/count_sliding_invertible.rs @@ -0,0 +1,60 @@ +use std::collections::VecDeque; + +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::runner::context::Context; +use crate::traits::Data; + +impl Stream { + #[allow(clippy::too_many_arguments)] + pub fn count_sliding_invertible_window( + mut self, + ctx: &mut Context, + size: usize, + step: usize, + init: P, + lift: impl Fn(&T) -> P + Send + 'static, + combine: impl Fn(&P, &P) -> P + Send + 'static, + lower: impl Fn(&P) -> O + Send + 'static, + inverse: impl Fn(&P, &P) -> P + Send + 'static, + ) -> Stream + where + P: Data, + O: Data, + { + ctx.operator(|tx| async move { + let mut s: P = init; + let mut vec: VecDeque

= VecDeque::new(); + let mut n = 0; + loop { + match self.recv().await { + Event::Data(time, data) => { + let data = lift(&data); + s = combine(&s, &data); + vec.push_back(data); + if n == size { + tx.send(Event::Data(time, lower(&s).deep_clone())).await; + for _ in 0..step { + let data = vec.pop_front().unwrap(); + s = inverse(&s, &data); + } + n -= step; + } else { + n += 1; + } + } + Event::Watermark(time) => { + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/window/count_tumbling_holistic.rs b/crates/runtime/src/builtins/stream/window/count_tumbling_holistic.rs new file mode 100644 index 0000000..abe2974 --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/count_tumbling_holistic.rs @@ -0,0 +1,55 @@ +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::runner::context::Context; +use crate::traits::Data; + +impl Stream { + pub fn count_tumbling_holistic_window( + mut self, + ctx: &mut Context, + size: usize, + compute: impl Fn(Window) -> O + Send + 'static, + ) -> Stream + where + O: Data, + { + ctx.operator(|tx| async move { + let mut agg: Vec = Vec::with_capacity(size); + loop { + match self.recv().await { + Event::Data(time, data) => { + agg.push(data); + if agg.len() == size { + let result = compute(Window::new(&agg)); + tx.send(Event::Data(time, result.deep_clone())).await; + agg.clear(); + } + } + Event::Watermark(time) => { + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} + +pub struct Window<'a, T> { + data: &'a Vec, +} + +impl<'a, T> Window<'a, T> { + fn new(data: &'a Vec) -> Self { + Self { data } + } + pub fn iter(&self) -> std::slice::Iter<'a, T> { + self.data.iter() + } +} diff --git a/crates/runtime/src/builtins/stream/window/time_sliding_aligned_commutative_associative.rs b/crates/runtime/src/builtins/stream/window/time_sliding_aligned_commutative_associative.rs new file mode 100644 index 0000000..71cf73a --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/time_sliding_aligned_commutative_associative.rs @@ -0,0 +1,71 @@ +use std::collections::BTreeMap; + +use crate::builtins::duration::Duration; +use crate::builtins::stream::window::align; +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; + +use super::WindowRange; + +impl Stream { + // Requires that duration % step == 0 + #[allow(clippy::too_many_arguments)] + pub fn time_sliding_aligned_commutative_associative_window( + mut self, + ctx: &mut Context, + duration: Duration, + step: Duration, + _init: P, + lift: impl Fn(&T) -> P + Send + 'static, + combine: impl Fn(&P, &P) -> P + Send + 'static, + lower: impl Fn(&P, WindowRange) -> O + Send + 'static, + ) -> Stream + where + O: Data, + P: Data, + { + assert!(duration % step == Duration::from_seconds(0)); + ctx.operator(|tx| async move { + let mut slices: BTreeMap = BTreeMap::new(); + loop { + match self.recv().await { + Event::Data(time, data) => { + let data = lift(&data); + slices + .entry(align(time, step)) + .and_modify(|agg| *agg = combine(agg, &data)) + .or_insert(data); + } + Event::Watermark(time) => { + while let Some(entry) = slices.first_entry() { + let t0 = *entry.key(); + let t1 = t0 + duration; + let wr = WindowRange::new(t0, t1); + if wr.t1 <= time { + let mut agg = entry.remove(); + for (_, v) in slices.range(..t1) { + agg = combine(&agg, v); + } + let output = lower(&agg, wr); + tx.send(Event::Data(time, output.deep_clone())).await; + } else { + break; + } + } + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic.rs b/crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic.rs new file mode 100644 index 0000000..5cbc87f --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic.rs @@ -0,0 +1,140 @@ +use derive_more::Deref; +use derive_more::DerefMut; +use std::collections::BTreeMap; + +use crate::builtins::duration::Duration; +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; + +use super::align; +use super::WindowRange; + +impl Stream { + /// This window maintains a BTreeMap that maps window starting times to slices of data, where + /// each slice is a vector of (Time, Data) pairs. When a watermark is received, the window + /// iterates over the slices before the watermark and sends the result of the compute function + pub fn time_sliding_aligned_holistic_window( + mut self, + ctx: &mut Context, + duration: Duration, + step: Duration, + compute: impl Fn(Window, WindowRange) -> O + Send + 'static, + ) -> Stream + where + O: Data, + { + ctx.operator(|tx| async move { + let mut s: WindowState = WindowState::new(); + loop { + match self.recv().await { + Event::Data(time, data) => { + let t0 = align(time, step); + s.get_mut(t0).push((time, data)); + } + Event::Watermark(time) => { + while let Some(entry) = s.0.first_entry() { + let t0 = *entry.key(); + let wr = WindowRange::new(t0, t0 + duration); + if wr.t1 > time { + break; + } + let win = Window::new(&s.0, wr.t1); + let data = compute(win, wr); + s.0.pop_first(); + tx.send(Event::Data(wr.t1, data.deep_clone())).await; + } + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} + +#[derive(Debug, Default, Deref, DerefMut)] +struct WindowState(BTreeMap>); + +impl WindowState { + fn new() -> Self { + Self(BTreeMap::new()) + } + fn get_mut(&mut self, time: Time) -> &mut Slice { + self.0.entry(time).or_default() + } +} + +#[derive(Debug)] +pub struct Window<'a, T> { + buffer: &'a BTreeMap>, + t1: Time, +} + +impl<'a, T> Window<'a, T> { + fn new(buffer: &'a BTreeMap>, t1: Time) -> Self { + Self { buffer, t1 } + } + pub fn iter(&self) -> WindowIter { + WindowIter::new(self.buffer.range(..self.t1)) + } +} + +impl<'a, T> IntoIterator for &'a Window<'a, T> { + type Item = &'a T; + type IntoIter = WindowIter<'a, T>; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +#[derive(Debug, Deref, DerefMut)] +struct Slice(Vec<(Time, T)>); + +impl Default for Slice { + fn default() -> Self { + Self(Vec::new()) + } +} + +pub struct WindowIter<'a, T> { + iter: std::collections::btree_map::Range<'a, Time, Slice>, + current: Option>, +} + +impl<'a, T> WindowIter<'a, T> { + fn new(iter: std::collections::btree_map::Range<'a, Time, Slice>) -> Self { + Self { + iter, + current: None, + } + } +} + +impl<'a, T> Iterator for WindowIter<'a, T> { + type Item = &'a T; + + fn next(&mut self) -> Option { + if let Some(current) = &mut self.current { + if let Some(item) = current.next().map(|(_, ref item)| item) { + return Some(item); + } + } + if let Some((_, slice)) = self.iter.next() { + let mut current = slice.0.iter(); + let next = current.next().map(|(_, ref item)| item); + self.current = Some(current); + return next; + } + None + } +} diff --git a/crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic_vec.rs b/crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic_vec.rs new file mode 100644 index 0000000..71d0206 --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/time_sliding_aligned_holistic_vec.rs @@ -0,0 +1,140 @@ +use crate::builtins::duration::Duration; +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; + +use super::align; +use super::WindowRange; + +impl Stream { + /// This window maintains a BTreeMap that maps window starting times to slices of data, where + /// each slice is a collection of (Time, Data) pairs. When a watermark is received, the window + /// iterates over the slices before the watermark and sends the result of the compute function + pub fn time_sliding_aligned_holistic_vec_window( + mut self, + ctx: &mut Context, + duration: Duration, + step: Duration, + compute: impl Fn(Window, WindowRange) -> O + Send + 'static, + ) -> Stream + where + O: Data, + { + ctx.operator(|tx| async move { + let mut buffer: Vec<(Time, Slice)> = Vec::new(); + // Slices before this time are sorted + let mut t_sorted: Time = Time::zero(); + loop { + match self.recv().await { + Event::Data(time, data) => { + let t0 = align(time, step); + match buffer.binary_search_by_key(&t0, |(t, _)| *t) { + Ok(i) => { + (buffer[i].1).0.push((time, data)); + } + Err(i) => { + buffer.insert(i, (t0, Slice::new())); + (buffer[i].1).0.push((time, data)); + } + } + } + Event::Watermark(time) => { + let t_safe = align(time, step); + for (t, slice) in &mut buffer { + if *t < t_sorted { + continue; + } else if *t < t_safe { + slice.0.sort_by_key(|(t, _)| *t); + } else { + break; + } + } + t_sorted = t_safe; + for (t0, _) in &buffer { + let wr = WindowRange::new(*t0, *t0 + duration); + if wr.t1 > time { + break; + } + let data = compute(Window::new(&buffer), wr); + tx.send(Event::Data(wr.t1, data.deep_clone())).await; + } + buffer.retain(|(t, _)| *t >= t_safe); + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} + +pub struct Window<'a, T> { + buffer: &'a [(Time, Slice)], +} + +impl<'a, T> Window<'a, T> { + fn new(buffer: &'a [(Time, Slice)]) -> Self { + Self { buffer } + } + pub fn iter(&self) -> WindowIter { + WindowIter::new(self.buffer.iter()) + } +} + +impl<'a, T> IntoIterator for &'a Window<'a, T> { + type Item = &'a T; + type IntoIter = WindowIter<'a, T>; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +struct Slice(Vec<(Time, T)>); + +impl Slice { + fn new() -> Self { + Self(Vec::new()) + } +} + +pub struct WindowIter<'a, T> { + iter: std::slice::Iter<'a, (Time, Slice)>, + current: Option>, +} + +impl<'a, T> WindowIter<'a, T> { + fn new(iter: std::slice::Iter<'a, (Time, Slice)>) -> Self { + Self { + iter, + current: None, + } + } +} + +impl<'a, T> Iterator for WindowIter<'a, T> { + type Item = &'a T; + + fn next(&mut self) -> Option { + if let Some(current) = &mut self.current { + if let Some(item) = current.next().map(|(_, ref item)| item) { + return Some(item); + } + } + if let Some((_, slice)) = self.iter.next() { + let mut current = slice.0.iter(); + let next = current.next().map(|(_, ref item)| item); + self.current = Some(current); + return next; + } + None + } +} diff --git a/crates/runtime/src/builtins/stream/window/time_sliding_commutative_invertible.rs b/crates/runtime/src/builtins/stream/window/time_sliding_commutative_invertible.rs new file mode 100644 index 0000000..9a517d3 --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/time_sliding_commutative_invertible.rs @@ -0,0 +1,92 @@ +use std::collections::BTreeMap; + +use crate::builtins::duration::Duration; +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; + +use super::WindowRange; + +impl Stream { + // Properties: + // * Inverse: We can undo aggregations. + #[allow(clippy::too_many_arguments)] + pub fn time_sliding_commutative_invertible_window( + mut self, + ctx: &mut Context, + duration: Duration, + step: Duration, + init: P, + lift: impl Fn(&T) -> P + Send + 'static, + combine: impl Fn(&P, &P) -> P + Send + 'static, + lower: impl Fn(&P, WindowRange) -> O + Send + 'static, + inverse: impl Fn(&P, &P) -> P + Send + 'static, + ) -> Stream + where + O: Data, + P: Data, + { + ctx.operator(|tx| async move { + let mut buffer: BTreeMap = BTreeMap::new(); + let mut first: Option = None; + let mut agg: P = init; + loop { + match self.recv().await { + Event::Data(time, data) => { + // With commutativity, we can pre-aggregate data for the first window + let data = lift(&data); + if let Some(first) = first.as_mut() { + if time < first.t1 { + agg = combine(&agg, &data); + } + } else { + let wr = WindowRange::of(time, duration, step); + first = Some(wr); + agg = combine(&agg, &data); + } + buffer.insert(time, data); + } + Event::Watermark(time) => { + // Process the first window + if let Some(wr) = first { + if wr.t1 <= time { + let data = lower(&agg, wr); + tx.send(Event::Data(wr.t1, data.deep_clone())).await; + let after = buffer.split_off(&(wr.t0 + step)); + for (_, p) in std::mem::replace(&mut buffer, after) { + agg = inverse(&agg, &p); + } + first = None; + } + } + while let Some(entry) = buffer.first_entry() { + let wr = WindowRange::of(*entry.key(), duration, step); + if wr.t1 <= time { + for (_, p) in buffer.range(..wr.t1) { + agg = combine(&agg, p); + } + let data = lower(&agg, wr); + tx.send(Event::Data(wr.t1, data.deep_clone())).await; + // Evict the part of the oldest window that is no longer needed. + let after = buffer.split_off(&(wr.t0 + step)); + for (_, p) in std::mem::replace(&mut buffer, after) { + agg = inverse(&agg, &p); + } + } + } + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/window/time_sliding_invertible.rs b/crates/runtime/src/builtins/stream/window/time_sliding_invertible.rs new file mode 100644 index 0000000..fa63549 --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/time_sliding_invertible.rs @@ -0,0 +1,67 @@ +use crate::builtins::duration::Duration; +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; +use std::collections::BTreeMap; + +use super::WindowRange; + +impl Stream { + // Properties: + // * Inverse: We can undo aggregations. + #[allow(clippy::too_many_arguments)] + pub fn time_sliding_invertible_window( + mut self, + ctx: &mut Context, + duration: Duration, + step: Duration, + init: P, + lift: impl Fn(&T) -> P + Send + 'static, + combine: impl Fn(&P, &P) -> P + Send + 'static, + lower: impl Fn(&P, WindowRange) -> O + Send + 'static, + inverse: impl Fn(&P, &P) -> P + Send + 'static, + ) -> Stream + where + O: Data, + P: Data, + { + ctx.operator(|tx| async move { + let mut buffer: BTreeMap = BTreeMap::new(); + let mut agg: P = init; + loop { + match self.recv().await { + Event::Data(time, data) => { + buffer.insert(time, lift(&data)); + } + Event::Watermark(time) => { + while let Some(entry) = buffer.first_entry() { + let wr = WindowRange::of(*entry.key(), duration, step); + if wr.t1 < time { + for (_, p) in buffer.range(..wr.t1) { + agg = combine(&agg, &p); + } + let data = lower(&agg, wr); + tx.send(Event::Data(wr.t1, data.deep_clone())).await; + // Evict the part of the oldest window that is no longer needed. + let after = buffer.split_off(&(wr.t0 + step)); + for (_, p) in std::mem::replace(&mut buffer, after) { + agg = inverse(&agg, &p); + } + } + } + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/stream/window/time_tumbling_holistic.rs b/crates/runtime/src/builtins/stream/window/time_tumbling_holistic.rs new file mode 100644 index 0000000..669465b --- /dev/null +++ b/crates/runtime/src/builtins/stream/window/time_tumbling_holistic.rs @@ -0,0 +1,55 @@ +use crate::builtins::duration::Duration; +use crate::builtins::stream::Event; +use crate::builtins::stream::Stream; +use crate::builtins::time::Time; +use crate::runner::context::Context; +use crate::traits::Data; +use crate::BTreeMap; + +use super::align; +use super::WindowRange; + +impl Stream { + pub fn time_tumbling_holistic_window( + mut self, + ctx: &mut Context, + duration: Duration, + compute: impl Fn(&[T], WindowRange) -> O + Send + 'static, + ) -> Stream + where + O: Data, + { + ctx.operator(|tx| async move { + let mut buffer: BTreeMap> = BTreeMap::new(); + loop { + match self.recv().await { + Event::Data(time, data) => { + let t0 = align(time, duration); + buffer.entry(t0).or_default().push(data); + } + Event::Watermark(time) => { + while let Some(entry) = buffer.first_entry() { + let t0 = *entry.key(); + let t1 = t0 + duration; + let wr = WindowRange::new(t0, t1); + if wr.t1 > time { + break; + } + let vs = entry.remove(); + let data = compute(&vs, wr); + tx.send(Event::Data(wr.t1, data.deep_clone())).await; + } + tx.send(Event::Watermark(time)).await; + } + Event::Snapshot(i) => { + tx.send(Event::Snapshot(i)).await; + } + Event::Sentinel => { + tx.send(Event::Sentinel).await; + break; + } + } + } + }) + } +} diff --git a/crates/runtime/src/builtins/string.rs b/crates/runtime/src/builtins/string.rs new file mode 100644 index 0000000..b7532ed --- /dev/null +++ b/crates/runtime/src/builtins/string.rs @@ -0,0 +1,222 @@ +use crate::formats::Decode; +use crate::formats::Encode; +use macros::DeepClone; +use macros::Send; +use macros::Unpin; + +use serde::de::DeserializeOwned; +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::encoding::Encoding; +use crate::builtins::unchecked_cell::UncheckedCell; +use crate::builtins::vec::Vec; +use crate::traits::DeepClone; + +#[derive(Clone, DeepClone, Send, Hash, Eq, PartialEq, Ord, PartialOrd, Debug, Unpin)] +#[repr(C)] +pub enum String { + Text(&'static str), + Heap(HeapString), +} + +#[derive( + Clone, + DeepClone, + Send, + Hash, + Eq, + PartialEq, + Ord, + PartialOrd, + Debug, + Unpin, + Serialize, + Deserialize, +)] +pub struct HeapString(UncheckedCell); + +impl AsRef for HeapString { + fn as_ref(&self) -> &str { + self.0.as_ref() + } +} + +impl PartialEq for String { + fn eq(&self, other: &str) -> bool { + self.as_ref() == other + } +} + +impl Serialize for String { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + String::Text(s) => s.serialize(serializer), + String::Heap(s) => s.serialize(serializer), + } + } +} + +impl<'de> Deserialize<'de> for String { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let s = ::deserialize(deserializer)?; + Ok(String::from(s)) + } +} + +impl std::fmt::Display for String { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, r#""{}""#, self.as_ref()) + } +} + +impl AsRef for String { + fn as_ref(&self) -> &str { + match self { + String::Text(s) => s, + String::Heap(s) => s.as_ref(), + } + } +} + +impl Default for String { + fn default() -> Self { + String::new() + } +} + +impl String { + pub fn new() -> String { + String::Heap(HeapString(UncheckedCell::new(std::string::String::new()))) + } + + pub fn with_capacity(capacity: usize) -> String { + String::from(std::string::String::with_capacity(capacity)) + } + + unsafe fn update(&mut self, f: impl FnOnce(&mut std::string::String) -> O) -> O { + match self { + String::Text(s) => { + let mut s = std::string::String::from(*s); + let o = f(&mut s); + *self = String::Heap(HeapString(UncheckedCell::new(s))); + o + } + String::Heap(s) => f(s.0.as_mut_unchecked()), + } + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn push(mut self, ch: char) -> Self { + self.update(|s| s.push(ch)); + self + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn push_string(mut self, other: String) -> Self { + self.update(|s| s.push_str(other.as_ref())); + self + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn remove(mut self, idx: usize) -> (Self, char) { + // Safety: This is an atomic operation. + let c = self.update(|s| s.remove(idx)); + (self, c) + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn insert(mut self, idx: usize, ch: char) -> Self { + self.update(|s| s.insert(idx, ch)); + self + } + + pub fn is_empty(self) -> bool { + self.as_ref().is_empty() + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn split_off(mut self, at: usize) -> (String, String) { + // Safety: This is an atomic operation. + let s = self.update(|s| String::from(s.split_off(at))); + (self, s) + } + + pub fn lines(self) -> Vec { + self.as_ref() + .lines() + .map(|s| String::from(s.to_string())) + .collect::>() + .into() + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn clear(mut self) -> Self { + self.update(|s| s.clear()); + self + } + + pub fn len(self) -> usize { + self.as_ref().len() + } + + pub fn decode(self, encoding: Encoding) -> T { + match encoding { + Encoding::Csv { sep } => crate::formats::csv::de::Reader::<1024>::new(sep) + .decode(self.as_ref().as_bytes()) + .unwrap(), + Encoding::Json => crate::formats::json::de::Reader::new() + .decode(self.as_ref().as_bytes()) + .unwrap(), + } + } + + pub fn encode(value: T, encoding: Encoding) -> Self { + let mut output = std::vec::Vec::new(); + match encoding { + Encoding::Csv { sep } => crate::formats::csv::ser::Writer::new(sep) + .encode(&value, &mut output) + .unwrap(), + Encoding::Json => crate::formats::json::ser::Writer::new() + .encode(&value, &mut output) + .unwrap(), + }; + String::from(std::string::String::from_utf8(output).unwrap()) + } +} + +impl<'a> From<&'a str> for String { + fn from(s: &'a str) -> Self { + String::from(s.to_string()) + } +} + +impl From for String { + fn from(i: i32) -> Self { + String::from(i.to_string()) + } +} + +impl From for String { + fn from(s: std::string::String) -> Self { + String::Heap(HeapString(UncheckedCell::new(s))) + } +} diff --git a/crates/runtime/src/builtins/time.rs b/crates/runtime/src/builtins/time.rs new file mode 100644 index 0000000..01ba3b9 --- /dev/null +++ b/crates/runtime/src/builtins/time.rs @@ -0,0 +1,179 @@ +use crate::builtins::duration::Duration; +use crate::traits::DeepClone; + +use num::Integer; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; +use time::format_description::well_known; + +use super::string::String; + +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] +#[repr(C)] +pub struct Time(pub time::OffsetDateTime); + +const EU: &[time::format_description::FormatItem<'_>] = + time::macros::format_description!(version = 2, "[year]-[month]-[day] [hour]:[minute]:[second]"); + +const US: &[time::format_description::FormatItem<'_>] = time::macros::format_description!( + version = 2, + "[month]/[day]/[year] [hour]:[minute]:[second] [period case:upper]" +); + +impl Serialize for Time { + fn serialize(&self, s: S) -> Result { + let v = time::OffsetDateTime::format(self.0, &well_known::Iso8601::DEFAULT) + .map_err(serde::ser::Error::custom)?; + v.serialize(s) + } +} + +impl<'de> Deserialize<'de> for Time { + fn deserialize>(d: D) -> Result { + let s: std::string::String = Deserialize::deserialize(d)?; + match time::PrimitiveDateTime::parse(s.as_ref(), &well_known::Iso8601::DEFAULT) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &well_known::Rfc2822)) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &well_known::Rfc3339)) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &EU)) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &US)) + .map_err(serde::de::Error::custom) + { + Ok(v) => Ok(Time(v.assume_utc())), + Err(e) => s + .as_str() + .parse() + .ok() + .and_then(|v| time::OffsetDateTime::from_unix_timestamp(v).ok()) + .map(Time) + .ok_or(e), + } + } +} + +impl DeepClone for Time { + #[inline(always)] + fn deep_clone(&self) -> Self { + Time(self.0) + } +} + +impl Time { + #[inline(always)] + pub fn now() -> Time { + Time(time::OffsetDateTime::now_utc()) + } + + #[inline(always)] + pub fn from_seconds(seconds: i64) -> Time { + Time(time::OffsetDateTime::from_unix_timestamp(seconds).unwrap()) + } + + #[inline(always)] + pub fn from_milliseconds(millis: i128) -> Time { + Self::from_nanoseconds(millis * 1000000) + } + + #[inline(always)] + pub fn from_microseconds(micros: i128) -> Time { + Self::from_nanoseconds(micros * 1000) + } + + #[inline(always)] + pub fn from_nanoseconds(nanos: i128) -> Time { + Time(time::OffsetDateTime::from_unix_timestamp_nanos(nanos).unwrap()) + } + + pub fn from_string(text: String, format: String) -> Time { + let format = time::format_description::parse_owned::<2>(format.as_ref()).unwrap(); + Time(time::OffsetDateTime::parse(text.as_ref(), &format).unwrap()) + } + + pub const fn seconds(self) -> i64 { + self.0.unix_timestamp() + } + + pub const fn nanoseconds(self) -> i128 { + self.0.unix_timestamp_nanos() + } + + pub const fn milliseconds(self) -> i128 { + self.0.unix_timestamp_nanos() / 1_000_000 + } + + pub const fn microseconds(self) -> i128 { + self.0.unix_timestamp_nanos() / 1_000 + } + + pub const fn month(self) -> i32 { + self.0.month() as i32 + } + + pub const fn day(self) -> i32 { + self.0.day() as i32 + } + + pub const fn year(self) -> i32 { + self.0.year() + } + + pub fn to_text(self, format: String) -> String { + let format = time::format_description::parse_owned::<2>(format.as_ref()).unwrap(); + String::from(self.0.format(&format).unwrap().as_str()) + } + + pub fn div_floor(self, duration: Duration) -> Self { + Time::from_nanoseconds(Integer::div_floor( + &self.nanoseconds(), + &duration.nanoseconds(), + )) + } + + pub const fn zero() -> Self { + Time(time::OffsetDateTime::UNIX_EPOCH) + } +} + +impl std::ops::Add for Time { + type Output = Self; + + #[inline(always)] + fn add(self, rhs: Duration) -> Self::Output { + Time::from_nanoseconds(self.nanoseconds() + rhs.nanoseconds()) + } +} + +impl std::ops::Sub for Time { + type Output = Self; + + #[inline(always)] + fn sub(self, rhs: Duration) -> Self::Output { + Time::from_nanoseconds(self.nanoseconds() - rhs.nanoseconds()) + } +} + +impl std::ops::Mul for Time { + type Output = Self; + + #[inline(always)] + fn mul(self, rhs: Duration) -> Self::Output { + Time::from_nanoseconds(self.nanoseconds() * rhs.nanoseconds()) + } +} + +impl std::ops::Div for Time { + type Output = Self; + + #[inline(always)] + fn div(self, rhs: Duration) -> Self::Output { + Time::from_nanoseconds(self.nanoseconds() / rhs.nanoseconds()) + } +} + +impl std::cmp::PartialEq for Time { + #[inline(always)] + fn eq(&self, other: &Duration) -> bool { + self.nanoseconds() == other.nanoseconds() + } +} diff --git a/crates/runtime/src/builtins/time_source.rs b/crates/runtime/src/builtins/time_source.rs new file mode 100644 index 0000000..1085eea --- /dev/null +++ b/crates/runtime/src/builtins/time_source.rs @@ -0,0 +1,30 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::duration::Duration; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum TimeSource { + Ingestion { + watermark_interval: Duration, + }, + Event { + extractor: F, + watermark_interval: Duration, + slack: Duration, + }, +} + +impl TimeSource { + pub fn ingestion(watermark_interval: Duration) -> Self { + Self::Ingestion { watermark_interval } + } + pub fn event(extractor: F, watermark_interval: Duration, slack: Duration) -> Self { + Self::Event { + extractor, + watermark_interval, + slack, + } + } +} diff --git a/crates/runtime/src/builtins/unchecked_cell.rs b/crates/runtime/src/builtins/unchecked_cell.rs new file mode 100644 index 0000000..240e1a2 --- /dev/null +++ b/crates/runtime/src/builtins/unchecked_cell.rs @@ -0,0 +1,60 @@ +use macros::Send; +use macros::Sync; +use macros::Unpin; +use serde::Deserialize; +use serde::Serialize; + +use crate::traits::DeepClone; + +#[derive( + Default, Send, Sync, Unpin, Serialize, Deserialize, Eq, PartialEq, Hash, Ord, PartialOrd, +)] +#[repr(C)] +pub(crate) struct UncheckedCell(pub(crate) std::rc::Rc); + +impl DeepClone for UncheckedCell { + fn deep_clone(&self) -> Self { + Self(self.0.deep_clone()) + } +} + +impl Clone for UncheckedCell { + fn clone(&self) -> Self { + UncheckedCell(self.0.clone()) + } +} + +impl std::ops::Deref for UncheckedCell { + type Target = T; + fn deref(&self) -> &T { + self.0.as_ref() + } +} + +impl std::fmt::Debug for UncheckedCell { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.as_ref().fmt(f) + } +} + +impl UncheckedCell { + pub(crate) fn new(value: T) -> UncheckedCell { + UncheckedCell(std::rc::Rc::new(value)) + } + + // # Safety + // + // This method can only be used if the caller can guarantee that + // the value is not read or borrowed during the lifetime of `&mut T`. + // + // Borrow checking guarantees that the value is not dropped while + // the reference is still in use. + #[allow(clippy::mut_from_ref)] + pub(crate) unsafe fn as_mut_unchecked(&self) -> &mut T { + let v = std::rc::Rc::into_raw(self.0.clone()) as *mut T; + unsafe { + std::rc::Rc::decrement_strong_count(v); + &mut *v + } + } +} diff --git a/crates/runtime/src/builtins/url.rs b/crates/runtime/src/builtins/url.rs new file mode 100644 index 0000000..d0d6d3c --- /dev/null +++ b/crates/runtime/src/builtins/url.rs @@ -0,0 +1,22 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::result::Result; +use crate::builtins::string::String; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +#[repr(C)] +pub struct Url(pub url::Url); + +impl Url { + pub fn parse(s: String) -> Result { + match url::Url::parse(s.as_ref()) { + Ok(v) => Result::ok(Url(v)), + Err(s) => Result::error(s.to_string().into()), + } + } + + pub fn to_string(self) -> String { + String::from(self.0.to_string()) + } +} diff --git a/crates/runtime/src/builtins/vec.rs b/crates/runtime/src/builtins/vec.rs new file mode 100644 index 0000000..6962a55 --- /dev/null +++ b/crates/runtime/src/builtins/vec.rs @@ -0,0 +1,168 @@ +use macros::Send; +use macros::Sync; +use macros::Unpin; + +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::option::Option; +use crate::builtins::unchecked_cell::UncheckedCell; +use crate::traits::DeepClone; + +#[derive(Debug, Send, Sync, Unpin, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)] +#[repr(C)] +pub struct Vec(pub(crate) UncheckedCell>); + +impl Clone for Vec { + fn clone(&self) -> Self { + Vec(self.0.clone()) + } +} + +impl std::hash::Hash for Vec { + fn hash(&self, state: &mut H) { + self.0.hash(state) + } +} + +impl DeepClone for Vec { + fn deep_clone(&self) -> Self { + Self(self.0.deep_clone()) + } +} + +impl Default for Vec { + fn default() -> Self { + Vec(UncheckedCell::new(std::vec::Vec::::new())) + } +} + +impl Vec { + pub fn new() -> Vec { + Self::default() + } + + pub fn len(self) -> usize { + self.0.len() + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn push(&self, value: T) + where + T: Clone, + { + self.0.as_mut_unchecked().push(value); + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn pop(&self) -> Option + where + T: Clone, + { + Option::from(self.0.as_mut_unchecked().pop()) + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn remove(&self, index: usize) -> T + where + T: Clone, + { + self.0.as_mut_unchecked().remove(index) + } + + pub fn get(&self, index: usize) -> Option + where + T: Clone, + { + Option::from(self.0.get(index).cloned()) + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn insert(&self, index: usize, value: T) + where + T: Clone, + { + self.0.as_mut_unchecked().insert(index, value); + } + + pub fn is_empty(self) -> bool { + self.0.is_empty() + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn sort(&self) + where + T: Clone + PartialOrd, + { + self.0 + .as_mut_unchecked() + .sort_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)); + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn truncate(&self, len: usize) + where + T: Clone, + { + self.0.as_mut_unchecked().truncate(len); + } + + /// # Safety + /// + /// Refer to the documentation of `UncheckedCell::as_mut_unchecked`. + pub unsafe fn clear(&self) { + self.0.as_mut_unchecked().clear(); + } + + pub fn iter(&self) -> VecIter + where + T: Clone, + { + VecIter { + vec: self.clone(), + index: 0, + } + } +} + +impl From> for Vec { + fn from(vec: std::vec::Vec) -> Self { + Vec(UncheckedCell::new(vec)) + } +} + +pub struct VecIter { + vec: Vec, + index: usize, +} + +impl Iterator for VecIter +where + T: Clone, +{ + type Item = T; + + fn next(&mut self) -> std::option::Option { + let result = self.vec.get(self.index); + self.index += 1; + result.0 + } +} + +impl FromIterator for Vec { + fn from_iter>(iter: I) -> Self { + Vec(UncheckedCell::new(std::vec::Vec::from_iter(iter))) + } +} diff --git a/crates/runtime/src/builtins/writer.rs b/crates/runtime/src/builtins/writer.rs new file mode 100644 index 0000000..9a78a78 --- /dev/null +++ b/crates/runtime/src/builtins/writer.rs @@ -0,0 +1,34 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::builtins::path::Path; +use crate::builtins::socket::SocketAddr; +use crate::builtins::string::String; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum Writer { + Stdout, + File { path: Path }, + // Http { url: Url }, + Tcp { addr: SocketAddr }, + Kafka { addr: SocketAddr, topic: String }, +} + +impl Writer { + pub fn stdout() -> Self { + Self::Stdout + } + pub fn file(path: Path) -> Self { + Self::File { path } + } + // pub fn http(url: Url) -> Self { + // Self::Http { url } + // } + pub fn tcp(addr: SocketAddr) -> Self { + Self::Tcp { addr } + } + pub fn kafka(addr: SocketAddr, topic: String) -> Self { + Self::Kafka { addr, topic } + } +} diff --git a/crates/runtime/src/formats/csv/de.rs b/crates/runtime/src/formats/csv/de.rs new file mode 100644 index 0000000..ada581f --- /dev/null +++ b/crates/runtime/src/formats/csv/de.rs @@ -0,0 +1,504 @@ +use serde::de::DeserializeSeed; +use serde::Deserialize; + +use crate::formats::Decode; + +pub struct Reader { + inner: csv_core::Reader, + buffer: [u8; N], + record_ends: [usize; 20], // To hold the ends of each field +} + +pub struct Deserializer<'a, const N: usize> { + reader: &'a mut Reader, + input: &'a [u8], + pub nread: usize, + current_field_index: usize, // To keep track of the current field index + total_fields: usize, // Total number of fields in the current record +} + +impl Reader { + #[allow(clippy::new_without_default)] + pub fn new(sep: char) -> Self { + Self { + inner: csv_core::ReaderBuilder::new().delimiter(sep as u8).build(), + buffer: [0; N], + record_ends: [0; 20], + } + } +} +impl Decode for Reader { + type Error = Error; + fn decode<'de, T>(&mut self, input: &'de [u8]) -> Result + where + T: Deserialize<'de>, + { + let mut deserializer = Deserializer::new(self, input); + T::deserialize(&mut deserializer) + } +} + +#[derive(Debug, PartialEq, Eq)] +pub enum Error { + /// Buffer overflow. + Overflow, + /// Expected an empty field. + ExpectedEmpty, + /// Invalid boolean value. Expected either `true` or `false`. + InvalidBool(String), + /// Invalid integer. + #[cfg(feature = "opt")] + InvalidInt(String), + #[cfg(not(feature = "opt"))] + InvalidInt(std::num::ParseIntError), + /// Invalid floating-point number. + #[cfg(feature = "opt")] + InvalidFloat(lexical_parse_float::Error), + #[cfg(not(feature = "opt"))] + InvalidFloat(std::num::ParseFloatError), + /// Invalid UTF-8 encoded character. + InvalidChar(String), + /// Invalid UTF-8 encoded string. + InvalidStr(std::str::Utf8Error), + /// Invalid UTF-8 encoded string. + InvalidString(std::string::FromUtf8Error), + /// Error with a custom message had to be discard. + Custom(String), + BufferTooSmall, + EndOfRecord, +} + +pub type Result = std::result::Result; + +impl std::fmt::Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Error::Overflow => write!(f, "Buffer overflow."), + Error::ExpectedEmpty => write!(f, "Expected an empty field."), + Error::InvalidBool(s) => write!(f, "Invalid bool: {s}"), + Error::InvalidInt(s) => write!(f, "Invalid integer: {s}"), + Error::InvalidFloat(e) => write!(f, "Invalid float: {e}"), + Error::InvalidChar(s) => write!(f, "Invalid character: {s}"), + Error::InvalidStr(e) => write!(f, "Invalid string: {e}"), + Error::InvalidString(e) => write!(f, "Invalid string: {e}"), + Error::Custom(s) => write!(f, "CSV does not match deserializer's expected format: {s}"), + Error::BufferTooSmall => write!(f, "Buffer too small"), + Error::EndOfRecord => write!(f, "End of record"), + } + } +} + +impl serde::de::StdError for Error {} + +impl serde::de::Error for Error { + fn custom(msg: T) -> Self { + Self::Custom(msg.to_string()) + } +} + +impl<'a, const N: usize> Deserializer<'a, N> { + pub fn new(reader: &'a mut Reader, input: &'a [u8]) -> Self { + Self { + reader, + input, + nread: 0, + current_field_index: 0, + total_fields: 0, + } + } + + fn advance_record(&mut self) -> Result<()> { + self.current_field_index = 0; + + let (result, r, _w, ends) = self.reader.inner.read_record( + &self.input[self.nread..], + &mut self.reader.buffer[0..], + &mut self.reader.record_ends[0..], + ); + self.nread += r; + self.total_fields = ends; + + match result { + csv_core::ReadRecordResult::InputEmpty => {} + csv_core::ReadRecordResult::End => {} + csv_core::ReadRecordResult::OutputFull => return Err(Error::Overflow), + csv_core::ReadRecordResult::OutputEndsFull => return Err(Error::BufferTooSmall), + csv_core::ReadRecordResult::Record => {} + } + + Ok(()) + } + + fn read_bytes(&mut self) -> Result<&[u8]> { + if self.current_field_index >= self.total_fields { + return Err(Error::EndOfRecord); // New error variant for end of record + } + + let start = if self.current_field_index == 0 { + 0 + } else { + self.reader.record_ends[self.current_field_index - 1] + }; + let end = self.reader.record_ends[self.current_field_index]; + self.current_field_index += 1; + + Ok(&self.reader.buffer[start..end]) + } + + #[cfg(feature = "opt")] + fn read_int(&mut self) -> Result { + let bytes = self.read_bytes()?; + atoi::atoi(bytes) + .ok_or_else(|| Error::InvalidInt(std::str::from_utf8(bytes).unwrap().to_string())) + } + + #[cfg(not(feature = "opt"))] + fn read_int>(&mut self) -> Result { + let bytes = self.read_bytes()?; + std::str::from_utf8(bytes) + .unwrap() + .parse::() + .map_err(|e| Error::InvalidInt(e)) + } + + #[cfg(feature = "opt")] + fn read_float(&mut self) -> Result { + T::from_lexical(self.read_bytes()?) + .map_err(|e: lexical_parse_float::Error| Error::InvalidFloat(e)) + } + + #[cfg(not(feature = "opt"))] + fn read_float>(&mut self) -> Result { + let bytes = self.read_bytes()?; + std::str::from_utf8(bytes) + .unwrap() + .parse::() + .map_err(|e| Error::InvalidFloat(e)) + } + + fn read_bool(&mut self) -> Result { + let bytes = self.read_bytes()?; + match bytes { + b"true" => Ok(true), + b"false" => Ok(false), + _ => Err(Error::InvalidBool( + std::str::from_utf8(bytes).unwrap().to_string(), + )), + } + } + + fn read_char(&mut self) -> Result { + let str = self.read_str()?; + let mut iter = str.chars(); + let c = iter + .next() + .ok_or_else(|| Error::InvalidChar(str.to_string()))?; + if iter.next().is_some() { + Err(Error::InvalidChar(str.to_string())) + } else { + Ok(c) + } + } + + fn read_str(&mut self) -> Result<&str> { + std::str::from_utf8(self.read_bytes()?) + .map_err(|e: std::str::Utf8Error| Error::InvalidStr(e)) + } + + fn read_string(&mut self) -> Result { + std::string::String::from_utf8(self.read_bytes()?.to_vec()) + .map_err(Error::InvalidString) + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::Deserializer<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + fn deserialize_any(self, _visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + unreachable!("`Deserializer::deserialize_any` is not supported") + } + + fn deserialize_bool(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_bool(self.read_bool()?) + } + + fn deserialize_i8(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i8(self.read_int()?) + } + + fn deserialize_i16(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i16(self.read_int()?) + } + + fn deserialize_i32(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i32(self.read_int()?) + } + + fn deserialize_i64(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i64(self.read_int()?) + } + + fn deserialize_u8(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u8(self.read_int()?) + } + + fn deserialize_u16(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u16(self.read_int()?) + } + + fn deserialize_u32(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u32(self.read_int()?) + } + + fn deserialize_u64(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u64(self.read_int()?) + } + + fn deserialize_f32(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_f32(self.read_float()?) + } + + fn deserialize_f64(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_f64(self.read_float()?) + } + + fn deserialize_char(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_char(self.read_char()?) + } + + fn deserialize_str(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_str(self.read_str()?) + } + + fn deserialize_string(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_string(self.read_string()?) + } + + fn deserialize_bytes(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_bytes(self.read_bytes()?) + } + + fn deserialize_byte_buf(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_byte_buf(self.read_bytes()?.to_vec()) + } + + fn deserialize_option(self, _visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + todo!() + // if self.peek_bytes()?.is_empty() { + // visitor.visit_none() + // } else { + // visitor.visit_some(self) + // } + } + + fn deserialize_unit(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + if !self.read_bytes()?.is_empty() { + return Err(Error::ExpectedEmpty); + } + visitor.visit_unit() + } + + fn deserialize_unit_struct(self, _name: &'static str, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + self.deserialize_unit(visitor) + } + + fn deserialize_newtype_struct(self, _name: &'static str, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_newtype_struct(self) + } + + fn deserialize_seq(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_tuple(self, _len: usize, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_tuple_struct( + self, + _name: &'static str, + _len: usize, + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_map(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_struct( + self, + _name: &'static str, + _fields: &'static [&'static str], + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_enum( + self, + _name: &'static str, + _variants: &'static [&'static str], + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_enum(self) + } + + fn deserialize_identifier(self, _visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + unimplemented!("`Deserializer::deserialize_identifier` is not supported"); + } + + fn deserialize_ignored_any(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + let _ = self.read_bytes()?; + visitor.visit_unit() + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::VariantAccess<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + fn unit_variant(self) -> Result<()> { + Ok(()) + } + + fn newtype_variant_seed>(self, _seed: U) -> Result { + unimplemented!("`VariantAccess::newtype_variant_seed` is not implemented"); + } + + fn tuple_variant>( + self, + _len: usize, + _visitor: V, + ) -> Result { + unimplemented!("`VariantAccess::tuple_variant` is not implemented"); + } + + fn struct_variant>( + self, + _fields: &'static [&'static str], + _visitor: V, + ) -> Result { + unimplemented!("`VariantAccess::struct_variant` is not implemented"); + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::EnumAccess<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + type Variant = Self; + + fn variant_seed(self, seed: V) -> Result<(V::Value, Self::Variant)> + where + V: DeserializeSeed<'de>, + { + use serde::de::IntoDeserializer; + let variant_name = self.read_bytes()?; + seed.deserialize(variant_name.into_deserializer()) + .map(|v| (v, self)) + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::SeqAccess<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + fn next_element_seed(&mut self, seed: V) -> Result> + where + V: DeserializeSeed<'de>, + { + if self.current_field_index >= self.total_fields { + self.advance_record()?; + if self.total_fields == 0 { + return Ok(None); + } + } + + seed.deserialize(&mut **self).map(Some) + } +} diff --git a/crates/runtime/src/formats/csv/ser.rs b/crates/runtime/src/formats/csv/ser.rs new file mode 100644 index 0000000..c35e9c8 --- /dev/null +++ b/crates/runtime/src/formats/csv/ser.rs @@ -0,0 +1,443 @@ +use serde::ser; +use serde::Serialize; + +use crate::formats::Encode; + +pub struct Writer { + inner: csv_core::Writer, +} + +impl Writer { + #[allow(clippy::new_without_default)] + pub fn new(sep: char) -> Self { + Self { + inner: csv_core::WriterBuilder::new().delimiter(sep as u8).build(), + } + } +} + +impl Encode for Writer { + type Error = Error; + fn encode(&mut self, value: &T, output: &mut Vec) -> Result + where + T: Serialize + ?Sized, + { + let mut nwritten = 0; + + let mut serializer = Serializer::new(&mut self.inner, output); + value.serialize(&mut serializer)?; + nwritten += serializer.nwritten; + + let (result, n) = self.inner.terminator(&mut output[nwritten..]); + if result == csv_core::WriteResult::OutputFull { + return Err(Error::Overflow); + } + nwritten += n; + + Ok(nwritten) + } + + fn content_type(&self) -> &'static str { + "text/csv" + } +} + +/// This type represents all possible errors that can occur when serializing CSV data. +#[derive(Debug, PartialEq, Eq)] +pub enum Error { + /// Buffer overflow. + Overflow, +} + +pub type Result = std::result::Result; + +impl std::fmt::Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Overflow => write!(f, "Buffer overflow"), + } + } +} + +impl serde::ser::StdError for Error {} + +impl serde::ser::Error for Error { + fn custom(_msg: T) -> Self + where + T: std::fmt::Display, + { + unimplemented!("custom is not supported") + } +} + +/// A structure for serializing Rust values into CSV. +pub struct Serializer<'a> { + writer: &'a mut csv_core::Writer, + output: &'a mut [u8], + nwritten: usize, +} + +impl<'a> Serializer<'a> { + /// Creates a new CSV serializer. + pub fn new(writer: &'a mut csv_core::Writer, output: &'a mut [u8]) -> Self { + Self { + writer, + output, + nwritten: 0, + } + } + + fn field(&mut self, input: impl AsRef<[u8]>) -> Result<()> { + let (r, _, n) = self + .writer + .field(input.as_ref(), &mut self.output[self.nwritten..]); + self.nwritten += n; + if r == csv_core::WriteResult::OutputFull { + return Err(Error::Overflow); + } + Ok(()) + } + + fn delimiter(&mut self) -> Result<()> { + let (r, n) = self.writer.delimiter(&mut self.output[self.nwritten..]); + self.nwritten += n; + if r == csv_core::WriteResult::OutputFull { + return Err(Error::Overflow); + } + Ok(()) + } +} + +impl<'a, 'b> ser::Serializer for &'a mut Serializer<'b> { + type Ok = (); + + type Error = Error; + + type SerializeSeq = Compound<'a, 'b>; + + type SerializeTuple = Compound<'a, 'b>; + + type SerializeTupleStruct = Compound<'a, 'b>; + + type SerializeTupleVariant = Unreachable; + + type SerializeMap = Unreachable; + + type SerializeStruct = Compound<'a, 'b>; + + type SerializeStructVariant = Unreachable; + + fn serialize_bool(self, v: bool) -> Result { + if v { + self.field(b"true") + } else { + self.field(b"false") + } + } + + fn serialize_i8(self, v: i8) -> Result { + self.field(format!("{v}")) + } + + fn serialize_i16(self, v: i16) -> Result { + self.field(format!("{v}")) + } + + fn serialize_i32(self, v: i32) -> Result { + self.field(format!("{v}")) + } + + fn serialize_i64(self, v: i64) -> Result { + self.field(format!("{v}")) + } + + fn serialize_u8(self, v: u8) -> Result { + self.field(format!("{v}")) + } + + fn serialize_u16(self, v: u16) -> Result { + self.field(format!("{v}")) + } + + fn serialize_u32(self, v: u32) -> Result { + self.field(format!("{v}")) + } + + fn serialize_u64(self, v: u64) -> Result { + self.field(format!("{v}")) + } + + fn serialize_f32(self, v: f32) -> Result { + self.field(format!("{v}")) + } + + fn serialize_f64(self, v: f64) -> Result { + self.field(format!("{v}")) + } + + fn serialize_char(self, v: char) -> Result { + self.field(v.encode_utf8(&mut [0; 4])) + } + + fn serialize_str(self, v: &str) -> Result { + self.field(v) + } + + fn serialize_bytes(self, v: &[u8]) -> Result { + self.field(v) + } + + fn serialize_none(self) -> Result { + self.field([]) + } + + fn serialize_some(self, value: &T) -> Result + where + T: ser::Serialize, + { + value.serialize(self) + } + + fn serialize_unit(self) -> Result { + self.field([]) + } + + fn serialize_unit_struct(self, name: &'static str) -> Result { + self.field(name) + } + + fn serialize_unit_variant( + self, + _name: &'static str, + _variant_index: u32, + variant: &'static str, + ) -> Result { + self.field(variant) + } + + fn serialize_newtype_struct(self, _name: &'static str, value: &T) -> Result + where + T: ser::Serialize, + { + value.serialize(self) + } + + fn serialize_newtype_variant( + self, + _name: &'static str, + _variant_index: u32, + _variant: &'static str, + value: &T, + ) -> Result + where + T: ser::Serialize, + { + value.serialize(self) + } + + fn serialize_seq(self, _len: Option) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_tuple(self, _len: usize) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_tuple_struct( + self, + _name: &'static str, + _len: usize, + ) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_tuple_variant( + self, + _name: &'static str, + _variant_index: u32, + _variant: &'static str, + _len: usize, + ) -> Result { + unimplemented!("`Serializer::serialize_tuple_variant` is not supported"); + } + + fn serialize_map(self, _len: Option) -> Result { + unimplemented!("`Serializer::serialize_map` is not supported"); + } + + fn serialize_struct(self, _name: &'static str, _len: usize) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_struct_variant( + self, + _name: &'static str, + _variant_index: u32, + _variant: &'static str, + _len: usize, + ) -> Result { + unimplemented!("`Serializer::serialize_struct_variant` is not supported"); + } + + fn collect_str(self, _value: &T) -> Result + where + T: std::fmt::Display, + { + unimplemented!("`Serializer::collect_str` is not supported"); + } +} + +#[doc(hidden)] +pub struct Compound<'a, 'b> { + serializer: &'a mut Serializer<'b>, + nfields: usize, +} + +impl<'a, 'b> Compound<'a, 'b> { + fn new(serializer: &'a mut Serializer<'b>) -> Self { + Self { + serializer, + nfields: 0, + } + } + + fn element(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + if self.nfields > 0 { + self.serializer.delimiter()?; + } + self.nfields += 1; + value.serialize(&mut *self.serializer) + } +} + +impl ser::SerializeSeq for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_element(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +impl ser::SerializeTuple for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_element(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +impl ser::SerializeTupleStruct for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +impl ser::SerializeStruct for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, _key: &'static str, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +#[doc(hidden)] +pub struct Unreachable; + +impl ser::SerializeTupleVariant for Unreachable { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, _value: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn end(self) -> Result { + unreachable!() + } +} + +impl ser::SerializeMap for Unreachable { + type Ok = (); + + type Error = Error; + + fn serialize_key(&mut self, _key: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn serialize_value(&mut self, _value: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn end(self) -> Result { + unreachable!() + } +} + +impl ser::SerializeStructVariant for Unreachable { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, _key: &'static str, _value: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn end(self) -> Result { + unreachable!() + } +} diff --git a/crates/runtime/src/formats/json/de.rs b/crates/runtime/src/formats/json/de.rs new file mode 100644 index 0000000..aa6d884 --- /dev/null +++ b/crates/runtime/src/formats/json/de.rs @@ -0,0 +1,26 @@ +use serde_json::Deserializer; + +use crate::formats::Decode; + +#[derive(Default)] +pub struct Reader {} + +impl Reader { + pub fn new() -> Self { + Self::default() + } +} + +impl Decode for Reader { + type Error = serde_json::Error; + + fn decode<'de, T>(&mut self, input: &'de [u8]) -> Result + where + T: serde::Deserialize<'de>, + { + let mut deserializer = Deserializer::from_slice(input); + let value = T::deserialize(&mut deserializer)?; + deserializer.end()?; + Ok(value) + } +} diff --git a/crates/runtime/src/formats/json/ser.rs b/crates/runtime/src/formats/json/ser.rs new file mode 100644 index 0000000..a48d557 --- /dev/null +++ b/crates/runtime/src/formats/json/ser.rs @@ -0,0 +1,27 @@ +use crate::formats::Encode; + +#[derive(Default)] +pub struct Writer {} + +impl Writer { + pub fn new() -> Self { + Self {} + } +} + +impl Encode for Writer { + type Error = serde_json::Error; + + fn encode(&mut self, input: &T, output: &mut Vec) -> Result + where + T: serde::Serialize + ?Sized, + { + let mut serializer = serde_json::Serializer::new(output); + input.serialize(&mut serializer)?; + Ok(1) + } + + fn content_type(&self) -> &'static str { + "application/json" + } +} diff --git a/crates/runtime/src/formats/mod.rs b/crates/runtime/src/formats/mod.rs new file mode 100644 index 0000000..4cf33c8 --- /dev/null +++ b/crates/runtime/src/formats/mod.rs @@ -0,0 +1,27 @@ +use serde::Deserialize; +use serde::Serialize; + +pub mod csv { + pub mod de; + pub mod ser; +} + +pub mod json { + pub mod de; + pub mod ser; +} + +pub trait Decode { + type Error: std::error::Error + Send; + fn decode<'de, T>(&mut self, input: &'de [u8]) -> Result + where + T: Deserialize<'de>; +} + +pub trait Encode { + type Error: std::error::Error + Send; + fn encode(&mut self, input: &T, output: &mut Vec) -> Result + where + T: Serialize; + fn content_type(&self) -> &'static str; +} diff --git a/crates/runtime/src/lib.rs b/crates/runtime/src/lib.rs new file mode 100644 index 0000000..5264e4e --- /dev/null +++ b/crates/runtime/src/lib.rs @@ -0,0 +1,82 @@ +pub mod builtins; +pub mod formats; +pub mod runner; +// pub mod state; +pub mod traits; +// pub mod logging; + +#[cfg(feature = "opt")] +type Hasher = std::hash::BuildHasherDefault; + +#[cfg(not(feature = "opt"))] +type Hasher = std::collections::hash_map::RandomState; + +// #[cfg(feature = "opt")] +// pub type BTreeMap = btree_slab::BTreeMap; +// +// #[cfg(not(feature = "opt"))] +pub type BTreeMap = std::collections::BTreeMap; + +pub type HashMap = std::collections::HashMap; + +pub type SmolHashMap = halfbrown::HashMap; +pub type SmolVec = smallvec::SmallVec; + +#[cfg(all(not(target_env = "msvc"), feature = "opt"))] +#[global_allocator] +static GLOBAL: jemalloc::Jemalloc = jemalloc::Jemalloc; + +pub mod prelude { + pub use macros::data; + pub use macros::unwrap; + pub use macros::DeepClone; + pub use macros::New; + pub use macros::Send; + pub use macros::Sync; + pub use macros::Timestamp; + pub use macros::Unpin; + + pub use crate::builtins::aggregator::Aggregator; + pub use crate::builtins::array::Array; + pub use crate::builtins::assigner::Assigner; + pub use crate::builtins::blob::Blob; + pub use crate::builtins::dict::Dict; + pub use crate::builtins::duration::Duration; + pub use crate::builtins::encoding::Encoding; + pub use crate::builtins::file::File; + // pub use crate::builtins::image::Image; + pub use crate::builtins::keyed_stream::KeyedStream; + // pub use crate::builtins::matrix::Matrix; + pub use crate::builtins::im_string::String; + // pub use crate::builtins::option::Option; + pub use crate::builtins::path::Path; + pub use crate::builtins::reader::Reader; + pub use crate::builtins::result::Result; + pub use crate::builtins::set::Set; + pub use crate::builtins::socket::SocketAddr; + pub use crate::builtins::stream::Stream; + pub use crate::builtins::time::Time; + pub use crate::builtins::time_source::TimeSource; + // pub use crate::builtins::url::Url; + pub use crate::builtins::vec::Vec; + pub use crate::builtins::writer::Writer; + pub use crate::traits::Data; + pub use crate::traits::DeepClone; + + // #[cfg(feature = "model")] + // pub use crate::builtins::model::Model; + + pub use crate::runner::context::Context; + pub use crate::runner::current_thread::CurrentThreadRunner; + pub use crate::runner::data_parallel::DataParallelRunner; + pub use crate::runner::task_parallel::TaskParallelRunner; + + // pub use crate::state::Database; + // pub use crate::state::State; + + pub use serde; + pub use tokio; + + pub use crate::builtins::stream; + pub use crate::formats; +} diff --git a/crates/runtime/src/logging/mod.rs b/crates/runtime/src/logging/mod.rs new file mode 100644 index 0000000..fa7c1df --- /dev/null +++ b/crates/runtime/src/logging/mod.rs @@ -0,0 +1,22 @@ +use std::path::PathBuf; +use std::str::FromStr; + +use tracing_subscriber::prelude::*; + +#[cfg(debug_assertions)] +pub const FILTER: &str = "info,librdkafka=off,rdkafka::client=off"; + +#[cfg(not(debug_assertions))] +pub const FILTER: &str = "warn,librdkafka=off,rdkafka::client=off"; + +pub fn init(path: impl Into) { + let file = std::fs::File::create(path.into()).expect("failed to create log file"); + let fmt = tracing_subscriber::fmt::layer() + .with_file(false) + .with_line_number(false) + .with_ansi(false) + .compact() + .with_writer(file) + .with_filter(tracing_subscriber::filter::EnvFilter::from_str(FILTER).unwrap()); + tracing_subscriber::registry().with(fmt).init(); +} diff --git a/crates/runtime/src/runner/context.rs b/crates/runtime/src/runner/context.rs new file mode 100644 index 0000000..8dcb346 --- /dev/null +++ b/crates/runtime/src/runner/context.rs @@ -0,0 +1,149 @@ +use futures::Future; + +use crate::builtins::keyed_stream::KeyedCollector; +use crate::builtins::keyed_stream::KeyedStream; +use crate::builtins::stream::Collector; +use crate::builtins::stream::Stream; +use crate::traits::Data; + +pub struct Context { + join_set: tokio::task::JoinSet<()>, + local_set: Option, + tx: tokio::sync::broadcast::Sender<()>, + rx: tokio::sync::broadcast::Receiver<()>, +} + +impl Default for Context { + fn default() -> Self { + let (tx, rx) = tokio::sync::broadcast::channel(1); + Self { + join_set: tokio::task::JoinSet::new(), + local_set: None, + tx, + rx, + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } + + pub async fn run_local(f: impl FnOnce(&mut Context)) -> Self { + let mut ctx = Self::new(); + let local_set = tokio::task::LocalSet::new(); + local_set.run_until(async { f(&mut ctx) }).await; + ctx.local_set = Some(local_set); + ctx + } + + pub fn run(f: impl FnOnce(&mut Context) + Send + 'static) -> Self { + let mut ctx = Self::new(); + f(&mut ctx); + ctx + } + + pub async fn await_termination(mut self) { + self.tx.send(()).unwrap(); + while let Some(result) = self.join_set.join_next().await { + result.expect("Task should not panic."); + } + if let Some(local_set) = self.local_set { + local_set.await; + } + } + + pub fn spawn(&mut self, f: F) + where + F: Future + Send + 'static, + { + let mut rx = self.rx.resubscribe(); + self.join_set.spawn(async move { + rx.recv().await.expect("Channel should not be closed."); + f.await + }); + } + + pub fn operator(&mut self, f: impl FnOnce(Collector) -> F) -> Stream + where + F: Future + Send + 'static, + T: Data, + { + let (tx, rx) = Stream::new(); + self.spawn(f(tx)); + rx + } + + pub fn keyed_operator( + &mut self, + f: impl FnOnce(KeyedCollector) -> F, + ) -> KeyedStream + where + F: Future + Send + 'static, + K: Data, + T: Data, + { + let (tx, rx) = KeyedStream::new(); + self.spawn(f(tx)); + rx + } + + pub fn co_operator( + &mut self, + f: impl FnOnce(Collector, Collector) -> F, + ) -> (Stream, Stream) + where + F: Future + Send + 'static, + T0: Data, + T1: Data, + { + let (tx0, rx0) = Stream::new(); + let (tx1, rx1) = Stream::new(); + self.spawn(f(tx0, tx1)); + (rx0, rx1) + } + + pub fn keyed_co_operator( + &mut self, + f: impl FnOnce(KeyedCollector, KeyedCollector) -> F, + ) -> (KeyedStream, KeyedStream) + where + F: Future + Send + 'static, + T0: Data, + T1: Data, + K0: Data, + K1: Data, + { + let (tx0, rx0) = KeyedStream::new(); + let (tx1, rx1) = KeyedStream::new(); + self.spawn(f(tx0, tx1)); + (rx0, rx1) + } + + pub fn sink(&mut self, f: impl FnOnce() -> F) + where + F: Future + Send + 'static, + { + self.spawn(f()); + } +} + +pub fn array_unzip(f: impl Fn() -> (A, B)) -> ([A; N], [B; N]) { + let mut a0: [std::mem::MaybeUninit; N] = + unsafe { std::mem::MaybeUninit::uninit().assume_init() }; + let mut a1: [std::mem::MaybeUninit; N] = + unsafe { std::mem::MaybeUninit::uninit().assume_init() }; + + for (l, r) in a0[..].iter_mut().zip(a1.iter_mut()) { + let (tx, rx) = f(); + unsafe { + std::ptr::write(l.as_mut_ptr(), tx); + std::ptr::write(r.as_mut_ptr(), rx); + } + } + + let a0 = unsafe { std::mem::transmute_copy::<[std::mem::MaybeUninit; N], [A; N]>(&a0) }; + let a1 = unsafe { std::mem::transmute_copy::<[std::mem::MaybeUninit; N], [B; N]>(&a1) }; + (a0, a1) +} diff --git a/crates/runtime/src/runner/current_thread.rs b/crates/runtime/src/runner/current_thread.rs new file mode 100644 index 0000000..b52de10 --- /dev/null +++ b/crates/runtime/src/runner/current_thread.rs @@ -0,0 +1,18 @@ +use crate::runner::context::Context; + +pub struct CurrentThreadRunner {} + +impl CurrentThreadRunner { + pub fn run(f: impl FnOnce(&mut Context)) { + let future = async { + let ctx = Context::run_local(f).await; + ctx.await_termination().await + }; + tokio::runtime::Builder::new_current_thread() + .unhandled_panic(tokio::runtime::UnhandledPanic::ShutdownRuntime) + .enable_all() + .build() + .expect("Failed to build runtime") + .block_on(future); + } +} diff --git a/crates/runtime/src/runner/data_parallel.rs b/crates/runtime/src/runner/data_parallel.rs new file mode 100644 index 0000000..419d437 --- /dev/null +++ b/crates/runtime/src/runner/data_parallel.rs @@ -0,0 +1,42 @@ +use crate::runner::context::Context; + +pub struct DataParallelRunner { + txs: Vec>, + threads: Vec>, +} + +impl DataParallelRunner { + pub fn new( + args: [T; N], + f: impl Fn(T, &mut Context) + Clone + Send + 'static, + ) -> Self { + let mut threads = Vec::with_capacity(args.len()); + let mut txs = Vec::with_capacity(args.len()); + for arg in args { + let f = f.clone(); + let (runner_tx, runner_rx) = std::sync::mpsc::channel(); + txs.push(runner_tx); + threads.push(std::thread::spawn(move || { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .expect("Failed to build runtime") + .block_on(async { + let ctx = Context::run_local(|ctx| f(arg, ctx)).await; + runner_rx.recv().unwrap(); + ctx.await_termination().await; + }); + })); + } + Self { txs, threads } + } + + pub fn run(mut self) { + for tx in self.txs.iter() { + tx.send(()).unwrap(); + } + for thread in self.threads.drain(..) { + thread.join().expect("Failed to join thread"); + } + } +} diff --git a/crates/runtime/src/runner/env.rs b/crates/runtime/src/runner/env.rs new file mode 100644 index 0000000..29ca14f --- /dev/null +++ b/crates/runtime/src/runner/env.rs @@ -0,0 +1,4 @@ +pub struct Context { + join_set: tokio::task::JoinSet<()>, + start: tokio::sync::broadcast::Receiver<()>, +} diff --git a/crates/runtime/src/runner/mod.rs b/crates/runtime/src/runner/mod.rs new file mode 100644 index 0000000..415e90a --- /dev/null +++ b/crates/runtime/src/runner/mod.rs @@ -0,0 +1,8 @@ +pub mod data_parallel; +pub mod task_parallel; +pub mod context; + +// #[cfg(feature = "thread-pinning")] +// pub mod pinned_data_parallel; + +pub mod current_thread; diff --git a/crates/runtime/src/runner/pinned_data_parallel.rs b/crates/runtime/src/runner/pinned_data_parallel.rs new file mode 100644 index 0000000..f3341d7 --- /dev/null +++ b/crates/runtime/src/runner/pinned_data_parallel.rs @@ -0,0 +1,78 @@ +use tokio::task::JoinSet; + +pub struct PinnedDataParallelRunner { + topology: std::sync::Arc>, + threads: Vec>, +} + +impl PinnedDataParallelRunner { + pub fn new() -> Self { + Self { + topology: std::sync::Arc::new(std::sync::Mutex::new(hwloc::Topology::new())), + threads: Vec::new(), + } + } + + pub fn spawn_current_thread(&mut self, f: impl Fn(&mut JoinSet<()>)) -> &mut Self { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .expect("Failed to build runtime") + .block_on(async { + let mut join_set = JoinSet::<()>::new(); + let local_set = tokio::task::LocalSet::new(); + local_set.run_until(async { f(&mut join_set) }).await; + while let Some(_) = join_set.join_next().await {} + local_set.await; + }); + self + } + + pub fn spawn_pinned( + &mut self, + f: impl Fn(&mut JoinSet<()>) + Send + 'static, + _cpu_id: usize, + ) -> &mut Self { + let topology = self.topology.clone(); + self.threads.push(std::thread::spawn(move || { + bind_thread_to_cpu(_cpu_id, topology); + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + let mut join_set = JoinSet::<()>::new(); + let local_set = tokio::task::LocalSet::new(); + local_set.run_until(async { f(&mut join_set) }).await; + while let Some(_) = join_set.join_next().await {} + local_set.await; + }); + })); + self + } + + pub fn await_termination(self) { + drop(self) + } +} + +fn bind_thread_to_cpu( + _cpu_id: usize, + _topology: std::sync::Arc>, +) { + let thread_id = unsafe { libc::pthread_self() }; + let mut topology = topology.lock().unwrap(); + let cpus = topology.objects_with_type(&ObjectType::Core).unwrap(); + let cpuset = cpus.get(_cpu_id).expect("Core not found").cpuset().unwrap(); + _topology + .set_cpubind_for_thread(thread_id, cpuset, CPUBIND_THREAD) + .unwrap(); +} + +impl Drop for PinnedDataParallelRunner { + fn drop(&mut self) { + for thread in self.threads.drain(..) { + thread.join().expect("Failed to join thread"); + } + } +} diff --git a/crates/runtime/src/runner/single_thread.rs b/crates/runtime/src/runner/single_thread.rs new file mode 100644 index 0000000..d25eee7 --- /dev/null +++ b/crates/runtime/src/runner/single_thread.rs @@ -0,0 +1,21 @@ +use crate::context::Context; + +pub struct CurrentThreadRunner {} + +impl CurrentThreadRunner { + pub fn run(f: impl Fn(&mut Context)) { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .expect("Failed to build runtime") + .block_on(async { + let (tx, rx) = tokio::sync::broadcast::channel(1); + let mut ctx = Context::new(rx); + let local_set = tokio::task::LocalSet::new(); + local_set.run_until(async { f(&mut ctx) }).await; + tx.send(()).unwrap(); + while let Some(_) = ctx.join_set.join_next().await {} + local_set.await; + }); + } +} diff --git a/crates/runtime/src/runner/task_parallel.rs b/crates/runtime/src/runner/task_parallel.rs new file mode 100644 index 0000000..02cf202 --- /dev/null +++ b/crates/runtime/src/runner/task_parallel.rs @@ -0,0 +1,25 @@ +use crate::runner::context::Context; + +pub struct TaskParallelRunner { + tx: std::sync::mpsc::SyncSender<()>, +} + +impl TaskParallelRunner { + pub fn new(f: impl FnOnce(&mut Context) + Send + 'static) -> Self { + let (tx, rx) = std::sync::mpsc::sync_channel::<()>(1); + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .expect("Failed to build runtime") + .block_on(async { + let ctx = Context::run(f); + rx.recv().unwrap(); + ctx.await_termination().await; + }); + Self { tx } + } + + pub fn run(self) { + self.tx.send(()).unwrap(); + } +} diff --git a/crates/runtime/src/runner/threadpool.rs b/crates/runtime/src/runner/threadpool.rs new file mode 100644 index 0000000..2d4109d --- /dev/null +++ b/crates/runtime/src/runner/threadpool.rs @@ -0,0 +1,88 @@ +#![allow(unused)] + +use std::future::Future; +use std::path::Path; + +use logging::Logger; + +pub struct TaskParallelRunner { + #[cfg(feature = "thread-pinning")] + topology: std::sync::Arc>, + threads: Vec>, + logger: Logger, +} + +impl TaskParallelRunner { + pub fn new(logger: Logger) -> Self { + Self { + #[cfg(feature = "thread-pinning")] + topology: std::sync::Arc::new(std::sync::Mutex::new(hwloc::Topology::new())), + threads: Vec::new(), + logger, + } + } + + pub fn spawn(&mut self, f: impl Fn() + Send + 'static) -> &mut Self { + self.threads.push(std::thread::spawn(move || { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .expect("Failed to build runtime") + .block_on(async { + let set = tokio::task::LocalSet::new(); + set.run_until(async { f() }).await; + set.await; + }); + })); + self + } + + pub fn spawn_pinned(&mut self, f: impl Fn() + Send + 'static, _cpu_id: usize) -> &mut Self { + #[cfg(feature = "thread-pinning")] + let topology = self.topology.clone(); + self.threads.push(std::thread::spawn(move || { + #[cfg(feature = "thread-pinning")] + bind_thread_to_cpu(_cpu_id, topology); + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + let set = tokio::task::LocalSet::new(); + set.run_until(async { f() }).await; + set.await; + }); + })); + self + } + + pub fn await_termination(self) { + drop(self) + } +} + +#[cfg(feature = "thread-pinning")] +fn bind_thread_to_cpu( + _cpu_id: usize, + _topology: std::sync::Arc>, +) { + cfg_if::cfg_if! { + if #[cfg(target_os = "linux")] { + let thread_id = unsafe { libc::pthread_self() }; + let mut topology = topology.lock().unwrap(); + let cpus = topology.objects_with_type(&ObjectType::Core).unwrap(); + let cpuset = cpus.get(_cpu_id).expect("Core not found").cpuset().unwrap(); + _topology + .set_cpubind_for_thread(thread_id, cpuset, CPUBIND_THREAD) + .unwrap(); + } + } +} + +impl Drop for TaskParallelRunner { + fn drop(&mut self) { + for thread in self.threads.drain(..) { + thread.join().expect("Failed to join thread"); + } + } +} diff --git a/crates/runtime/src/state/mod.rs b/crates/runtime/src/state/mod.rs new file mode 100644 index 0000000..dada59b --- /dev/null +++ b/crates/runtime/src/state/mod.rs @@ -0,0 +1,111 @@ +#![allow(unused)] + +use std::collections::HashMap; +use std::hash::Hash; +use std::ops::Index; +use std::ops::IndexMut; +use std::path::PathBuf; + +use serde::de::DeserializeOwned; +use serde::Serialize; + +use crate::traits::Data; +use crate::traits::Key; + +#[derive(Clone)] +pub struct Database( + // tikv_client::RawClient, + sled::Db, + // HashMap, +); + +impl Database { + // #[cfg(feature = "tikv")] + // pub fn new(addr: &str) -> Self { + // let db = tokio::runtime::Runtime::new() + // .expect("failed to create runtime") + // .block_on(tikv_client::RawClient::new(vec![addr]).await) + // .expect("Failed to connect to tikv"); + // Self(db) + // } + + // #[cfg(feature = "local")] + pub fn new(path: impl AsRef) -> Self { + let db = sled::open(path).expect("Failed to connect to sled"); + Self(db) + } + + // #[cfg(not(any(feature = "tikv", feature = "sled")))] + // pub fn new(path: &str) -> Self { + // let db = sled::open(path).expect("Failed to connect to sled"); + // Self(db) + // } +} + +#[derive(Clone)] +pub struct State { + name: String, + db: Database, + uncommitted: HashMap, + default: T, +} + +impl State { + pub fn new(name: impl ToString, db: Database, default: T) -> Self { + Self { + name: name.to_string(), + db, + uncommitted: HashMap::new(), + default, + } + } + pub fn iter_mut(&mut self) -> impl Iterator { + self.uncommitted.iter_mut() + } + // #[cfg(feature = "remote")] + // pub async fn snapshot(&mut self, snapshot_version: usize) { + // let name = &self.name; + // let batch = self.uncommitted.iter().filter_map(|(key, data)| { + // let key = ser((name, key)).ok()?; + // let data = ser(data).ok()?; + // Some((key, data)) + // }); + // db.batch_put(batch).await.expect("tikv: failed to insert") + // } + pub async fn snapshot(&mut self, snapshot_version: usize) { + self.uncommitted + .iter() + .filter_map(|(key, data)| { + let key = ser((key, snapshot_version)).ok()?; + let data = ser(data).ok()?; + Some((key, data)) + }) + .for_each(|(key, data)| { + self.db.0.insert(key, data).expect("sled: failed to insert"); + }); + } +} + +impl IndexMut for State { + fn index_mut(&mut self, key: K) -> &mut T { + let default = &self.default; + self.uncommitted + .entry(key) + .or_insert_with(|| default.clone()) + } +} + +impl Index for State { + type Output = T; + fn index(&self, key: K) -> &T { + self.uncommitted.get(&key).unwrap_or(&self.default) + } +} + +pub fn ser(v: T) -> Result, serde_json::Error> { + serde_json::to_vec(&v) +} + +pub fn deser(v: Option>) -> Result, serde_json::Error> { + v.map(|v| serde_json::from_slice(&v)).transpose() +} diff --git a/crates/runtime/src/traits/mod.rs b/crates/runtime/src/traits/mod.rs new file mode 100644 index 0000000..7c8253b --- /dev/null +++ b/crates/runtime/src/traits/mod.rs @@ -0,0 +1,125 @@ +use serde::Deserialize; +use serde::Serialize; +use std::fmt::Debug; +use std::hash::Hash; + +use crate::builtins::time::Time; + +pub trait Data: + DeepClone + Clone + Send + Sync + Serialize + for<'a> Deserialize<'a> + Unpin + Debug + 'static +{ +} +impl Data for T where + T: DeepClone + + Clone + + Send + + Sync + + Serialize + + for<'a> Deserialize<'a> + + Unpin + + Debug + + 'static +{ +} + +pub trait Key: Data + Eq + PartialEq + Hash {} +impl Key for T where T: Data + Eq + PartialEq + Hash {} + +pub trait DeepClone: Clone { + fn deep_clone(&self) -> Self; +} + +macro_rules! impl_deep_clone_tuple { + { $h:ident $(, $t:ident)* } => { + impl<$h: DeepClone, $($t: DeepClone),*> DeepClone for ($h, $($t,)*) { + #[allow(non_snake_case)] + fn deep_clone(&self) -> Self { + let ($h, $($t,)*) = self; + ($h.deep_clone(), $($t.deep_clone(),)*) + } + } + impl_deep_clone_tuple! { $($t),* } + }; + {} => {} +} + +impl_deep_clone_tuple!(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10); + +impl DeepClone for std::rc::Rc { + fn deep_clone(&self) -> Self { + std::rc::Rc::new(self.as_ref().deep_clone()) + } +} + +impl DeepClone for std::sync::Arc { + fn deep_clone(&self) -> Self { + std::sync::Arc::new(self.as_ref().deep_clone()) + } +} + +impl DeepClone for std::vec::Vec { + fn deep_clone(&self) -> Self { + self.iter().map(|x| x.deep_clone()).collect() + } +} + +impl DeepClone for std::string::String { + fn deep_clone(&self) -> Self { + self.clone() + } +} + +impl DeepClone for std::result::Result { + fn deep_clone(&self) -> Self { + match self { + std::result::Result::Ok(x) => std::result::Result::Ok(x.deep_clone()), + std::result::Result::Err(x) => std::result::Result::Err(x.deep_clone()), + } + } +} + +impl DeepClone for std::option::Option { + fn deep_clone(&self) -> Self { + self.as_ref().map(|x| x.deep_clone()) + } +} + +impl DeepClone for std::cell::RefCell { + fn deep_clone(&self) -> Self { + std::cell::RefCell::new(self.borrow().deep_clone()) + } +} + +macro_rules! impl_deep_clone_scalar { + { $t:ty } => { + impl DeepClone for $t { + #[inline(always)] + fn deep_clone(&self) -> Self { + *self + } + } + }; +} + +impl_deep_clone_scalar! { () } +impl_deep_clone_scalar! { bool } +impl_deep_clone_scalar! { i8 } +impl_deep_clone_scalar! { i16 } +impl_deep_clone_scalar! { i32 } +impl_deep_clone_scalar! { i64 } +impl_deep_clone_scalar! { i128 } +impl_deep_clone_scalar! { isize } +impl_deep_clone_scalar! { u8 } +impl_deep_clone_scalar! { u16 } +impl_deep_clone_scalar! { u32 } +impl_deep_clone_scalar! { u64 } +impl_deep_clone_scalar! { u128 } +impl_deep_clone_scalar! { usize } +impl_deep_clone_scalar! { f32 } +impl_deep_clone_scalar! { f64 } +impl_deep_clone_scalar! { char } +impl_deep_clone_scalar! { &'static str } + +pub trait Timestamp { + fn timestamp(&self) -> Time; +} diff --git a/crates/runtime/tests/window.rs b/crates/runtime/tests/window.rs new file mode 100644 index 0000000..2f42a76 --- /dev/null +++ b/crates/runtime/tests/window.rs @@ -0,0 +1,32 @@ +use runtime::prelude::stream::Event; +use runtime::prelude::*; + +#[data] +struct Data { + value: T, + time: Time, +} + +#[ignore] +#[test] +fn test_tumbling_holistic0() { + CurrentThreadRunner::run(|ctx| { + let events = (0..1000).map(|i| Data::new(i, Time::zero())); + Stream::from_iter(ctx, events, |e| e.time, 100, Duration::zero()) + .time_tumbling_holistic_window(ctx, Duration::from_seconds(100), |data, _| { + let sum = data.iter().map(|d| d.value).sum::(); + let min = data.iter().map(|d| d.value).min().unwrap(); + let max = data.iter().map(|d| d.value).max().unwrap(); + (sum, min, max) + }) + .assert( + ctx, + [ + Event::Watermark(Time::zero()), + Event::Data(Time::zero(), (0, 0, 0)), + Event::Data(Time::zero(), (0, 0, 0)), + Event::Data(Time::zero(), (0, 0, 0)), + ], + ); + }); +} diff --git a/crates/tree-sitter-aqua/.gitignore b/crates/tree-sitter-aqua/.gitignore new file mode 100644 index 0000000..aa8afe6 --- /dev/null +++ b/crates/tree-sitter-aqua/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +target/ diff --git a/crates/tree-sitter-aqua/Cargo.lock b/crates/tree-sitter-aqua/Cargo.lock new file mode 100644 index 0000000..866073f --- /dev/null +++ b/crates/tree-sitter-aqua/Cargo.lock @@ -0,0 +1,170 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "syn" +version = "2.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tree-sitter" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "tree-sitter-aqua" +version = "0.0.1" +dependencies = [ + "ansi_term", + "cc", + "tree-sitter", + "tree-sitter-highlight", +] + +[[package]] +name = "tree-sitter-highlight" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "042342584c5a7a0b833d9fc4e2bdab3f9868ddc6c4b339a1e01451c6720868bc" +dependencies = [ + "regex", + "thiserror", + "tree-sitter", +] + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/crates/tree-sitter-aqua/Cargo.toml b/crates/tree-sitter-aqua/Cargo.toml new file mode 100644 index 0000000..f805cad --- /dev/null +++ b/crates/tree-sitter-aqua/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "tree-sitter-aqua" +version.workspace = true +edition.workspace = true +build = "bindings/rust/build.rs" +include = [ + "bindings/rust/*", + "grammar.js", + "queries/*", + "src/*", +] + +[lib] +path = "bindings/rust/lib.rs" + +[dependencies] +tree-sitter = "0.20.10" +tree-sitter-highlight = "0.20.1" +tree-sitter-traversal = "0.1.2" +ansi_term = "0.12.1" +ariadne = "0.4.0" + +[build-dependencies] +cc = "1.0.83" diff --git a/crates/tree-sitter-aqua/binding.gyp b/crates/tree-sitter-aqua/binding.gyp new file mode 100644 index 0000000..ccdcf3f --- /dev/null +++ b/crates/tree-sitter-aqua/binding.gyp @@ -0,0 +1,19 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_aqua_binding", + "include_dirs": [ + " +#include "nan.h" + +using namespace v8; + +extern "C" TSLanguage * tree_sitter_aqua(); + +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_aqua()); + + Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("aqua").ToLocalChecked()); + Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +} + +NODE_MODULE(tree_sitter_aqua_binding, Init) + +} // namespace diff --git a/crates/tree-sitter-aqua/bindings/node/index.js b/crates/tree-sitter-aqua/bindings/node/index.js new file mode 100644 index 0000000..49b4f06 --- /dev/null +++ b/crates/tree-sitter-aqua/bindings/node/index.js @@ -0,0 +1,19 @@ +try { + module.exports = require("../../build/Release/tree_sitter_aqua_binding"); +} catch (error1) { + if (error1.code !== 'MODULE_NOT_FOUND') { + throw error1; + } + try { + module.exports = require("../../build/Debug/tree_sitter_aqua_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/crates/tree-sitter-aqua/bindings/rust/build.rs b/crates/tree-sitter-aqua/bindings/rust/build.rs new file mode 100644 index 0000000..3946bad --- /dev/null +++ b/crates/tree-sitter-aqua/bindings/rust/build.rs @@ -0,0 +1,15 @@ +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); + + c_config.compile("parser"); + println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); +} diff --git a/crates/tree-sitter-aqua/bindings/rust/lib.rs b/crates/tree-sitter-aqua/bindings/rust/lib.rs new file mode 100644 index 0000000..16bc94f --- /dev/null +++ b/crates/tree-sitter-aqua/bindings/rust/lib.rs @@ -0,0 +1,145 @@ +//! This crate provides arc-lang 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: +//! +//! [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 ariadne::Config; +use ariadne::Label; +use ariadne::ReportKind; +use ariadne::Source; +use tree_sitter::Language; +use tree_sitter_traversal::traverse; +use tree_sitter_traversal::Order; + +extern "C" { + fn tree_sitter_aqua() -> 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_aqua() } +} + +/// The content of the [`node-types.json`][] file for this grammar. +/// +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types +pub const NODE_TYPES: &str = include_str!("../../src/node-types.json"); + +/// Queries for syntax highlighting and other language features. +pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/aqua/highlights.scm"); +pub const INJECTIONS_QUERY: &str = include_str!("../../queries/aqua/injections.scm"); +pub const LOCALS_QUERY: &str = include_str!("../../queries/aqua/locals.scm"); +pub const TAGS_QUERY: &str = include_str!("../../queries/aqua/tags.scm"); +pub const HIGHLIGHT_NAMES: &[&str] = &[ + "string", + "number", + "boolean", + "comment", + "keyword", + "function", + "variable", + "type", + "type.builtin", + "conditional", + "repeat", + "punctuation", + "operator", +]; + +pub struct TreeSitterError(String); + +impl std::fmt::Debug for TreeSitterError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + +pub fn check(path: &str, source: &str) -> Result<(), TreeSitterError> { + let mut parser = tree_sitter::Parser::new(); + parser.set_language(language()).unwrap(); + let tree = parser.parse(source, None).unwrap(); + let iter = traverse(tree.walk(), Order::Pre); + let conf = Config::default().with_color(false); + let mut cache = (path, Source::from(source)); + let mut buffer = Vec::::new(); + iter.filter_map(|node| { + if node.is_error() { + Some(node.range()) + } else { + None + } + }) + .for_each(|r| { + ariadne::Report::build(ReportKind::Error, path, 0) + .with_message("Tree-sitter parse error") + .with_label(Label::new((path, r.start_byte..r.end_byte)).with_message("Parse error")) + .with_config(conf) + .finish() + .write(&mut cache, &mut buffer) + .unwrap(); + }); + if buffer.is_empty() { + Ok(()) + } else { + Err(TreeSitterError(String::from_utf8(buffer).unwrap())) + } +} +// format!( +// "[{r0}:{c0}-{r1}:{c1}]: {s}", +// r0 = range.start_point.row, +// c0 = range.start_point.column, +// r1 = range.end_point.row, +// c1 = range.end_point.column, +// s = &source[range.start_byte..range.end_byte], +// ) + +#[cfg(test)] +mod tests { + use tree_sitter_highlight::HighlightConfiguration; + use tree_sitter_highlight::Highlighter; + + #[test] + fn can_highlight() { + let code = "def foo() = 1+1;"; + + let mut highlighter = Highlighter::new(); + let mut config = HighlightConfiguration::new( + super::language(), + super::HIGHLIGHTS_QUERY, + super::INJECTIONS_QUERY, + super::LOCALS_QUERY, + ) + .unwrap(); + + config.configure(super::HIGHLIGHT_NAMES); + + use tree_sitter_highlight::HighlightEvent; + + let highlights = highlighter + .highlight(&config, code.as_bytes(), None, |_| None) + .unwrap(); + + for event in highlights { + if let Ok(event) = event { + match event { + HighlightEvent::Source { start, end } => { + eprint!("[{}]", &code[start..end]); + } + HighlightEvent::HighlightStart(i) => { + eprint!("<{}", i.0); + } + HighlightEvent::HighlightEnd => { + eprint!(">"); + } + } + } + } + } +} diff --git a/crates/tree-sitter-aqua/build/Makefile b/crates/tree-sitter-aqua/build/Makefile new file mode 100644 index 0000000..3190978 --- /dev/null +++ b/crates/tree-sitter-aqua/build/Makefile @@ -0,0 +1,342 @@ +# We borrow heavily from the kernel build setup, though we are simpler since +# we don't have Kconfig tweaking settings on us. + +# The implicit make rules have it looking for RCS files, among other things. +# We instead explicitly write all the rules we care about. +# It's even quicker (saves ~200ms) to pass -r on the command line. +MAKEFLAGS=-r + +# The source directory tree. +srcdir := .. +abs_srcdir := $(abspath $(srcdir)) + +# The name of the builddir. +builddir_name ?= . + +# The V=1 flag on command line makes us verbosely print command lines. +ifdef V + quiet= +else + quiet=quiet_ +endif + +# Specify BUILDTYPE=Release on the command line for a release build. +BUILDTYPE ?= Release + +# Directory all our build output goes into. +# Note that this must be two directories beneath src/ for unit tests to pass, +# as they reach into the src/ directory for data with relative paths. +builddir ?= $(builddir_name)/$(BUILDTYPE) +abs_builddir := $(abspath $(builddir)) +depsdir := $(builddir)/.deps + +# Object output directory. +obj := $(builddir)/obj +abs_obj := $(abspath $(obj)) + +# We build up a list of every single one of the targets so we can slurp in the +# generated dependency rule Makefiles in one pass. +all_deps := + + + +CC.target ?= $(CC) +CFLAGS.target ?= $(CPPFLAGS) $(CFLAGS) +CXX.target ?= $(CXX) +CXXFLAGS.target ?= $(CPPFLAGS) $(CXXFLAGS) +LINK.target ?= $(LINK) +LDFLAGS.target ?= $(LDFLAGS) +AR.target ?= $(AR) + +# C++ apps need to be linked with g++. +LINK ?= $(CXX.target) + +# TODO(evan): move all cross-compilation logic to gyp-time so we don't need +# to replicate this environment fallback in make as well. +CC.host ?= gcc +CFLAGS.host ?= $(CPPFLAGS_host) $(CFLAGS_host) +CXX.host ?= g++ +CXXFLAGS.host ?= $(CPPFLAGS_host) $(CXXFLAGS_host) +LINK.host ?= $(CXX.host) +LDFLAGS.host ?= $(LDFLAGS_host) +AR.host ?= ar + +# Define a dir function that can handle spaces. +# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions +# "leading spaces cannot appear in the text of the first argument as written. +# These characters can be put into the argument value by variable substitution." +empty := +space := $(empty) $(empty) + +# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces +replace_spaces = $(subst $(space),?,$1) +unreplace_spaces = $(subst ?,$(space),$1) +dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1))) + +# Flags to make gcc output dependency info. Note that you need to be +# careful here to use the flags that ccache and distcc can understand. +# We write to a dep file on the side first and then rename at the end +# so we can't end up with a broken dep file. +depfile = $(depsdir)/$(call replace_spaces,$@).d +DEPFLAGS = -MMD -MF $(depfile).raw + +# We have to fixup the deps output in a few ways. +# (1) the file output should mention the proper .o file. +# ccache or distcc lose the path to the target, so we convert a rule of +# the form: +# foobar.o: DEP1 DEP2 +# into +# path/to/foobar.o: DEP1 DEP2 +# (2) we want missing files not to cause us to fail to build. +# We want to rewrite +# foobar.o: DEP1 DEP2 \ +# DEP3 +# to +# DEP1: +# DEP2: +# DEP3: +# so if the files are missing, they're just considered phony rules. +# We have to do some pretty insane escaping to get those backslashes +# and dollar signs past make, the shell, and sed at the same time. +# Doesn't work with spaces, but that's fine: .d files have spaces in +# their names replaced with other characters. +define fixup_dep +# The depfile may not exist if the input file didn't have any #includes. +touch $(depfile).raw +# Fixup path as in (1). +sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile) +# Add extra rules as in (2). +# We remove slashes and replace spaces with new lines; +# remove blank lines; +# delete the first line and append a colon to the remaining lines. +sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\ + grep -v '^$$' |\ + sed -e 1d -e 's|$$|:|' \ + >> $(depfile) +rm $(depfile).raw +endef + +# Command definitions: +# - cmd_foo is the actual command to run; +# - quiet_cmd_foo is the brief-output summary of the command. + +quiet_cmd_cc = CC($(TOOLSET)) $@ +cmd_cc = $(CC.$(TOOLSET)) -o $@ $< $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c + +quiet_cmd_cxx = CXX($(TOOLSET)) $@ +cmd_cxx = $(CXX.$(TOOLSET)) -o $@ $< $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c + +quiet_cmd_objc = CXX($(TOOLSET)) $@ +cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< + +quiet_cmd_objcxx = CXX($(TOOLSET)) $@ +cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< + +# Commands for precompiled header files. +quiet_cmd_pch_c = CXX($(TOOLSET)) $@ +cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_pch_cc = CXX($(TOOLSET)) $@ +cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_pch_m = CXX($(TOOLSET)) $@ +cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< +quiet_cmd_pch_mm = CXX($(TOOLSET)) $@ +cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< + +# gyp-mac-tool is written next to the root Makefile by gyp. +# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd +# already. +quiet_cmd_mac_tool = MACTOOL $(4) $< +cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" + +quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ +cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) + +quiet_cmd_infoplist = INFOPLIST $@ +cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@" + +quiet_cmd_touch = TOUCH $@ +cmd_touch = touch $@ + +quiet_cmd_copy = COPY $@ +# send stderr to /dev/null to ignore messages when linking directories. +cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@") + +quiet_cmd_alink = LIBTOOL-STATIC $@ +cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^) + +quiet_cmd_link = LINK($(TOOLSET)) $@ +cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) + +quiet_cmd_solink = SOLINK($(TOOLSET)) $@ +cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) + +quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ +cmd_solink_module = $(LINK.$(TOOLSET)) -bundle $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) + + +# Define an escape_quotes function to escape single quotes. +# This allows us to handle quotes properly as long as we always use +# use single quotes and escape_quotes. +escape_quotes = $(subst ','\'',$(1)) +# This comment is here just to include a ' to unconfuse syntax highlighting. +# Define an escape_vars function to escape '$' variable syntax. +# This allows us to read/write command lines with shell variables (e.g. +# $LD_LIBRARY_PATH), without triggering make substitution. +escape_vars = $(subst $$,$$$$,$(1)) +# Helper that expands to a shell command to echo a string exactly as it is in +# make. This uses printf instead of echo because printf's behaviour with respect +# to escape sequences is more portable than echo's across different shells +# (e.g., dash, bash). +exact_echo = printf '%s\n' '$(call escape_quotes,$(1))' + +# Helper to compare the command we're about to run against the command +# we logged the last time we ran the command. Produces an empty +# string (false) when the commands match. +# Tricky point: Make has no string-equality test function. +# The kernel uses the following, but it seems like it would have false +# positives, where one string reordered its arguments. +# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ +# $(filter-out $(cmd_$@), $(cmd_$(1)))) +# We instead substitute each for the empty string into the other, and +# say they're equal if both substitutions produce the empty string. +# .d files contain ? instead of spaces, take that into account. +command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\ + $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1)))) + +# Helper that is non-empty when a prerequisite changes. +# Normally make does this implicitly, but we force rules to always run +# so we can check their command lines. +# $? -- new prerequisites +# $| -- order-only dependencies +prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?)) + +# Helper that executes all postbuilds until one fails. +define do_postbuilds + @E=0;\ + for p in $(POSTBUILDS); do\ + eval $$p;\ + E=$$?;\ + if [ $$E -ne 0 ]; then\ + break;\ + fi;\ + done;\ + if [ $$E -ne 0 ]; then\ + rm -rf "$@";\ + exit $$E;\ + fi +endef + +# do_cmd: run a command via the above cmd_foo names, if necessary. +# Should always run for a given target to handle command-line changes. +# Second argument, if non-zero, makes it do asm/C/C++ dependency munging. +# Third argument, if non-zero, makes it do POSTBUILDS processing. +# Note: We intentionally do NOT call dirx for depfile, since it contains ? for +# spaces already and dirx strips the ? characters. +define do_cmd +$(if $(or $(command_changed),$(prereq_changed)), + @$(call exact_echo, $($(quiet)cmd_$(1))) + @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" + $(if $(findstring flock,$(word 2,$(cmd_$1))), + @$(cmd_$(1)) + @echo " $(quiet_cmd_$(1)): Finished", + @$(cmd_$(1)) + ) + @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile) + @$(if $(2),$(fixup_dep)) + $(if $(and $(3), $(POSTBUILDS)), + $(call do_postbuilds) + ) +) +endef + +# Declare the "all" target first so it is the default, +# even though we don't have the deps yet. +.PHONY: all +all: + +# make looks for ways to re-generate included makefiles, but in our case, we +# don't have a direct way. Explicitly telling make that it has nothing to do +# for them makes it go faster. +%.d: ; + +# Use FORCE_DO_CMD to force a target to run. Should be coupled with +# do_cmd. +.PHONY: FORCE_DO_CMD +FORCE_DO_CMD: + +TOOLSET := target +# Suffix rules, putting all outputs into $(obj). +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + +# Try building from generated source, too. +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + + +ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ + $(findstring $(join ^,$(prefix)),\ + $(join ^,tree_sitter_aqua_binding.target.mk)))),) + include tree_sitter_aqua_binding.target.mk +endif + +quiet_cmd_regen_makefile = ACTION Regenerating $@ +cmd_regen_makefile = cd $(srcdir); /opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/klasseg/Library/Caches/node-gyp/16.20.1" "-Dnode_gyp_dir=/opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=/Users/klasseg/Library/Caches/node-gyp/16.20.1/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/klasseg/Workspace/arc/arc-lang/crates/tree-sitter" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/klasseg/Workspace/arc/arc-lang/crates/tree-sitter/build/config.gypi -I/opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/common.gypi "--toplevel-dir=." binding.gyp +Makefile: $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../Library/Caches/node-gyp/16.20.1/include/node/common.gypi $(srcdir)/../../../../../../../opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi + $(call do_cmd,regen_makefile) + +# "all" is a concatenation of the "all" targets from all the included +# sub-makefiles. This is just here to clarify. +all: + +# Add in dependency-tracking rules. $(all_deps) is the list of every single +# target in our tree. Only consider the ones with .d (dependency) info: +d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d)) +ifneq ($(d_files),) + include $(d_files) +endif diff --git a/crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d b/crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d new file mode 100644 index 0000000..5fd04e3 --- /dev/null +++ b/crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d @@ -0,0 +1,65 @@ +cmd_Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o := c++ -o Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o ../bindings/node/binding.cc '-DNODE_GYP_MODULE_NAME=tree_sitter_aqua_binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/src -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/config -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/openssl/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/uv/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/zlib -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/v8/include -I../node_modules/nan -I../src -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++14 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o.d.raw -I/opt/homebrew/opt/llvm/include -c +Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o: \ + ../bindings/node/binding.cc ../src/tree_sitter/parser.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/cppgc/common.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8config.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-internal.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-version.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-platform.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_version.h \ + ../node_modules/nan/nan.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/errno.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/version.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/unix.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/threadpool.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/darwin.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_buffer.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_object_wrap.h \ + ../node_modules/nan/nan_callbacks.h \ + ../node_modules/nan/nan_callbacks_12_inl.h \ + ../node_modules/nan/nan_maybe_43_inl.h \ + ../node_modules/nan/nan_converters.h \ + ../node_modules/nan/nan_converters_43_inl.h \ + ../node_modules/nan/nan_new.h \ + ../node_modules/nan/nan_implementation_12_inl.h \ + ../node_modules/nan/nan_persistent_12_inl.h \ + ../node_modules/nan/nan_weak.h ../node_modules/nan/nan_object_wrap.h \ + ../node_modules/nan/nan_private.h \ + ../node_modules/nan/nan_typedarray_contents.h \ + ../node_modules/nan/nan_json.h ../node_modules/nan/nan_scriptorigin.h +../bindings/node/binding.cc: +../src/tree_sitter/parser.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/cppgc/common.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8config.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-internal.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-version.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-platform.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_version.h: +../node_modules/nan/nan.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/errno.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/version.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/unix.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/threadpool.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/darwin.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_buffer.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_object_wrap.h: +../node_modules/nan/nan_callbacks.h: +../node_modules/nan/nan_callbacks_12_inl.h: +../node_modules/nan/nan_maybe_43_inl.h: +../node_modules/nan/nan_converters.h: +../node_modules/nan/nan_converters_43_inl.h: +../node_modules/nan/nan_new.h: +../node_modules/nan/nan_implementation_12_inl.h: +../node_modules/nan/nan_persistent_12_inl.h: +../node_modules/nan/nan_weak.h: +../node_modules/nan/nan_object_wrap.h: +../node_modules/nan/nan_private.h: +../node_modules/nan/nan_typedarray_contents.h: +../node_modules/nan/nan_json.h: +../node_modules/nan/nan_scriptorigin.h: diff --git a/crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d b/crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d new file mode 100644 index 0000000..28851f7 --- /dev/null +++ b/crates/tree-sitter-aqua/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d @@ -0,0 +1,5 @@ +cmd_Release/obj.target/tree_sitter_aqua_binding/src/parser.o := cc -o Release/obj.target/tree_sitter_aqua_binding/src/parser.o ../src/parser.c '-DNODE_GYP_MODULE_NAME=tree_sitter_aqua_binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/src -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/config -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/openssl/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/uv/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/zlib -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/v8/include -I../node_modules/nan -I../src -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/tree_sitter_aqua_binding/src/parser.o.d.raw -I/opt/homebrew/opt/llvm/include -I/opt/homebrew/include -c +Release/obj.target/tree_sitter_aqua_binding/src/parser.o: \ + ../src/parser.c ../src/tree_sitter/parser.h +../src/parser.c: +../src/tree_sitter/parser.h: diff --git a/crates/tree-sitter-aqua/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d b/crates/tree-sitter-aqua/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d new file mode 100644 index 0000000..8121987 --- /dev/null +++ b/crates/tree-sitter-aqua/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d @@ -0,0 +1 @@ +cmd_Release/tree_sitter_aqua_binding.node := c++ -bundle -undefined dynamic_lookup -Wl,-search_paths_first -mmacosx-version-min=10.13 -arch arm64 -L./Release -stdlib=libc++ -L/opt/homebrew/opt/llvm/lib -o Release/tree_sitter_aqua_binding.node Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o Release/obj.target/tree_sitter_aqua_binding/src/parser.o diff --git a/crates/tree-sitter-aqua/build/Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o b/crates/tree-sitter-aqua/build/Release/obj.target/tree_sitter_aqua_binding/bindings/node/binding.o new file mode 100644 index 0000000000000000000000000000000000000000..a711acb27f39809efa0b4b30647cf540dbbfecbe GIT binary patch literal 257192 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 >>s&vZvSM9rRIay; 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 Tl`)jD%1jJeWv@aDGl2gefCnl3 literal 0 HcmV?d00001 diff --git a/crates/tree-sitter-aqua/build/Release/tree_sitter_aqua_binding.node b/crates/tree-sitter-aqua/build/Release/tree_sitter_aqua_binding.node new file mode 100755 index 0000000000000000000000000000000000000000..5922975f598c12b196107c0921190be23d98e91a GIT binary patch literal 304989 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 z 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 QM7;i0;ybIW4V&`+0hm-t>;M1& literal 0 HcmV?d00001 diff --git a/crates/tree-sitter-aqua/build/binding.Makefile b/crates/tree-sitter-aqua/build/binding.Makefile new file mode 100644 index 0000000..78e666a --- /dev/null +++ b/crates/tree-sitter-aqua/build/binding.Makefile @@ -0,0 +1,6 @@ +# This file is generated by gyp; do not edit. + +export builddir_name ?= ./build/. +.PHONY: all +all: + $(MAKE) tree_sitter_aqua_binding diff --git a/crates/tree-sitter-aqua/build/config.gypi b/crates/tree-sitter-aqua/build/config.gypi new file mode 100644 index 0000000..bbaa72b --- /dev/null +++ b/crates/tree-sitter-aqua/build/config.gypi @@ -0,0 +1,388 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [], + "msvs_configuration_platform": "ARM64", + "xcode_configuration_platform": "arm64" + }, + "variables": { + "asan": 0, + "coverage": "false", + "dcheck_always_on": 0, + "debug_nghttp2": "false", + "debug_node": "false", + "enable_lto": "false", + "enable_pgo_generate": "false", + "enable_pgo_use": "false", + "error_on_warn": "false", + "force_dynamic_crt": 0, + "host_arch": "arm64", + "icu_gyp_path": "tools/icu/icu-system.gyp", + "icu_small": "false", + "icu_ver_major": "73", + "is_debug": 0, + "libdir": "lib", + "llvm_version": "14.0", + "napi_build_version": "8", + "node_builtin_shareable_builtins": [ + "deps/cjs-module-lexer/lexer.js", + "deps/cjs-module-lexer/dist/lexer.js", + "deps/undici/undici.js" + ], + "node_byteorder": "little", + "node_debug_lib": "false", + "node_enable_d8": "false", + "node_install_corepack": "true", + "node_install_npm": "true", + "node_library_files": [ + "lib/_http_agent.js", + "lib/_http_client.js", + "lib/_http_common.js", + "lib/_http_incoming.js", + "lib/_http_outgoing.js", + "lib/_http_server.js", + "lib/_stream_duplex.js", + "lib/_stream_passthrough.js", + "lib/_stream_readable.js", + "lib/_stream_transform.js", + "lib/_stream_wrap.js", + "lib/_stream_writable.js", + "lib/_tls_common.js", + "lib/_tls_wrap.js", + "lib/assert.js", + "lib/assert/strict.js", + "lib/async_hooks.js", + "lib/buffer.js", + "lib/child_process.js", + "lib/cluster.js", + "lib/console.js", + "lib/constants.js", + "lib/crypto.js", + "lib/dgram.js", + "lib/diagnostics_channel.js", + "lib/dns.js", + "lib/dns/promises.js", + "lib/domain.js", + "lib/events.js", + "lib/fs.js", + "lib/fs/promises.js", + "lib/http.js", + "lib/http2.js", + "lib/https.js", + "lib/inspector.js", + "lib/internal/abort_controller.js", + "lib/internal/assert.js", + "lib/internal/assert/assertion_error.js", + "lib/internal/assert/calltracker.js", + "lib/internal/async_hooks.js", + "lib/internal/blob.js", + "lib/internal/blocklist.js", + "lib/internal/bootstrap/environment.js", + "lib/internal/bootstrap/loaders.js", + "lib/internal/bootstrap/node.js", + "lib/internal/bootstrap/pre_execution.js", + "lib/internal/bootstrap/switches/does_not_own_process_state.js", + "lib/internal/bootstrap/switches/does_own_process_state.js", + "lib/internal/bootstrap/switches/is_main_thread.js", + "lib/internal/bootstrap/switches/is_not_main_thread.js", + "lib/internal/buffer.js", + "lib/internal/child_process.js", + "lib/internal/child_process/serialization.js", + "lib/internal/cli_table.js", + "lib/internal/cluster/child.js", + "lib/internal/cluster/primary.js", + "lib/internal/cluster/round_robin_handle.js", + "lib/internal/cluster/shared_handle.js", + "lib/internal/cluster/utils.js", + "lib/internal/cluster/worker.js", + "lib/internal/console/constructor.js", + "lib/internal/console/global.js", + "lib/internal/constants.js", + "lib/internal/crypto/aes.js", + "lib/internal/crypto/certificate.js", + "lib/internal/crypto/cfrg.js", + "lib/internal/crypto/cipher.js", + "lib/internal/crypto/diffiehellman.js", + "lib/internal/crypto/ec.js", + "lib/internal/crypto/hash.js", + "lib/internal/crypto/hashnames.js", + "lib/internal/crypto/hkdf.js", + "lib/internal/crypto/keygen.js", + "lib/internal/crypto/keys.js", + "lib/internal/crypto/mac.js", + "lib/internal/crypto/pbkdf2.js", + "lib/internal/crypto/random.js", + "lib/internal/crypto/rsa.js", + "lib/internal/crypto/scrypt.js", + "lib/internal/crypto/sig.js", + "lib/internal/crypto/util.js", + "lib/internal/crypto/webcrypto.js", + "lib/internal/crypto/x509.js", + "lib/internal/debugger/inspect.js", + "lib/internal/debugger/inspect_client.js", + "lib/internal/debugger/inspect_repl.js", + "lib/internal/dgram.js", + "lib/internal/dns/promises.js", + "lib/internal/dns/utils.js", + "lib/internal/dtrace.js", + "lib/internal/encoding.js", + "lib/internal/error_serdes.js", + "lib/internal/errors.js", + "lib/internal/event_target.js", + "lib/internal/fixed_queue.js", + "lib/internal/freelist.js", + "lib/internal/freeze_intrinsics.js", + "lib/internal/fs/cp/cp-sync.js", + "lib/internal/fs/cp/cp.js", + "lib/internal/fs/dir.js", + "lib/internal/fs/promises.js", + "lib/internal/fs/read_file_context.js", + "lib/internal/fs/rimraf.js", + "lib/internal/fs/streams.js", + "lib/internal/fs/sync_write_stream.js", + "lib/internal/fs/utils.js", + "lib/internal/fs/watchers.js", + "lib/internal/heap_utils.js", + "lib/internal/histogram.js", + "lib/internal/http.js", + "lib/internal/http2/compat.js", + "lib/internal/http2/core.js", + "lib/internal/http2/util.js", + "lib/internal/idna.js", + "lib/internal/inspector_async_hook.js", + "lib/internal/js_stream_socket.js", + "lib/internal/legacy/processbinding.js", + "lib/internal/linkedlist.js", + "lib/internal/main/check_syntax.js", + "lib/internal/main/eval_stdin.js", + "lib/internal/main/eval_string.js", + "lib/internal/main/inspect.js", + "lib/internal/main/mksnapshot.js", + "lib/internal/main/print_help.js", + "lib/internal/main/prof_process.js", + "lib/internal/main/repl.js", + "lib/internal/main/run_main_module.js", + "lib/internal/main/test_runner.js", + "lib/internal/main/watch_mode.js", + "lib/internal/main/worker_thread.js", + "lib/internal/modules/cjs/helpers.js", + "lib/internal/modules/cjs/loader.js", + "lib/internal/modules/esm/assert.js", + "lib/internal/modules/esm/create_dynamic_module.js", + "lib/internal/modules/esm/fetch_module.js", + "lib/internal/modules/esm/formats.js", + "lib/internal/modules/esm/get_format.js", + "lib/internal/modules/esm/handle_process_exit.js", + "lib/internal/modules/esm/initialize_import_meta.js", + "lib/internal/modules/esm/load.js", + "lib/internal/modules/esm/loader.js", + "lib/internal/modules/esm/module_job.js", + "lib/internal/modules/esm/module_map.js", + "lib/internal/modules/esm/package_config.js", + "lib/internal/modules/esm/resolve.js", + "lib/internal/modules/esm/translators.js", + "lib/internal/modules/package_json_reader.js", + "lib/internal/modules/run_main.js", + "lib/internal/net.js", + "lib/internal/options.js", + "lib/internal/per_context/domexception.js", + "lib/internal/per_context/messageport.js", + "lib/internal/per_context/primordials.js", + "lib/internal/perf/event_loop_delay.js", + "lib/internal/perf/event_loop_utilization.js", + "lib/internal/perf/nodetiming.js", + "lib/internal/perf/observe.js", + "lib/internal/perf/performance.js", + "lib/internal/perf/performance_entry.js", + "lib/internal/perf/resource_timing.js", + "lib/internal/perf/timerify.js", + "lib/internal/perf/usertiming.js", + "lib/internal/perf/utils.js", + "lib/internal/policy/manifest.js", + "lib/internal/policy/sri.js", + "lib/internal/priority_queue.js", + "lib/internal/process/esm_loader.js", + "lib/internal/process/execution.js", + "lib/internal/process/per_thread.js", + "lib/internal/process/policy.js", + "lib/internal/process/promises.js", + "lib/internal/process/report.js", + "lib/internal/process/signal.js", + "lib/internal/process/task_queues.js", + "lib/internal/process/warning.js", + "lib/internal/process/worker_thread_only.js", + "lib/internal/promise_hooks.js", + "lib/internal/querystring.js", + "lib/internal/readline/callbacks.js", + "lib/internal/readline/emitKeypressEvents.js", + "lib/internal/readline/interface.js", + "lib/internal/readline/utils.js", + "lib/internal/repl.js", + "lib/internal/repl/await.js", + "lib/internal/repl/history.js", + "lib/internal/repl/utils.js", + "lib/internal/socket_list.js", + "lib/internal/socketaddress.js", + "lib/internal/source_map/prepare_stack_trace.js", + "lib/internal/source_map/source_map.js", + "lib/internal/source_map/source_map_cache.js", + "lib/internal/stream_base_commons.js", + "lib/internal/streams/add-abort-signal.js", + "lib/internal/streams/buffer_list.js", + "lib/internal/streams/compose.js", + "lib/internal/streams/destroy.js", + "lib/internal/streams/duplex.js", + "lib/internal/streams/duplexify.js", + "lib/internal/streams/end-of-stream.js", + "lib/internal/streams/from.js", + "lib/internal/streams/lazy_transform.js", + "lib/internal/streams/legacy.js", + "lib/internal/streams/operators.js", + "lib/internal/streams/passthrough.js", + "lib/internal/streams/pipeline.js", + "lib/internal/streams/readable.js", + "lib/internal/streams/state.js", + "lib/internal/streams/transform.js", + "lib/internal/streams/utils.js", + "lib/internal/streams/writable.js", + "lib/internal/test/binding.js", + "lib/internal/test/transfer.js", + "lib/internal/test_runner/harness.js", + "lib/internal/test_runner/runner.js", + "lib/internal/test_runner/tap_stream.js", + "lib/internal/test_runner/test.js", + "lib/internal/test_runner/utils.js", + "lib/internal/timers.js", + "lib/internal/tls/parse-cert-string.js", + "lib/internal/tls/secure-context.js", + "lib/internal/tls/secure-pair.js", + "lib/internal/trace_events_async_hooks.js", + "lib/internal/tty.js", + "lib/internal/url.js", + "lib/internal/util.js", + "lib/internal/util/colors.js", + "lib/internal/util/comparisons.js", + "lib/internal/util/debuglog.js", + "lib/internal/util/inspect.js", + "lib/internal/util/inspector.js", + "lib/internal/util/iterable_weak_map.js", + "lib/internal/util/parse_args/parse_args.js", + "lib/internal/util/parse_args/utils.js", + "lib/internal/util/types.js", + "lib/internal/v8/startup_snapshot.js", + "lib/internal/v8_prof_polyfill.js", + "lib/internal/v8_prof_processor.js", + "lib/internal/validators.js", + "lib/internal/vm/module.js", + "lib/internal/watch_mode/files_watcher.js", + "lib/internal/watchdog.js", + "lib/internal/webstreams/adapters.js", + "lib/internal/webstreams/compression.js", + "lib/internal/webstreams/encoding.js", + "lib/internal/webstreams/queuingstrategies.js", + "lib/internal/webstreams/readablestream.js", + "lib/internal/webstreams/transfer.js", + "lib/internal/webstreams/transformstream.js", + "lib/internal/webstreams/util.js", + "lib/internal/webstreams/writablestream.js", + "lib/internal/worker.js", + "lib/internal/worker/io.js", + "lib/internal/worker/js_transferable.js", + "lib/module.js", + "lib/net.js", + "lib/os.js", + "lib/path.js", + "lib/path/posix.js", + "lib/path/win32.js", + "lib/perf_hooks.js", + "lib/process.js", + "lib/punycode.js", + "lib/querystring.js", + "lib/readline.js", + "lib/repl.js", + "lib/stream.js", + "lib/stream/consumers.js", + "lib/stream/promises.js", + "lib/stream/web.js", + "lib/string_decoder.js", + "lib/sys.js", + "lib/test.js", + "lib/timers.js", + "lib/timers/promises.js", + "lib/tls.js", + "lib/trace_events.js", + "lib/tty.js", + "lib/url.js", + "lib/util.js", + "lib/util/types.js", + "lib/v8.js", + "lib/vm.js", + "lib/wasi.js", + "lib/worker_threads.js", + "lib/zlib.js" + ], + "node_module_version": 93, + "node_no_browser_globals": "false", + "node_prefix": "/opt/homebrew/Cellar/node@16/16.20.1_1", + "node_release_urlbase": "", + "node_shared": "false", + "node_shared_brotli": "true", + "node_shared_cares": "true", + "node_shared_http_parser": "false", + "node_shared_libuv": "true", + "node_shared_nghttp2": "true", + "node_shared_nghttp3": "false", + "node_shared_ngtcp2": "false", + "node_shared_openssl": "true", + "node_shared_zlib": "true", + "node_tag": "", + "node_target_type": "executable", + "node_use_bundled_v8": "true", + "node_use_dtrace": "true", + "node_use_etw": "false", + "node_use_node_code_cache": "true", + "node_use_node_snapshot": "true", + "node_use_openssl": "true", + "node_use_v8_platform": "true", + "node_with_ltcg": "false", + "node_without_node_options": "false", + "openssl_fips": "", + "openssl_is_fips": "false", + "openssl_quic": "false", + "ossfuzz": "false", + "shlib_suffix": "93.dylib", + "target_arch": "arm64", + "v8_enable_31bit_smis_on_64bit_arch": 0, + "v8_enable_gdbjit": 0, + "v8_enable_hugepage": 0, + "v8_enable_i18n_support": 1, + "v8_enable_inspector": 1, + "v8_enable_lite_mode": 0, + "v8_enable_object_print": 1, + "v8_enable_pointer_compression": 0, + "v8_enable_webassembly": 1, + "v8_no_strict_aliasing": 1, + "v8_optimized_debug": 1, + "v8_promise_internal_field_count": 1, + "v8_random_seed": 0, + "v8_trace_maps": 0, + "v8_use_siphash": 1, + "want_separate_host_toolset": 0, + "nodedir": "/Users/klasseg/Library/Caches/node-gyp/16.20.1", + "standalone_static_library": 1, + "metrics_registry": "https://registry.npmjs.org/", + "global_prefix": "/opt/homebrew", + "local_prefix": "/Users/klasseg/Workspace/arc/arc-lang/crates/tree-sitter", + "globalconfig": "/opt/homebrew/etc/npmrc", + "init_module": "/Users/klasseg/.npm-init.js", + "userconfig": "/Users/klasseg/.npmrc", + "node_gyp": "/opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js", + "cache": "/Users/klasseg/.npm", + "user_agent": "npm/8.19.4 node/v16.20.1 darwin arm64 workspaces/false", + "prefix": "/opt/homebrew" + } +} diff --git a/crates/tree-sitter-aqua/build/gyp-mac-tool b/crates/tree-sitter-aqua/build/gyp-mac-tool new file mode 100755 index 0000000..ffef860 --- /dev/null +++ b/crates/tree-sitter-aqua/build/gyp-mac-tool @@ -0,0 +1,772 @@ +#!/usr/bin/env python3 +# Generated by gyp. Do not edit. +# Copyright (c) 2012 Google Inc. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility functions to perform Xcode-style build steps. + +These functions are executed via gyp-mac-tool when using the Makefile generator. +""" + + +import fcntl +import fnmatch +import glob +import json +import os +import plistlib +import re +import shutil +import struct +import subprocess +import sys +import tempfile + + +def main(args): + executor = MacTool() + exit_code = executor.Dispatch(args) + if exit_code is not None: + sys.exit(exit_code) + + +class MacTool: + """This class performs all the Mac tooling steps. The methods can either be + executed directly, or dispatched from an argument list.""" + + def Dispatch(self, args): + """Dispatches a string command to a method.""" + if len(args) < 1: + raise Exception("Not enough arguments") + + method = "Exec%s" % self._CommandifyName(args[0]) + return getattr(self, method)(*args[1:]) + + def _CommandifyName(self, name_string): + """Transforms a tool name like copy-info-plist to CopyInfoPlist""" + return name_string.title().replace("-", "") + + def ExecCopyBundleResource(self, source, dest, convert_to_binary): + """Copies a resource file to the bundle/Resources directory, performing any + necessary compilation on each resource.""" + convert_to_binary = convert_to_binary == "True" + extension = os.path.splitext(source)[1].lower() + if os.path.isdir(source): + # Copy tree. + # TODO(thakis): This copies file attributes like mtime, while the + # single-file branch below doesn't. This should probably be changed to + # be consistent with the single-file branch. + if os.path.exists(dest): + shutil.rmtree(dest) + shutil.copytree(source, dest) + elif extension == ".xib": + return self._CopyXIBFile(source, dest) + elif extension == ".storyboard": + return self._CopyXIBFile(source, dest) + elif extension == ".strings" and not convert_to_binary: + self._CopyStringsFile(source, dest) + else: + if os.path.exists(dest): + os.unlink(dest) + shutil.copy(source, dest) + + if convert_to_binary and extension in (".plist", ".strings"): + self._ConvertToBinary(dest) + + def _CopyXIBFile(self, source, dest): + """Compiles a XIB file with ibtool into a binary plist in the bundle.""" + + # ibtool sometimes crashes with relative paths. See crbug.com/314728. + base = os.path.dirname(os.path.realpath(__file__)) + if os.path.relpath(source): + source = os.path.join(base, source) + if os.path.relpath(dest): + dest = os.path.join(base, dest) + + args = ["xcrun", "ibtool", "--errors", "--warnings", "--notices"] + + if os.environ["XCODE_VERSION_ACTUAL"] > "0700": + args.extend(["--auto-activate-custom-fonts"]) + if "IPHONEOS_DEPLOYMENT_TARGET" in os.environ: + args.extend( + [ + "--target-device", + "iphone", + "--target-device", + "ipad", + "--minimum-deployment-target", + os.environ["IPHONEOS_DEPLOYMENT_TARGET"], + ] + ) + else: + args.extend( + [ + "--target-device", + "mac", + "--minimum-deployment-target", + os.environ["MACOSX_DEPLOYMENT_TARGET"], + ] + ) + + args.extend( + ["--output-format", "human-readable-text", "--compile", dest, source] + ) + + ibtool_section_re = re.compile(r"/\*.*\*/") + ibtool_re = re.compile(r".*note:.*is clipping its content") + try: + stdout = subprocess.check_output(args) + except subprocess.CalledProcessError as e: + print(e.output) + raise + current_section_header = None + for line in stdout.splitlines(): + if ibtool_section_re.match(line): + current_section_header = line + elif not ibtool_re.match(line): + if current_section_header: + print(current_section_header) + current_section_header = None + print(line) + return 0 + + def _ConvertToBinary(self, dest): + subprocess.check_call( + ["xcrun", "plutil", "-convert", "binary1", "-o", dest, dest] + ) + + def _CopyStringsFile(self, source, dest): + """Copies a .strings file using iconv to reconvert the input into UTF-16.""" + input_code = self._DetectInputEncoding(source) or "UTF-8" + + # Xcode's CpyCopyStringsFile / builtin-copyStrings seems to call + # CFPropertyListCreateFromXMLData() behind the scenes; at least it prints + # CFPropertyListCreateFromXMLData(): Old-style plist parser: missing + # semicolon in dictionary. + # on invalid files. Do the same kind of validation. + import CoreFoundation + + with open(source, "rb") as in_file: + s = in_file.read() + d = CoreFoundation.CFDataCreate(None, s, len(s)) + _, error = CoreFoundation.CFPropertyListCreateFromXMLData(None, d, 0, None) + if error: + return + + with open(dest, "wb") as fp: + fp.write(s.decode(input_code).encode("UTF-16")) + + def _DetectInputEncoding(self, file_name): + """Reads the first few bytes from file_name and tries to guess the text + encoding. Returns None as a guess if it can't detect it.""" + with open(file_name, "rb") as fp: + try: + header = fp.read(3) + except Exception: + return None + if header.startswith(b"\xFE\xFF"): + return "UTF-16" + elif header.startswith(b"\xFF\xFE"): + return "UTF-16" + elif header.startswith(b"\xEF\xBB\xBF"): + return "UTF-8" + else: + return None + + def ExecCopyInfoPlist(self, source, dest, convert_to_binary, *keys): + """Copies the |source| Info.plist to the destination directory |dest|.""" + # Read the source Info.plist into memory. + with open(source) as fd: + lines = fd.read() + + # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild). + plist = plistlib.readPlistFromString(lines) + if keys: + plist.update(json.loads(keys[0])) + lines = plistlib.writePlistToString(plist) + + # Go through all the environment variables and replace them as variables in + # the file. + IDENT_RE = re.compile(r"[_/\s]") + for key in os.environ: + if key.startswith("_"): + continue + evar = "${%s}" % key + evalue = os.environ[key] + lines = lines.replace(lines, evar, evalue) + + # Xcode supports various suffices on environment variables, which are + # all undocumented. :rfc1034identifier is used in the standard project + # template these days, and :identifier was used earlier. They are used to + # convert non-url characters into things that look like valid urls -- + # except that the replacement character for :identifier, '_' isn't valid + # in a URL either -- oops, hence :rfc1034identifier was born. + evar = "${%s:identifier}" % key + evalue = IDENT_RE.sub("_", os.environ[key]) + lines = lines.replace(lines, evar, evalue) + + evar = "${%s:rfc1034identifier}" % key + evalue = IDENT_RE.sub("-", os.environ[key]) + lines = lines.replace(lines, evar, evalue) + + # Remove any keys with values that haven't been replaced. + lines = lines.splitlines() + for i in range(len(lines)): + if lines[i].strip().startswith("${"): + lines[i] = None + lines[i - 1] = None + lines = "\n".join(line for line in lines if line is not None) + + # Write out the file with variables replaced. + with open(dest, "w") as fd: + fd.write(lines) + + # Now write out PkgInfo file now that the Info.plist file has been + # "compiled". + self._WritePkgInfo(dest) + + if convert_to_binary == "True": + self._ConvertToBinary(dest) + + def _WritePkgInfo(self, info_plist): + """This writes the PkgInfo file from the data stored in Info.plist.""" + plist = plistlib.readPlist(info_plist) + if not plist: + return + + # Only create PkgInfo for executable types. + package_type = plist["CFBundlePackageType"] + if package_type != "APPL": + return + + # The format of PkgInfo is eight characters, representing the bundle type + # and bundle signature, each four characters. If that is missing, four + # '?' characters are used instead. + signature_code = plist.get("CFBundleSignature", "????") + if len(signature_code) != 4: # Wrong length resets everything, too. + signature_code = "?" * 4 + + dest = os.path.join(os.path.dirname(info_plist), "PkgInfo") + with open(dest, "w") as fp: + fp.write(f"{package_type}{signature_code}") + + def ExecFlock(self, lockfile, *cmd_list): + """Emulates the most basic behavior of Linux's flock(1).""" + # Rely on exception handling to report errors. + fd = os.open(lockfile, os.O_RDONLY | os.O_NOCTTY | os.O_CREAT, 0o666) + fcntl.flock(fd, fcntl.LOCK_EX) + return subprocess.call(cmd_list) + + def ExecFilterLibtool(self, *cmd_list): + """Calls libtool and filters out '/path/to/libtool: file: foo.o has no + symbols'.""" + libtool_re = re.compile( + r"^.*libtool: (?:for architecture: \S* )?" r"file: .* has no symbols$" + ) + libtool_re5 = re.compile( + r"^.*libtool: warning for library: " + + r".* the table of contents is empty " + + r"\(no object file members in the library define global symbols\)$" + ) + env = os.environ.copy() + # Ref: + # http://www.opensource.apple.com/source/cctools/cctools-809/misc/libtool.c + # The problem with this flag is that it resets the file mtime on the file to + # epoch=0, e.g. 1970-1-1 or 1969-12-31 depending on timezone. + env["ZERO_AR_DATE"] = "1" + libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE, env=env) + err = libtoolout.communicate()[1].decode("utf-8") + for line in err.splitlines(): + if not libtool_re.match(line) and not libtool_re5.match(line): + print(line, file=sys.stderr) + # Unconditionally touch the output .a file on the command line if present + # and the command succeeded. A bit hacky. + if not libtoolout.returncode: + for i in range(len(cmd_list) - 1): + if cmd_list[i] == "-o" and cmd_list[i + 1].endswith(".a"): + os.utime(cmd_list[i + 1], None) + break + return libtoolout.returncode + + def ExecPackageIosFramework(self, framework): + # Find the name of the binary based on the part before the ".framework". + binary = os.path.basename(framework).split(".")[0] + module_path = os.path.join(framework, "Modules") + if not os.path.exists(module_path): + os.mkdir(module_path) + module_template = ( + "framework module %s {\n" + ' umbrella header "%s.h"\n' + "\n" + " export *\n" + " module * { export * }\n" + "}\n" % (binary, binary) + ) + + with open(os.path.join(module_path, "module.modulemap"), "w") as module_file: + module_file.write(module_template) + + def ExecPackageFramework(self, framework, version): + """Takes a path to Something.framework and the Current version of that and + sets up all the symlinks.""" + # Find the name of the binary based on the part before the ".framework". + binary = os.path.basename(framework).split(".")[0] + + CURRENT = "Current" + RESOURCES = "Resources" + VERSIONS = "Versions" + + if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)): + # Binary-less frameworks don't seem to contain symlinks (see e.g. + # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle). + return + + # Move into the framework directory to set the symlinks correctly. + pwd = os.getcwd() + os.chdir(framework) + + # Set up the Current version. + self._Relink(version, os.path.join(VERSIONS, CURRENT)) + + # Set up the root symlinks. + self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary) + self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES) + + # Back to where we were before! + os.chdir(pwd) + + def _Relink(self, dest, link): + """Creates a symlink to |dest| named |link|. If |link| already exists, + it is overwritten.""" + if os.path.lexists(link): + os.remove(link) + os.symlink(dest, link) + + def ExecCompileIosFrameworkHeaderMap(self, out, framework, *all_headers): + framework_name = os.path.basename(framework).split(".")[0] + all_headers = [os.path.abspath(header) for header in all_headers] + filelist = {} + for header in all_headers: + filename = os.path.basename(header) + filelist[filename] = header + filelist[os.path.join(framework_name, filename)] = header + WriteHmap(out, filelist) + + def ExecCopyIosFrameworkHeaders(self, framework, *copy_headers): + header_path = os.path.join(framework, "Headers") + if not os.path.exists(header_path): + os.makedirs(header_path) + for header in copy_headers: + shutil.copy(header, os.path.join(header_path, os.path.basename(header))) + + def ExecCompileXcassets(self, keys, *inputs): + """Compiles multiple .xcassets files into a single .car file. + + This invokes 'actool' to compile all the inputs .xcassets files. The + |keys| arguments is a json-encoded dictionary of extra arguments to + pass to 'actool' when the asset catalogs contains an application icon + or a launch image. + + Note that 'actool' does not create the Assets.car file if the asset + catalogs does not contains imageset. + """ + command_line = [ + "xcrun", + "actool", + "--output-format", + "human-readable-text", + "--compress-pngs", + "--notices", + "--warnings", + "--errors", + ] + is_iphone_target = "IPHONEOS_DEPLOYMENT_TARGET" in os.environ + if is_iphone_target: + platform = os.environ["CONFIGURATION"].split("-")[-1] + if platform not in ("iphoneos", "iphonesimulator"): + platform = "iphonesimulator" + command_line.extend( + [ + "--platform", + platform, + "--target-device", + "iphone", + "--target-device", + "ipad", + "--minimum-deployment-target", + os.environ["IPHONEOS_DEPLOYMENT_TARGET"], + "--compile", + os.path.abspath(os.environ["CONTENTS_FOLDER_PATH"]), + ] + ) + else: + command_line.extend( + [ + "--platform", + "macosx", + "--target-device", + "mac", + "--minimum-deployment-target", + os.environ["MACOSX_DEPLOYMENT_TARGET"], + "--compile", + os.path.abspath(os.environ["UNLOCALIZED_RESOURCES_FOLDER_PATH"]), + ] + ) + if keys: + keys = json.loads(keys) + for key, value in keys.items(): + arg_name = "--" + key + if isinstance(value, bool): + if value: + command_line.append(arg_name) + elif isinstance(value, list): + for v in value: + command_line.append(arg_name) + command_line.append(str(v)) + else: + command_line.append(arg_name) + command_line.append(str(value)) + # Note: actool crashes if inputs path are relative, so use os.path.abspath + # to get absolute path name for inputs. + command_line.extend(map(os.path.abspath, inputs)) + subprocess.check_call(command_line) + + def ExecMergeInfoPlist(self, output, *inputs): + """Merge multiple .plist files into a single .plist file.""" + merged_plist = {} + for path in inputs: + plist = self._LoadPlistMaybeBinary(path) + self._MergePlist(merged_plist, plist) + plistlib.writePlist(merged_plist, output) + + def ExecCodeSignBundle(self, key, entitlements, provisioning, path, preserve): + """Code sign a bundle. + + This function tries to code sign an iOS bundle, following the same + algorithm as Xcode: + 1. pick the provisioning profile that best match the bundle identifier, + and copy it into the bundle as embedded.mobileprovision, + 2. copy Entitlements.plist from user or SDK next to the bundle, + 3. code sign the bundle. + """ + substitutions, overrides = self._InstallProvisioningProfile( + provisioning, self._GetCFBundleIdentifier() + ) + entitlements_path = self._InstallEntitlements( + entitlements, substitutions, overrides + ) + + args = ["codesign", "--force", "--sign", key] + if preserve == "True": + args.extend(["--deep", "--preserve-metadata=identifier,entitlements"]) + else: + args.extend(["--entitlements", entitlements_path]) + args.extend(["--timestamp=none", path]) + subprocess.check_call(args) + + def _InstallProvisioningProfile(self, profile, bundle_identifier): + """Installs embedded.mobileprovision into the bundle. + + Args: + profile: string, optional, short name of the .mobileprovision file + to use, if empty or the file is missing, the best file installed + will be used + bundle_identifier: string, value of CFBundleIdentifier from Info.plist + + Returns: + A tuple containing two dictionary: variables substitutions and values + to overrides when generating the entitlements file. + """ + source_path, provisioning_data, team_id = self._FindProvisioningProfile( + profile, bundle_identifier + ) + target_path = os.path.join( + os.environ["BUILT_PRODUCTS_DIR"], + os.environ["CONTENTS_FOLDER_PATH"], + "embedded.mobileprovision", + ) + shutil.copy2(source_path, target_path) + substitutions = self._GetSubstitutions(bundle_identifier, team_id + ".") + return substitutions, provisioning_data["Entitlements"] + + def _FindProvisioningProfile(self, profile, bundle_identifier): + """Finds the .mobileprovision file to use for signing the bundle. + + Checks all the installed provisioning profiles (or if the user specified + the PROVISIONING_PROFILE variable, only consult it) and select the most + specific that correspond to the bundle identifier. + + Args: + profile: string, optional, short name of the .mobileprovision file + to use, if empty or the file is missing, the best file installed + will be used + bundle_identifier: string, value of CFBundleIdentifier from Info.plist + + Returns: + A tuple of the path to the selected provisioning profile, the data of + the embedded plist in the provisioning profile and the team identifier + to use for code signing. + + Raises: + SystemExit: if no .mobileprovision can be used to sign the bundle. + """ + profiles_dir = os.path.join( + os.environ["HOME"], "Library", "MobileDevice", "Provisioning Profiles" + ) + if not os.path.isdir(profiles_dir): + print( + "cannot find mobile provisioning for %s" % (bundle_identifier), + file=sys.stderr, + ) + sys.exit(1) + provisioning_profiles = None + if profile: + profile_path = os.path.join(profiles_dir, profile + ".mobileprovision") + if os.path.exists(profile_path): + provisioning_profiles = [profile_path] + if not provisioning_profiles: + provisioning_profiles = glob.glob( + os.path.join(profiles_dir, "*.mobileprovision") + ) + valid_provisioning_profiles = {} + for profile_path in provisioning_profiles: + profile_data = self._LoadProvisioningProfile(profile_path) + app_id_pattern = profile_data.get("Entitlements", {}).get( + "application-identifier", "" + ) + for team_identifier in profile_data.get("TeamIdentifier", []): + app_id = f"{team_identifier}.{bundle_identifier}" + if fnmatch.fnmatch(app_id, app_id_pattern): + valid_provisioning_profiles[app_id_pattern] = ( + profile_path, + profile_data, + team_identifier, + ) + if not valid_provisioning_profiles: + print( + "cannot find mobile provisioning for %s" % (bundle_identifier), + file=sys.stderr, + ) + sys.exit(1) + # If the user has multiple provisioning profiles installed that can be + # used for ${bundle_identifier}, pick the most specific one (ie. the + # provisioning profile whose pattern is the longest). + selected_key = max(valid_provisioning_profiles, key=lambda v: len(v)) + return valid_provisioning_profiles[selected_key] + + def _LoadProvisioningProfile(self, profile_path): + """Extracts the plist embedded in a provisioning profile. + + Args: + profile_path: string, path to the .mobileprovision file + + Returns: + Content of the plist embedded in the provisioning profile as a dictionary. + """ + with tempfile.NamedTemporaryFile() as temp: + subprocess.check_call( + ["security", "cms", "-D", "-i", profile_path, "-o", temp.name] + ) + return self._LoadPlistMaybeBinary(temp.name) + + def _MergePlist(self, merged_plist, plist): + """Merge |plist| into |merged_plist|.""" + for key, value in plist.items(): + if isinstance(value, dict): + merged_value = merged_plist.get(key, {}) + if isinstance(merged_value, dict): + self._MergePlist(merged_value, value) + merged_plist[key] = merged_value + else: + merged_plist[key] = value + else: + merged_plist[key] = value + + def _LoadPlistMaybeBinary(self, plist_path): + """Loads into a memory a plist possibly encoded in binary format. + + This is a wrapper around plistlib.readPlist that tries to convert the + plist to the XML format if it can't be parsed (assuming that it is in + the binary format). + + Args: + plist_path: string, path to a plist file, in XML or binary format + + Returns: + Content of the plist as a dictionary. + """ + try: + # First, try to read the file using plistlib that only supports XML, + # and if an exception is raised, convert a temporary copy to XML and + # load that copy. + return plistlib.readPlist(plist_path) + except Exception: + pass + with tempfile.NamedTemporaryFile() as temp: + shutil.copy2(plist_path, temp.name) + subprocess.check_call(["plutil", "-convert", "xml1", temp.name]) + return plistlib.readPlist(temp.name) + + def _GetSubstitutions(self, bundle_identifier, app_identifier_prefix): + """Constructs a dictionary of variable substitutions for Entitlements.plist. + + Args: + bundle_identifier: string, value of CFBundleIdentifier from Info.plist + app_identifier_prefix: string, value for AppIdentifierPrefix + + Returns: + Dictionary of substitutions to apply when generating Entitlements.plist. + """ + return { + "CFBundleIdentifier": bundle_identifier, + "AppIdentifierPrefix": app_identifier_prefix, + } + + def _GetCFBundleIdentifier(self): + """Extracts CFBundleIdentifier value from Info.plist in the bundle. + + Returns: + Value of CFBundleIdentifier in the Info.plist located in the bundle. + """ + info_plist_path = os.path.join( + os.environ["TARGET_BUILD_DIR"], os.environ["INFOPLIST_PATH"] + ) + info_plist_data = self._LoadPlistMaybeBinary(info_plist_path) + return info_plist_data["CFBundleIdentifier"] + + def _InstallEntitlements(self, entitlements, substitutions, overrides): + """Generates and install the ${BundleName}.xcent entitlements file. + + Expands variables "$(variable)" pattern in the source entitlements file, + add extra entitlements defined in the .mobileprovision file and the copy + the generated plist to "${BundlePath}.xcent". + + Args: + entitlements: string, optional, path to the Entitlements.plist template + to use, defaults to "${SDKROOT}/Entitlements.plist" + substitutions: dictionary, variable substitutions + overrides: dictionary, values to add to the entitlements + + Returns: + Path to the generated entitlements file. + """ + source_path = entitlements + target_path = os.path.join( + os.environ["BUILT_PRODUCTS_DIR"], os.environ["PRODUCT_NAME"] + ".xcent" + ) + if not source_path: + source_path = os.path.join(os.environ["SDKROOT"], "Entitlements.plist") + shutil.copy2(source_path, target_path) + data = self._LoadPlistMaybeBinary(target_path) + data = self._ExpandVariables(data, substitutions) + if overrides: + for key in overrides: + if key not in data: + data[key] = overrides[key] + plistlib.writePlist(data, target_path) + return target_path + + def _ExpandVariables(self, data, substitutions): + """Expands variables "$(variable)" in data. + + Args: + data: object, can be either string, list or dictionary + substitutions: dictionary, variable substitutions to perform + + Returns: + Copy of data where each references to "$(variable)" has been replaced + by the corresponding value found in substitutions, or left intact if + the key was not found. + """ + if isinstance(data, str): + for key, value in substitutions.items(): + data = data.replace("$(%s)" % key, value) + return data + if isinstance(data, list): + return [self._ExpandVariables(v, substitutions) for v in data] + if isinstance(data, dict): + return {k: self._ExpandVariables(data[k], substitutions) for k in data} + return data + + +def NextGreaterPowerOf2(x): + return 2 ** (x).bit_length() + + +def WriteHmap(output_name, filelist): + """Generates a header map based on |filelist|. + + Per Mark Mentovai: + A header map is structured essentially as a hash table, keyed by names used + in #includes, and providing pathnames to the actual files. + + The implementation below and the comment above comes from inspecting: + http://www.opensource.apple.com/source/distcc/distcc-2503/distcc_dist/include_server/headermap.py?txt + while also looking at the implementation in clang in: + https://llvm.org/svn/llvm-project/cfe/trunk/lib/Lex/HeaderMap.cpp + """ + magic = 1751998832 + version = 1 + _reserved = 0 + count = len(filelist) + capacity = NextGreaterPowerOf2(count) + strings_offset = 24 + (12 * capacity) + max_value_length = max(len(value) for value in filelist.values()) + + out = open(output_name, "wb") + out.write( + struct.pack( + "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

}5Qw|C+mE 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

u|JK>{8Z5KIJ0x_FwY; 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%0DtzeR@cKKTqo?^@ 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 z�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

p00jlNYqdRc#+O+dfI# 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

oKfUu5qS3~_RUBInGC;>!6^ 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≠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⪼ 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%0Auc)=%C7ya}B$x?!V3j2&WaR@Dvf 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�a>X>E8!Ufx!NK$dE>)( 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

    5)1tJu6ml%jK^~=5@thZx)Bdtz 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 literal 0 HcmV?d00001 diff --git a/crates/tree-sitter-aqua/build/tree_sitter_aqua_binding.target.mk b/crates/tree-sitter-aqua/build/tree_sitter_aqua_binding.target.mk new file mode 100644 index 0000000..43f073c --- /dev/null +++ b/crates/tree-sitter-aqua/build/tree_sitter_aqua_binding.target.mk @@ -0,0 +1,198 @@ +# This file is generated by gyp; do not edit. + +TOOLSET := target +TARGET := tree_sitter_aqua_binding +DEFS_Debug := \ + '-DNODE_GYP_MODULE_NAME=tree_sitter_aqua_binding' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-DV8_DEPRECATION_WARNINGS' \ + '-DV8_IMMINENT_DEPRECATION_WARNINGS' \ + '-D_GLIBCXX_USE_CXX11_ABI=1' \ + '-D_DARWIN_USE_64_BIT_INODE=1' \ + '-D_LARGEFILE_SOURCE' \ + '-D_FILE_OFFSET_BITS=64' \ + '-DBUILDING_NODE_EXTENSION' \ + '-DDEBUG' \ + '-D_DEBUG' \ + '-DV8_ENABLE_CHECKS' + +# Flags passed to all source files. +CFLAGS_Debug := \ + -O0 \ + -gdwarf-2 \ + -mmacosx-version-min=10.13 \ + -arch arm64 \ + -Wall \ + -Wendif-labels \ + -W \ + -Wno-unused-parameter + +# Flags passed to only C files. +CFLAGS_C_Debug := \ + -fno-strict-aliasing + +# Flags passed to only C++ files. +CFLAGS_CC_Debug := \ + -std=gnu++14 \ + -stdlib=libc++ \ + -fno-rtti \ + -fno-exceptions \ + -fno-strict-aliasing + +# Flags passed to only ObjC files. +CFLAGS_OBJC_Debug := + +# Flags passed to only ObjC++ files. +CFLAGS_OBJCC_Debug := + +INCS_Debug := \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/src \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/config \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/openssl/include \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/uv/include \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/zlib \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/v8/include \ + -I$(srcdir)/node_modules/nan \ + -I$(srcdir)/src + +DEFS_Release := \ + '-DNODE_GYP_MODULE_NAME=tree_sitter_aqua_binding' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-DV8_DEPRECATION_WARNINGS' \ + '-DV8_IMMINENT_DEPRECATION_WARNINGS' \ + '-D_GLIBCXX_USE_CXX11_ABI=1' \ + '-D_DARWIN_USE_64_BIT_INODE=1' \ + '-D_LARGEFILE_SOURCE' \ + '-D_FILE_OFFSET_BITS=64' \ + '-DBUILDING_NODE_EXTENSION' + +# Flags passed to all source files. +CFLAGS_Release := \ + -O3 \ + -gdwarf-2 \ + -mmacosx-version-min=10.13 \ + -arch arm64 \ + -Wall \ + -Wendif-labels \ + -W \ + -Wno-unused-parameter + +# Flags passed to only C files. +CFLAGS_C_Release := \ + -fno-strict-aliasing + +# Flags passed to only C++ files. +CFLAGS_CC_Release := \ + -std=gnu++14 \ + -stdlib=libc++ \ + -fno-rtti \ + -fno-exceptions \ + -fno-strict-aliasing + +# Flags passed to only ObjC files. +CFLAGS_OBJC_Release := + +# Flags passed to only ObjC++ files. +CFLAGS_OBJCC_Release := + +INCS_Release := \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/src \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/config \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/openssl/include \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/uv/include \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/zlib \ + -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/v8/include \ + -I$(srcdir)/node_modules/nan \ + -I$(srcdir)/src + +OBJS := \ + $(obj).target/$(TARGET)/bindings/node/binding.o \ + $(obj).target/$(TARGET)/src/parser.o + +# Add to the list of files we specially track dependencies for. +all_deps += $(OBJS) + +# CFLAGS et al overrides must be target-local. +# See "Target-specific Variable Values" in the GNU Make manual. +$(OBJS): TOOLSET := $(TOOLSET) +$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) +$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) +$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) +$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) + +# Suffix rules, putting all outputs into $(obj). + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# Try building from generated source, too. + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# End of this set of suffix rules +### Rules for final target. +LDFLAGS_Debug := \ + -undefined dynamic_lookup \ + -Wl,-search_paths_first \ + -mmacosx-version-min=10.13 \ + -arch arm64 \ + -L$(builddir) \ + -stdlib=libc++ + +LIBTOOLFLAGS_Debug := \ + -undefined dynamic_lookup \ + -Wl,-search_paths_first + +LDFLAGS_Release := \ + -undefined dynamic_lookup \ + -Wl,-search_paths_first \ + -mmacosx-version-min=10.13 \ + -arch arm64 \ + -L$(builddir) \ + -stdlib=libc++ + +LIBTOOLFLAGS_Release := \ + -undefined dynamic_lookup \ + -Wl,-search_paths_first + +LIBS := + +$(builddir)/tree_sitter_aqua_binding.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(builddir)/tree_sitter_aqua_binding.node: LIBS := $(LIBS) +$(builddir)/tree_sitter_aqua_binding.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) +$(builddir)/tree_sitter_aqua_binding.node: TOOLSET := $(TOOLSET) +$(builddir)/tree_sitter_aqua_binding.node: $(OBJS) FORCE_DO_CMD + $(call do_cmd,solink_module) + +all_deps += $(builddir)/tree_sitter_aqua_binding.node +# Add target alias +.PHONY: tree_sitter_aqua_binding +tree_sitter_aqua_binding: $(builddir)/tree_sitter_aqua_binding.node + +# Short alias for building this executable. +.PHONY: tree_sitter_aqua_binding.node +tree_sitter_aqua_binding.node: $(builddir)/tree_sitter_aqua_binding.node + +# Add executable to "all" target. +.PHONY: all +all: $(builddir)/tree_sitter_aqua_binding.node + diff --git a/crates/tree-sitter-aqua/grammar.js b/crates/tree-sitter-aqua/grammar.js new file mode 100644 index 0000000..48fdd6d --- /dev/null +++ b/crates/tree-sitter-aqua/grammar.js @@ -0,0 +1,325 @@ +module.exports = grammar({ + name: 'aqua', + + extras: $ => [ + $._whitespace, + $.line_comment, + // $.block_comment + ], + + externals: $ => [], + + word: $ => $.name, + + rules: { + program: $ => optional($._stmts), + _whitespace: $ => /[ \t\r\n]/, + line_comment: $ => token(seq('#', /.*/)), + name: $ => /[a-zA-Z_][a-zA-Z0-9_]*/, + index: $ => /[0-9]+/, + meta: $ => seq('@', '{', optional($._attributes), '}'), + _attributes: $ => seq($.attribute, repeat(seq(',', $.attribute)), optional(',')), + attribute: $ => seq($.name, optional(seq(':', $._constant))), + _constant: $ => choice( + $.constant_int, + $.constant_float, + $.constant_string, + $.constant_char, + $.constant_bool, + $.constant_unit, + ), + constant_int: $ => token.immediate(seq( + /-?[0-9]+/, + optional(/[a-zA-Z_][a-zA-Z0-9_]*/) + )), + constant_float: $ => /-?[0-9]+\.[0-9]+/, + constant_string: $ => seq( + $.string_quote, + repeat(choice( + $.string_interpolation, + $.string_content + )), + $.string_quote, + ), + string_quote: $ => '"', + string_content: $ => /[^$"]+/, + string_interpolation: $ => seq('$', choice($.block, $.name)), + constant_char: $ => seq("'", /[^']*/, "'"), + constant_bool: $ => choice('true', 'false'), + constant_unit: $ => seq('(', ')'), + _stmts: $ => repeat1($._stmt), + _stmt: $ => choice( + $.stmt_def, + $.stmt_type, + $.stmt_enum, + $.stmt_struct, + $.stmt_val, + $.stmt_var, + $.stmt_expr, + $.stmt_code, + $.stmt_mod, + $.stmt_use, + $._stmt_noop + ), + stmt_def: $ => seq( + optional($.meta), + 'def', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + '(', optional($._params), ')', + seq(':', $._type), + choice( + seq('=', $._expr, ';'), + $.block + ) + )) + ), + stmt_type: $ => seq( + optional($.meta), + 'type', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + '=', + $._type, + ';' + )) + ), + stmt_enum: $ => seq( + optional($.meta), + 'enum', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + '{', optional(seq($.variant, repeat(seq(',', $.variant)), optional(','))), '}' + )) + ), + variant: $ => seq( + $.name, + optional( + choice( + seq('(', optional($._types), ')'), + seq('{', optional($._type_fields), '}'), + ) + ) + ), + stmt_struct: $ => seq( + optional($.meta), + 'struct', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + choice( + seq('(', optional($._types), ')'), + seq('{', optional($._type_fields), '}'), + ) + )) + ), + stmt_val: $ => prec(1, seq('val', $._pattern, '=', $._expr, ';')), + stmt_var: $ => seq('var', $._pattern, '=', $._expr, ';'), + stmt_expr: $ => seq($._expr, ';'), + stmt_code: $ => prec(10, seq( + '---', + field('lang', choice('rust', 'python')), + optional(field('code', $.code)), + '---' + )), + stmt_mod: $ => seq('mod', $.name, '{', optional($._stmts), '}'), + stmt_use: $ => seq('use', $.name, ';'), + code: $ => repeat1(/[^-]+|-[^-]/), + _stmt_noop: $ => ';', + _types: $ => seq($._type, repeat(seq(',', $._type)), optional(',')), + _type: $ => choice( + $.type_fun, + $.type_record_concat, + $.type_paren, + $.type_nominal, + $.type_tuple, + $.type_record, + $.type_array, + $.type_unit, + $.type_never, + $.type_wild, + ), + type_fun: $ => prec(1, seq('fun', '(', optional($._types), ')', ':', $._type)), + type_record_concat: $ => prec.left(2, seq($._type, '&', $._type)), + type_paren: $ => seq('(', $._type, ')'), + type_nominal: $ => prec.left(3, seq($.type_name, optional(seq('[', optional($._types), ']')))), + type_name: $ => $.name, + type_tuple: $ => seq('(', $._type, ',', optional($._types), ')'), + type_record: $ => seq('{', $._type_fields, '}'), + type_array: $ => seq('[', optional($._types), ']'), + type_unit: $ => seq('(', ')'), + type_never: $ => '!', + type_wild: $ => '_', + _type_fields: $ => seq($.type_field, repeat(seq(',', $.type_field)), optional(',')), + type_field: $ => seq($.name, seq(':', $._type)), + generic: $ => $.name, + _generics: $ => seq($.generic, repeat(seq(',', $.generic)), optional(',')), + _params: $ => seq($._param, repeat(seq(',', $._param)), optional(',')), + _param: $ => prec(10, seq($._pattern, ':', $._type)), + _patterns: $ => seq($._pattern, repeat(seq(',', $._pattern)), optional(',')), + _pattern_fields: $ => seq($.pattern_field, repeat(seq(',', $.pattern_field)), optional(',')), + pattern_field: $ => seq($.name, optional(seq(':', $._pattern))), + _pattern: $ => choice( + $.pattern_annot, + $.pattern_or, + $.pattern_record_concat, + $.pattern_paren, + $.pattern_constant, + $.pattern_name, + $.pattern_variant, + $.pattern_tuple, + $.pattern_record, + $.pattern_array, + $.pattern_wild, + ), + pattern_annot: $ => prec(1, seq($._pattern, ':', $._type)), + pattern_or: $ => prec.left(2, seq($._pattern, 'or', $._pattern)), + pattern_record_concat: $ => prec.left(2, seq($._pattern, '&', $._pattern)), + pattern_paren: $ => seq('(', $._pattern, ')'), + pattern_constant: $ => $._constant, + pattern_name: $ => $.name, + pattern_variant: $ => choice( + seq($.variant_name, '(', optional($._patterns), ')'), + seq($.variant_name, '{', optional($._pattern_fields), '}') + ), + pattern_tuple: $ => seq('(', $._pattern, ',', optional($._patterns), ')'), + pattern_record: $ => seq('{', optional($._pattern_fields), '}'), + pattern_array: $ => seq('[', optional($._patterns), ']'), + pattern_wild: $ => '_', + + variant_name: $ => $.name, + + _exprs: $ => seq($._expr, repeat(seq(',', $._expr)), optional(',')), + _expr: $ => choice( + $.expr_return, + $.expr_break, + $.expr_continue, + $.expr_throw, + $.expr_query, + $.expr_fun, + $.expr_binary, + $.expr_annot, + $.expr_call, + $.expr_tuple_access, + $.expr_record_access, + $.expr_array_access, + $.expr_method_call, + $.expr_paren, + $.expr_constant, + $.expr_name, + $.expr_array, + $.expr_tuple, + $.expr_record, + $.expr_do, + $.expr_if, + $.expr_match, + $.expr_loop, + $.expr_while, + $.expr_for, + $.expr_try, + $.expr_record_variant, + // $._expr_inject, + ), + expr_return: $ => prec.left(1, seq('return', optional($._expr))), + expr_break: $ => prec.left(1, seq('break', optional($._expr))), + expr_continue: $ => prec.left(1, 'continue'), + expr_throw: $ => prec.left(1, seq('throw', $._expr)), + expr_query: $ => prec.left(2, seq($.query_from, optional($._query_stmts))), + _rust: $ => seq('{', repeat(choice(/[^{}]+/, $._rust)), '}'), + _query_stmts: $ => repeat1($._query_stmt), + _query_stmt: $ => choice( + $.query_from, + $.query_where, + $.query_join, + $.query_union, + $.query_group, + $.query_over, + $.query_select, + $.query_roll, + $.query_compute, + $.query_select, + $.query_into, + $.query_order, + $.query_val, + ), + + query_from: $ => seq('from', $._pattern, 'in', $._expr), + query_where: $ => seq('where', $._expr), + query_join: $ => seq('join', $._pattern, 'in', $._expr, 'on', $._expr), + query_union: $ => seq('union', $._expr), + query_group: $ => prec.left(2, seq('group', $._expr, optional($._as), '{', optional($._query_stmts), '}', optional($._as))), + query_over: $ => prec.left(2, seq('over', $._expr, '{', optional($._query_stmts), '}', optional($._as))), + query_roll: $ => prec.left(2, seq('roll', $._expr, optional($._of), optional($._as))), + query_compute: $ => prec.left(2, seq('compute', $._expr, optional($._of), optional($._as))), + query_select: $ => prec.left(2, seq('select', $._expr, optional($._as))), + query_val: $ => prec.left(2, seq('with', $._pattern, '=', $._expr)), + query_into: $ => seq('into', $._expr), + query_order: $ => prec.left(2, seq('order', $._expr, optional('desc'))), + + _as: $ => seq('as', $.name), + _of: $ => seq('of', $._expr), + + expr_fun: $ => prec.left(2, seq( + 'fun', + '(', $._patterns, ')', + optional(seq(':', $._type)), + choice( + seq('=', $._expr), + $.block + ) + )), + expr_binary: $ => choice( + prec.left(1, seq($._expr, choice('=', '+=', '-=', '*=', '/='), $._expr)), + prec.left(2, seq($._expr, choice('..', '..='), $._expr)), + prec.left(3, seq($._expr, choice('and', 'or'), $._expr)), + prec.left(4, seq($._expr, choice('==', '!='), $._expr)), + prec.left(5, seq($._expr, choice('<', '>', '<=', '>='), $._expr)), + prec.left(6, seq($._expr, choice('+', '-'), $._expr)), + prec.left(7, seq($._expr, choice('*', '/'), $._expr)), + ), + expr_unary: $ => prec(8, seq(choice('not', '-', '+'), $._expr)), + expr_annot: $ => prec(9, seq($._expr, ':', $._type)), + expr_call: $ => prec(10, seq( + field('function', $._expr), + optional(seq('::', '[', $._types, ']')), + '(', optional($._exprs), ')') + ), + expr_tuple_access: $ => prec(11, seq($._expr, '.', $.index)), + expr_record_access: $ => prec(11, seq($._expr, '.', $.name)), + expr_array_access: $ => prec(11, seq($._expr, '[', $._expr, ']')), + expr_method_call: $ => prec(12, seq( + $._expr, + '.', + field('name', $.name), + optional(seq('::', '[', $._types, ']')), + '(', optional($._exprs), ')' + )), + expr_record_variant: $ => prec(13, seq($.name, '{', optional($._expr_fields), '}')), + expr_paren: $ => seq('(', $._expr, ')'), + expr_constant: $ => $._constant, + expr_name: $ => prec(14, $.name), + expr_array: $ => seq('[', optional($._exprs), ']'), + expr_tuple: $ => seq('(', $._expr, ',', optional($._exprs), ')'), + expr_record: $ => seq('{', optional($._expr_fields), '}'), + _expr_fields: $ => seq($.expr_field, repeat(seq(',', $.expr_field)), optional(',')), + expr_field: $ => choice( + $.expr_field_expr, + $.expr_field_name, + ), + expr_field_expr: $ => prec(15, seq($.name, optional(seq(':', $._expr)))), + expr_field_name: $ => prec(2, seq($._expr, '.', $.name)), + expr_do: $ => seq('do', $.block), + expr_if: $ => seq('if', $._expr, $.block, optional(seq('else', $.block))), + expr_match: $ => seq('match', $._expr, '{', $._arms, '}'), + expr_loop: $ => seq('loop', $.block), + expr_while: $ => seq('while', $._expr, $.block), + expr_for: $ => seq('for', $._pattern, 'in', $._expr, $.block), + expr_try: $ => seq('try', $.block, 'catch', '{', optional($._arms), '}', 'finally', $.block), + block: $ => seq('{', optional($._stmts), optional($._expr), '}'), + _arms: $ => seq($.arm, repeat(seq(',', $.arm)), optional(',')), + arm: $ => field('arm', seq($._pattern, '=>', $._expr)), + } +}); diff --git a/crates/tree-sitter-aqua/package-lock.json b/crates/tree-sitter-aqua/package-lock.json new file mode 100644 index 0000000..05ad10f --- /dev/null +++ b/crates/tree-sitter-aqua/package-lock.json @@ -0,0 +1,47 @@ +{ + "name": "tree-sitter-aqua", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "tree-sitter-aqua", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "nan": "^2.17.0" + }, + "devDependencies": { + "tree-sitter-cli": "^0.20.8" + } + }, + "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/tree-sitter-cli": { + "version": "0.20.8", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.20.8.tgz", + "integrity": "sha512-XjTcS3wdTy/2cc/ptMLc/WRyOLECRYcMTrSWyhZnj1oGSOWbHLTklgsgRICU3cPfb0vy+oZCC33M43u6R1HSCA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "tree-sitter": "cli.js" + } + } + }, + "dependencies": { + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + }, + "tree-sitter-cli": { + "version": "0.20.8", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.20.8.tgz", + "integrity": "sha512-XjTcS3wdTy/2cc/ptMLc/WRyOLECRYcMTrSWyhZnj1oGSOWbHLTklgsgRICU3cPfb0vy+oZCC33M43u6R1HSCA==", + "dev": true + } + } +} diff --git a/crates/tree-sitter-aqua/package.json b/crates/tree-sitter-aqua/package.json new file mode 100644 index 0000000..a85c0d8 --- /dev/null +++ b/crates/tree-sitter-aqua/package.json @@ -0,0 +1,17 @@ +{ + "name": "tree-sitter-aqua", + "version": "1.0.0", + "description": "", + "main": "bindings/node", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "nan": "^2.17.0" + }, + "devDependencies": { + "tree-sitter-cli": "^0.20.8" + } +} diff --git a/crates/tree-sitter-aqua/parser/aqua.so b/crates/tree-sitter-aqua/parser/aqua.so new file mode 100755 index 0000000000000000000000000000000000000000..604c9124ba1d112edb60577cbf702b93437d9fcb GIT binary patch literal 132983 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 mM)Le*&gR~i%lFEe@u4m?Ane}u=GpJx?0Bl#" "_" ] @punctuation + +[ "not" "and" "or" "+" "-" "*" "/" "==" "!=" "<" ">" "<=" ">=" "+=" "-=" "*=" "/=" ".." "..=" "&" ] @operator diff --git a/crates/tree-sitter-aqua/queries/aqua/injections.scm b/crates/tree-sitter-aqua/queries/aqua/injections.scm new file mode 100644 index 0000000..77101d4 --- /dev/null +++ b/crates/tree-sitter-aqua/queries/aqua/injections.scm @@ -0,0 +1,6 @@ +(stmt_code lang: "rust" code: (code) @injection.content (#set! injection.language "rust")) +(stmt_code lang: "python" code: (code) @injection.content (#set! injection.language "python")) +((line_comment) @injection.content + (#lua-match? @injection.content "^#.") + (#set! injection.language "markdown") + (#offset! @injection.content 0 1 0 0)) diff --git a/crates/tree-sitter-aqua/queries/aqua/locals.scm b/crates/tree-sitter-aqua/queries/aqua/locals.scm new file mode 100644 index 0000000..7b6cf45 --- /dev/null +++ b/crates/tree-sitter-aqua/queries/aqua/locals.scm @@ -0,0 +1,17 @@ +(stmt_def name: (name) @definition.function) +(stmt_type name: (name) @definition.type) +(stmt_enum name: (name) @definition.type) +(pattern_name (name) @definition.var) + +(expr_name (name) @reference) +(type_name (name) @reference) +(expr_call function: (expr_name (name) @reference)) +(expr_method_call name: ((name) @reference)) + +[ + (program) + ((_) @x (#has-parent? @x stmt_def)) + ((_) @x (#has-parent? @x stmt_type)) + ((_) @x (#has-parent? @x stmt_enum)) + (block) +] @scope diff --git a/crates/tree-sitter-aqua/queries/aqua/tags.scm b/crates/tree-sitter-aqua/queries/aqua/tags.scm new file mode 100644 index 0000000..e69de29 diff --git a/crates/tree-sitter-aqua/src/grammar.json b/crates/tree-sitter-aqua/src/grammar.json new file mode 100644 index 0000000..d0a048b --- /dev/null +++ b/crates/tree-sitter-aqua/src/grammar.json @@ -0,0 +1,3761 @@ +{ + "name": "aqua", + "word": "name", + "rules": { + "program": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_stmts" + }, + { + "type": "BLANK" + } + ] + }, + "_whitespace": { + "type": "PATTERN", + "value": "[ \\t\\r\\n]" + }, + "line_comment": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#" + }, + { + "type": "PATTERN", + "value": ".*" + } + ] + } + }, + "name": { + "type": "PATTERN", + "value": "[a-zA-Z_][a-zA-Z0-9_]*" + }, + "index": { + "type": "PATTERN", + "value": "[0-9]+" + }, + "meta": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "@" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_attributes" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_attributes": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "attribute" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "attribute" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "attribute": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_constant" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_constant": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "constant_int" + }, + { + "type": "SYMBOL", + "name": "constant_float" + }, + { + "type": "SYMBOL", + "name": "constant_string" + }, + { + "type": "SYMBOL", + "name": "constant_char" + }, + { + "type": "SYMBOL", + "name": "constant_bool" + }, + { + "type": "SYMBOL", + "name": "constant_unit" + } + ] + }, + "constant_int": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "-?[0-9]+" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[a-zA-Z_][a-zA-Z0-9_]*" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "constant_float": { + "type": "PATTERN", + "value": "-?[0-9]+\\.[0-9]+" + }, + "constant_string": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "string_quote" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string_interpolation" + }, + { + "type": "SYMBOL", + "name": "string_content" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "string_quote" + } + ] + }, + "string_quote": { + "type": "STRING", + "value": "\"" + }, + "string_content": { + "type": "PATTERN", + "value": "[^$\"]+" + }, + "string_interpolation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "$" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + } + ] + }, + "constant_char": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "PATTERN", + "value": "[^']*" + }, + { + "type": "STRING", + "value": "'" + } + ] + }, + "constant_bool": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "true" + }, + { + "type": "STRING", + "value": "false" + } + ] + }, + "constant_unit": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "_stmts": { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "_stmt" + } + }, + "_stmt": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "stmt_def" + }, + { + "type": "SYMBOL", + "name": "stmt_type" + }, + { + "type": "SYMBOL", + "name": "stmt_enum" + }, + { + "type": "SYMBOL", + "name": "stmt_struct" + }, + { + "type": "SYMBOL", + "name": "stmt_val" + }, + { + "type": "SYMBOL", + "name": "stmt_var" + }, + { + "type": "SYMBOL", + "name": "stmt_expr" + }, + { + "type": "SYMBOL", + "name": "stmt_code" + }, + { + "type": "SYMBOL", + "name": "stmt_mod" + }, + { + "type": "SYMBOL", + "name": "stmt_use" + }, + { + "type": "SYMBOL", + "name": "_stmt_noop" + } + ] + }, + "stmt_def": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "def" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_params" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + } + ] + } + } + ] + }, + "stmt_type": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "type" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": ";" + } + ] + } + } + ] + }, + "stmt_enum": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "enum" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "variant" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "variant" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + } + ] + }, + "variant": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "stmt_struct": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "struct" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + } + ] + } + } + ] + }, + "stmt_val": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "val" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + } + }, + "stmt_var": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "var" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "stmt_expr": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "stmt_code": { + "type": "PREC", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "---" + }, + { + "type": "FIELD", + "name": "lang", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "rust" + }, + { + "type": "STRING", + "value": "python" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "code", + "content": { + "type": "SYMBOL", + "name": "code" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "---" + } + ] + } + }, + "stmt_mod": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "mod" + }, + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "stmt_use": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "use" + }, + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "code": { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[^-]+|-[^-]" + } + }, + "_stmt_noop": { + "type": "STRING", + "value": ";" + }, + "_types": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_type": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_fun" + }, + { + "type": "SYMBOL", + "name": "type_record_concat" + }, + { + "type": "SYMBOL", + "name": "type_paren" + }, + { + "type": "SYMBOL", + "name": "type_nominal" + }, + { + "type": "SYMBOL", + "name": "type_tuple" + }, + { + "type": "SYMBOL", + "name": "type_record" + }, + { + "type": "SYMBOL", + "name": "type_array" + }, + { + "type": "SYMBOL", + "name": "type_unit" + }, + { + "type": "SYMBOL", + "name": "type_never" + }, + { + "type": "SYMBOL", + "name": "type_wild" + } + ] + }, + "type_fun": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "type_record_concat": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "&" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "type_paren": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "type_nominal": { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "type_name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "type_name": { + "type": "SYMBOL", + "name": "name" + }, + "type_tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "type_record": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "_type_fields" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "type_array": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "type_unit": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "type_never": { + "type": "STRING", + "value": "!" + }, + "type_wild": { + "type": "STRING", + "value": "_" + }, + "_type_fields": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "type_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "type_field" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "type_field": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + ] + }, + "generic": { + "type": "SYMBOL", + "name": "name" + }, + "_generics": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "generic" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "generic" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_params": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_param" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_param" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_param": { + "type": "PREC", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "_patterns": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_pattern_fields": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "pattern_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "pattern_field" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "pattern_field": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "pattern_annot" + }, + { + "type": "SYMBOL", + "name": "pattern_or" + }, + { + "type": "SYMBOL", + "name": "pattern_record_concat" + }, + { + "type": "SYMBOL", + "name": "pattern_paren" + }, + { + "type": "SYMBOL", + "name": "pattern_constant" + }, + { + "type": "SYMBOL", + "name": "pattern_name" + }, + { + "type": "SYMBOL", + "name": "pattern_variant" + }, + { + "type": "SYMBOL", + "name": "pattern_tuple" + }, + { + "type": "SYMBOL", + "name": "pattern_record" + }, + { + "type": "SYMBOL", + "name": "pattern_array" + }, + { + "type": "SYMBOL", + "name": "pattern_wild" + } + ] + }, + "pattern_annot": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "pattern_or": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "or" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + }, + "pattern_record_concat": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "&" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + }, + "pattern_paren": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "pattern_constant": { + "type": "SYMBOL", + "name": "_constant" + }, + "pattern_name": { + "type": "SYMBOL", + "name": "name" + }, + "pattern_variant": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "variant_name" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "variant_name" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "pattern_tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "pattern_record": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "pattern_array": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "pattern_wild": { + "type": "STRING", + "value": "_" + }, + "variant_name": { + "type": "SYMBOL", + "name": "name" + }, + "_exprs": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_expr": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expr_return" + }, + { + "type": "SYMBOL", + "name": "expr_break" + }, + { + "type": "SYMBOL", + "name": "expr_continue" + }, + { + "type": "SYMBOL", + "name": "expr_throw" + }, + { + "type": "SYMBOL", + "name": "expr_query" + }, + { + "type": "SYMBOL", + "name": "expr_fun" + }, + { + "type": "SYMBOL", + "name": "expr_binary" + }, + { + "type": "SYMBOL", + "name": "expr_annot" + }, + { + "type": "SYMBOL", + "name": "expr_call" + }, + { + "type": "SYMBOL", + "name": "expr_tuple_access" + }, + { + "type": "SYMBOL", + "name": "expr_record_access" + }, + { + "type": "SYMBOL", + "name": "expr_array_access" + }, + { + "type": "SYMBOL", + "name": "expr_method_call" + }, + { + "type": "SYMBOL", + "name": "expr_paren" + }, + { + "type": "SYMBOL", + "name": "expr_constant" + }, + { + "type": "SYMBOL", + "name": "expr_name" + }, + { + "type": "SYMBOL", + "name": "expr_array" + }, + { + "type": "SYMBOL", + "name": "expr_tuple" + }, + { + "type": "SYMBOL", + "name": "expr_record" + }, + { + "type": "SYMBOL", + "name": "expr_do" + }, + { + "type": "SYMBOL", + "name": "expr_if" + }, + { + "type": "SYMBOL", + "name": "expr_match" + }, + { + "type": "SYMBOL", + "name": "expr_loop" + }, + { + "type": "SYMBOL", + "name": "expr_while" + }, + { + "type": "SYMBOL", + "name": "expr_for" + }, + { + "type": "SYMBOL", + "name": "expr_try" + }, + { + "type": "SYMBOL", + "name": "expr_record_variant" + } + ] + }, + "expr_return": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "return" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "expr_break": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "break" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "expr_continue": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "STRING", + "value": "continue" + } + }, + "expr_throw": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "throw" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "expr_query": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "query_from" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_query_stmts" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "_rust": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[^{}]+" + }, + { + "type": "SYMBOL", + "name": "_rust" + } + ] + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_query_stmts": { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "_query_stmt" + } + }, + "_query_stmt": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "query_from" + }, + { + "type": "SYMBOL", + "name": "query_where" + }, + { + "type": "SYMBOL", + "name": "query_join" + }, + { + "type": "SYMBOL", + "name": "query_union" + }, + { + "type": "SYMBOL", + "name": "query_group" + }, + { + "type": "SYMBOL", + "name": "query_over" + }, + { + "type": "SYMBOL", + "name": "query_select" + }, + { + "type": "SYMBOL", + "name": "query_roll" + }, + { + "type": "SYMBOL", + "name": "query_compute" + }, + { + "type": "SYMBOL", + "name": "query_select" + }, + { + "type": "SYMBOL", + "name": "query_into" + }, + { + "type": "SYMBOL", + "name": "query_order" + }, + { + "type": "SYMBOL", + "name": "query_val" + } + ] + }, + "query_from": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "from" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_where": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "where" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_join": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "join" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "on" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_union": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "union" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_group": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "group" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_query_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_over": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "over" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_query_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_roll": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "roll" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_of" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_compute": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "compute" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_of" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_select": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "select" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_val": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "with" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "query_into": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "into" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_order": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "order" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "desc" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "_as": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + }, + "_of": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "of" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "expr_fun": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + } + ] + } + }, + "expr_binary": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 1, + "content": { + "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": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ".." + }, + { + "type": "STRING", + "value": "..=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "and" + }, + { + "type": "STRING", + "value": "or" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "==" + }, + { + "type": "STRING", + "value": "!=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "STRING", + "value": ">" + }, + { + "type": "STRING", + "value": "<=" + }, + { + "type": "STRING", + "value": ">=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "STRING", + "value": "-" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "STRING", + "value": "/" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + } + ] + }, + "expr_unary": { + "type": "PREC", + "value": 8, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "not" + }, + { + "type": "STRING", + "value": "-" + }, + { + "type": "STRING", + "value": "+" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "expr_annot": { + "type": "PREC", + "value": 9, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "expr_call": { + "type": "PREC", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "function", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + }, + "expr_tuple_access": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "index" + } + ] + } + }, + "expr_record_access": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + } + }, + "expr_array_access": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "expr_method_call": { + "type": "PREC", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + }, + "expr_record_variant": { + "type": "PREC", + "value": 13, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + }, + "expr_paren": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "expr_constant": { + "type": "SYMBOL", + "name": "_constant" + }, + "expr_name": { + "type": "PREC", + "value": 14, + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + "expr_array": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "expr_tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "expr_record": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_expr_fields": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expr_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "expr_field" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "expr_field": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expr_field_expr" + }, + { + "type": "SYMBOL", + "name": "expr_field_name" + } + ] + }, + "expr_field_expr": { + "type": "PREC", + "value": 15, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "expr_field_name": { + "type": "PREC", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + } + }, + "expr_do": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "do" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_if": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "expr_match": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "match" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "_arms" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "expr_loop": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "loop" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_while": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "while" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_for": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "for" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_try": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "try" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "STRING", + "value": "catch" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_arms" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + }, + { + "type": "STRING", + "value": "finally" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "block": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_arms": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "arm" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "arm" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "arm": { + "type": "FIELD", + "name": "arm", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=>" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + } + }, + "extras": [ + { + "type": "SYMBOL", + "name": "_whitespace" + }, + { + "type": "SYMBOL", + "name": "line_comment" + } + ], + "conflicts": [], + "precedences": [], + "externals": [], + "inline": [], + "supertypes": [] +} + diff --git a/crates/tree-sitter-aqua/src/node-types.json b/crates/tree-sitter-aqua/src/node-types.json new file mode 100644 index 0000000..49846b1 --- /dev/null +++ b/crates/tree-sitter-aqua/src/node-types.json @@ -0,0 +1,7667 @@ +[ + { + "type": "arm", + "named": true, + "fields": { + "arm": { + "multiple": true, + "required": true, + "types": [ + { + "type": "=>", + "named": false + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + } + }, + { + "type": "attribute", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "constant_bool", + "named": true + }, + { + "type": "constant_char", + "named": true + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "constant_string", + "named": true + }, + { + "type": "constant_unit", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "stmt_code", + "named": true + }, + { + "type": "stmt_def", + "named": true + }, + { + "type": "stmt_enum", + "named": true + }, + { + "type": "stmt_expr", + "named": true + }, + { + "type": "stmt_mod", + "named": true + }, + { + "type": "stmt_struct", + "named": true + }, + { + "type": "stmt_type", + "named": true + }, + { + "type": "stmt_use", + "named": true + }, + { + "type": "stmt_val", + "named": true + }, + { + "type": "stmt_var", + "named": true + } + ] + } + }, + { + "type": "code", + "named": true, + "fields": {} + }, + { + "type": "constant_bool", + "named": true, + "fields": {} + }, + { + "type": "constant_char", + "named": true, + "fields": {} + }, + { + "type": "constant_string", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "string_content", + "named": true + }, + { + "type": "string_interpolation", + "named": true + }, + { + "type": "string_quote", + "named": true + } + ] + } + }, + { + "type": "constant_unit", + "named": true, + "fields": {} + }, + { + "type": "expr_annot", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_array_access", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_binary", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_break", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_call", + "named": true, + "fields": { + "function": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_constant", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant_bool", + "named": true + }, + { + "type": "constant_char", + "named": true + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "constant_string", + "named": true + }, + { + "type": "constant_unit", + "named": true + } + ] + } + }, + { + "type": "expr_continue", + "named": true, + "fields": {} + }, + { + "type": "expr_do", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "expr_field", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_field_expr", + "named": true + }, + { + "type": "expr_field_name", + "named": true + } + ] + } + }, + { + "type": "expr_field_expr", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_field_name", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_for", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "expr_fun", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_if", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_loop", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "expr_match", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "arm", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_method_call", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_paren", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_query", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "query_compute", + "named": true + }, + { + "type": "query_from", + "named": true + }, + { + "type": "query_group", + "named": true + }, + { + "type": "query_into", + "named": true + }, + { + "type": "query_join", + "named": true + }, + { + "type": "query_order", + "named": true + }, + { + "type": "query_over", + "named": true + }, + { + "type": "query_roll", + "named": true + }, + { + "type": "query_select", + "named": true + }, + { + "type": "query_union", + "named": true + }, + { + "type": "query_val", + "named": true + }, + { + "type": "query_where", + "named": true + } + ] + } + }, + { + "type": "expr_record", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_field", + "named": true + } + ] + } + }, + { + "type": "expr_record_access", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_record_variant", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_field", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_return", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_throw", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_try", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "arm", + "named": true + }, + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "expr_tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_tuple_access", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "index", + "named": true + } + ] + } + }, + { + "type": "expr_while", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "generic", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "meta", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + } + ] + } + }, + { + "type": "pattern_annot", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_constant", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant_bool", + "named": true + }, + { + "type": "constant_char", + "named": true + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "constant_string", + "named": true + }, + { + "type": "constant_unit", + "named": true + } + ] + } + }, + { + "type": "pattern_field", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "pattern_or", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_paren", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_record", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "pattern_field", + "named": true + } + ] + } + }, + { + "type": "pattern_record_concat", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_variant", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_field", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "variant_name", + "named": true + } + ] + } + }, + { + "type": "pattern_wild", + "named": true, + "fields": {} + }, + { + "type": "program", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "stmt_code", + "named": true + }, + { + "type": "stmt_def", + "named": true + }, + { + "type": "stmt_enum", + "named": true + }, + { + "type": "stmt_expr", + "named": true + }, + { + "type": "stmt_mod", + "named": true + }, + { + "type": "stmt_struct", + "named": true + }, + { + "type": "stmt_type", + "named": true + }, + { + "type": "stmt_use", + "named": true + }, + { + "type": "stmt_val", + "named": true + }, + { + "type": "stmt_var", + "named": true + } + ] + } + }, + { + "type": "query_compute", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "query_from", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "query_group", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "query_compute", + "named": true + }, + { + "type": "query_from", + "named": true + }, + { + "type": "query_group", + "named": true + }, + { + "type": "query_into", + "named": true + }, + { + "type": "query_join", + "named": true + }, + { + "type": "query_order", + "named": true + }, + { + "type": "query_over", + "named": true + }, + { + "type": "query_roll", + "named": true + }, + { + "type": "query_select", + "named": true + }, + { + "type": "query_union", + "named": true + }, + { + "type": "query_val", + "named": true + }, + { + "type": "query_where", + "named": true + } + ] + } + }, + { + "type": "query_into", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "query_join", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "query_order", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "query_over", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "query_compute", + "named": true + }, + { + "type": "query_from", + "named": true + }, + { + "type": "query_group", + "named": true + }, + { + "type": "query_into", + "named": true + }, + { + "type": "query_join", + "named": true + }, + { + "type": "query_order", + "named": true + }, + { + "type": "query_over", + "named": true + }, + { + "type": "query_roll", + "named": true + }, + { + "type": "query_select", + "named": true + }, + { + "type": "query_union", + "named": true + }, + { + "type": "query_val", + "named": true + }, + { + "type": "query_where", + "named": true + } + ] + } + }, + { + "type": "query_roll", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "query_select", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "query_union", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "query_val", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "query_where", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "stmt_code", + "named": true, + "fields": { + "code": { + "multiple": false, + "required": false, + "types": [ + { + "type": "code", + "named": true + } + ] + }, + "lang": { + "multiple": false, + "required": true, + "types": [ + { + "type": "python", + "named": false + }, + { + "type": "rust", + "named": false + } + ] + } + } + }, + { + "type": "stmt_def", + "named": true, + "fields": { + "inner": { + "multiple": true, + "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": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "generic", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_enum", + "named": true, + "fields": { + "inner": { + "multiple": true, + "required": true, + "types": [ + { + "type": ",", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "generic", + "named": true + }, + { + "type": "variant", + "named": true + }, + { + "type": "{", + "named": false + }, + { + "type": "}", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_expr", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "stmt_mod", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "stmt_code", + "named": true + }, + { + "type": "stmt_def", + "named": true + }, + { + "type": "stmt_enum", + "named": true + }, + { + "type": "stmt_expr", + "named": true + }, + { + "type": "stmt_mod", + "named": true + }, + { + "type": "stmt_struct", + "named": true + }, + { + "type": "stmt_type", + "named": true + }, + { + "type": "stmt_use", + "named": true + }, + { + "type": "stmt_val", + "named": true + }, + { + "type": "stmt_var", + "named": true + } + ] + } + }, + { + "type": "stmt_struct", + "named": true, + "fields": { + "inner": { + "multiple": true, + "required": true, + "types": [ + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "generic", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_field", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + }, + { + "type": "{", + "named": false + }, + { + "type": "}", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_type", + "named": true, + "fields": { + "inner": { + "multiple": true, + "required": true, + "types": [ + { + "type": ",", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "generic", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_use", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "stmt_val", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "stmt_var", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_record_variant", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "string_interpolation", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "type_array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_field", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_fun", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "type_nominal", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_name", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_paren", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_record", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_field", + "named": true + } + ] + } + }, + { + "type": "type_record_concat", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_unit", + "named": true, + "fields": {} + }, + { + "type": "type_wild", + "named": true, + "fields": {} + }, + { + "type": "variant", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_field", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "variant_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "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": ";", + "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": "and", + "named": false + }, + { + "type": "as", + "named": false + }, + { + "type": "break", + "named": false + }, + { + "type": "catch", + "named": false + }, + { + "type": "compute", + "named": false + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "continue", + "named": false + }, + { + "type": "def", + "named": false + }, + { + "type": "desc", + "named": false + }, + { + "type": "do", + "named": false + }, + { + "type": "else", + "named": false + }, + { + "type": "enum", + "named": false + }, + { + "type": "false", + "named": false + }, + { + "type": "finally", + "named": false + }, + { + "type": "for", + "named": false + }, + { + "type": "from", + "named": false + }, + { + "type": "fun", + "named": false + }, + { + "type": "group", + "named": false + }, + { + "type": "if", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "index", + "named": true + }, + { + "type": "into", + "named": false + }, + { + "type": "join", + "named": false + }, + { + "type": "line_comment", + "named": true + }, + { + "type": "loop", + "named": false + }, + { + "type": "match", + "named": false + }, + { + "type": "mod", + "named": false + }, + { + "type": "name", + "named": true + }, + { + "type": "not", + "named": false + }, + { + "type": "of", + "named": false + }, + { + "type": "on", + "named": false + }, + { + "type": "or", + "named": false + }, + { + "type": "order", + "named": false + }, + { + "type": "over", + "named": false + }, + { + "type": "python", + "named": false + }, + { + "type": "return", + "named": false + }, + { + "type": "roll", + "named": false + }, + { + "type": "rust", + "named": false + }, + { + "type": "select", + "named": false + }, + { + "type": "string_content", + "named": true + }, + { + "type": "string_quote", + "named": true + }, + { + "type": "struct", + "named": false + }, + { + "type": "throw", + "named": false + }, + { + "type": "true", + "named": false + }, + { + "type": "try", + "named": false + }, + { + "type": "type", + "named": false + }, + { + "type": "type_never", + "named": true + }, + { + "type": "union", + "named": false + }, + { + "type": "use", + "named": false + }, + { + "type": "val", + "named": false + }, + { + "type": "var", + "named": false + }, + { + "type": "where", + "named": false + }, + { + "type": "while", + "named": false + }, + { + "type": "with", + "named": false + }, + { + "type": "{", + "named": false + }, + { + "type": "}", + "named": false + } +] \ No newline at end of file diff --git a/crates/tree-sitter-aqua/src/parser.c b/crates/tree-sitter-aqua/src/parser.c new file mode 100644 index 0000000..c7fdc8d --- /dev/null +++ b/crates/tree-sitter-aqua/src/parser.c @@ -0,0 +1,85355 @@ +#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 1586 +#define LARGE_STATE_COUNT 44 +#define SYMBOL_COUNT 218 +#define ALIAS_COUNT 0 +#define TOKEN_COUNT 94 +#define EXTERNAL_TOKEN_COUNT 0 +#define FIELD_COUNT 6 +#define MAX_ALIAS_SEQUENCE_LENGTH 14 +#define PRODUCTION_ID_COUNT 26 + +enum { + sym_name = 1, + sym__whitespace = 2, + sym_line_comment = 3, + sym_index = 4, + anon_sym_AT = 5, + anon_sym_LBRACE = 6, + anon_sym_RBRACE = 7, + anon_sym_COMMA = 8, + anon_sym_COLON = 9, + sym_constant_int = 10, + sym_constant_float = 11, + sym_string_quote = 12, + sym_string_content = 13, + anon_sym_DOLLAR = 14, + anon_sym_SQUOTE = 15, + aux_sym_constant_char_token1 = 16, + anon_sym_true = 17, + anon_sym_false = 18, + anon_sym_LPAREN = 19, + anon_sym_RPAREN = 20, + anon_sym_def = 21, + anon_sym_LBRACK = 22, + anon_sym_RBRACK = 23, + anon_sym_EQ = 24, + anon_sym_SEMI = 25, + anon_sym_type = 26, + anon_sym_enum = 27, + anon_sym_struct = 28, + anon_sym_val = 29, + anon_sym_var = 30, + anon_sym_DASH_DASH_DASH = 31, + anon_sym_rust = 32, + anon_sym_python = 33, + anon_sym_mod = 34, + anon_sym_use = 35, + aux_sym_code_token1 = 36, + anon_sym_fun = 37, + anon_sym_AMP = 38, + sym_type_never = 39, + anon_sym__ = 40, + anon_sym_or = 41, + anon_sym_return = 42, + anon_sym_break = 43, + anon_sym_continue = 44, + anon_sym_throw = 45, + anon_sym_from = 46, + anon_sym_in = 47, + anon_sym_where = 48, + anon_sym_join = 49, + anon_sym_on = 50, + anon_sym_union = 51, + anon_sym_group = 52, + anon_sym_over = 53, + anon_sym_roll = 54, + anon_sym_compute = 55, + anon_sym_select = 56, + anon_sym_with = 57, + anon_sym_into = 58, + anon_sym_order = 59, + anon_sym_desc = 60, + anon_sym_as = 61, + anon_sym_of = 62, + anon_sym_PLUS_EQ = 63, + anon_sym_DASH_EQ = 64, + anon_sym_STAR_EQ = 65, + anon_sym_SLASH_EQ = 66, + anon_sym_DOT_DOT = 67, + anon_sym_DOT_DOT_EQ = 68, + anon_sym_and = 69, + anon_sym_EQ_EQ = 70, + anon_sym_BANG_EQ = 71, + anon_sym_LT = 72, + anon_sym_GT = 73, + anon_sym_LT_EQ = 74, + anon_sym_GT_EQ = 75, + anon_sym_PLUS = 76, + anon_sym_DASH = 77, + anon_sym_STAR = 78, + anon_sym_SLASH = 79, + anon_sym_not = 80, + anon_sym_COLON_COLON = 81, + anon_sym_DOT = 82, + anon_sym_do = 83, + anon_sym_if = 84, + anon_sym_else = 85, + anon_sym_match = 86, + anon_sym_loop = 87, + anon_sym_while = 88, + anon_sym_for = 89, + anon_sym_try = 90, + anon_sym_catch = 91, + anon_sym_finally = 92, + anon_sym_EQ_GT = 93, + sym_program = 94, + sym_meta = 95, + sym__attributes = 96, + sym_attribute = 97, + sym__constant = 98, + sym_constant_string = 99, + sym_string_interpolation = 100, + sym_constant_char = 101, + sym_constant_bool = 102, + sym_constant_unit = 103, + aux_sym__stmts = 104, + sym__stmt = 105, + sym_stmt_def = 106, + sym_stmt_type = 107, + sym_stmt_enum = 108, + sym_variant = 109, + sym_stmt_struct = 110, + sym_stmt_val = 111, + sym_stmt_var = 112, + sym_stmt_expr = 113, + sym_stmt_code = 114, + sym_stmt_mod = 115, + sym_stmt_use = 116, + sym_code = 117, + sym__stmt_noop = 118, + sym__types = 119, + sym__type = 120, + sym_type_fun = 121, + sym_type_record_concat = 122, + sym_type_paren = 123, + sym_type_nominal = 124, + sym_type_name = 125, + sym_type_tuple = 126, + sym_type_record = 127, + sym_type_array = 128, + sym_type_unit = 129, + sym_type_wild = 130, + sym__type_fields = 131, + sym_type_field = 132, + sym_generic = 133, + sym__generics = 134, + sym__params = 135, + sym__param = 136, + sym__patterns = 137, + sym__pattern_fields = 138, + sym_pattern_field = 139, + sym__pattern = 140, + sym_pattern_annot = 141, + sym_pattern_or = 142, + sym_pattern_record_concat = 143, + sym_pattern_paren = 144, + sym_pattern_constant = 145, + sym_pattern_name = 146, + sym_pattern_variant = 147, + sym_pattern_tuple = 148, + sym_pattern_record = 149, + sym_pattern_array = 150, + sym_pattern_wild = 151, + sym_variant_name = 152, + sym__exprs = 153, + sym__expr = 154, + sym_expr_return = 155, + sym_expr_break = 156, + sym_expr_continue = 157, + sym_expr_throw = 158, + sym_expr_query = 159, + aux_sym__query_stmts = 160, + sym__query_stmt = 161, + sym_query_from = 162, + sym_query_where = 163, + sym_query_join = 164, + sym_query_union = 165, + sym_query_group = 166, + sym_query_over = 167, + sym_query_roll = 168, + sym_query_compute = 169, + sym_query_select = 170, + sym_query_val = 171, + sym_query_into = 172, + sym_query_order = 173, + sym__as = 174, + sym__of = 175, + sym_expr_fun = 176, + sym_expr_binary = 177, + sym_expr_annot = 178, + sym_expr_call = 179, + sym_expr_tuple_access = 180, + sym_expr_record_access = 181, + sym_expr_array_access = 182, + sym_expr_method_call = 183, + sym_expr_record_variant = 184, + sym_expr_paren = 185, + sym_expr_constant = 186, + sym_expr_name = 187, + sym_expr_array = 188, + sym_expr_tuple = 189, + sym_expr_record = 190, + sym__expr_fields = 191, + sym_expr_field = 192, + sym_expr_field_expr = 193, + sym_expr_field_name = 194, + sym_expr_do = 195, + sym_expr_if = 196, + sym_expr_match = 197, + sym_expr_loop = 198, + sym_expr_while = 199, + sym_expr_for = 200, + sym_expr_try = 201, + sym_block = 202, + sym__arms = 203, + sym_arm = 204, + aux_sym__attributes_repeat1 = 205, + aux_sym_constant_string_repeat1 = 206, + aux_sym_stmt_enum_repeat1 = 207, + aux_sym_code_repeat1 = 208, + aux_sym__types_repeat1 = 209, + aux_sym__type_fields_repeat1 = 210, + aux_sym__generics_repeat1 = 211, + aux_sym__params_repeat1 = 212, + aux_sym__patterns_repeat1 = 213, + aux_sym__pattern_fields_repeat1 = 214, + aux_sym__exprs_repeat1 = 215, + aux_sym__expr_fields_repeat1 = 216, + aux_sym__arms_repeat1 = 217, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [sym_name] = "name", + [sym__whitespace] = "_whitespace", + [sym_line_comment] = "line_comment", + [sym_index] = "index", + [anon_sym_AT] = "@", + [anon_sym_LBRACE] = "{", + [anon_sym_RBRACE] = "}", + [anon_sym_COMMA] = ",", + [anon_sym_COLON] = ":", + [sym_constant_int] = "constant_int", + [sym_constant_float] = "constant_float", + [sym_string_quote] = "string_quote", + [sym_string_content] = "string_content", + [anon_sym_DOLLAR] = "$", + [anon_sym_SQUOTE] = "'", + [aux_sym_constant_char_token1] = "constant_char_token1", + [anon_sym_true] = "true", + [anon_sym_false] = "false", + [anon_sym_LPAREN] = "(", + [anon_sym_RPAREN] = ")", + [anon_sym_def] = "def", + [anon_sym_LBRACK] = "[", + [anon_sym_RBRACK] = "]", + [anon_sym_EQ] = "=", + [anon_sym_SEMI] = ";", + [anon_sym_type] = "type", + [anon_sym_enum] = "enum", + [anon_sym_struct] = "struct", + [anon_sym_val] = "val", + [anon_sym_var] = "var", + [anon_sym_DASH_DASH_DASH] = "---", + [anon_sym_rust] = "rust", + [anon_sym_python] = "python", + [anon_sym_mod] = "mod", + [anon_sym_use] = "use", + [aux_sym_code_token1] = "code_token1", + [anon_sym_fun] = "fun", + [anon_sym_AMP] = "&", + [sym_type_never] = "type_never", + [anon_sym__] = "_", + [anon_sym_or] = "or", + [anon_sym_return] = "return", + [anon_sym_break] = "break", + [anon_sym_continue] = "continue", + [anon_sym_throw] = "throw", + [anon_sym_from] = "from", + [anon_sym_in] = "in", + [anon_sym_where] = "where", + [anon_sym_join] = "join", + [anon_sym_on] = "on", + [anon_sym_union] = "union", + [anon_sym_group] = "group", + [anon_sym_over] = "over", + [anon_sym_roll] = "roll", + [anon_sym_compute] = "compute", + [anon_sym_select] = "select", + [anon_sym_with] = "with", + [anon_sym_into] = "into", + [anon_sym_order] = "order", + [anon_sym_desc] = "desc", + [anon_sym_as] = "as", + [anon_sym_of] = "of", + [anon_sym_PLUS_EQ] = "+=", + [anon_sym_DASH_EQ] = "-=", + [anon_sym_STAR_EQ] = "*=", + [anon_sym_SLASH_EQ] = "/=", + [anon_sym_DOT_DOT] = "..", + [anon_sym_DOT_DOT_EQ] = "..=", + [anon_sym_and] = "and", + [anon_sym_EQ_EQ] = "==", + [anon_sym_BANG_EQ] = "!=", + [anon_sym_LT] = "<", + [anon_sym_GT] = ">", + [anon_sym_LT_EQ] = "<=", + [anon_sym_GT_EQ] = ">=", + [anon_sym_PLUS] = "+", + [anon_sym_DASH] = "-", + [anon_sym_STAR] = "*", + [anon_sym_SLASH] = "/", + [anon_sym_not] = "not", + [anon_sym_COLON_COLON] = "::", + [anon_sym_DOT] = ".", + [anon_sym_do] = "do", + [anon_sym_if] = "if", + [anon_sym_else] = "else", + [anon_sym_match] = "match", + [anon_sym_loop] = "loop", + [anon_sym_while] = "while", + [anon_sym_for] = "for", + [anon_sym_try] = "try", + [anon_sym_catch] = "catch", + [anon_sym_finally] = "finally", + [anon_sym_EQ_GT] = "=>", + [sym_program] = "program", + [sym_meta] = "meta", + [sym__attributes] = "_attributes", + [sym_attribute] = "attribute", + [sym__constant] = "_constant", + [sym_constant_string] = "constant_string", + [sym_string_interpolation] = "string_interpolation", + [sym_constant_char] = "constant_char", + [sym_constant_bool] = "constant_bool", + [sym_constant_unit] = "constant_unit", + [aux_sym__stmts] = "_stmts", + [sym__stmt] = "_stmt", + [sym_stmt_def] = "stmt_def", + [sym_stmt_type] = "stmt_type", + [sym_stmt_enum] = "stmt_enum", + [sym_variant] = "variant", + [sym_stmt_struct] = "stmt_struct", + [sym_stmt_val] = "stmt_val", + [sym_stmt_var] = "stmt_var", + [sym_stmt_expr] = "stmt_expr", + [sym_stmt_code] = "stmt_code", + [sym_stmt_mod] = "stmt_mod", + [sym_stmt_use] = "stmt_use", + [sym_code] = "code", + [sym__stmt_noop] = "_stmt_noop", + [sym__types] = "_types", + [sym__type] = "_type", + [sym_type_fun] = "type_fun", + [sym_type_record_concat] = "type_record_concat", + [sym_type_paren] = "type_paren", + [sym_type_nominal] = "type_nominal", + [sym_type_name] = "type_name", + [sym_type_tuple] = "type_tuple", + [sym_type_record] = "type_record", + [sym_type_array] = "type_array", + [sym_type_unit] = "type_unit", + [sym_type_wild] = "type_wild", + [sym__type_fields] = "_type_fields", + [sym_type_field] = "type_field", + [sym_generic] = "generic", + [sym__generics] = "_generics", + [sym__params] = "_params", + [sym__param] = "_param", + [sym__patterns] = "_patterns", + [sym__pattern_fields] = "_pattern_fields", + [sym_pattern_field] = "pattern_field", + [sym__pattern] = "_pattern", + [sym_pattern_annot] = "pattern_annot", + [sym_pattern_or] = "pattern_or", + [sym_pattern_record_concat] = "pattern_record_concat", + [sym_pattern_paren] = "pattern_paren", + [sym_pattern_constant] = "pattern_constant", + [sym_pattern_name] = "pattern_name", + [sym_pattern_variant] = "pattern_variant", + [sym_pattern_tuple] = "pattern_tuple", + [sym_pattern_record] = "pattern_record", + [sym_pattern_array] = "pattern_array", + [sym_pattern_wild] = "pattern_wild", + [sym_variant_name] = "variant_name", + [sym__exprs] = "_exprs", + [sym__expr] = "_expr", + [sym_expr_return] = "expr_return", + [sym_expr_break] = "expr_break", + [sym_expr_continue] = "expr_continue", + [sym_expr_throw] = "expr_throw", + [sym_expr_query] = "expr_query", + [aux_sym__query_stmts] = "_query_stmts", + [sym__query_stmt] = "_query_stmt", + [sym_query_from] = "query_from", + [sym_query_where] = "query_where", + [sym_query_join] = "query_join", + [sym_query_union] = "query_union", + [sym_query_group] = "query_group", + [sym_query_over] = "query_over", + [sym_query_roll] = "query_roll", + [sym_query_compute] = "query_compute", + [sym_query_select] = "query_select", + [sym_query_val] = "query_val", + [sym_query_into] = "query_into", + [sym_query_order] = "query_order", + [sym__as] = "_as", + [sym__of] = "_of", + [sym_expr_fun] = "expr_fun", + [sym_expr_binary] = "expr_binary", + [sym_expr_annot] = "expr_annot", + [sym_expr_call] = "expr_call", + [sym_expr_tuple_access] = "expr_tuple_access", + [sym_expr_record_access] = "expr_record_access", + [sym_expr_array_access] = "expr_array_access", + [sym_expr_method_call] = "expr_method_call", + [sym_expr_record_variant] = "expr_record_variant", + [sym_expr_paren] = "expr_paren", + [sym_expr_constant] = "expr_constant", + [sym_expr_name] = "expr_name", + [sym_expr_array] = "expr_array", + [sym_expr_tuple] = "expr_tuple", + [sym_expr_record] = "expr_record", + [sym__expr_fields] = "_expr_fields", + [sym_expr_field] = "expr_field", + [sym_expr_field_expr] = "expr_field_expr", + [sym_expr_field_name] = "expr_field_name", + [sym_expr_do] = "expr_do", + [sym_expr_if] = "expr_if", + [sym_expr_match] = "expr_match", + [sym_expr_loop] = "expr_loop", + [sym_expr_while] = "expr_while", + [sym_expr_for] = "expr_for", + [sym_expr_try] = "expr_try", + [sym_block] = "block", + [sym__arms] = "_arms", + [sym_arm] = "arm", + [aux_sym__attributes_repeat1] = "_attributes_repeat1", + [aux_sym_constant_string_repeat1] = "constant_string_repeat1", + [aux_sym_stmt_enum_repeat1] = "stmt_enum_repeat1", + [aux_sym_code_repeat1] = "code_repeat1", + [aux_sym__types_repeat1] = "_types_repeat1", + [aux_sym__type_fields_repeat1] = "_type_fields_repeat1", + [aux_sym__generics_repeat1] = "_generics_repeat1", + [aux_sym__params_repeat1] = "_params_repeat1", + [aux_sym__patterns_repeat1] = "_patterns_repeat1", + [aux_sym__pattern_fields_repeat1] = "_pattern_fields_repeat1", + [aux_sym__exprs_repeat1] = "_exprs_repeat1", + [aux_sym__expr_fields_repeat1] = "_expr_fields_repeat1", + [aux_sym__arms_repeat1] = "_arms_repeat1", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_name] = sym_name, + [sym__whitespace] = sym__whitespace, + [sym_line_comment] = sym_line_comment, + [sym_index] = sym_index, + [anon_sym_AT] = anon_sym_AT, + [anon_sym_LBRACE] = anon_sym_LBRACE, + [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_COMMA] = anon_sym_COMMA, + [anon_sym_COLON] = anon_sym_COLON, + [sym_constant_int] = sym_constant_int, + [sym_constant_float] = sym_constant_float, + [sym_string_quote] = sym_string_quote, + [sym_string_content] = sym_string_content, + [anon_sym_DOLLAR] = anon_sym_DOLLAR, + [anon_sym_SQUOTE] = anon_sym_SQUOTE, + [aux_sym_constant_char_token1] = aux_sym_constant_char_token1, + [anon_sym_true] = anon_sym_true, + [anon_sym_false] = anon_sym_false, + [anon_sym_LPAREN] = anon_sym_LPAREN, + [anon_sym_RPAREN] = anon_sym_RPAREN, + [anon_sym_def] = anon_sym_def, + [anon_sym_LBRACK] = anon_sym_LBRACK, + [anon_sym_RBRACK] = anon_sym_RBRACK, + [anon_sym_EQ] = anon_sym_EQ, + [anon_sym_SEMI] = anon_sym_SEMI, + [anon_sym_type] = anon_sym_type, + [anon_sym_enum] = anon_sym_enum, + [anon_sym_struct] = anon_sym_struct, + [anon_sym_val] = anon_sym_val, + [anon_sym_var] = anon_sym_var, + [anon_sym_DASH_DASH_DASH] = anon_sym_DASH_DASH_DASH, + [anon_sym_rust] = anon_sym_rust, + [anon_sym_python] = anon_sym_python, + [anon_sym_mod] = anon_sym_mod, + [anon_sym_use] = anon_sym_use, + [aux_sym_code_token1] = aux_sym_code_token1, + [anon_sym_fun] = anon_sym_fun, + [anon_sym_AMP] = anon_sym_AMP, + [sym_type_never] = sym_type_never, + [anon_sym__] = anon_sym__, + [anon_sym_or] = anon_sym_or, + [anon_sym_return] = anon_sym_return, + [anon_sym_break] = anon_sym_break, + [anon_sym_continue] = anon_sym_continue, + [anon_sym_throw] = anon_sym_throw, + [anon_sym_from] = anon_sym_from, + [anon_sym_in] = anon_sym_in, + [anon_sym_where] = anon_sym_where, + [anon_sym_join] = anon_sym_join, + [anon_sym_on] = anon_sym_on, + [anon_sym_union] = anon_sym_union, + [anon_sym_group] = anon_sym_group, + [anon_sym_over] = anon_sym_over, + [anon_sym_roll] = anon_sym_roll, + [anon_sym_compute] = anon_sym_compute, + [anon_sym_select] = anon_sym_select, + [anon_sym_with] = anon_sym_with, + [anon_sym_into] = anon_sym_into, + [anon_sym_order] = anon_sym_order, + [anon_sym_desc] = anon_sym_desc, + [anon_sym_as] = anon_sym_as, + [anon_sym_of] = anon_sym_of, + [anon_sym_PLUS_EQ] = anon_sym_PLUS_EQ, + [anon_sym_DASH_EQ] = anon_sym_DASH_EQ, + [anon_sym_STAR_EQ] = anon_sym_STAR_EQ, + [anon_sym_SLASH_EQ] = anon_sym_SLASH_EQ, + [anon_sym_DOT_DOT] = anon_sym_DOT_DOT, + [anon_sym_DOT_DOT_EQ] = anon_sym_DOT_DOT_EQ, + [anon_sym_and] = anon_sym_and, + [anon_sym_EQ_EQ] = anon_sym_EQ_EQ, + [anon_sym_BANG_EQ] = anon_sym_BANG_EQ, + [anon_sym_LT] = anon_sym_LT, + [anon_sym_GT] = anon_sym_GT, + [anon_sym_LT_EQ] = anon_sym_LT_EQ, + [anon_sym_GT_EQ] = anon_sym_GT_EQ, + [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_not] = anon_sym_not, + [anon_sym_COLON_COLON] = anon_sym_COLON_COLON, + [anon_sym_DOT] = anon_sym_DOT, + [anon_sym_do] = anon_sym_do, + [anon_sym_if] = anon_sym_if, + [anon_sym_else] = anon_sym_else, + [anon_sym_match] = anon_sym_match, + [anon_sym_loop] = anon_sym_loop, + [anon_sym_while] = anon_sym_while, + [anon_sym_for] = anon_sym_for, + [anon_sym_try] = anon_sym_try, + [anon_sym_catch] = anon_sym_catch, + [anon_sym_finally] = anon_sym_finally, + [anon_sym_EQ_GT] = anon_sym_EQ_GT, + [sym_program] = sym_program, + [sym_meta] = sym_meta, + [sym__attributes] = sym__attributes, + [sym_attribute] = sym_attribute, + [sym__constant] = sym__constant, + [sym_constant_string] = sym_constant_string, + [sym_string_interpolation] = sym_string_interpolation, + [sym_constant_char] = sym_constant_char, + [sym_constant_bool] = sym_constant_bool, + [sym_constant_unit] = sym_constant_unit, + [aux_sym__stmts] = aux_sym__stmts, + [sym__stmt] = sym__stmt, + [sym_stmt_def] = sym_stmt_def, + [sym_stmt_type] = sym_stmt_type, + [sym_stmt_enum] = sym_stmt_enum, + [sym_variant] = sym_variant, + [sym_stmt_struct] = sym_stmt_struct, + [sym_stmt_val] = sym_stmt_val, + [sym_stmt_var] = sym_stmt_var, + [sym_stmt_expr] = sym_stmt_expr, + [sym_stmt_code] = sym_stmt_code, + [sym_stmt_mod] = sym_stmt_mod, + [sym_stmt_use] = sym_stmt_use, + [sym_code] = sym_code, + [sym__stmt_noop] = sym__stmt_noop, + [sym__types] = sym__types, + [sym__type] = sym__type, + [sym_type_fun] = sym_type_fun, + [sym_type_record_concat] = sym_type_record_concat, + [sym_type_paren] = sym_type_paren, + [sym_type_nominal] = sym_type_nominal, + [sym_type_name] = sym_type_name, + [sym_type_tuple] = sym_type_tuple, + [sym_type_record] = sym_type_record, + [sym_type_array] = sym_type_array, + [sym_type_unit] = sym_type_unit, + [sym_type_wild] = sym_type_wild, + [sym__type_fields] = sym__type_fields, + [sym_type_field] = sym_type_field, + [sym_generic] = sym_generic, + [sym__generics] = sym__generics, + [sym__params] = sym__params, + [sym__param] = sym__param, + [sym__patterns] = sym__patterns, + [sym__pattern_fields] = sym__pattern_fields, + [sym_pattern_field] = sym_pattern_field, + [sym__pattern] = sym__pattern, + [sym_pattern_annot] = sym_pattern_annot, + [sym_pattern_or] = sym_pattern_or, + [sym_pattern_record_concat] = sym_pattern_record_concat, + [sym_pattern_paren] = sym_pattern_paren, + [sym_pattern_constant] = sym_pattern_constant, + [sym_pattern_name] = sym_pattern_name, + [sym_pattern_variant] = sym_pattern_variant, + [sym_pattern_tuple] = sym_pattern_tuple, + [sym_pattern_record] = sym_pattern_record, + [sym_pattern_array] = sym_pattern_array, + [sym_pattern_wild] = sym_pattern_wild, + [sym_variant_name] = sym_variant_name, + [sym__exprs] = sym__exprs, + [sym__expr] = sym__expr, + [sym_expr_return] = sym_expr_return, + [sym_expr_break] = sym_expr_break, + [sym_expr_continue] = sym_expr_continue, + [sym_expr_throw] = sym_expr_throw, + [sym_expr_query] = sym_expr_query, + [aux_sym__query_stmts] = aux_sym__query_stmts, + [sym__query_stmt] = sym__query_stmt, + [sym_query_from] = sym_query_from, + [sym_query_where] = sym_query_where, + [sym_query_join] = sym_query_join, + [sym_query_union] = sym_query_union, + [sym_query_group] = sym_query_group, + [sym_query_over] = sym_query_over, + [sym_query_roll] = sym_query_roll, + [sym_query_compute] = sym_query_compute, + [sym_query_select] = sym_query_select, + [sym_query_val] = sym_query_val, + [sym_query_into] = sym_query_into, + [sym_query_order] = sym_query_order, + [sym__as] = sym__as, + [sym__of] = sym__of, + [sym_expr_fun] = sym_expr_fun, + [sym_expr_binary] = sym_expr_binary, + [sym_expr_annot] = sym_expr_annot, + [sym_expr_call] = sym_expr_call, + [sym_expr_tuple_access] = sym_expr_tuple_access, + [sym_expr_record_access] = sym_expr_record_access, + [sym_expr_array_access] = sym_expr_array_access, + [sym_expr_method_call] = sym_expr_method_call, + [sym_expr_record_variant] = sym_expr_record_variant, + [sym_expr_paren] = sym_expr_paren, + [sym_expr_constant] = sym_expr_constant, + [sym_expr_name] = sym_expr_name, + [sym_expr_array] = sym_expr_array, + [sym_expr_tuple] = sym_expr_tuple, + [sym_expr_record] = sym_expr_record, + [sym__expr_fields] = sym__expr_fields, + [sym_expr_field] = sym_expr_field, + [sym_expr_field_expr] = sym_expr_field_expr, + [sym_expr_field_name] = sym_expr_field_name, + [sym_expr_do] = sym_expr_do, + [sym_expr_if] = sym_expr_if, + [sym_expr_match] = sym_expr_match, + [sym_expr_loop] = sym_expr_loop, + [sym_expr_while] = sym_expr_while, + [sym_expr_for] = sym_expr_for, + [sym_expr_try] = sym_expr_try, + [sym_block] = sym_block, + [sym__arms] = sym__arms, + [sym_arm] = sym_arm, + [aux_sym__attributes_repeat1] = aux_sym__attributes_repeat1, + [aux_sym_constant_string_repeat1] = aux_sym_constant_string_repeat1, + [aux_sym_stmt_enum_repeat1] = aux_sym_stmt_enum_repeat1, + [aux_sym_code_repeat1] = aux_sym_code_repeat1, + [aux_sym__types_repeat1] = aux_sym__types_repeat1, + [aux_sym__type_fields_repeat1] = aux_sym__type_fields_repeat1, + [aux_sym__generics_repeat1] = aux_sym__generics_repeat1, + [aux_sym__params_repeat1] = aux_sym__params_repeat1, + [aux_sym__patterns_repeat1] = aux_sym__patterns_repeat1, + [aux_sym__pattern_fields_repeat1] = aux_sym__pattern_fields_repeat1, + [aux_sym__exprs_repeat1] = aux_sym__exprs_repeat1, + [aux_sym__expr_fields_repeat1] = aux_sym__expr_fields_repeat1, + [aux_sym__arms_repeat1] = aux_sym__arms_repeat1, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [sym_name] = { + .visible = true, + .named = true, + }, + [sym__whitespace] = { + .visible = false, + .named = true, + }, + [sym_line_comment] = { + .visible = true, + .named = true, + }, + [sym_index] = { + .visible = true, + .named = true, + }, + [anon_sym_AT] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_COMMA] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON] = { + .visible = true, + .named = false, + }, + [sym_constant_int] = { + .visible = true, + .named = true, + }, + [sym_constant_float] = { + .visible = true, + .named = true, + }, + [sym_string_quote] = { + .visible = true, + .named = true, + }, + [sym_string_content] = { + .visible = true, + .named = true, + }, + [anon_sym_DOLLAR] = { + .visible = true, + .named = false, + }, + [anon_sym_SQUOTE] = { + .visible = true, + .named = false, + }, + [aux_sym_constant_char_token1] = { + .visible = false, + .named = false, + }, + [anon_sym_true] = { + .visible = true, + .named = false, + }, + [anon_sym_false] = { + .visible = true, + .named = false, + }, + [anon_sym_LPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_RPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_def] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_SEMI] = { + .visible = true, + .named = false, + }, + [anon_sym_type] = { + .visible = true, + .named = false, + }, + [anon_sym_enum] = { + .visible = true, + .named = false, + }, + [anon_sym_struct] = { + .visible = true, + .named = false, + }, + [anon_sym_val] = { + .visible = true, + .named = false, + }, + [anon_sym_var] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_DASH_DASH] = { + .visible = true, + .named = false, + }, + [anon_sym_rust] = { + .visible = true, + .named = false, + }, + [anon_sym_python] = { + .visible = true, + .named = false, + }, + [anon_sym_mod] = { + .visible = true, + .named = false, + }, + [anon_sym_use] = { + .visible = true, + .named = false, + }, + [aux_sym_code_token1] = { + .visible = false, + .named = false, + }, + [anon_sym_fun] = { + .visible = true, + .named = false, + }, + [anon_sym_AMP] = { + .visible = true, + .named = false, + }, + [sym_type_never] = { + .visible = true, + .named = true, + }, + [anon_sym__] = { + .visible = true, + .named = false, + }, + [anon_sym_or] = { + .visible = true, + .named = false, + }, + [anon_sym_return] = { + .visible = true, + .named = false, + }, + [anon_sym_break] = { + .visible = true, + .named = false, + }, + [anon_sym_continue] = { + .visible = true, + .named = false, + }, + [anon_sym_throw] = { + .visible = true, + .named = false, + }, + [anon_sym_from] = { + .visible = true, + .named = false, + }, + [anon_sym_in] = { + .visible = true, + .named = false, + }, + [anon_sym_where] = { + .visible = true, + .named = false, + }, + [anon_sym_join] = { + .visible = true, + .named = false, + }, + [anon_sym_on] = { + .visible = true, + .named = false, + }, + [anon_sym_union] = { + .visible = true, + .named = false, + }, + [anon_sym_group] = { + .visible = true, + .named = false, + }, + [anon_sym_over] = { + .visible = true, + .named = false, + }, + [anon_sym_roll] = { + .visible = true, + .named = false, + }, + [anon_sym_compute] = { + .visible = true, + .named = false, + }, + [anon_sym_select] = { + .visible = true, + .named = false, + }, + [anon_sym_with] = { + .visible = true, + .named = false, + }, + [anon_sym_into] = { + .visible = true, + .named = false, + }, + [anon_sym_order] = { + .visible = true, + .named = false, + }, + [anon_sym_desc] = { + .visible = true, + .named = false, + }, + [anon_sym_as] = { + .visible = true, + .named = false, + }, + [anon_sym_of] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT_DOT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_and] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_BANG_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_GT_EQ] = { + .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_not] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_do] = { + .visible = true, + .named = false, + }, + [anon_sym_if] = { + .visible = true, + .named = false, + }, + [anon_sym_else] = { + .visible = true, + .named = false, + }, + [anon_sym_match] = { + .visible = true, + .named = false, + }, + [anon_sym_loop] = { + .visible = true, + .named = false, + }, + [anon_sym_while] = { + .visible = true, + .named = false, + }, + [anon_sym_for] = { + .visible = true, + .named = false, + }, + [anon_sym_try] = { + .visible = true, + .named = false, + }, + [anon_sym_catch] = { + .visible = true, + .named = false, + }, + [anon_sym_finally] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_GT] = { + .visible = true, + .named = false, + }, + [sym_program] = { + .visible = true, + .named = true, + }, + [sym_meta] = { + .visible = true, + .named = true, + }, + [sym__attributes] = { + .visible = false, + .named = true, + }, + [sym_attribute] = { + .visible = true, + .named = true, + }, + [sym__constant] = { + .visible = false, + .named = true, + }, + [sym_constant_string] = { + .visible = true, + .named = true, + }, + [sym_string_interpolation] = { + .visible = true, + .named = true, + }, + [sym_constant_char] = { + .visible = true, + .named = true, + }, + [sym_constant_bool] = { + .visible = true, + .named = true, + }, + [sym_constant_unit] = { + .visible = true, + .named = true, + }, + [aux_sym__stmts] = { + .visible = false, + .named = false, + }, + [sym__stmt] = { + .visible = false, + .named = true, + }, + [sym_stmt_def] = { + .visible = true, + .named = true, + }, + [sym_stmt_type] = { + .visible = true, + .named = true, + }, + [sym_stmt_enum] = { + .visible = true, + .named = true, + }, + [sym_variant] = { + .visible = true, + .named = true, + }, + [sym_stmt_struct] = { + .visible = true, + .named = true, + }, + [sym_stmt_val] = { + .visible = true, + .named = true, + }, + [sym_stmt_var] = { + .visible = true, + .named = true, + }, + [sym_stmt_expr] = { + .visible = true, + .named = true, + }, + [sym_stmt_code] = { + .visible = true, + .named = true, + }, + [sym_stmt_mod] = { + .visible = true, + .named = true, + }, + [sym_stmt_use] = { + .visible = true, + .named = true, + }, + [sym_code] = { + .visible = true, + .named = true, + }, + [sym__stmt_noop] = { + .visible = false, + .named = true, + }, + [sym__types] = { + .visible = false, + .named = true, + }, + [sym__type] = { + .visible = false, + .named = true, + }, + [sym_type_fun] = { + .visible = true, + .named = true, + }, + [sym_type_record_concat] = { + .visible = true, + .named = true, + }, + [sym_type_paren] = { + .visible = true, + .named = true, + }, + [sym_type_nominal] = { + .visible = true, + .named = true, + }, + [sym_type_name] = { + .visible = true, + .named = true, + }, + [sym_type_tuple] = { + .visible = true, + .named = true, + }, + [sym_type_record] = { + .visible = true, + .named = true, + }, + [sym_type_array] = { + .visible = true, + .named = true, + }, + [sym_type_unit] = { + .visible = true, + .named = true, + }, + [sym_type_wild] = { + .visible = true, + .named = true, + }, + [sym__type_fields] = { + .visible = false, + .named = true, + }, + [sym_type_field] = { + .visible = true, + .named = true, + }, + [sym_generic] = { + .visible = true, + .named = true, + }, + [sym__generics] = { + .visible = false, + .named = true, + }, + [sym__params] = { + .visible = false, + .named = true, + }, + [sym__param] = { + .visible = false, + .named = true, + }, + [sym__patterns] = { + .visible = false, + .named = true, + }, + [sym__pattern_fields] = { + .visible = false, + .named = true, + }, + [sym_pattern_field] = { + .visible = true, + .named = true, + }, + [sym__pattern] = { + .visible = false, + .named = true, + }, + [sym_pattern_annot] = { + .visible = true, + .named = true, + }, + [sym_pattern_or] = { + .visible = true, + .named = true, + }, + [sym_pattern_record_concat] = { + .visible = true, + .named = true, + }, + [sym_pattern_paren] = { + .visible = true, + .named = true, + }, + [sym_pattern_constant] = { + .visible = true, + .named = true, + }, + [sym_pattern_name] = { + .visible = true, + .named = true, + }, + [sym_pattern_variant] = { + .visible = true, + .named = true, + }, + [sym_pattern_tuple] = { + .visible = true, + .named = true, + }, + [sym_pattern_record] = { + .visible = true, + .named = true, + }, + [sym_pattern_array] = { + .visible = true, + .named = true, + }, + [sym_pattern_wild] = { + .visible = true, + .named = true, + }, + [sym_variant_name] = { + .visible = true, + .named = true, + }, + [sym__exprs] = { + .visible = false, + .named = true, + }, + [sym__expr] = { + .visible = false, + .named = true, + }, + [sym_expr_return] = { + .visible = true, + .named = true, + }, + [sym_expr_break] = { + .visible = true, + .named = true, + }, + [sym_expr_continue] = { + .visible = true, + .named = true, + }, + [sym_expr_throw] = { + .visible = true, + .named = true, + }, + [sym_expr_query] = { + .visible = true, + .named = true, + }, + [aux_sym__query_stmts] = { + .visible = false, + .named = false, + }, + [sym__query_stmt] = { + .visible = false, + .named = true, + }, + [sym_query_from] = { + .visible = true, + .named = true, + }, + [sym_query_where] = { + .visible = true, + .named = true, + }, + [sym_query_join] = { + .visible = true, + .named = true, + }, + [sym_query_union] = { + .visible = true, + .named = true, + }, + [sym_query_group] = { + .visible = true, + .named = true, + }, + [sym_query_over] = { + .visible = true, + .named = true, + }, + [sym_query_roll] = { + .visible = true, + .named = true, + }, + [sym_query_compute] = { + .visible = true, + .named = true, + }, + [sym_query_select] = { + .visible = true, + .named = true, + }, + [sym_query_val] = { + .visible = true, + .named = true, + }, + [sym_query_into] = { + .visible = true, + .named = true, + }, + [sym_query_order] = { + .visible = true, + .named = true, + }, + [sym__as] = { + .visible = false, + .named = true, + }, + [sym__of] = { + .visible = false, + .named = true, + }, + [sym_expr_fun] = { + .visible = true, + .named = true, + }, + [sym_expr_binary] = { + .visible = true, + .named = true, + }, + [sym_expr_annot] = { + .visible = true, + .named = true, + }, + [sym_expr_call] = { + .visible = true, + .named = true, + }, + [sym_expr_tuple_access] = { + .visible = true, + .named = true, + }, + [sym_expr_record_access] = { + .visible = true, + .named = true, + }, + [sym_expr_array_access] = { + .visible = true, + .named = true, + }, + [sym_expr_method_call] = { + .visible = true, + .named = true, + }, + [sym_expr_record_variant] = { + .visible = true, + .named = true, + }, + [sym_expr_paren] = { + .visible = true, + .named = true, + }, + [sym_expr_constant] = { + .visible = true, + .named = true, + }, + [sym_expr_name] = { + .visible = true, + .named = true, + }, + [sym_expr_array] = { + .visible = true, + .named = true, + }, + [sym_expr_tuple] = { + .visible = true, + .named = true, + }, + [sym_expr_record] = { + .visible = true, + .named = true, + }, + [sym__expr_fields] = { + .visible = false, + .named = true, + }, + [sym_expr_field] = { + .visible = true, + .named = true, + }, + [sym_expr_field_expr] = { + .visible = true, + .named = true, + }, + [sym_expr_field_name] = { + .visible = true, + .named = true, + }, + [sym_expr_do] = { + .visible = true, + .named = true, + }, + [sym_expr_if] = { + .visible = true, + .named = true, + }, + [sym_expr_match] = { + .visible = true, + .named = true, + }, + [sym_expr_loop] = { + .visible = true, + .named = true, + }, + [sym_expr_while] = { + .visible = true, + .named = true, + }, + [sym_expr_for] = { + .visible = true, + .named = true, + }, + [sym_expr_try] = { + .visible = true, + .named = true, + }, + [sym_block] = { + .visible = true, + .named = true, + }, + [sym__arms] = { + .visible = false, + .named = true, + }, + [sym_arm] = { + .visible = true, + .named = true, + }, + [aux_sym__attributes_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_constant_string_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_stmt_enum_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_code_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__types_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__type_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__generics_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__params_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__patterns_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__pattern_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__exprs_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__expr_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__arms_repeat1] = { + .visible = false, + .named = false, + }, +}; + +enum { + field_arm = 1, + field_code = 2, + field_function = 3, + field_inner = 4, + field_lang = 5, + field_name = 6, +}; + +static const char * const ts_field_names[] = { + [0] = NULL, + [field_arm] = "arm", + [field_code] = "code", + [field_function] = "function", + [field_inner] = "inner", + [field_lang] = "lang", + [field_name] = "name", +}; + +static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { + [1] = {.index = 0, .length = 1}, + [2] = {.index = 1, .length = 1}, + [3] = {.index = 2, .length = 3}, + [4] = {.index = 5, .length = 2}, + [5] = {.index = 7, .length = 4}, + [6] = {.index = 11, .length = 3}, + [7] = {.index = 14, .length = 1}, + [8] = {.index = 15, .length = 5}, + [9] = {.index = 20, .length = 3}, + [10] = {.index = 23, .length = 4}, + [11] = {.index = 27, .length = 6}, + [12] = {.index = 33, .length = 5}, + [13] = {.index = 38, .length = 7}, + [14] = {.index = 45, .length = 6}, + [15] = {.index = 51, .length = 8}, + [16] = {.index = 59, .length = 7}, + [17] = {.index = 66, .length = 9}, + [18] = {.index = 75, .length = 8}, + [19] = {.index = 83, .length = 10}, + [20] = {.index = 93, .length = 9}, + [21] = {.index = 102, .length = 11}, + [22] = {.index = 113, .length = 10}, + [23] = {.index = 123, .length = 12}, + [24] = {.index = 135, .length = 11}, + [25] = {.index = 146, .length = 12}, +}; + +static const TSFieldMapEntry ts_field_map_entries[] = { + [0] = + {field_lang, 1}, + [1] = + {field_function, 0}, + [2] = + {field_inner, 2}, + {field_inner, 3}, + {field_name, 1}, + [5] = + {field_code, 2}, + {field_lang, 1}, + [7] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_name, 1}, + [11] = + {field_inner, 3}, + {field_inner, 4}, + {field_name, 2}, + [14] = + {field_name, 2}, + [15] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_name, 1}, + [20] = + {field_arm, 0}, + {field_arm, 1}, + {field_arm, 2}, + [23] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_name, 2}, + [27] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_name, 1}, + [33] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_name, 2}, + [38] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_name, 1}, + [45] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_name, 2}, + [51] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_name, 1}, + [59] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_name, 2}, + [66] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_name, 1}, + [75] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_name, 2}, + [83] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_name, 1}, + [93] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_name, 2}, + [102] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_name, 1}, + [113] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_name, 2}, + [123] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_inner, 12}, + {field_name, 1}, + [135] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_inner, 12}, + {field_name, 2}, + [146] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_inner, 12}, + {field_inner, 13}, + {field_name, 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] = 2, + [5] = 2, + [6] = 3, + [7] = 3, + [8] = 2, + [9] = 3, + [10] = 3, + [11] = 2, + [12] = 2, + [13] = 3, + [14] = 3, + [15] = 2, + [16] = 2, + [17] = 3, + [18] = 2, + [19] = 3, + [20] = 3, + [21] = 3, + [22] = 2, + [23] = 2, + [24] = 2, + [25] = 3, + [26] = 3, + [27] = 2, + [28] = 28, + [29] = 29, + [30] = 30, + [31] = 31, + [32] = 29, + [33] = 29, + [34] = 31, + [35] = 35, + [36] = 36, + [37] = 29, + [38] = 31, + [39] = 31, + [40] = 2, + [41] = 3, + [42] = 2, + [43] = 3, + [44] = 44, + [45] = 45, + [46] = 45, + [47] = 44, + [48] = 48, + [49] = 49, + [50] = 50, + [51] = 51, + [52] = 52, + [53] = 53, + [54] = 54, + [55] = 51, + [56] = 56, + [57] = 57, + [58] = 58, + [59] = 59, + [60] = 58, + [61] = 61, + [62] = 56, + [63] = 57, + [64] = 53, + [65] = 65, + [66] = 59, + [67] = 67, + [68] = 68, + [69] = 52, + [70] = 52, + [71] = 67, + [72] = 68, + [73] = 54, + [74] = 54, + [75] = 67, + [76] = 76, + [77] = 77, + [78] = 78, + [79] = 79, + [80] = 80, + [81] = 81, + [82] = 77, + [83] = 76, + [84] = 84, + [85] = 85, + [86] = 86, + [87] = 84, + [88] = 88, + [89] = 88, + [90] = 84, + [91] = 91, + [92] = 79, + [93] = 93, + [94] = 94, + [95] = 95, + [96] = 96, + [97] = 78, + [98] = 98, + [99] = 99, + [100] = 100, + [101] = 101, + [102] = 102, + [103] = 103, + [104] = 84, + [105] = 88, + [106] = 76, + [107] = 107, + [108] = 77, + [109] = 81, + [110] = 80, + [111] = 79, + [112] = 78, + [113] = 84, + [114] = 107, + [115] = 115, + [116] = 88, + [117] = 88, + [118] = 118, + [119] = 103, + [120] = 102, + [121] = 101, + [122] = 100, + [123] = 99, + [124] = 124, + [125] = 98, + [126] = 96, + [127] = 127, + [128] = 88, + [129] = 79, + [130] = 78, + [131] = 79, + [132] = 115, + [133] = 107, + [134] = 134, + [135] = 118, + [136] = 103, + [137] = 102, + [138] = 101, + [139] = 100, + [140] = 99, + [141] = 98, + [142] = 96, + [143] = 127, + [144] = 115, + [145] = 88, + [146] = 67, + [147] = 78, + [148] = 52, + [149] = 107, + [150] = 118, + [151] = 103, + [152] = 152, + [153] = 102, + [154] = 101, + [155] = 100, + [156] = 99, + [157] = 157, + [158] = 98, + [159] = 96, + [160] = 127, + [161] = 93, + [162] = 77, + [163] = 76, + [164] = 93, + [165] = 67, + [166] = 134, + [167] = 85, + [168] = 168, + [169] = 107, + [170] = 127, + [171] = 171, + [172] = 172, + [173] = 96, + [174] = 52, + [175] = 107, + [176] = 118, + [177] = 103, + [178] = 102, + [179] = 101, + [180] = 100, + [181] = 99, + [182] = 98, + [183] = 96, + [184] = 127, + [185] = 127, + [186] = 96, + [187] = 98, + [188] = 98, + [189] = 99, + [190] = 100, + [191] = 101, + [192] = 102, + [193] = 103, + [194] = 171, + [195] = 95, + [196] = 118, + [197] = 197, + [198] = 198, + [199] = 118, + [200] = 76, + [201] = 99, + [202] = 100, + [203] = 77, + [204] = 79, + [205] = 115, + [206] = 206, + [207] = 93, + [208] = 78, + [209] = 209, + [210] = 79, + [211] = 54, + [212] = 134, + [213] = 78, + [214] = 79, + [215] = 54, + [216] = 88, + [217] = 84, + [218] = 101, + [219] = 78, + [220] = 79, + [221] = 107, + [222] = 134, + [223] = 102, + [224] = 88, + [225] = 168, + [226] = 85, + [227] = 93, + [228] = 115, + [229] = 77, + [230] = 84, + [231] = 103, + [232] = 76, + [233] = 78, + [234] = 107, + [235] = 79, + [236] = 118, + [237] = 118, + [238] = 103, + [239] = 85, + [240] = 102, + [241] = 107, + [242] = 242, + [243] = 88, + [244] = 84, + [245] = 103, + [246] = 102, + [247] = 101, + [248] = 100, + [249] = 78, + [250] = 79, + [251] = 99, + [252] = 98, + [253] = 84, + [254] = 78, + [255] = 101, + [256] = 256, + [257] = 96, + [258] = 258, + [259] = 100, + [260] = 168, + [261] = 168, + [262] = 99, + [263] = 127, + [264] = 127, + [265] = 77, + [266] = 115, + [267] = 267, + [268] = 88, + [269] = 96, + [270] = 93, + [271] = 85, + [272] = 86, + [273] = 98, + [274] = 134, + [275] = 86, + [276] = 85, + [277] = 168, + [278] = 168, + [279] = 99, + [280] = 93, + [281] = 134, + [282] = 85, + [283] = 283, + [284] = 134, + [285] = 88, + [286] = 115, + [287] = 84, + [288] = 78, + [289] = 79, + [290] = 77, + [291] = 93, + [292] = 76, + [293] = 115, + [294] = 168, + [295] = 100, + [296] = 101, + [297] = 197, + [298] = 102, + [299] = 172, + [300] = 198, + [301] = 84, + [302] = 134, + [303] = 103, + [304] = 76, + [305] = 118, + [306] = 127, + [307] = 86, + [308] = 134, + [309] = 98, + [310] = 85, + [311] = 311, + [312] = 85, + [313] = 85, + [314] = 93, + [315] = 107, + [316] = 118, + [317] = 103, + [318] = 102, + [319] = 101, + [320] = 107, + [321] = 100, + [322] = 99, + [323] = 98, + [324] = 96, + [325] = 168, + [326] = 127, + [327] = 134, + [328] = 85, + [329] = 93, + [330] = 115, + [331] = 331, + [332] = 76, + [333] = 77, + [334] = 107, + [335] = 76, + [336] = 168, + [337] = 118, + [338] = 127, + [339] = 107, + [340] = 88, + [341] = 118, + [342] = 115, + [343] = 127, + [344] = 96, + [345] = 103, + [346] = 102, + [347] = 101, + [348] = 100, + [349] = 99, + [350] = 98, + [351] = 96, + [352] = 103, + [353] = 102, + [354] = 101, + [355] = 127, + [356] = 100, + [357] = 77, + [358] = 79, + [359] = 99, + [360] = 98, + [361] = 96, + [362] = 99, + [363] = 98, + [364] = 99, + [365] = 118, + [366] = 100, + [367] = 100, + [368] = 101, + [369] = 369, + [370] = 101, + [371] = 102, + [372] = 98, + [373] = 102, + [374] = 96, + [375] = 127, + [376] = 78, + [377] = 168, + [378] = 103, + [379] = 107, + [380] = 103, + [381] = 118, + [382] = 168, + [383] = 96, + [384] = 107, + [385] = 85, + [386] = 134, + [387] = 76, + [388] = 77, + [389] = 115, + [390] = 93, + [391] = 85, + [392] = 168, + [393] = 84, + [394] = 84, + [395] = 127, + [396] = 93, + [397] = 115, + [398] = 118, + [399] = 76, + [400] = 134, + [401] = 77, + [402] = 67, + [403] = 67, + [404] = 54, + [405] = 52, + [406] = 52, + [407] = 67, + [408] = 52, + [409] = 54, + [410] = 67, + [411] = 54, + [412] = 52, + [413] = 54, + [414] = 67, + [415] = 52, + [416] = 67, + [417] = 67, + [418] = 52, + [419] = 54, + [420] = 52, + [421] = 67, + [422] = 52, + [423] = 54, + [424] = 54, + [425] = 67, + [426] = 52, + [427] = 67, + [428] = 52, + [429] = 429, + [430] = 430, + [431] = 431, + [432] = 432, + [433] = 433, + [434] = 434, + [435] = 435, + [436] = 436, + [437] = 437, + [438] = 438, + [439] = 439, + [440] = 440, + [441] = 441, + [442] = 442, + [443] = 443, + [444] = 430, + [445] = 445, + [446] = 446, + [447] = 445, + [448] = 448, + [449] = 445, + [450] = 430, + [451] = 451, + [452] = 452, + [453] = 453, + [454] = 454, + [455] = 455, + [456] = 456, + [457] = 457, + [458] = 458, + [459] = 459, + [460] = 460, + [461] = 461, + [462] = 445, + [463] = 430, + [464] = 464, + [465] = 465, + [466] = 430, + [467] = 467, + [468] = 468, + [469] = 469, + [470] = 470, + [471] = 471, + [472] = 472, + [473] = 473, + [474] = 474, + [475] = 475, + [476] = 476, + [477] = 477, + [478] = 478, + [479] = 439, + [480] = 480, + [481] = 460, + [482] = 482, + [483] = 483, + [484] = 484, + [485] = 485, + [486] = 486, + [487] = 487, + [488] = 488, + [489] = 440, + [490] = 490, + [491] = 491, + [492] = 448, + [493] = 493, + [494] = 445, + [495] = 495, + [496] = 496, + [497] = 497, + [498] = 498, + [499] = 499, + [500] = 500, + [501] = 501, + [502] = 502, + [503] = 503, + [504] = 430, + [505] = 445, + [506] = 506, + [507] = 507, + [508] = 508, + [509] = 509, + [510] = 510, + [511] = 511, + [512] = 512, + [513] = 513, + [514] = 514, + [515] = 515, + [516] = 516, + [517] = 435, + [518] = 518, + [519] = 519, + [520] = 520, + [521] = 434, + [522] = 522, + [523] = 454, + [524] = 524, + [525] = 525, + [526] = 526, + [527] = 522, + [528] = 528, + [529] = 529, + [530] = 530, + [531] = 531, + [532] = 522, + [533] = 533, + [534] = 534, + [535] = 535, + [536] = 536, + [537] = 537, + [538] = 538, + [539] = 530, + [540] = 540, + [541] = 541, + [542] = 522, + [543] = 543, + [544] = 544, + [545] = 545, + [546] = 546, + [547] = 547, + [548] = 548, + [549] = 549, + [550] = 528, + [551] = 537, + [552] = 541, + [553] = 545, + [554] = 546, + [555] = 547, + [556] = 529, + [557] = 548, + [558] = 549, + [559] = 528, + [560] = 531, + [561] = 547, + [562] = 529, + [563] = 546, + [564] = 545, + [565] = 530, + [566] = 522, + [567] = 541, + [568] = 537, + [569] = 536, + [570] = 533, + [571] = 530, + [572] = 534, + [573] = 522, + [574] = 548, + [575] = 535, + [576] = 531, + [577] = 536, + [578] = 549, + [579] = 538, + [580] = 540, + [581] = 543, + [582] = 544, + [583] = 544, + [584] = 543, + [585] = 538, + [586] = 540, + [587] = 533, + [588] = 534, + [589] = 535, + [590] = 543, + [591] = 543, + [592] = 544, + [593] = 531, + [594] = 529, + [595] = 540, + [596] = 528, + [597] = 538, + [598] = 536, + [599] = 535, + [600] = 534, + [601] = 533, + [602] = 547, + [603] = 546, + [604] = 549, + [605] = 545, + [606] = 541, + [607] = 548, + [608] = 537, + [609] = 530, + [610] = 544, + [611] = 531, + [612] = 540, + [613] = 528, + [614] = 549, + [615] = 538, + [616] = 536, + [617] = 547, + [618] = 548, + [619] = 546, + [620] = 545, + [621] = 541, + [622] = 535, + [623] = 534, + [624] = 537, + [625] = 533, + [626] = 530, + [627] = 531, + [628] = 445, + [629] = 548, + [630] = 545, + [631] = 541, + [632] = 537, + [633] = 533, + [634] = 534, + [635] = 535, + [636] = 536, + [637] = 538, + [638] = 540, + [639] = 543, + [640] = 544, + [641] = 546, + [642] = 547, + [643] = 430, + [644] = 528, + [645] = 549, + [646] = 430, + [647] = 445, + [648] = 430, + [649] = 445, + [650] = 430, + [651] = 430, + [652] = 430, + [653] = 445, + [654] = 445, + [655] = 445, + [656] = 430, + [657] = 522, + [658] = 445, + [659] = 534, + [660] = 547, + [661] = 522, + [662] = 537, + [663] = 530, + [664] = 530, + [665] = 529, + [666] = 522, + [667] = 522, + [668] = 538, + [669] = 548, + [670] = 531, + [671] = 544, + [672] = 543, + [673] = 546, + [674] = 541, + [675] = 540, + [676] = 549, + [677] = 536, + [678] = 535, + [679] = 528, + [680] = 473, + [681] = 545, + [682] = 533, + [683] = 530, + [684] = 538, + [685] = 522, + [686] = 537, + [687] = 537, + [688] = 541, + [689] = 545, + [690] = 541, + [691] = 529, + [692] = 530, + [693] = 545, + [694] = 529, + [695] = 533, + [696] = 533, + [697] = 534, + [698] = 535, + [699] = 536, + [700] = 538, + [701] = 540, + [702] = 543, + [703] = 522, + [704] = 531, + [705] = 544, + [706] = 547, + [707] = 536, + [708] = 535, + [709] = 548, + [710] = 546, + [711] = 522, + [712] = 544, + [713] = 549, + [714] = 528, + [715] = 543, + [716] = 534, + [717] = 546, + [718] = 547, + [719] = 548, + [720] = 549, + [721] = 528, + [722] = 540, + [723] = 531, + [724] = 528, + [725] = 549, + [726] = 530, + [727] = 541, + [728] = 529, + [729] = 530, + [730] = 537, + [731] = 544, + [732] = 544, + [733] = 543, + [734] = 540, + [735] = 543, + [736] = 538, + [737] = 540, + [738] = 536, + [739] = 535, + [740] = 536, + [741] = 538, + [742] = 541, + [743] = 537, + [744] = 545, + [745] = 535, + [746] = 534, + [747] = 545, + [748] = 546, + [749] = 530, + [750] = 548, + [751] = 547, + [752] = 533, + [753] = 547, + [754] = 548, + [755] = 549, + [756] = 546, + [757] = 533, + [758] = 531, + [759] = 531, + [760] = 534, + [761] = 528, + [762] = 533, + [763] = 547, + [764] = 537, + [765] = 541, + [766] = 545, + [767] = 546, + [768] = 547, + [769] = 544, + [770] = 543, + [771] = 540, + [772] = 538, + [773] = 536, + [774] = 535, + [775] = 548, + [776] = 549, + [777] = 528, + [778] = 534, + [779] = 531, + [780] = 780, + [781] = 781, + [782] = 782, + [783] = 783, + [784] = 784, + [785] = 785, + [786] = 786, + [787] = 787, + [788] = 788, + [789] = 789, + [790] = 790, + [791] = 791, + [792] = 792, + [793] = 793, + [794] = 794, + [795] = 795, + [796] = 796, + [797] = 797, + [798] = 798, + [799] = 799, + [800] = 800, + [801] = 801, + [802] = 802, + [803] = 803, + [804] = 804, + [805] = 805, + [806] = 806, + [807] = 807, + [808] = 808, + [809] = 809, + [810] = 810, + [811] = 811, + [812] = 812, + [813] = 813, + [814] = 814, + [815] = 815, + [816] = 458, + [817] = 817, + [818] = 459, + [819] = 819, + [820] = 820, + [821] = 821, + [822] = 822, + [823] = 823, + [824] = 824, + [825] = 825, + [826] = 826, + [827] = 827, + [828] = 461, + [829] = 829, + [830] = 830, + [831] = 831, + [832] = 832, + [833] = 833, + [834] = 834, + [835] = 455, + [836] = 432, + [837] = 498, + [838] = 436, + [839] = 453, + [840] = 438, + [841] = 431, + [842] = 443, + [843] = 497, + [844] = 429, + [845] = 442, + [846] = 457, + [847] = 469, + [848] = 478, + [849] = 468, + [850] = 451, + [851] = 446, + [852] = 461, + [853] = 458, + [854] = 459, + [855] = 433, + [856] = 441, + [857] = 452, + [858] = 437, + [859] = 456, + [860] = 860, + [861] = 486, + [862] = 467, + [863] = 502, + [864] = 506, + [865] = 513, + [866] = 483, + [867] = 867, + [868] = 471, + [869] = 869, + [870] = 487, + [871] = 507, + [872] = 508, + [873] = 519, + [874] = 499, + [875] = 490, + [876] = 500, + [877] = 464, + [878] = 475, + [879] = 516, + [880] = 496, + [881] = 493, + [882] = 509, + [883] = 510, + [884] = 867, + [885] = 485, + [886] = 886, + [887] = 474, + [888] = 888, + [889] = 525, + [890] = 470, + [891] = 512, + [892] = 484, + [893] = 472, + [894] = 501, + [895] = 465, + [896] = 511, + [897] = 897, + [898] = 495, + [899] = 526, + [900] = 900, + [901] = 901, + [902] = 473, + [903] = 903, + [904] = 904, + [905] = 905, + [906] = 906, + [907] = 907, + [908] = 906, + [909] = 909, + [910] = 910, + [911] = 911, + [912] = 912, + [913] = 913, + [914] = 913, + [915] = 543, + [916] = 913, + [917] = 533, + [918] = 913, + [919] = 919, + [920] = 920, + [921] = 913, + [922] = 541, + [923] = 913, + [924] = 913, + [925] = 913, + [926] = 537, + [927] = 913, + [928] = 545, + [929] = 913, + [930] = 913, + [931] = 913, + [932] = 932, + [933] = 544, + [934] = 913, + [935] = 534, + [936] = 913, + [937] = 913, + [938] = 535, + [939] = 536, + [940] = 538, + [941] = 540, + [942] = 942, + [943] = 943, + [944] = 944, + [945] = 945, + [946] = 942, + [947] = 945, + [948] = 948, + [949] = 949, + [950] = 942, + [951] = 944, + [952] = 944, + [953] = 944, + [954] = 945, + [955] = 942, + [956] = 956, + [957] = 945, + [958] = 958, + [959] = 942, + [960] = 945, + [961] = 945, + [962] = 942, + [963] = 942, + [964] = 944, + [965] = 945, + [966] = 966, + [967] = 942, + [968] = 944, + [969] = 944, + [970] = 944, + [971] = 945, + [972] = 944, + [973] = 973, + [974] = 942, + [975] = 944, + [976] = 942, + [977] = 966, + [978] = 944, + [979] = 945, + [980] = 945, + [981] = 944, + [982] = 942, + [983] = 945, + [984] = 945, + [985] = 945, + [986] = 942, + [987] = 987, + [988] = 54, + [989] = 989, + [990] = 990, + [991] = 991, + [992] = 992, + [993] = 993, + [994] = 994, + [995] = 995, + [996] = 996, + [997] = 997, + [998] = 997, + [999] = 994, + [1000] = 992, + [1001] = 995, + [1002] = 991, + [1003] = 993, + [1004] = 989, + [1005] = 1005, + [1006] = 544, + [1007] = 1005, + [1008] = 1008, + [1009] = 1009, + [1010] = 1010, + [1011] = 1008, + [1012] = 1010, + [1013] = 538, + [1014] = 1009, + [1015] = 540, + [1016] = 543, + [1017] = 473, + [1018] = 536, + [1019] = 535, + [1020] = 534, + [1021] = 533, + [1022] = 1022, + [1023] = 1023, + [1024] = 1024, + [1025] = 1005, + [1026] = 1024, + [1027] = 1027, + [1028] = 545, + [1029] = 541, + [1030] = 537, + [1031] = 1024, + [1032] = 1027, + [1033] = 1005, + [1034] = 1034, + [1035] = 1024, + [1036] = 1036, + [1037] = 1037, + [1038] = 1038, + [1039] = 1039, + [1040] = 1037, + [1041] = 1041, + [1042] = 1042, + [1043] = 1043, + [1044] = 1044, + [1045] = 1044, + [1046] = 1044, + [1047] = 534, + [1048] = 544, + [1049] = 1044, + [1050] = 1050, + [1051] = 536, + [1052] = 1052, + [1053] = 1036, + [1054] = 1054, + [1055] = 533, + [1056] = 1044, + [1057] = 538, + [1058] = 537, + [1059] = 1044, + [1060] = 541, + [1061] = 1044, + [1062] = 1062, + [1063] = 1044, + [1064] = 1044, + [1065] = 1044, + [1066] = 545, + [1067] = 1067, + [1068] = 1062, + [1069] = 1069, + [1070] = 543, + [1071] = 1071, + [1072] = 1072, + [1073] = 1073, + [1074] = 1044, + [1075] = 540, + [1076] = 535, + [1077] = 1044, + [1078] = 1078, + [1079] = 1079, + [1080] = 1079, + [1081] = 1081, + [1082] = 1082, + [1083] = 1083, + [1084] = 1084, + [1085] = 1085, + [1086] = 1081, + [1087] = 1087, + [1088] = 1088, + [1089] = 1089, + [1090] = 1090, + [1091] = 1079, + [1092] = 1092, + [1093] = 1093, + [1094] = 1085, + [1095] = 1095, + [1096] = 1096, + [1097] = 1097, + [1098] = 1096, + [1099] = 1099, + [1100] = 1097, + [1101] = 1099, + [1102] = 1102, + [1103] = 1103, + [1104] = 1102, + [1105] = 1105, + [1106] = 1102, + [1107] = 1107, + [1108] = 1108, + [1109] = 1102, + [1110] = 1110, + [1111] = 1111, + [1112] = 1112, + [1113] = 1113, + [1114] = 1102, + [1115] = 1115, + [1116] = 1102, + [1117] = 1117, + [1118] = 1118, + [1119] = 1119, + [1120] = 1105, + [1121] = 1121, + [1122] = 1102, + [1123] = 1102, + [1124] = 1112, + [1125] = 1125, + [1126] = 1126, + [1127] = 1111, + [1128] = 1102, + [1129] = 1102, + [1130] = 1130, + [1131] = 1102, + [1132] = 1132, + [1133] = 1133, + [1134] = 1134, + [1135] = 1108, + [1136] = 1136, + [1137] = 1137, + [1138] = 1112, + [1139] = 1102, + [1140] = 1102, + [1141] = 1102, + [1142] = 1108, + [1143] = 1143, + [1144] = 1144, + [1145] = 1145, + [1146] = 1102, + [1147] = 1105, + [1148] = 433, + [1149] = 1149, + [1150] = 456, + [1151] = 452, + [1152] = 1152, + [1153] = 1153, + [1154] = 1154, + [1155] = 1155, + [1156] = 1156, + [1157] = 1157, + [1158] = 1158, + [1159] = 1159, + [1160] = 1160, + [1161] = 1161, + [1162] = 1162, + [1163] = 1163, + [1164] = 1164, + [1165] = 1165, + [1166] = 1166, + [1167] = 1167, + [1168] = 1168, + [1169] = 1169, + [1170] = 1170, + [1171] = 1169, + [1172] = 1170, + [1173] = 1173, + [1174] = 1174, + [1175] = 1175, + [1176] = 1176, + [1177] = 1177, + [1178] = 1178, + [1179] = 1179, + [1180] = 1179, + [1181] = 1179, + [1182] = 1182, + [1183] = 1183, + [1184] = 1183, + [1185] = 1185, + [1186] = 1186, + [1187] = 1179, + [1188] = 1186, + [1189] = 1189, + [1190] = 1186, + [1191] = 1179, + [1192] = 1192, + [1193] = 1183, + [1194] = 1194, + [1195] = 1194, + [1196] = 1186, + [1197] = 1179, + [1198] = 1194, + [1199] = 1183, + [1200] = 1186, + [1201] = 1179, + [1202] = 1192, + [1203] = 1203, + [1204] = 1194, + [1205] = 1179, + [1206] = 1183, + [1207] = 1192, + [1208] = 1208, + [1209] = 1209, + [1210] = 1194, + [1211] = 1211, + [1212] = 1192, + [1213] = 1192, + [1214] = 1182, + [1215] = 1186, + [1216] = 1179, + [1217] = 1186, + [1218] = 1194, + [1219] = 1186, + [1220] = 1183, + [1221] = 1179, + [1222] = 1192, + [1223] = 1223, + [1224] = 1194, + [1225] = 1183, + [1226] = 1192, + [1227] = 1186, + [1228] = 1228, + [1229] = 1229, + [1230] = 1230, + [1231] = 1231, + [1232] = 1232, + [1233] = 1183, + [1234] = 1183, + [1235] = 1179, + [1236] = 1183, + [1237] = 1192, + [1238] = 1183, + [1239] = 1194, + [1240] = 1240, + [1241] = 1241, + [1242] = 1194, + [1243] = 1192, + [1244] = 1186, + [1245] = 1179, + [1246] = 1246, + [1247] = 1247, + [1248] = 1194, + [1249] = 1249, + [1250] = 1250, + [1251] = 1251, + [1252] = 1252, + [1253] = 1253, + [1254] = 1254, + [1255] = 1255, + [1256] = 1256, + [1257] = 1257, + [1258] = 1258, + [1259] = 1259, + [1260] = 1260, + [1261] = 1261, + [1262] = 1194, + [1263] = 1192, + [1264] = 1186, + [1265] = 1179, + [1266] = 1266, + [1267] = 1267, + [1268] = 1268, + [1269] = 1269, + [1270] = 1186, + [1271] = 1271, + [1272] = 1272, + [1273] = 1273, + [1274] = 1183, + [1275] = 1275, + [1276] = 1194, + [1277] = 1192, + [1278] = 1186, + [1279] = 1179, + [1280] = 1280, + [1281] = 1281, + [1282] = 1282, + [1283] = 1186, + [1284] = 1284, + [1285] = 1285, + [1286] = 1179, + [1287] = 1186, + [1288] = 1192, + [1289] = 1194, + [1290] = 1290, + [1291] = 1291, + [1292] = 1292, + [1293] = 1293, + [1294] = 1294, + [1295] = 1295, + [1296] = 1296, + [1297] = 1297, + [1298] = 1298, + [1299] = 1299, + [1300] = 1300, + [1301] = 1301, + [1302] = 1302, + [1303] = 1303, + [1304] = 1304, + [1305] = 1305, + [1306] = 1306, + [1307] = 1307, + [1308] = 1308, + [1309] = 1309, + [1310] = 1310, + [1311] = 1311, + [1312] = 1312, + [1313] = 1313, + [1314] = 1314, + [1315] = 1315, + [1316] = 1316, + [1317] = 1317, + [1318] = 1318, + [1319] = 1319, + [1320] = 1320, + [1321] = 1321, + [1322] = 1322, + [1323] = 1323, + [1324] = 1324, + [1325] = 1325, + [1326] = 1326, + [1327] = 1327, + [1328] = 1328, + [1329] = 1329, + [1330] = 1330, + [1331] = 1331, + [1332] = 1332, + [1333] = 1333, + [1334] = 1334, + [1335] = 1335, + [1336] = 1336, + [1337] = 1337, + [1338] = 1338, + [1339] = 1339, + [1340] = 1340, + [1341] = 1341, + [1342] = 1342, + [1343] = 459, + [1344] = 1344, + [1345] = 1345, + [1346] = 1346, + [1347] = 1347, + [1348] = 1348, + [1349] = 1349, + [1350] = 1293, + [1351] = 1351, + [1352] = 1352, + [1353] = 1353, + [1354] = 1354, + [1355] = 1355, + [1356] = 1356, + [1357] = 1323, + [1358] = 1358, + [1359] = 1359, + [1360] = 1360, + [1361] = 1361, + [1362] = 461, + [1363] = 458, + [1364] = 1364, + [1365] = 1365, + [1366] = 1366, + [1367] = 1367, + [1368] = 1368, + [1369] = 1369, + [1370] = 1370, + [1371] = 1371, + [1372] = 1372, + [1373] = 1373, + [1374] = 1374, + [1375] = 1375, + [1376] = 1376, + [1377] = 1377, + [1378] = 1378, + [1379] = 1379, + [1380] = 1380, + [1381] = 1381, + [1382] = 1382, + [1383] = 1383, + [1384] = 1384, + [1385] = 1385, + [1386] = 1386, + [1387] = 1387, + [1388] = 1388, + [1389] = 1389, + [1390] = 1388, + [1391] = 1391, + [1392] = 1392, + [1393] = 1374, + [1394] = 1394, + [1395] = 1395, + [1396] = 1387, + [1397] = 1397, + [1398] = 1398, + [1399] = 1399, + [1400] = 1400, + [1401] = 1401, + [1402] = 1402, + [1403] = 1403, + [1404] = 1376, + [1405] = 1379, + [1406] = 1406, + [1407] = 1407, + [1408] = 1371, + [1409] = 1409, + [1410] = 1372, + [1411] = 1411, + [1412] = 1412, + [1413] = 1413, + [1414] = 1414, + [1415] = 1415, + [1416] = 1416, + [1417] = 1417, + [1418] = 1418, + [1419] = 1419, + [1420] = 1420, + [1421] = 1421, + [1422] = 1422, + [1423] = 1423, + [1424] = 1424, + [1425] = 1425, + [1426] = 1426, + [1427] = 1427, + [1428] = 1428, + [1429] = 1429, + [1430] = 1430, + [1431] = 1431, + [1432] = 1432, + [1433] = 1433, + [1434] = 1434, + [1435] = 1435, + [1436] = 1436, + [1437] = 1437, + [1438] = 1438, + [1439] = 1439, + [1440] = 1440, + [1441] = 1441, + [1442] = 1442, + [1443] = 1443, + [1444] = 1444, + [1445] = 1445, + [1446] = 1446, + [1447] = 1447, + [1448] = 1448, + [1449] = 1449, + [1450] = 1450, + [1451] = 1451, + [1452] = 1452, + [1453] = 1453, + [1454] = 1454, + [1455] = 1455, + [1456] = 1456, + [1457] = 1457, + [1458] = 1424, + [1459] = 1459, + [1460] = 1432, + [1461] = 1461, + [1462] = 1462, + [1463] = 1463, + [1464] = 1464, + [1465] = 1465, + [1466] = 1466, + [1467] = 1467, + [1468] = 1468, + [1469] = 1469, + [1470] = 1420, + [1471] = 1432, + [1472] = 1472, + [1473] = 1473, + [1474] = 1474, + [1475] = 1475, + [1476] = 1476, + [1477] = 1477, + [1478] = 1478, + [1479] = 1477, + [1480] = 1420, + [1481] = 1432, + [1482] = 1469, + [1483] = 1461, + [1484] = 1484, + [1485] = 1485, + [1486] = 1486, + [1487] = 1487, + [1488] = 1423, + [1489] = 1489, + [1490] = 1490, + [1491] = 1491, + [1492] = 1492, + [1493] = 1493, + [1494] = 1422, + [1495] = 1432, + [1496] = 1476, + [1497] = 1486, + [1498] = 1498, + [1499] = 1491, + [1500] = 1500, + [1501] = 1492, + [1502] = 1502, + [1503] = 1475, + [1504] = 1504, + [1505] = 1505, + [1506] = 1506, + [1507] = 1507, + [1508] = 1508, + [1509] = 1509, + [1510] = 1510, + [1511] = 1478, + [1512] = 1512, + [1513] = 1513, + [1514] = 1514, + [1515] = 1515, + [1516] = 1516, + [1517] = 1517, + [1518] = 1475, + [1519] = 1493, + [1520] = 1430, + [1521] = 1432, + [1522] = 1522, + [1523] = 1432, + [1524] = 1524, + [1525] = 1525, + [1526] = 1526, + [1527] = 1432, + [1528] = 1528, + [1529] = 1529, + [1530] = 1427, + [1531] = 1475, + [1532] = 1453, + [1533] = 1476, + [1534] = 1484, + [1535] = 1535, + [1536] = 1475, + [1537] = 1506, + [1538] = 1452, + [1539] = 1432, + [1540] = 1540, + [1541] = 1475, + [1542] = 1432, + [1543] = 1475, + [1544] = 1475, + [1545] = 1475, + [1546] = 1475, + [1547] = 1475, + [1548] = 1475, + [1549] = 1475, + [1550] = 1475, + [1551] = 1535, + [1552] = 1522, + [1553] = 1513, + [1554] = 1554, + [1555] = 1467, + [1556] = 1425, + [1557] = 1557, + [1558] = 1466, + [1559] = 1432, + [1560] = 1560, + [1561] = 1561, + [1562] = 1562, + [1563] = 1459, + [1564] = 1432, + [1565] = 1489, + [1566] = 1566, + [1567] = 1505, + [1568] = 1506, + [1569] = 1569, + [1570] = 1475, + [1571] = 1571, + [1572] = 1572, + [1573] = 1573, + [1574] = 1574, + [1575] = 1575, + [1576] = 1432, + [1577] = 1432, + [1578] = 1432, + [1579] = 1484, + [1580] = 1455, + [1581] = 1581, + [1582] = 1582, + [1583] = 1583, + [1584] = 1524, + [1585] = 1569, +}; + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(14); + if (lookahead == '!') ADVANCE(53); + if (lookahead == '"') ADVANCE(35); + if (lookahead == '#') ADVANCE(22); + if (lookahead == '$') ADVANCE(37); + if (lookahead == '&') ADVANCE(52); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == '(') ADVANCE(41); + if (lookahead == ')') ADVANCE(42); + if (lookahead == '*') ADVANCE(70); + if (lookahead == '+') ADVANCE(66); + if (lookahead == ',') ADVANCE(28); + if (lookahead == '-') ADVANCE(68); + if (lookahead == '.') ADVANCE(73); + if (lookahead == '/') ADVANCE(71); + if (lookahead == ':') ADVANCE(30); + if (lookahead == ';') ADVANCE(48); + if (lookahead == '<') ADVANCE(62); + if (lookahead == '=') ADVANCE(47); + if (lookahead == '>') ADVANCE(63); + if (lookahead == '@') ADVANCE(25); + if (lookahead == '[') ADVANCE(43); + if (lookahead == ']') ADVANCE(44); + if (lookahead == '{') ADVANCE(26); + if (lookahead == '}') ADVANCE(27); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(15); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(32); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 1: + if (lookahead == '!') ADVANCE(10); + if (lookahead == '"') ADVANCE(35); + if (lookahead == '#') ADVANCE(22); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == '(') ADVANCE(41); + if (lookahead == ')') ADVANCE(42); + if (lookahead == '*') ADVANCE(70); + if (lookahead == '+') ADVANCE(66); + if (lookahead == ',') ADVANCE(28); + if (lookahead == '-') ADVANCE(69); + if (lookahead == '.') ADVANCE(73); + if (lookahead == '/') ADVANCE(71); + if (lookahead == ':') ADVANCE(30); + if (lookahead == ';') ADVANCE(48); + if (lookahead == '<') ADVANCE(62); + if (lookahead == '=') ADVANCE(46); + if (lookahead == '>') ADVANCE(63); + if (lookahead == '[') ADVANCE(43); + if (lookahead == ']') ADVANCE(44); + if (lookahead == '{') ADVANCE(26); + if (lookahead == '}') ADVANCE(27); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(15); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 2: + if (lookahead == '!') ADVANCE(10); + if (lookahead == '#') ADVANCE(22); + if (lookahead == '&') ADVANCE(52); + if (lookahead == '(') ADVANCE(41); + if (lookahead == ')') ADVANCE(42); + if (lookahead == '*') ADVANCE(70); + if (lookahead == '+') ADVANCE(66); + if (lookahead == ',') ADVANCE(28); + if (lookahead == '-') ADVANCE(67); + if (lookahead == '.') ADVANCE(73); + if (lookahead == '/') ADVANCE(71); + if (lookahead == ':') ADVANCE(30); + if (lookahead == ';') ADVANCE(48); + if (lookahead == '<') ADVANCE(62); + if (lookahead == '=') ADVANCE(47); + if (lookahead == '>') ADVANCE(63); + if (lookahead == '[') ADVANCE(43); + if (lookahead == ']') ADVANCE(44); + if (lookahead == '{') ADVANCE(26); + if (lookahead == '}') ADVANCE(27); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(15); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 3: + if (lookahead == '!') ADVANCE(10); + if (lookahead == '#') ADVANCE(22); + if (lookahead == '&') ADVANCE(52); + if (lookahead == '(') ADVANCE(41); + if (lookahead == ')') ADVANCE(42); + if (lookahead == '*') ADVANCE(70); + if (lookahead == '+') ADVANCE(66); + if (lookahead == ',') ADVANCE(28); + if (lookahead == '-') ADVANCE(67); + if (lookahead == '.') ADVANCE(73); + if (lookahead == '/') ADVANCE(71); + if (lookahead == ':') ADVANCE(30); + if (lookahead == ';') ADVANCE(48); + if (lookahead == '<') ADVANCE(62); + if (lookahead == '=') ADVANCE(46); + if (lookahead == '>') ADVANCE(63); + if (lookahead == '[') ADVANCE(43); + if (lookahead == ']') ADVANCE(44); + if (lookahead == '{') ADVANCE(26); + if (lookahead == '}') ADVANCE(27); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(15); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(24); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 4: + if (lookahead == '"') ADVANCE(35); + if (lookahead == '#') ADVANCE(19); + if (lookahead == '$') ADVANCE(37); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(16); + if (lookahead != 0) ADVANCE(36); + END_STATE(); + case 5: + if (lookahead == '#') ADVANCE(22); + if (lookahead == '&') ADVANCE(52); + if (lookahead == ':') ADVANCE(29); + if (lookahead == '=') ADVANCE(11); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(15); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 6: + if (lookahead == '#') ADVANCE(20); + if (lookahead == '-') ADVANCE(8); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(18); + if (lookahead != 0) ADVANCE(51); + END_STATE(); + case 7: + if (lookahead == '-') ADVANCE(9); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + END_STATE(); + case 8: + if (lookahead == '-') ADVANCE(9); + if (lookahead != 0) ADVANCE(50); + END_STATE(); + case 9: + if (lookahead == '-') ADVANCE(49); + END_STATE(); + case 10: + if (lookahead == '=') ADVANCE(61); + END_STATE(); + case 11: + if (lookahead == '>') ADVANCE(74); + END_STATE(); + case 12: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34); + END_STATE(); + case 13: + if (eof) ADVANCE(14); + if (lookahead == '"') ADVANCE(35); + if (lookahead == '#') ADVANCE(22); + if (lookahead == '&') ADVANCE(52); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == '(') ADVANCE(41); + if (lookahead == ')') ADVANCE(42); + if (lookahead == '-') ADVANCE(7); + if (lookahead == ':') ADVANCE(29); + if (lookahead == ';') ADVANCE(48); + if (lookahead == '=') ADVANCE(45); + if (lookahead == '@') ADVANCE(25); + if (lookahead == '[') ADVANCE(43); + if (lookahead == ']') ADVANCE(44); + if (lookahead == '{') ADVANCE(26); + if (lookahead == '}') ADVANCE(27); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(15); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 14: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 15: + ACCEPT_TOKEN(sym__whitespace); + END_STATE(); + case 16: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '"' && + lookahead != '$') ADVANCE(36); + END_STATE(); + case 17: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '\'') ADVANCE(40); + END_STATE(); + case 18: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '-') ADVANCE(51); + END_STATE(); + case 19: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(36); + if (lookahead == '"' || + lookahead == '$') ADVANCE(22); + if (lookahead != 0) ADVANCE(19); + END_STATE(); + case 20: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(51); + if (lookahead == '-') ADVANCE(22); + if (lookahead != 0) ADVANCE(20); + END_STATE(); + case 21: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(40); + if (lookahead == '\'') ADVANCE(22); + if (lookahead != 0) ADVANCE(21); + END_STATE(); + case 22: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(22); + END_STATE(); + case 23: + ACCEPT_TOKEN(sym_name); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(23); + END_STATE(); + case 24: + ACCEPT_TOKEN(sym_index); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(24); + END_STATE(); + case 25: + ACCEPT_TOKEN(anon_sym_AT); + END_STATE(); + case 26: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 27: + ACCEPT_TOKEN(anon_sym_RBRACE); + END_STATE(); + case 28: + ACCEPT_TOKEN(anon_sym_COMMA); + END_STATE(); + case 29: + ACCEPT_TOKEN(anon_sym_COLON); + END_STATE(); + case 30: + ACCEPT_TOKEN(anon_sym_COLON); + if (lookahead == ':') ADVANCE(72); + END_STATE(); + case 31: + ACCEPT_TOKEN(sym_constant_int); + if (lookahead == '.') ADVANCE(12); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(33); + END_STATE(); + case 32: + ACCEPT_TOKEN(sym_constant_int); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(32); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(33); + END_STATE(); + case 33: + ACCEPT_TOKEN(sym_constant_int); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(33); + END_STATE(); + case 34: + ACCEPT_TOKEN(sym_constant_float); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34); + END_STATE(); + case 35: + ACCEPT_TOKEN(sym_string_quote); + END_STATE(); + case 36: + ACCEPT_TOKEN(sym_string_content); + if (lookahead != 0 && + lookahead != '"' && + lookahead != '$') ADVANCE(36); + END_STATE(); + case 37: + ACCEPT_TOKEN(anon_sym_DOLLAR); + END_STATE(); + case 38: + ACCEPT_TOKEN(anon_sym_SQUOTE); + END_STATE(); + case 39: + ACCEPT_TOKEN(aux_sym_constant_char_token1); + if (lookahead == '#') ADVANCE(21); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (lookahead != 0 && + lookahead != '\'') ADVANCE(40); + END_STATE(); + case 40: + ACCEPT_TOKEN(aux_sym_constant_char_token1); + if (lookahead != 0 && + lookahead != '\'') ADVANCE(40); + END_STATE(); + case 41: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 42: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_LBRACK); + END_STATE(); + case 44: + ACCEPT_TOKEN(anon_sym_RBRACK); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_EQ); + END_STATE(); + case 46: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(60); + END_STATE(); + case 47: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(60); + if (lookahead == '>') ADVANCE(74); + END_STATE(); + case 48: + ACCEPT_TOKEN(anon_sym_SEMI); + END_STATE(); + case 49: + ACCEPT_TOKEN(anon_sym_DASH_DASH_DASH); + END_STATE(); + case 50: + ACCEPT_TOKEN(aux_sym_code_token1); + END_STATE(); + case 51: + ACCEPT_TOKEN(aux_sym_code_token1); + if (lookahead != 0 && + lookahead != '-') ADVANCE(51); + END_STATE(); + case 52: + ACCEPT_TOKEN(anon_sym_AMP); + END_STATE(); + case 53: + ACCEPT_TOKEN(sym_type_never); + END_STATE(); + case 54: + ACCEPT_TOKEN(anon_sym_PLUS_EQ); + END_STATE(); + case 55: + ACCEPT_TOKEN(anon_sym_DASH_EQ); + END_STATE(); + case 56: + ACCEPT_TOKEN(anon_sym_STAR_EQ); + END_STATE(); + case 57: + ACCEPT_TOKEN(anon_sym_SLASH_EQ); + END_STATE(); + case 58: + ACCEPT_TOKEN(anon_sym_DOT_DOT); + if (lookahead == '=') ADVANCE(59); + END_STATE(); + case 59: + ACCEPT_TOKEN(anon_sym_DOT_DOT_EQ); + END_STATE(); + case 60: + ACCEPT_TOKEN(anon_sym_EQ_EQ); + END_STATE(); + case 61: + ACCEPT_TOKEN(anon_sym_BANG_EQ); + END_STATE(); + case 62: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '=') ADVANCE(64); + END_STATE(); + case 63: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(65); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_LT_EQ); + END_STATE(); + case 65: + ACCEPT_TOKEN(anon_sym_GT_EQ); + END_STATE(); + case 66: + ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '=') ADVANCE(54); + END_STATE(); + case 67: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(55); + END_STATE(); + case 68: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(55); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(32); + END_STATE(); + case 69: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(55); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_STAR); + if (lookahead == '=') ADVANCE(56); + END_STATE(); + case 71: + ACCEPT_TOKEN(anon_sym_SLASH); + if (lookahead == '=') ADVANCE(57); + END_STATE(); + case 72: + ACCEPT_TOKEN(anon_sym_COLON_COLON); + END_STATE(); + case 73: + ACCEPT_TOKEN(anon_sym_DOT); + if (lookahead == '.') ADVANCE(58); + END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_EQ_GT); + END_STATE(); + default: + return false; + } +} + +static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (lookahead == '_') ADVANCE(1); + if (lookahead == 'a') ADVANCE(2); + if (lookahead == 'b') ADVANCE(3); + if (lookahead == 'c') ADVANCE(4); + if (lookahead == 'd') ADVANCE(5); + if (lookahead == 'e') ADVANCE(6); + if (lookahead == 'f') ADVANCE(7); + if (lookahead == 'g') ADVANCE(8); + if (lookahead == 'i') ADVANCE(9); + if (lookahead == 'j') ADVANCE(10); + if (lookahead == 'l') ADVANCE(11); + if (lookahead == 'm') ADVANCE(12); + if (lookahead == 'n') ADVANCE(13); + if (lookahead == 'o') ADVANCE(14); + if (lookahead == 'p') ADVANCE(15); + if (lookahead == 'r') ADVANCE(16); + if (lookahead == 's') ADVANCE(17); + if (lookahead == 't') ADVANCE(18); + if (lookahead == 'u') ADVANCE(19); + if (lookahead == 'v') ADVANCE(20); + if (lookahead == 'w') ADVANCE(21); + END_STATE(); + case 1: + ACCEPT_TOKEN(anon_sym__); + END_STATE(); + case 2: + if (lookahead == 'n') ADVANCE(22); + if (lookahead == 's') ADVANCE(23); + END_STATE(); + case 3: + if (lookahead == 'r') ADVANCE(24); + END_STATE(); + case 4: + if (lookahead == 'a') ADVANCE(25); + if (lookahead == 'o') ADVANCE(26); + END_STATE(); + case 5: + if (lookahead == 'e') ADVANCE(27); + if (lookahead == 'o') ADVANCE(28); + END_STATE(); + case 6: + if (lookahead == 'l') ADVANCE(29); + if (lookahead == 'n') ADVANCE(30); + END_STATE(); + case 7: + if (lookahead == 'a') ADVANCE(31); + if (lookahead == 'i') ADVANCE(32); + if (lookahead == 'o') ADVANCE(33); + if (lookahead == 'r') ADVANCE(34); + if (lookahead == 'u') ADVANCE(35); + END_STATE(); + case 8: + if (lookahead == 'r') ADVANCE(36); + END_STATE(); + case 9: + if (lookahead == 'f') ADVANCE(37); + if (lookahead == 'n') ADVANCE(38); + END_STATE(); + case 10: + if (lookahead == 'o') ADVANCE(39); + END_STATE(); + case 11: + if (lookahead == 'o') ADVANCE(40); + END_STATE(); + case 12: + if (lookahead == 'a') ADVANCE(41); + if (lookahead == 'o') ADVANCE(42); + END_STATE(); + case 13: + if (lookahead == 'o') ADVANCE(43); + END_STATE(); + case 14: + if (lookahead == 'f') ADVANCE(44); + if (lookahead == 'n') ADVANCE(45); + if (lookahead == 'r') ADVANCE(46); + if (lookahead == 'v') ADVANCE(47); + END_STATE(); + case 15: + if (lookahead == 'y') ADVANCE(48); + END_STATE(); + case 16: + if (lookahead == 'e') ADVANCE(49); + if (lookahead == 'o') ADVANCE(50); + if (lookahead == 'u') ADVANCE(51); + END_STATE(); + case 17: + if (lookahead == 'e') ADVANCE(52); + if (lookahead == 't') ADVANCE(53); + END_STATE(); + case 18: + if (lookahead == 'h') ADVANCE(54); + if (lookahead == 'r') ADVANCE(55); + if (lookahead == 'y') ADVANCE(56); + END_STATE(); + case 19: + if (lookahead == 'n') ADVANCE(57); + if (lookahead == 's') ADVANCE(58); + END_STATE(); + case 20: + if (lookahead == 'a') ADVANCE(59); + END_STATE(); + case 21: + if (lookahead == 'h') ADVANCE(60); + if (lookahead == 'i') ADVANCE(61); + END_STATE(); + case 22: + if (lookahead == 'd') ADVANCE(62); + END_STATE(); + case 23: + ACCEPT_TOKEN(anon_sym_as); + END_STATE(); + case 24: + if (lookahead == 'e') ADVANCE(63); + END_STATE(); + case 25: + if (lookahead == 't') ADVANCE(64); + END_STATE(); + case 26: + if (lookahead == 'm') ADVANCE(65); + if (lookahead == 'n') ADVANCE(66); + END_STATE(); + case 27: + if (lookahead == 'f') ADVANCE(67); + if (lookahead == 's') ADVANCE(68); + END_STATE(); + case 28: + ACCEPT_TOKEN(anon_sym_do); + END_STATE(); + case 29: + if (lookahead == 's') ADVANCE(69); + END_STATE(); + case 30: + if (lookahead == 'u') ADVANCE(70); + END_STATE(); + case 31: + if (lookahead == 'l') ADVANCE(71); + END_STATE(); + case 32: + if (lookahead == 'n') ADVANCE(72); + END_STATE(); + case 33: + if (lookahead == 'r') ADVANCE(73); + END_STATE(); + case 34: + if (lookahead == 'o') ADVANCE(74); + END_STATE(); + case 35: + if (lookahead == 'n') ADVANCE(75); + END_STATE(); + case 36: + if (lookahead == 'o') ADVANCE(76); + END_STATE(); + case 37: + ACCEPT_TOKEN(anon_sym_if); + END_STATE(); + case 38: + ACCEPT_TOKEN(anon_sym_in); + if (lookahead == 't') ADVANCE(77); + END_STATE(); + case 39: + if (lookahead == 'i') ADVANCE(78); + END_STATE(); + case 40: + if (lookahead == 'o') ADVANCE(79); + END_STATE(); + case 41: + if (lookahead == 't') ADVANCE(80); + END_STATE(); + case 42: + if (lookahead == 'd') ADVANCE(81); + END_STATE(); + case 43: + if (lookahead == 't') ADVANCE(82); + END_STATE(); + case 44: + ACCEPT_TOKEN(anon_sym_of); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_on); + END_STATE(); + case 46: + ACCEPT_TOKEN(anon_sym_or); + if (lookahead == 'd') ADVANCE(83); + END_STATE(); + case 47: + if (lookahead == 'e') ADVANCE(84); + END_STATE(); + case 48: + if (lookahead == 't') ADVANCE(85); + END_STATE(); + case 49: + if (lookahead == 't') ADVANCE(86); + END_STATE(); + case 50: + if (lookahead == 'l') ADVANCE(87); + END_STATE(); + case 51: + if (lookahead == 's') ADVANCE(88); + END_STATE(); + case 52: + if (lookahead == 'l') ADVANCE(89); + END_STATE(); + case 53: + if (lookahead == 'r') ADVANCE(90); + END_STATE(); + case 54: + if (lookahead == 'r') ADVANCE(91); + END_STATE(); + case 55: + if (lookahead == 'u') ADVANCE(92); + if (lookahead == 'y') ADVANCE(93); + END_STATE(); + case 56: + if (lookahead == 'p') ADVANCE(94); + END_STATE(); + case 57: + if (lookahead == 'i') ADVANCE(95); + END_STATE(); + case 58: + if (lookahead == 'e') ADVANCE(96); + END_STATE(); + case 59: + if (lookahead == 'l') ADVANCE(97); + if (lookahead == 'r') ADVANCE(98); + END_STATE(); + case 60: + if (lookahead == 'e') ADVANCE(99); + if (lookahead == 'i') ADVANCE(100); + END_STATE(); + case 61: + if (lookahead == 't') ADVANCE(101); + END_STATE(); + case 62: + ACCEPT_TOKEN(anon_sym_and); + END_STATE(); + case 63: + if (lookahead == 'a') ADVANCE(102); + END_STATE(); + case 64: + if (lookahead == 'c') ADVANCE(103); + END_STATE(); + case 65: + if (lookahead == 'p') ADVANCE(104); + END_STATE(); + case 66: + if (lookahead == 't') ADVANCE(105); + END_STATE(); + case 67: + ACCEPT_TOKEN(anon_sym_def); + END_STATE(); + case 68: + if (lookahead == 'c') ADVANCE(106); + END_STATE(); + case 69: + if (lookahead == 'e') ADVANCE(107); + END_STATE(); + case 70: + if (lookahead == 'm') ADVANCE(108); + END_STATE(); + case 71: + if (lookahead == 's') ADVANCE(109); + END_STATE(); + case 72: + if (lookahead == 'a') ADVANCE(110); + END_STATE(); + case 73: + ACCEPT_TOKEN(anon_sym_for); + END_STATE(); + case 74: + if (lookahead == 'm') ADVANCE(111); + END_STATE(); + case 75: + ACCEPT_TOKEN(anon_sym_fun); + END_STATE(); + case 76: + if (lookahead == 'u') ADVANCE(112); + END_STATE(); + case 77: + if (lookahead == 'o') ADVANCE(113); + END_STATE(); + case 78: + if (lookahead == 'n') ADVANCE(114); + END_STATE(); + case 79: + if (lookahead == 'p') ADVANCE(115); + END_STATE(); + case 80: + if (lookahead == 'c') ADVANCE(116); + END_STATE(); + case 81: + ACCEPT_TOKEN(anon_sym_mod); + END_STATE(); + case 82: + ACCEPT_TOKEN(anon_sym_not); + END_STATE(); + case 83: + if (lookahead == 'e') ADVANCE(117); + END_STATE(); + case 84: + if (lookahead == 'r') ADVANCE(118); + END_STATE(); + case 85: + if (lookahead == 'h') ADVANCE(119); + END_STATE(); + case 86: + if (lookahead == 'u') ADVANCE(120); + END_STATE(); + case 87: + if (lookahead == 'l') ADVANCE(121); + END_STATE(); + case 88: + if (lookahead == 't') ADVANCE(122); + END_STATE(); + case 89: + if (lookahead == 'e') ADVANCE(123); + END_STATE(); + case 90: + if (lookahead == 'u') ADVANCE(124); + END_STATE(); + case 91: + if (lookahead == 'o') ADVANCE(125); + END_STATE(); + case 92: + if (lookahead == 'e') ADVANCE(126); + END_STATE(); + case 93: + ACCEPT_TOKEN(anon_sym_try); + END_STATE(); + case 94: + if (lookahead == 'e') ADVANCE(127); + END_STATE(); + case 95: + if (lookahead == 'o') ADVANCE(128); + END_STATE(); + case 96: + ACCEPT_TOKEN(anon_sym_use); + END_STATE(); + case 97: + ACCEPT_TOKEN(anon_sym_val); + END_STATE(); + case 98: + ACCEPT_TOKEN(anon_sym_var); + END_STATE(); + case 99: + if (lookahead == 'r') ADVANCE(129); + END_STATE(); + case 100: + if (lookahead == 'l') ADVANCE(130); + END_STATE(); + case 101: + if (lookahead == 'h') ADVANCE(131); + END_STATE(); + case 102: + if (lookahead == 'k') ADVANCE(132); + END_STATE(); + case 103: + if (lookahead == 'h') ADVANCE(133); + END_STATE(); + case 104: + if (lookahead == 'u') ADVANCE(134); + END_STATE(); + case 105: + if (lookahead == 'i') ADVANCE(135); + END_STATE(); + case 106: + ACCEPT_TOKEN(anon_sym_desc); + END_STATE(); + case 107: + ACCEPT_TOKEN(anon_sym_else); + END_STATE(); + case 108: + ACCEPT_TOKEN(anon_sym_enum); + END_STATE(); + case 109: + if (lookahead == 'e') ADVANCE(136); + END_STATE(); + case 110: + if (lookahead == 'l') ADVANCE(137); + END_STATE(); + case 111: + ACCEPT_TOKEN(anon_sym_from); + END_STATE(); + case 112: + if (lookahead == 'p') ADVANCE(138); + END_STATE(); + case 113: + ACCEPT_TOKEN(anon_sym_into); + END_STATE(); + case 114: + ACCEPT_TOKEN(anon_sym_join); + END_STATE(); + case 115: + ACCEPT_TOKEN(anon_sym_loop); + END_STATE(); + case 116: + if (lookahead == 'h') ADVANCE(139); + END_STATE(); + case 117: + if (lookahead == 'r') ADVANCE(140); + END_STATE(); + case 118: + ACCEPT_TOKEN(anon_sym_over); + END_STATE(); + case 119: + if (lookahead == 'o') ADVANCE(141); + END_STATE(); + case 120: + if (lookahead == 'r') ADVANCE(142); + END_STATE(); + case 121: + ACCEPT_TOKEN(anon_sym_roll); + END_STATE(); + case 122: + ACCEPT_TOKEN(anon_sym_rust); + END_STATE(); + case 123: + if (lookahead == 'c') ADVANCE(143); + END_STATE(); + case 124: + if (lookahead == 'c') ADVANCE(144); + END_STATE(); + case 125: + if (lookahead == 'w') ADVANCE(145); + END_STATE(); + case 126: + ACCEPT_TOKEN(anon_sym_true); + END_STATE(); + case 127: + ACCEPT_TOKEN(anon_sym_type); + END_STATE(); + case 128: + if (lookahead == 'n') ADVANCE(146); + END_STATE(); + case 129: + if (lookahead == 'e') ADVANCE(147); + END_STATE(); + case 130: + if (lookahead == 'e') ADVANCE(148); + END_STATE(); + case 131: + ACCEPT_TOKEN(anon_sym_with); + END_STATE(); + case 132: + ACCEPT_TOKEN(anon_sym_break); + END_STATE(); + case 133: + ACCEPT_TOKEN(anon_sym_catch); + END_STATE(); + case 134: + if (lookahead == 't') ADVANCE(149); + END_STATE(); + case 135: + if (lookahead == 'n') ADVANCE(150); + END_STATE(); + case 136: + ACCEPT_TOKEN(anon_sym_false); + END_STATE(); + case 137: + if (lookahead == 'l') ADVANCE(151); + END_STATE(); + case 138: + ACCEPT_TOKEN(anon_sym_group); + END_STATE(); + case 139: + ACCEPT_TOKEN(anon_sym_match); + END_STATE(); + case 140: + ACCEPT_TOKEN(anon_sym_order); + END_STATE(); + case 141: + if (lookahead == 'n') ADVANCE(152); + END_STATE(); + case 142: + if (lookahead == 'n') ADVANCE(153); + END_STATE(); + case 143: + if (lookahead == 't') ADVANCE(154); + END_STATE(); + case 144: + if (lookahead == 't') ADVANCE(155); + END_STATE(); + case 145: + ACCEPT_TOKEN(anon_sym_throw); + END_STATE(); + case 146: + ACCEPT_TOKEN(anon_sym_union); + END_STATE(); + case 147: + ACCEPT_TOKEN(anon_sym_where); + END_STATE(); + case 148: + ACCEPT_TOKEN(anon_sym_while); + END_STATE(); + case 149: + if (lookahead == 'e') ADVANCE(156); + END_STATE(); + case 150: + if (lookahead == 'u') ADVANCE(157); + END_STATE(); + case 151: + if (lookahead == 'y') ADVANCE(158); + END_STATE(); + case 152: + ACCEPT_TOKEN(anon_sym_python); + END_STATE(); + case 153: + ACCEPT_TOKEN(anon_sym_return); + END_STATE(); + case 154: + ACCEPT_TOKEN(anon_sym_select); + END_STATE(); + case 155: + ACCEPT_TOKEN(anon_sym_struct); + END_STATE(); + case 156: + ACCEPT_TOKEN(anon_sym_compute); + END_STATE(); + case 157: + if (lookahead == 'e') ADVANCE(159); + END_STATE(); + case 158: + ACCEPT_TOKEN(anon_sym_finally); + END_STATE(); + case 159: + ACCEPT_TOKEN(anon_sym_continue); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 13}, + [2] = {.lex_state = 1}, + [3] = {.lex_state = 1}, + [4] = {.lex_state = 1}, + [5] = {.lex_state = 1}, + [6] = {.lex_state = 1}, + [7] = {.lex_state = 1}, + [8] = {.lex_state = 1}, + [9] = {.lex_state = 1}, + [10] = {.lex_state = 1}, + [11] = {.lex_state = 1}, + [12] = {.lex_state = 1}, + [13] = {.lex_state = 1}, + [14] = {.lex_state = 1}, + [15] = {.lex_state = 1}, + [16] = {.lex_state = 1}, + [17] = {.lex_state = 1}, + [18] = {.lex_state = 1}, + [19] = {.lex_state = 1}, + [20] = {.lex_state = 1}, + [21] = {.lex_state = 1}, + [22] = {.lex_state = 1}, + [23] = {.lex_state = 1}, + [24] = {.lex_state = 1}, + [25] = {.lex_state = 1}, + [26] = {.lex_state = 1}, + [27] = {.lex_state = 1}, + [28] = {.lex_state = 13}, + [29] = {.lex_state = 13}, + [30] = {.lex_state = 13}, + [31] = {.lex_state = 13}, + [32] = {.lex_state = 13}, + [33] = {.lex_state = 13}, + [34] = {.lex_state = 13}, + [35] = {.lex_state = 13}, + [36] = {.lex_state = 13}, + [37] = {.lex_state = 13}, + [38] = {.lex_state = 13}, + [39] = {.lex_state = 13}, + [40] = {.lex_state = 1}, + [41] = {.lex_state = 1}, + [42] = {.lex_state = 1}, + [43] = {.lex_state = 1}, + [44] = {.lex_state = 13}, + [45] = {.lex_state = 13}, + [46] = {.lex_state = 13}, + [47] = {.lex_state = 13}, + [48] = {.lex_state = 13}, + [49] = {.lex_state = 13}, + [50] = {.lex_state = 13}, + [51] = {.lex_state = 13}, + [52] = {.lex_state = 3}, + [53] = {.lex_state = 13}, + [54] = {.lex_state = 3}, + [55] = {.lex_state = 13}, + [56] = {.lex_state = 13}, + [57] = {.lex_state = 13}, + [58] = {.lex_state = 13}, + [59] = {.lex_state = 13}, + [60] = {.lex_state = 13}, + [61] = {.lex_state = 13}, + [62] = {.lex_state = 13}, + [63] = {.lex_state = 13}, + [64] = {.lex_state = 13}, + [65] = {.lex_state = 13}, + [66] = {.lex_state = 13}, + [67] = {.lex_state = 3}, + [68] = {.lex_state = 13}, + [69] = {.lex_state = 3}, + [70] = {.lex_state = 3}, + [71] = {.lex_state = 3}, + [72] = {.lex_state = 13}, + [73] = {.lex_state = 3}, + [74] = {.lex_state = 3}, + [75] = {.lex_state = 3}, + [76] = {.lex_state = 13}, + [77] = {.lex_state = 13}, + [78] = {.lex_state = 13}, + [79] = {.lex_state = 13}, + [80] = {.lex_state = 13}, + [81] = {.lex_state = 13}, + [82] = {.lex_state = 13}, + [83] = {.lex_state = 13}, + [84] = {.lex_state = 13}, + [85] = {.lex_state = 13}, + [86] = {.lex_state = 13}, + [87] = {.lex_state = 13}, + [88] = {.lex_state = 13}, + [89] = {.lex_state = 13}, + [90] = {.lex_state = 13}, + [91] = {.lex_state = 13}, + [92] = {.lex_state = 13}, + [93] = {.lex_state = 13}, + [94] = {.lex_state = 13}, + [95] = {.lex_state = 13}, + [96] = {.lex_state = 13}, + [97] = {.lex_state = 13}, + [98] = {.lex_state = 13}, + [99] = {.lex_state = 13}, + [100] = {.lex_state = 13}, + [101] = {.lex_state = 13}, + [102] = {.lex_state = 13}, + [103] = {.lex_state = 13}, + [104] = {.lex_state = 13}, + [105] = {.lex_state = 13}, + [106] = {.lex_state = 13}, + [107] = {.lex_state = 13}, + [108] = {.lex_state = 13}, + [109] = {.lex_state = 13}, + [110] = {.lex_state = 13}, + [111] = {.lex_state = 13}, + [112] = {.lex_state = 13}, + [113] = {.lex_state = 13}, + [114] = {.lex_state = 13}, + [115] = {.lex_state = 13}, + [116] = {.lex_state = 13}, + [117] = {.lex_state = 13}, + [118] = {.lex_state = 13}, + [119] = {.lex_state = 13}, + [120] = {.lex_state = 13}, + [121] = {.lex_state = 13}, + [122] = {.lex_state = 13}, + [123] = {.lex_state = 13}, + [124] = {.lex_state = 13}, + [125] = {.lex_state = 13}, + [126] = {.lex_state = 13}, + [127] = {.lex_state = 13}, + [128] = {.lex_state = 13}, + [129] = {.lex_state = 13}, + [130] = {.lex_state = 13}, + [131] = {.lex_state = 13}, + [132] = {.lex_state = 13}, + [133] = {.lex_state = 13}, + [134] = {.lex_state = 13}, + [135] = {.lex_state = 13}, + [136] = {.lex_state = 13}, + [137] = {.lex_state = 13}, + [138] = {.lex_state = 13}, + [139] = {.lex_state = 13}, + [140] = {.lex_state = 13}, + [141] = {.lex_state = 13}, + [142] = {.lex_state = 13}, + [143] = {.lex_state = 13}, + [144] = {.lex_state = 13}, + [145] = {.lex_state = 13}, + [146] = {.lex_state = 3}, + [147] = {.lex_state = 13}, + [148] = {.lex_state = 3}, + [149] = {.lex_state = 13}, + [150] = {.lex_state = 13}, + [151] = {.lex_state = 13}, + [152] = {.lex_state = 13}, + [153] = {.lex_state = 13}, + [154] = {.lex_state = 13}, + [155] = {.lex_state = 13}, + [156] = {.lex_state = 13}, + [157] = {.lex_state = 13}, + [158] = {.lex_state = 13}, + [159] = {.lex_state = 13}, + [160] = {.lex_state = 13}, + [161] = {.lex_state = 13}, + [162] = {.lex_state = 13}, + [163] = {.lex_state = 13}, + [164] = {.lex_state = 13}, + [165] = {.lex_state = 3}, + [166] = {.lex_state = 13}, + [167] = {.lex_state = 13}, + [168] = {.lex_state = 13}, + [169] = {.lex_state = 13}, + [170] = {.lex_state = 13}, + [171] = {.lex_state = 13}, + [172] = {.lex_state = 13}, + [173] = {.lex_state = 13}, + [174] = {.lex_state = 3}, + [175] = {.lex_state = 13}, + [176] = {.lex_state = 13}, + [177] = {.lex_state = 13}, + [178] = {.lex_state = 13}, + [179] = {.lex_state = 13}, + [180] = {.lex_state = 13}, + [181] = {.lex_state = 13}, + [182] = {.lex_state = 13}, + [183] = {.lex_state = 13}, + [184] = {.lex_state = 13}, + [185] = {.lex_state = 13}, + [186] = {.lex_state = 13}, + [187] = {.lex_state = 13}, + [188] = {.lex_state = 13}, + [189] = {.lex_state = 13}, + [190] = {.lex_state = 13}, + [191] = {.lex_state = 13}, + [192] = {.lex_state = 13}, + [193] = {.lex_state = 13}, + [194] = {.lex_state = 13}, + [195] = {.lex_state = 13}, + [196] = {.lex_state = 13}, + [197] = {.lex_state = 13}, + [198] = {.lex_state = 13}, + [199] = {.lex_state = 13}, + [200] = {.lex_state = 13}, + [201] = {.lex_state = 13}, + [202] = {.lex_state = 13}, + [203] = {.lex_state = 13}, + [204] = {.lex_state = 13}, + [205] = {.lex_state = 13}, + [206] = {.lex_state = 13}, + [207] = {.lex_state = 13}, + [208] = {.lex_state = 13}, + [209] = {.lex_state = 13}, + [210] = {.lex_state = 13}, + [211] = {.lex_state = 3}, + [212] = {.lex_state = 13}, + [213] = {.lex_state = 13}, + [214] = {.lex_state = 13}, + [215] = {.lex_state = 3}, + [216] = {.lex_state = 13}, + [217] = {.lex_state = 13}, + [218] = {.lex_state = 13}, + [219] = {.lex_state = 13}, + [220] = {.lex_state = 13}, + [221] = {.lex_state = 13}, + [222] = {.lex_state = 13}, + [223] = {.lex_state = 13}, + [224] = {.lex_state = 13}, + [225] = {.lex_state = 13}, + [226] = {.lex_state = 13}, + [227] = {.lex_state = 13}, + [228] = {.lex_state = 13}, + [229] = {.lex_state = 13}, + [230] = {.lex_state = 13}, + [231] = {.lex_state = 13}, + [232] = {.lex_state = 13}, + [233] = {.lex_state = 13}, + [234] = {.lex_state = 13}, + [235] = {.lex_state = 13}, + [236] = {.lex_state = 13}, + [237] = {.lex_state = 13}, + [238] = {.lex_state = 13}, + [239] = {.lex_state = 13}, + [240] = {.lex_state = 13}, + [241] = {.lex_state = 13}, + [242] = {.lex_state = 13}, + [243] = {.lex_state = 13}, + [244] = {.lex_state = 13}, + [245] = {.lex_state = 13}, + [246] = {.lex_state = 13}, + [247] = {.lex_state = 13}, + [248] = {.lex_state = 13}, + [249] = {.lex_state = 13}, + [250] = {.lex_state = 13}, + [251] = {.lex_state = 13}, + [252] = {.lex_state = 13}, + [253] = {.lex_state = 13}, + [254] = {.lex_state = 13}, + [255] = {.lex_state = 13}, + [256] = {.lex_state = 13}, + [257] = {.lex_state = 13}, + [258] = {.lex_state = 13}, + [259] = {.lex_state = 13}, + [260] = {.lex_state = 13}, + [261] = {.lex_state = 13}, + [262] = {.lex_state = 13}, + [263] = {.lex_state = 13}, + [264] = {.lex_state = 13}, + [265] = {.lex_state = 13}, + [266] = {.lex_state = 13}, + [267] = {.lex_state = 13}, + [268] = {.lex_state = 13}, + [269] = {.lex_state = 13}, + [270] = {.lex_state = 13}, + [271] = {.lex_state = 13}, + [272] = {.lex_state = 13}, + [273] = {.lex_state = 13}, + [274] = {.lex_state = 13}, + [275] = {.lex_state = 13}, + [276] = {.lex_state = 13}, + [277] = {.lex_state = 13}, + [278] = {.lex_state = 13}, + [279] = {.lex_state = 13}, + [280] = {.lex_state = 13}, + [281] = {.lex_state = 13}, + [282] = {.lex_state = 13}, + [283] = {.lex_state = 13}, + [284] = {.lex_state = 13}, + [285] = {.lex_state = 13}, + [286] = {.lex_state = 13}, + [287] = {.lex_state = 13}, + [288] = {.lex_state = 13}, + [289] = {.lex_state = 13}, + [290] = {.lex_state = 13}, + [291] = {.lex_state = 13}, + [292] = {.lex_state = 13}, + [293] = {.lex_state = 13}, + [294] = {.lex_state = 13}, + [295] = {.lex_state = 13}, + [296] = {.lex_state = 13}, + [297] = {.lex_state = 13}, + [298] = {.lex_state = 13}, + [299] = {.lex_state = 13}, + [300] = {.lex_state = 13}, + [301] = {.lex_state = 13}, + [302] = {.lex_state = 13}, + [303] = {.lex_state = 13}, + [304] = {.lex_state = 13}, + [305] = {.lex_state = 13}, + [306] = {.lex_state = 13}, + [307] = {.lex_state = 13}, + [308] = {.lex_state = 13}, + [309] = {.lex_state = 13}, + [310] = {.lex_state = 13}, + [311] = {.lex_state = 13}, + [312] = {.lex_state = 13}, + [313] = {.lex_state = 13}, + [314] = {.lex_state = 13}, + [315] = {.lex_state = 13}, + [316] = {.lex_state = 13}, + [317] = {.lex_state = 13}, + [318] = {.lex_state = 13}, + [319] = {.lex_state = 13}, + [320] = {.lex_state = 13}, + [321] = {.lex_state = 13}, + [322] = {.lex_state = 13}, + [323] = {.lex_state = 13}, + [324] = {.lex_state = 13}, + [325] = {.lex_state = 13}, + [326] = {.lex_state = 13}, + [327] = {.lex_state = 13}, + [328] = {.lex_state = 13}, + [329] = {.lex_state = 13}, + [330] = {.lex_state = 13}, + [331] = {.lex_state = 13}, + [332] = {.lex_state = 13}, + [333] = {.lex_state = 13}, + [334] = {.lex_state = 13}, + [335] = {.lex_state = 13}, + [336] = {.lex_state = 13}, + [337] = {.lex_state = 13}, + [338] = {.lex_state = 13}, + [339] = {.lex_state = 13}, + [340] = {.lex_state = 13}, + [341] = {.lex_state = 13}, + [342] = {.lex_state = 13}, + [343] = {.lex_state = 13}, + [344] = {.lex_state = 13}, + [345] = {.lex_state = 13}, + [346] = {.lex_state = 13}, + [347] = {.lex_state = 13}, + [348] = {.lex_state = 13}, + [349] = {.lex_state = 13}, + [350] = {.lex_state = 13}, + [351] = {.lex_state = 13}, + [352] = {.lex_state = 13}, + [353] = {.lex_state = 13}, + [354] = {.lex_state = 13}, + [355] = {.lex_state = 13}, + [356] = {.lex_state = 13}, + [357] = {.lex_state = 13}, + [358] = {.lex_state = 13}, + [359] = {.lex_state = 13}, + [360] = {.lex_state = 13}, + [361] = {.lex_state = 13}, + [362] = {.lex_state = 13}, + [363] = {.lex_state = 13}, + [364] = {.lex_state = 13}, + [365] = {.lex_state = 13}, + [366] = {.lex_state = 13}, + [367] = {.lex_state = 13}, + [368] = {.lex_state = 13}, + [369] = {.lex_state = 13}, + [370] = {.lex_state = 13}, + [371] = {.lex_state = 13}, + [372] = {.lex_state = 13}, + [373] = {.lex_state = 13}, + [374] = {.lex_state = 13}, + [375] = {.lex_state = 13}, + [376] = {.lex_state = 13}, + [377] = {.lex_state = 13}, + [378] = {.lex_state = 13}, + [379] = {.lex_state = 13}, + [380] = {.lex_state = 13}, + [381] = {.lex_state = 13}, + [382] = {.lex_state = 13}, + [383] = {.lex_state = 13}, + [384] = {.lex_state = 13}, + [385] = {.lex_state = 13}, + [386] = {.lex_state = 13}, + [387] = {.lex_state = 13}, + [388] = {.lex_state = 13}, + [389] = {.lex_state = 13}, + [390] = {.lex_state = 13}, + [391] = {.lex_state = 13}, + [392] = {.lex_state = 13}, + [393] = {.lex_state = 13}, + [394] = {.lex_state = 13}, + [395] = {.lex_state = 13}, + [396] = {.lex_state = 13}, + [397] = {.lex_state = 13}, + [398] = {.lex_state = 13}, + [399] = {.lex_state = 13}, + [400] = {.lex_state = 13}, + [401] = {.lex_state = 13}, + [402] = {.lex_state = 3}, + [403] = {.lex_state = 3}, + [404] = {.lex_state = 3}, + [405] = {.lex_state = 3}, + [406] = {.lex_state = 3}, + [407] = {.lex_state = 3}, + [408] = {.lex_state = 3}, + [409] = {.lex_state = 3}, + [410] = {.lex_state = 3}, + [411] = {.lex_state = 3}, + [412] = {.lex_state = 3}, + [413] = {.lex_state = 3}, + [414] = {.lex_state = 3}, + [415] = {.lex_state = 3}, + [416] = {.lex_state = 3}, + [417] = {.lex_state = 3}, + [418] = {.lex_state = 3}, + [419] = {.lex_state = 3}, + [420] = {.lex_state = 3}, + [421] = {.lex_state = 3}, + [422] = {.lex_state = 3}, + [423] = {.lex_state = 3}, + [424] = {.lex_state = 3}, + [425] = {.lex_state = 3}, + [426] = {.lex_state = 3}, + [427] = {.lex_state = 3}, + [428] = {.lex_state = 3}, + [429] = {.lex_state = 3}, + [430] = {.lex_state = 3}, + [431] = {.lex_state = 3}, + [432] = {.lex_state = 3}, + [433] = {.lex_state = 3}, + [434] = {.lex_state = 3}, + [435] = {.lex_state = 3}, + [436] = {.lex_state = 3}, + [437] = {.lex_state = 3}, + [438] = {.lex_state = 3}, + [439] = {.lex_state = 3}, + [440] = {.lex_state = 3}, + [441] = {.lex_state = 3}, + [442] = {.lex_state = 3}, + [443] = {.lex_state = 3}, + [444] = {.lex_state = 3}, + [445] = {.lex_state = 3}, + [446] = {.lex_state = 3}, + [447] = {.lex_state = 3}, + [448] = {.lex_state = 3}, + [449] = {.lex_state = 3}, + [450] = {.lex_state = 3}, + [451] = {.lex_state = 3}, + [452] = {.lex_state = 3}, + [453] = {.lex_state = 3}, + [454] = {.lex_state = 3}, + [455] = {.lex_state = 3}, + [456] = {.lex_state = 3}, + [457] = {.lex_state = 3}, + [458] = {.lex_state = 3}, + [459] = {.lex_state = 3}, + [460] = {.lex_state = 3}, + [461] = {.lex_state = 3}, + [462] = {.lex_state = 3}, + [463] = {.lex_state = 3}, + [464] = {.lex_state = 3}, + [465] = {.lex_state = 3}, + [466] = {.lex_state = 3}, + [467] = {.lex_state = 3}, + [468] = {.lex_state = 3}, + [469] = {.lex_state = 3}, + [470] = {.lex_state = 3}, + [471] = {.lex_state = 3}, + [472] = {.lex_state = 3}, + [473] = {.lex_state = 3}, + [474] = {.lex_state = 3}, + [475] = {.lex_state = 3}, + [476] = {.lex_state = 3}, + [477] = {.lex_state = 3}, + [478] = {.lex_state = 3}, + [479] = {.lex_state = 3}, + [480] = {.lex_state = 3}, + [481] = {.lex_state = 3}, + [482] = {.lex_state = 3}, + [483] = {.lex_state = 3}, + [484] = {.lex_state = 3}, + [485] = {.lex_state = 3}, + [486] = {.lex_state = 3}, + [487] = {.lex_state = 3}, + [488] = {.lex_state = 3}, + [489] = {.lex_state = 3}, + [490] = {.lex_state = 3}, + [491] = {.lex_state = 3}, + [492] = {.lex_state = 3}, + [493] = {.lex_state = 3}, + [494] = {.lex_state = 3}, + [495] = {.lex_state = 3}, + [496] = {.lex_state = 3}, + [497] = {.lex_state = 3}, + [498] = {.lex_state = 3}, + [499] = {.lex_state = 3}, + [500] = {.lex_state = 3}, + [501] = {.lex_state = 3}, + [502] = {.lex_state = 3}, + [503] = {.lex_state = 3}, + [504] = {.lex_state = 3}, + [505] = {.lex_state = 3}, + [506] = {.lex_state = 3}, + [507] = {.lex_state = 3}, + [508] = {.lex_state = 3}, + [509] = {.lex_state = 3}, + [510] = {.lex_state = 3}, + [511] = {.lex_state = 3}, + [512] = {.lex_state = 3}, + [513] = {.lex_state = 3}, + [514] = {.lex_state = 3}, + [515] = {.lex_state = 3}, + [516] = {.lex_state = 3}, + [517] = {.lex_state = 3}, + [518] = {.lex_state = 3}, + [519] = {.lex_state = 3}, + [520] = {.lex_state = 3}, + [521] = {.lex_state = 3}, + [522] = {.lex_state = 3}, + [523] = {.lex_state = 3}, + [524] = {.lex_state = 3}, + [525] = {.lex_state = 3}, + [526] = {.lex_state = 3}, + [527] = {.lex_state = 3}, + [528] = {.lex_state = 3}, + [529] = {.lex_state = 3}, + [530] = {.lex_state = 3}, + [531] = {.lex_state = 3}, + [532] = {.lex_state = 3}, + [533] = {.lex_state = 3}, + [534] = {.lex_state = 3}, + [535] = {.lex_state = 3}, + [536] = {.lex_state = 3}, + [537] = {.lex_state = 3}, + [538] = {.lex_state = 3}, + [539] = {.lex_state = 3}, + [540] = {.lex_state = 3}, + [541] = {.lex_state = 3}, + [542] = {.lex_state = 3}, + [543] = {.lex_state = 3}, + [544] = {.lex_state = 3}, + [545] = {.lex_state = 3}, + [546] = {.lex_state = 3}, + [547] = {.lex_state = 3}, + [548] = {.lex_state = 3}, + [549] = {.lex_state = 3}, + [550] = {.lex_state = 3}, + [551] = {.lex_state = 3}, + [552] = {.lex_state = 3}, + [553] = {.lex_state = 3}, + [554] = {.lex_state = 3}, + [555] = {.lex_state = 3}, + [556] = {.lex_state = 3}, + [557] = {.lex_state = 3}, + [558] = {.lex_state = 3}, + [559] = {.lex_state = 3}, + [560] = {.lex_state = 3}, + [561] = {.lex_state = 3}, + [562] = {.lex_state = 3}, + [563] = {.lex_state = 3}, + [564] = {.lex_state = 3}, + [565] = {.lex_state = 3}, + [566] = {.lex_state = 3}, + [567] = {.lex_state = 3}, + [568] = {.lex_state = 3}, + [569] = {.lex_state = 3}, + [570] = {.lex_state = 3}, + [571] = {.lex_state = 3}, + [572] = {.lex_state = 3}, + [573] = {.lex_state = 3}, + [574] = {.lex_state = 3}, + [575] = {.lex_state = 3}, + [576] = {.lex_state = 3}, + [577] = {.lex_state = 3}, + [578] = {.lex_state = 3}, + [579] = {.lex_state = 3}, + [580] = {.lex_state = 3}, + [581] = {.lex_state = 3}, + [582] = {.lex_state = 3}, + [583] = {.lex_state = 3}, + [584] = {.lex_state = 3}, + [585] = {.lex_state = 3}, + [586] = {.lex_state = 3}, + [587] = {.lex_state = 3}, + [588] = {.lex_state = 3}, + [589] = {.lex_state = 3}, + [590] = {.lex_state = 3}, + [591] = {.lex_state = 3}, + [592] = {.lex_state = 3}, + [593] = {.lex_state = 3}, + [594] = {.lex_state = 3}, + [595] = {.lex_state = 3}, + [596] = {.lex_state = 3}, + [597] = {.lex_state = 3}, + [598] = {.lex_state = 3}, + [599] = {.lex_state = 3}, + [600] = {.lex_state = 3}, + [601] = {.lex_state = 3}, + [602] = {.lex_state = 3}, + [603] = {.lex_state = 3}, + [604] = {.lex_state = 3}, + [605] = {.lex_state = 3}, + [606] = {.lex_state = 3}, + [607] = {.lex_state = 3}, + [608] = {.lex_state = 3}, + [609] = {.lex_state = 3}, + [610] = {.lex_state = 3}, + [611] = {.lex_state = 3}, + [612] = {.lex_state = 3}, + [613] = {.lex_state = 3}, + [614] = {.lex_state = 3}, + [615] = {.lex_state = 3}, + [616] = {.lex_state = 3}, + [617] = {.lex_state = 3}, + [618] = {.lex_state = 3}, + [619] = {.lex_state = 3}, + [620] = {.lex_state = 3}, + [621] = {.lex_state = 3}, + [622] = {.lex_state = 3}, + [623] = {.lex_state = 3}, + [624] = {.lex_state = 3}, + [625] = {.lex_state = 3}, + [626] = {.lex_state = 3}, + [627] = {.lex_state = 3}, + [628] = {.lex_state = 3}, + [629] = {.lex_state = 3}, + [630] = {.lex_state = 3}, + [631] = {.lex_state = 3}, + [632] = {.lex_state = 3}, + [633] = {.lex_state = 3}, + [634] = {.lex_state = 3}, + [635] = {.lex_state = 3}, + [636] = {.lex_state = 3}, + [637] = {.lex_state = 3}, + [638] = {.lex_state = 3}, + [639] = {.lex_state = 3}, + [640] = {.lex_state = 3}, + [641] = {.lex_state = 3}, + [642] = {.lex_state = 3}, + [643] = {.lex_state = 3}, + [644] = {.lex_state = 3}, + [645] = {.lex_state = 3}, + [646] = {.lex_state = 3}, + [647] = {.lex_state = 3}, + [648] = {.lex_state = 3}, + [649] = {.lex_state = 3}, + [650] = {.lex_state = 3}, + [651] = {.lex_state = 3}, + [652] = {.lex_state = 3}, + [653] = {.lex_state = 3}, + [654] = {.lex_state = 3}, + [655] = {.lex_state = 3}, + [656] = {.lex_state = 3}, + [657] = {.lex_state = 3}, + [658] = {.lex_state = 3}, + [659] = {.lex_state = 3}, + [660] = {.lex_state = 3}, + [661] = {.lex_state = 3}, + [662] = {.lex_state = 3}, + [663] = {.lex_state = 3}, + [664] = {.lex_state = 3}, + [665] = {.lex_state = 3}, + [666] = {.lex_state = 3}, + [667] = {.lex_state = 3}, + [668] = {.lex_state = 3}, + [669] = {.lex_state = 3}, + [670] = {.lex_state = 3}, + [671] = {.lex_state = 3}, + [672] = {.lex_state = 3}, + [673] = {.lex_state = 3}, + [674] = {.lex_state = 3}, + [675] = {.lex_state = 3}, + [676] = {.lex_state = 3}, + [677] = {.lex_state = 3}, + [678] = {.lex_state = 3}, + [679] = {.lex_state = 3}, + [680] = {.lex_state = 3}, + [681] = {.lex_state = 3}, + [682] = {.lex_state = 3}, + [683] = {.lex_state = 3}, + [684] = {.lex_state = 3}, + [685] = {.lex_state = 3}, + [686] = {.lex_state = 3}, + [687] = {.lex_state = 3}, + [688] = {.lex_state = 3}, + [689] = {.lex_state = 3}, + [690] = {.lex_state = 3}, + [691] = {.lex_state = 3}, + [692] = {.lex_state = 3}, + [693] = {.lex_state = 3}, + [694] = {.lex_state = 3}, + [695] = {.lex_state = 3}, + [696] = {.lex_state = 3}, + [697] = {.lex_state = 3}, + [698] = {.lex_state = 3}, + [699] = {.lex_state = 3}, + [700] = {.lex_state = 3}, + [701] = {.lex_state = 3}, + [702] = {.lex_state = 3}, + [703] = {.lex_state = 3}, + [704] = {.lex_state = 3}, + [705] = {.lex_state = 3}, + [706] = {.lex_state = 3}, + [707] = {.lex_state = 3}, + [708] = {.lex_state = 3}, + [709] = {.lex_state = 3}, + [710] = {.lex_state = 3}, + [711] = {.lex_state = 3}, + [712] = {.lex_state = 3}, + [713] = {.lex_state = 3}, + [714] = {.lex_state = 3}, + [715] = {.lex_state = 3}, + [716] = {.lex_state = 3}, + [717] = {.lex_state = 3}, + [718] = {.lex_state = 3}, + [719] = {.lex_state = 3}, + [720] = {.lex_state = 3}, + [721] = {.lex_state = 3}, + [722] = {.lex_state = 3}, + [723] = {.lex_state = 3}, + [724] = {.lex_state = 3}, + [725] = {.lex_state = 3}, + [726] = {.lex_state = 3}, + [727] = {.lex_state = 3}, + [728] = {.lex_state = 3}, + [729] = {.lex_state = 3}, + [730] = {.lex_state = 3}, + [731] = {.lex_state = 3}, + [732] = {.lex_state = 3}, + [733] = {.lex_state = 3}, + [734] = {.lex_state = 3}, + [735] = {.lex_state = 3}, + [736] = {.lex_state = 3}, + [737] = {.lex_state = 3}, + [738] = {.lex_state = 3}, + [739] = {.lex_state = 3}, + [740] = {.lex_state = 3}, + [741] = {.lex_state = 3}, + [742] = {.lex_state = 3}, + [743] = {.lex_state = 3}, + [744] = {.lex_state = 3}, + [745] = {.lex_state = 3}, + [746] = {.lex_state = 3}, + [747] = {.lex_state = 3}, + [748] = {.lex_state = 3}, + [749] = {.lex_state = 3}, + [750] = {.lex_state = 3}, + [751] = {.lex_state = 3}, + [752] = {.lex_state = 3}, + [753] = {.lex_state = 3}, + [754] = {.lex_state = 3}, + [755] = {.lex_state = 3}, + [756] = {.lex_state = 3}, + [757] = {.lex_state = 3}, + [758] = {.lex_state = 3}, + [759] = {.lex_state = 3}, + [760] = {.lex_state = 3}, + [761] = {.lex_state = 3}, + [762] = {.lex_state = 3}, + [763] = {.lex_state = 3}, + [764] = {.lex_state = 3}, + [765] = {.lex_state = 3}, + [766] = {.lex_state = 3}, + [767] = {.lex_state = 3}, + [768] = {.lex_state = 3}, + [769] = {.lex_state = 3}, + [770] = {.lex_state = 3}, + [771] = {.lex_state = 3}, + [772] = {.lex_state = 3}, + [773] = {.lex_state = 3}, + [774] = {.lex_state = 3}, + [775] = {.lex_state = 3}, + [776] = {.lex_state = 3}, + [777] = {.lex_state = 3}, + [778] = {.lex_state = 3}, + [779] = {.lex_state = 3}, + [780] = {.lex_state = 13}, + [781] = {.lex_state = 13}, + [782] = {.lex_state = 13}, + [783] = {.lex_state = 13}, + [784] = {.lex_state = 13}, + [785] = {.lex_state = 13}, + [786] = {.lex_state = 13}, + [787] = {.lex_state = 13}, + [788] = {.lex_state = 13}, + [789] = {.lex_state = 13}, + [790] = {.lex_state = 13}, + [791] = {.lex_state = 13}, + [792] = {.lex_state = 13}, + [793] = {.lex_state = 13}, + [794] = {.lex_state = 13}, + [795] = {.lex_state = 13}, + [796] = {.lex_state = 13}, + [797] = {.lex_state = 13}, + [798] = {.lex_state = 13}, + [799] = {.lex_state = 13}, + [800] = {.lex_state = 13}, + [801] = {.lex_state = 13}, + [802] = {.lex_state = 13}, + [803] = {.lex_state = 13}, + [804] = {.lex_state = 13}, + [805] = {.lex_state = 13}, + [806] = {.lex_state = 13}, + [807] = {.lex_state = 13}, + [808] = {.lex_state = 13}, + [809] = {.lex_state = 13}, + [810] = {.lex_state = 13}, + [811] = {.lex_state = 13}, + [812] = {.lex_state = 13}, + [813] = {.lex_state = 13}, + [814] = {.lex_state = 13}, + [815] = {.lex_state = 13}, + [816] = {.lex_state = 13}, + [817] = {.lex_state = 13}, + [818] = {.lex_state = 13}, + [819] = {.lex_state = 13}, + [820] = {.lex_state = 13}, + [821] = {.lex_state = 13}, + [822] = {.lex_state = 13}, + [823] = {.lex_state = 13}, + [824] = {.lex_state = 13}, + [825] = {.lex_state = 13}, + [826] = {.lex_state = 13}, + [827] = {.lex_state = 13}, + [828] = {.lex_state = 13}, + [829] = {.lex_state = 13}, + [830] = {.lex_state = 13}, + [831] = {.lex_state = 13}, + [832] = {.lex_state = 13}, + [833] = {.lex_state = 13}, + [834] = {.lex_state = 13}, + [835] = {.lex_state = 2}, + [836] = {.lex_state = 2}, + [837] = {.lex_state = 2}, + [838] = {.lex_state = 2}, + [839] = {.lex_state = 2}, + [840] = {.lex_state = 2}, + [841] = {.lex_state = 2}, + [842] = {.lex_state = 2}, + [843] = {.lex_state = 2}, + [844] = {.lex_state = 2}, + [845] = {.lex_state = 2}, + [846] = {.lex_state = 2}, + [847] = {.lex_state = 2}, + [848] = {.lex_state = 2}, + [849] = {.lex_state = 2}, + [850] = {.lex_state = 2}, + [851] = {.lex_state = 2}, + [852] = {.lex_state = 3}, + [853] = {.lex_state = 3}, + [854] = {.lex_state = 3}, + [855] = {.lex_state = 3}, + [856] = {.lex_state = 3}, + [857] = {.lex_state = 3}, + [858] = {.lex_state = 3}, + [859] = {.lex_state = 3}, + [860] = {.lex_state = 13}, + [861] = {.lex_state = 3}, + [862] = {.lex_state = 3}, + [863] = {.lex_state = 3}, + [864] = {.lex_state = 3}, + [865] = {.lex_state = 3}, + [866] = {.lex_state = 3}, + [867] = {.lex_state = 13}, + [868] = {.lex_state = 3}, + [869] = {.lex_state = 13}, + [870] = {.lex_state = 3}, + [871] = {.lex_state = 3}, + [872] = {.lex_state = 3}, + [873] = {.lex_state = 3}, + [874] = {.lex_state = 3}, + [875] = {.lex_state = 3}, + [876] = {.lex_state = 3}, + [877] = {.lex_state = 3}, + [878] = {.lex_state = 3}, + [879] = {.lex_state = 3}, + [880] = {.lex_state = 3}, + [881] = {.lex_state = 3}, + [882] = {.lex_state = 3}, + [883] = {.lex_state = 3}, + [884] = {.lex_state = 13}, + [885] = {.lex_state = 3}, + [886] = {.lex_state = 13}, + [887] = {.lex_state = 3}, + [888] = {.lex_state = 13}, + [889] = {.lex_state = 3}, + [890] = {.lex_state = 3}, + [891] = {.lex_state = 3}, + [892] = {.lex_state = 3}, + [893] = {.lex_state = 3}, + [894] = {.lex_state = 3}, + [895] = {.lex_state = 3}, + [896] = {.lex_state = 3}, + [897] = {.lex_state = 13}, + [898] = {.lex_state = 3}, + [899] = {.lex_state = 3}, + [900] = {.lex_state = 13}, + [901] = {.lex_state = 13}, + [902] = {.lex_state = 3}, + [903] = {.lex_state = 13}, + [904] = {.lex_state = 13}, + [905] = {.lex_state = 13}, + [906] = {.lex_state = 13}, + [907] = {.lex_state = 13}, + [908] = {.lex_state = 13}, + [909] = {.lex_state = 13}, + [910] = {.lex_state = 13}, + [911] = {.lex_state = 13}, + [912] = {.lex_state = 13}, + [913] = {.lex_state = 13}, + [914] = {.lex_state = 13}, + [915] = {.lex_state = 3}, + [916] = {.lex_state = 13}, + [917] = {.lex_state = 3}, + [918] = {.lex_state = 13}, + [919] = {.lex_state = 13}, + [920] = {.lex_state = 13}, + [921] = {.lex_state = 13}, + [922] = {.lex_state = 3}, + [923] = {.lex_state = 13}, + [924] = {.lex_state = 13}, + [925] = {.lex_state = 13}, + [926] = {.lex_state = 3}, + [927] = {.lex_state = 13}, + [928] = {.lex_state = 3}, + [929] = {.lex_state = 13}, + [930] = {.lex_state = 13}, + [931] = {.lex_state = 13}, + [932] = {.lex_state = 13}, + [933] = {.lex_state = 3}, + [934] = {.lex_state = 13}, + [935] = {.lex_state = 3}, + [936] = {.lex_state = 13}, + [937] = {.lex_state = 13}, + [938] = {.lex_state = 3}, + [939] = {.lex_state = 3}, + [940] = {.lex_state = 3}, + [941] = {.lex_state = 3}, + [942] = {.lex_state = 13}, + [943] = {.lex_state = 13}, + [944] = {.lex_state = 13}, + [945] = {.lex_state = 13}, + [946] = {.lex_state = 13}, + [947] = {.lex_state = 13}, + [948] = {.lex_state = 13}, + [949] = {.lex_state = 13}, + [950] = {.lex_state = 13}, + [951] = {.lex_state = 13}, + [952] = {.lex_state = 13}, + [953] = {.lex_state = 13}, + [954] = {.lex_state = 13}, + [955] = {.lex_state = 13}, + [956] = {.lex_state = 13}, + [957] = {.lex_state = 13}, + [958] = {.lex_state = 13}, + [959] = {.lex_state = 13}, + [960] = {.lex_state = 13}, + [961] = {.lex_state = 13}, + [962] = {.lex_state = 13}, + [963] = {.lex_state = 13}, + [964] = {.lex_state = 13}, + [965] = {.lex_state = 13}, + [966] = {.lex_state = 13}, + [967] = {.lex_state = 13}, + [968] = {.lex_state = 13}, + [969] = {.lex_state = 13}, + [970] = {.lex_state = 13}, + [971] = {.lex_state = 13}, + [972] = {.lex_state = 13}, + [973] = {.lex_state = 13}, + [974] = {.lex_state = 13}, + [975] = {.lex_state = 13}, + [976] = {.lex_state = 13}, + [977] = {.lex_state = 13}, + [978] = {.lex_state = 13}, + [979] = {.lex_state = 13}, + [980] = {.lex_state = 13}, + [981] = {.lex_state = 13}, + [982] = {.lex_state = 13}, + [983] = {.lex_state = 13}, + [984] = {.lex_state = 13}, + [985] = {.lex_state = 13}, + [986] = {.lex_state = 13}, + [987] = {.lex_state = 3}, + [988] = {.lex_state = 0}, + [989] = {.lex_state = 0}, + [990] = {.lex_state = 3}, + [991] = {.lex_state = 0}, + [992] = {.lex_state = 0}, + [993] = {.lex_state = 3}, + [994] = {.lex_state = 0}, + [995] = {.lex_state = 0}, + [996] = {.lex_state = 3}, + [997] = {.lex_state = 0}, + [998] = {.lex_state = 0}, + [999] = {.lex_state = 0}, + [1000] = {.lex_state = 0}, + [1001] = {.lex_state = 0}, + [1002] = {.lex_state = 0}, + [1003] = {.lex_state = 3}, + [1004] = {.lex_state = 0}, + [1005] = {.lex_state = 3}, + [1006] = {.lex_state = 3}, + [1007] = {.lex_state = 3}, + [1008] = {.lex_state = 3}, + [1009] = {.lex_state = 3}, + [1010] = {.lex_state = 3}, + [1011] = {.lex_state = 3}, + [1012] = {.lex_state = 3}, + [1013] = {.lex_state = 3}, + [1014] = {.lex_state = 3}, + [1015] = {.lex_state = 3}, + [1016] = {.lex_state = 3}, + [1017] = {.lex_state = 3}, + [1018] = {.lex_state = 3}, + [1019] = {.lex_state = 3}, + [1020] = {.lex_state = 3}, + [1021] = {.lex_state = 3}, + [1022] = {.lex_state = 3}, + [1023] = {.lex_state = 3}, + [1024] = {.lex_state = 3}, + [1025] = {.lex_state = 3}, + [1026] = {.lex_state = 3}, + [1027] = {.lex_state = 3}, + [1028] = {.lex_state = 3}, + [1029] = {.lex_state = 3}, + [1030] = {.lex_state = 3}, + [1031] = {.lex_state = 3}, + [1032] = {.lex_state = 3}, + [1033] = {.lex_state = 3}, + [1034] = {.lex_state = 3}, + [1035] = {.lex_state = 3}, + [1036] = {.lex_state = 3}, + [1037] = {.lex_state = 3}, + [1038] = {.lex_state = 3}, + [1039] = {.lex_state = 3}, + [1040] = {.lex_state = 3}, + [1041] = {.lex_state = 3}, + [1042] = {.lex_state = 3}, + [1043] = {.lex_state = 3}, + [1044] = {.lex_state = 3}, + [1045] = {.lex_state = 3}, + [1046] = {.lex_state = 3}, + [1047] = {.lex_state = 3}, + [1048] = {.lex_state = 3}, + [1049] = {.lex_state = 3}, + [1050] = {.lex_state = 3}, + [1051] = {.lex_state = 3}, + [1052] = {.lex_state = 3}, + [1053] = {.lex_state = 3}, + [1054] = {.lex_state = 3}, + [1055] = {.lex_state = 3}, + [1056] = {.lex_state = 3}, + [1057] = {.lex_state = 3}, + [1058] = {.lex_state = 3}, + [1059] = {.lex_state = 3}, + [1060] = {.lex_state = 3}, + [1061] = {.lex_state = 3}, + [1062] = {.lex_state = 3}, + [1063] = {.lex_state = 3}, + [1064] = {.lex_state = 3}, + [1065] = {.lex_state = 3}, + [1066] = {.lex_state = 3}, + [1067] = {.lex_state = 3}, + [1068] = {.lex_state = 3}, + [1069] = {.lex_state = 3}, + [1070] = {.lex_state = 3}, + [1071] = {.lex_state = 3}, + [1072] = {.lex_state = 3}, + [1073] = {.lex_state = 3}, + [1074] = {.lex_state = 3}, + [1075] = {.lex_state = 3}, + [1076] = {.lex_state = 3}, + [1077] = {.lex_state = 3}, + [1078] = {.lex_state = 3}, + [1079] = {.lex_state = 0}, + [1080] = {.lex_state = 0}, + [1081] = {.lex_state = 0}, + [1082] = {.lex_state = 0}, + [1083] = {.lex_state = 0}, + [1084] = {.lex_state = 0}, + [1085] = {.lex_state = 0}, + [1086] = {.lex_state = 0}, + [1087] = {.lex_state = 0}, + [1088] = {.lex_state = 0}, + [1089] = {.lex_state = 0}, + [1090] = {.lex_state = 0}, + [1091] = {.lex_state = 0}, + [1092] = {.lex_state = 0}, + [1093] = {.lex_state = 0}, + [1094] = {.lex_state = 0}, + [1095] = {.lex_state = 0}, + [1096] = {.lex_state = 0}, + [1097] = {.lex_state = 0}, + [1098] = {.lex_state = 0}, + [1099] = {.lex_state = 0}, + [1100] = {.lex_state = 0}, + [1101] = {.lex_state = 0}, + [1102] = {.lex_state = 0}, + [1103] = {.lex_state = 0}, + [1104] = {.lex_state = 0}, + [1105] = {.lex_state = 0}, + [1106] = {.lex_state = 0}, + [1107] = {.lex_state = 0}, + [1108] = {.lex_state = 0}, + [1109] = {.lex_state = 0}, + [1110] = {.lex_state = 0}, + [1111] = {.lex_state = 0}, + [1112] = {.lex_state = 0}, + [1113] = {.lex_state = 0}, + [1114] = {.lex_state = 0}, + [1115] = {.lex_state = 0}, + [1116] = {.lex_state = 0}, + [1117] = {.lex_state = 0}, + [1118] = {.lex_state = 0}, + [1119] = {.lex_state = 0}, + [1120] = {.lex_state = 0}, + [1121] = {.lex_state = 0}, + [1122] = {.lex_state = 0}, + [1123] = {.lex_state = 0}, + [1124] = {.lex_state = 0}, + [1125] = {.lex_state = 0}, + [1126] = {.lex_state = 0}, + [1127] = {.lex_state = 0}, + [1128] = {.lex_state = 0}, + [1129] = {.lex_state = 0}, + [1130] = {.lex_state = 0}, + [1131] = {.lex_state = 0}, + [1132] = {.lex_state = 0}, + [1133] = {.lex_state = 0}, + [1134] = {.lex_state = 0}, + [1135] = {.lex_state = 0}, + [1136] = {.lex_state = 0}, + [1137] = {.lex_state = 0}, + [1138] = {.lex_state = 0}, + [1139] = {.lex_state = 0}, + [1140] = {.lex_state = 0}, + [1141] = {.lex_state = 0}, + [1142] = {.lex_state = 0}, + [1143] = {.lex_state = 0}, + [1144] = {.lex_state = 0}, + [1145] = {.lex_state = 0}, + [1146] = {.lex_state = 0}, + [1147] = {.lex_state = 0}, + [1148] = {.lex_state = 0}, + [1149] = {.lex_state = 13}, + [1150] = {.lex_state = 0}, + [1151] = {.lex_state = 0}, + [1152] = {.lex_state = 0}, + [1153] = {.lex_state = 0}, + [1154] = {.lex_state = 0}, + [1155] = {.lex_state = 0}, + [1156] = {.lex_state = 0}, + [1157] = {.lex_state = 0}, + [1158] = {.lex_state = 0}, + [1159] = {.lex_state = 0}, + [1160] = {.lex_state = 0}, + [1161] = {.lex_state = 0}, + [1162] = {.lex_state = 0}, + [1163] = {.lex_state = 0}, + [1164] = {.lex_state = 0}, + [1165] = {.lex_state = 0}, + [1166] = {.lex_state = 0}, + [1167] = {.lex_state = 0}, + [1168] = {.lex_state = 0}, + [1169] = {.lex_state = 4}, + [1170] = {.lex_state = 4}, + [1171] = {.lex_state = 4}, + [1172] = {.lex_state = 4}, + [1173] = {.lex_state = 4}, + [1174] = {.lex_state = 0}, + [1175] = {.lex_state = 0}, + [1176] = {.lex_state = 0}, + [1177] = {.lex_state = 0}, + [1178] = {.lex_state = 0}, + [1179] = {.lex_state = 13}, + [1180] = {.lex_state = 13}, + [1181] = {.lex_state = 13}, + [1182] = {.lex_state = 0}, + [1183] = {.lex_state = 0}, + [1184] = {.lex_state = 0}, + [1185] = {.lex_state = 0}, + [1186] = {.lex_state = 13}, + [1187] = {.lex_state = 13}, + [1188] = {.lex_state = 13}, + [1189] = {.lex_state = 0}, + [1190] = {.lex_state = 13}, + [1191] = {.lex_state = 13}, + [1192] = {.lex_state = 0}, + [1193] = {.lex_state = 0}, + [1194] = {.lex_state = 13}, + [1195] = {.lex_state = 13}, + [1196] = {.lex_state = 13}, + [1197] = {.lex_state = 13}, + [1198] = {.lex_state = 13}, + [1199] = {.lex_state = 0}, + [1200] = {.lex_state = 13}, + [1201] = {.lex_state = 13}, + [1202] = {.lex_state = 0}, + [1203] = {.lex_state = 0}, + [1204] = {.lex_state = 13}, + [1205] = {.lex_state = 13}, + [1206] = {.lex_state = 0}, + [1207] = {.lex_state = 0}, + [1208] = {.lex_state = 13}, + [1209] = {.lex_state = 13}, + [1210] = {.lex_state = 13}, + [1211] = {.lex_state = 6}, + [1212] = {.lex_state = 0}, + [1213] = {.lex_state = 0}, + [1214] = {.lex_state = 0}, + [1215] = {.lex_state = 13}, + [1216] = {.lex_state = 13}, + [1217] = {.lex_state = 13}, + [1218] = {.lex_state = 13}, + [1219] = {.lex_state = 13}, + [1220] = {.lex_state = 0}, + [1221] = {.lex_state = 13}, + [1222] = {.lex_state = 0}, + [1223] = {.lex_state = 0}, + [1224] = {.lex_state = 13}, + [1225] = {.lex_state = 0}, + [1226] = {.lex_state = 0}, + [1227] = {.lex_state = 13}, + [1228] = {.lex_state = 0}, + [1229] = {.lex_state = 0}, + [1230] = {.lex_state = 13}, + [1231] = {.lex_state = 0}, + [1232] = {.lex_state = 0}, + [1233] = {.lex_state = 0}, + [1234] = {.lex_state = 0}, + [1235] = {.lex_state = 13}, + [1236] = {.lex_state = 0}, + [1237] = {.lex_state = 0}, + [1238] = {.lex_state = 0}, + [1239] = {.lex_state = 13}, + [1240] = {.lex_state = 0}, + [1241] = {.lex_state = 0}, + [1242] = {.lex_state = 13}, + [1243] = {.lex_state = 0}, + [1244] = {.lex_state = 13}, + [1245] = {.lex_state = 13}, + [1246] = {.lex_state = 0}, + [1247] = {.lex_state = 0}, + [1248] = {.lex_state = 13}, + [1249] = {.lex_state = 13}, + [1250] = {.lex_state = 0}, + [1251] = {.lex_state = 13}, + [1252] = {.lex_state = 13}, + [1253] = {.lex_state = 0}, + [1254] = {.lex_state = 5}, + [1255] = {.lex_state = 0}, + [1256] = {.lex_state = 0}, + [1257] = {.lex_state = 13}, + [1258] = {.lex_state = 0}, + [1259] = {.lex_state = 13}, + [1260] = {.lex_state = 0}, + [1261] = {.lex_state = 0}, + [1262] = {.lex_state = 13}, + [1263] = {.lex_state = 0}, + [1264] = {.lex_state = 13}, + [1265] = {.lex_state = 13}, + [1266] = {.lex_state = 0}, + [1267] = {.lex_state = 0}, + [1268] = {.lex_state = 13}, + [1269] = {.lex_state = 0}, + [1270] = {.lex_state = 13}, + [1271] = {.lex_state = 0}, + [1272] = {.lex_state = 13}, + [1273] = {.lex_state = 13}, + [1274] = {.lex_state = 0}, + [1275] = {.lex_state = 0}, + [1276] = {.lex_state = 13}, + [1277] = {.lex_state = 0}, + [1278] = {.lex_state = 13}, + [1279] = {.lex_state = 13}, + [1280] = {.lex_state = 0}, + [1281] = {.lex_state = 0}, + [1282] = {.lex_state = 0}, + [1283] = {.lex_state = 13}, + [1284] = {.lex_state = 13}, + [1285] = {.lex_state = 0}, + [1286] = {.lex_state = 13}, + [1287] = {.lex_state = 13}, + [1288] = {.lex_state = 0}, + [1289] = {.lex_state = 13}, + [1290] = {.lex_state = 0}, + [1291] = {.lex_state = 0}, + [1292] = {.lex_state = 0}, + [1293] = {.lex_state = 0}, + [1294] = {.lex_state = 0}, + [1295] = {.lex_state = 0}, + [1296] = {.lex_state = 0}, + [1297] = {.lex_state = 0}, + [1298] = {.lex_state = 0}, + [1299] = {.lex_state = 0}, + [1300] = {.lex_state = 0}, + [1301] = {.lex_state = 6}, + [1302] = {.lex_state = 0}, + [1303] = {.lex_state = 0}, + [1304] = {.lex_state = 0}, + [1305] = {.lex_state = 0}, + [1306] = {.lex_state = 0}, + [1307] = {.lex_state = 0}, + [1308] = {.lex_state = 0}, + [1309] = {.lex_state = 0}, + [1310] = {.lex_state = 0}, + [1311] = {.lex_state = 0}, + [1312] = {.lex_state = 0}, + [1313] = {.lex_state = 0}, + [1314] = {.lex_state = 0}, + [1315] = {.lex_state = 0}, + [1316] = {.lex_state = 0}, + [1317] = {.lex_state = 0}, + [1318] = {.lex_state = 0}, + [1319] = {.lex_state = 0}, + [1320] = {.lex_state = 0}, + [1321] = {.lex_state = 0}, + [1322] = {.lex_state = 0}, + [1323] = {.lex_state = 0}, + [1324] = {.lex_state = 0}, + [1325] = {.lex_state = 0}, + [1326] = {.lex_state = 0}, + [1327] = {.lex_state = 0}, + [1328] = {.lex_state = 0}, + [1329] = {.lex_state = 0}, + [1330] = {.lex_state = 0}, + [1331] = {.lex_state = 0}, + [1332] = {.lex_state = 0}, + [1333] = {.lex_state = 0}, + [1334] = {.lex_state = 0}, + [1335] = {.lex_state = 0}, + [1336] = {.lex_state = 0}, + [1337] = {.lex_state = 0}, + [1338] = {.lex_state = 0}, + [1339] = {.lex_state = 0}, + [1340] = {.lex_state = 0}, + [1341] = {.lex_state = 0}, + [1342] = {.lex_state = 0}, + [1343] = {.lex_state = 4}, + [1344] = {.lex_state = 0}, + [1345] = {.lex_state = 0}, + [1346] = {.lex_state = 0}, + [1347] = {.lex_state = 0}, + [1348] = {.lex_state = 4}, + [1349] = {.lex_state = 0}, + [1350] = {.lex_state = 0}, + [1351] = {.lex_state = 0}, + [1352] = {.lex_state = 0}, + [1353] = {.lex_state = 0}, + [1354] = {.lex_state = 0}, + [1355] = {.lex_state = 6}, + [1356] = {.lex_state = 0}, + [1357] = {.lex_state = 0}, + [1358] = {.lex_state = 0}, + [1359] = {.lex_state = 0}, + [1360] = {.lex_state = 0}, + [1361] = {.lex_state = 0}, + [1362] = {.lex_state = 4}, + [1363] = {.lex_state = 4}, + [1364] = {.lex_state = 0}, + [1365] = {.lex_state = 0}, + [1366] = {.lex_state = 13}, + [1367] = {.lex_state = 0}, + [1368] = {.lex_state = 0}, + [1369] = {.lex_state = 0}, + [1370] = {.lex_state = 0}, + [1371] = {.lex_state = 0}, + [1372] = {.lex_state = 0}, + [1373] = {.lex_state = 0}, + [1374] = {.lex_state = 3}, + [1375] = {.lex_state = 0}, + [1376] = {.lex_state = 0}, + [1377] = {.lex_state = 0}, + [1378] = {.lex_state = 0}, + [1379] = {.lex_state = 0}, + [1380] = {.lex_state = 3}, + [1381] = {.lex_state = 0}, + [1382] = {.lex_state = 0}, + [1383] = {.lex_state = 0}, + [1384] = {.lex_state = 0}, + [1385] = {.lex_state = 0}, + [1386] = {.lex_state = 0}, + [1387] = {.lex_state = 0}, + [1388] = {.lex_state = 0}, + [1389] = {.lex_state = 0}, + [1390] = {.lex_state = 0}, + [1391] = {.lex_state = 0}, + [1392] = {.lex_state = 0}, + [1393] = {.lex_state = 3}, + [1394] = {.lex_state = 0}, + [1395] = {.lex_state = 0}, + [1396] = {.lex_state = 0}, + [1397] = {.lex_state = 0}, + [1398] = {.lex_state = 0}, + [1399] = {.lex_state = 13}, + [1400] = {.lex_state = 0}, + [1401] = {.lex_state = 0}, + [1402] = {.lex_state = 0}, + [1403] = {.lex_state = 0}, + [1404] = {.lex_state = 0}, + [1405] = {.lex_state = 0}, + [1406] = {.lex_state = 0}, + [1407] = {.lex_state = 0}, + [1408] = {.lex_state = 0}, + [1409] = {.lex_state = 0}, + [1410] = {.lex_state = 0}, + [1411] = {.lex_state = 0}, + [1412] = {.lex_state = 0}, + [1413] = {.lex_state = 0}, + [1414] = {.lex_state = 0}, + [1415] = {.lex_state = 0}, + [1416] = {.lex_state = 0}, + [1417] = {.lex_state = 0}, + [1418] = {.lex_state = 0}, + [1419] = {.lex_state = 0}, + [1420] = {.lex_state = 0}, + [1421] = {.lex_state = 0}, + [1422] = {.lex_state = 0}, + [1423] = {.lex_state = 0}, + [1424] = {.lex_state = 0}, + [1425] = {.lex_state = 0}, + [1426] = {.lex_state = 0}, + [1427] = {.lex_state = 0}, + [1428] = {.lex_state = 0}, + [1429] = {.lex_state = 0}, + [1430] = {.lex_state = 0}, + [1431] = {.lex_state = 0}, + [1432] = {.lex_state = 0}, + [1433] = {.lex_state = 0}, + [1434] = {.lex_state = 0}, + [1435] = {.lex_state = 0}, + [1436] = {.lex_state = 0}, + [1437] = {.lex_state = 0}, + [1438] = {.lex_state = 0}, + [1439] = {.lex_state = 0}, + [1440] = {.lex_state = 0}, + [1441] = {.lex_state = 0}, + [1442] = {.lex_state = 13}, + [1443] = {.lex_state = 0}, + [1444] = {.lex_state = 0}, + [1445] = {.lex_state = 0}, + [1446] = {.lex_state = 13}, + [1447] = {.lex_state = 0}, + [1448] = {.lex_state = 0}, + [1449] = {.lex_state = 0}, + [1450] = {.lex_state = 0}, + [1451] = {.lex_state = 0}, + [1452] = {.lex_state = 0}, + [1453] = {.lex_state = 0}, + [1454] = {.lex_state = 0}, + [1455] = {.lex_state = 0}, + [1456] = {.lex_state = 0}, + [1457] = {.lex_state = 0}, + [1458] = {.lex_state = 0}, + [1459] = {.lex_state = 0}, + [1460] = {.lex_state = 0}, + [1461] = {.lex_state = 0}, + [1462] = {.lex_state = 0}, + [1463] = {.lex_state = 0}, + [1464] = {.lex_state = 13}, + [1465] = {.lex_state = 0}, + [1466] = {.lex_state = 0}, + [1467] = {.lex_state = 0}, + [1468] = {.lex_state = 0}, + [1469] = {.lex_state = 0}, + [1470] = {.lex_state = 0}, + [1471] = {.lex_state = 0}, + [1472] = {.lex_state = 0}, + [1473] = {.lex_state = 0}, + [1474] = {.lex_state = 0}, + [1475] = {.lex_state = 0}, + [1476] = {.lex_state = 0}, + [1477] = {.lex_state = 0}, + [1478] = {.lex_state = 0}, + [1479] = {.lex_state = 0}, + [1480] = {.lex_state = 0}, + [1481] = {.lex_state = 0}, + [1482] = {.lex_state = 0}, + [1483] = {.lex_state = 0}, + [1484] = {.lex_state = 0}, + [1485] = {.lex_state = 13}, + [1486] = {.lex_state = 0}, + [1487] = {.lex_state = 0}, + [1488] = {.lex_state = 0}, + [1489] = {.lex_state = 0}, + [1490] = {.lex_state = 0}, + [1491] = {.lex_state = 0}, + [1492] = {.lex_state = 0}, + [1493] = {.lex_state = 0}, + [1494] = {.lex_state = 0}, + [1495] = {.lex_state = 0}, + [1496] = {.lex_state = 0}, + [1497] = {.lex_state = 0}, + [1498] = {.lex_state = 0}, + [1499] = {.lex_state = 0}, + [1500] = {.lex_state = 0}, + [1501] = {.lex_state = 0}, + [1502] = {.lex_state = 0}, + [1503] = {.lex_state = 0}, + [1504] = {.lex_state = 0}, + [1505] = {.lex_state = 0}, + [1506] = {.lex_state = 0}, + [1507] = {.lex_state = 0}, + [1508] = {.lex_state = 0}, + [1509] = {.lex_state = 0}, + [1510] = {.lex_state = 0}, + [1511] = {.lex_state = 0}, + [1512] = {.lex_state = 0}, + [1513] = {.lex_state = 0}, + [1514] = {.lex_state = 0}, + [1515] = {.lex_state = 0}, + [1516] = {.lex_state = 0}, + [1517] = {.lex_state = 0}, + [1518] = {.lex_state = 0}, + [1519] = {.lex_state = 0}, + [1520] = {.lex_state = 0}, + [1521] = {.lex_state = 0}, + [1522] = {.lex_state = 0}, + [1523] = {.lex_state = 0}, + [1524] = {.lex_state = 39}, + [1525] = {.lex_state = 0}, + [1526] = {.lex_state = 0}, + [1527] = {.lex_state = 0}, + [1528] = {.lex_state = 0}, + [1529] = {.lex_state = 0}, + [1530] = {.lex_state = 0}, + [1531] = {.lex_state = 0}, + [1532] = {.lex_state = 0}, + [1533] = {.lex_state = 0}, + [1534] = {.lex_state = 0}, + [1535] = {.lex_state = 0}, + [1536] = {.lex_state = 0}, + [1537] = {.lex_state = 0}, + [1538] = {.lex_state = 0}, + [1539] = {.lex_state = 0}, + [1540] = {.lex_state = 0}, + [1541] = {.lex_state = 0}, + [1542] = {.lex_state = 0}, + [1543] = {.lex_state = 0}, + [1544] = {.lex_state = 0}, + [1545] = {.lex_state = 0}, + [1546] = {.lex_state = 0}, + [1547] = {.lex_state = 0}, + [1548] = {.lex_state = 0}, + [1549] = {.lex_state = 0}, + [1550] = {.lex_state = 0}, + [1551] = {.lex_state = 0}, + [1552] = {.lex_state = 0}, + [1553] = {.lex_state = 0}, + [1554] = {.lex_state = 0}, + [1555] = {.lex_state = 0}, + [1556] = {.lex_state = 0}, + [1557] = {.lex_state = 0}, + [1558] = {.lex_state = 0}, + [1559] = {.lex_state = 0}, + [1560] = {.lex_state = 13}, + [1561] = {.lex_state = 0}, + [1562] = {.lex_state = 0}, + [1563] = {.lex_state = 0}, + [1564] = {.lex_state = 0}, + [1565] = {.lex_state = 0}, + [1566] = {.lex_state = 0}, + [1567] = {.lex_state = 0}, + [1568] = {.lex_state = 0}, + [1569] = {.lex_state = 0}, + [1570] = {.lex_state = 0}, + [1571] = {.lex_state = 0}, + [1572] = {.lex_state = 0}, + [1573] = {.lex_state = 0}, + [1574] = {.lex_state = 0}, + [1575] = {.lex_state = 0}, + [1576] = {.lex_state = 0}, + [1577] = {.lex_state = 0}, + [1578] = {.lex_state = 0}, + [1579] = {.lex_state = 0}, + [1580] = {.lex_state = 0}, + [1581] = {.lex_state = 0}, + [1582] = {.lex_state = 0}, + [1583] = {.lex_state = 0}, + [1584] = {.lex_state = 39}, + [1585] = {.lex_state = 0}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [ts_builtin_sym_end] = ACTIONS(1), + [sym_name] = ACTIONS(1), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [sym_index] = ACTIONS(1), + [anon_sym_AT] = ACTIONS(1), + [anon_sym_LBRACE] = ACTIONS(1), + [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_COLON] = ACTIONS(1), + [sym_constant_int] = ACTIONS(1), + [sym_string_quote] = ACTIONS(1), + [anon_sym_DOLLAR] = ACTIONS(1), + [anon_sym_SQUOTE] = ACTIONS(1), + [anon_sym_true] = ACTIONS(1), + [anon_sym_false] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_def] = ACTIONS(1), + [anon_sym_LBRACK] = ACTIONS(1), + [anon_sym_RBRACK] = ACTIONS(1), + [anon_sym_EQ] = ACTIONS(1), + [anon_sym_SEMI] = ACTIONS(1), + [anon_sym_type] = ACTIONS(1), + [anon_sym_enum] = ACTIONS(1), + [anon_sym_struct] = ACTIONS(1), + [anon_sym_val] = ACTIONS(1), + [anon_sym_var] = ACTIONS(1), + [anon_sym_rust] = ACTIONS(1), + [anon_sym_python] = ACTIONS(1), + [anon_sym_mod] = ACTIONS(1), + [anon_sym_use] = ACTIONS(1), + [anon_sym_fun] = ACTIONS(1), + [anon_sym_AMP] = ACTIONS(1), + [sym_type_never] = ACTIONS(1), + [anon_sym__] = ACTIONS(1), + [anon_sym_or] = ACTIONS(1), + [anon_sym_return] = ACTIONS(1), + [anon_sym_break] = ACTIONS(1), + [anon_sym_continue] = ACTIONS(1), + [anon_sym_throw] = ACTIONS(1), + [anon_sym_from] = ACTIONS(1), + [anon_sym_in] = ACTIONS(1), + [anon_sym_where] = ACTIONS(1), + [anon_sym_join] = ACTIONS(1), + [anon_sym_on] = ACTIONS(1), + [anon_sym_union] = ACTIONS(1), + [anon_sym_group] = ACTIONS(1), + [anon_sym_over] = ACTIONS(1), + [anon_sym_roll] = ACTIONS(1), + [anon_sym_compute] = ACTIONS(1), + [anon_sym_select] = ACTIONS(1), + [anon_sym_with] = ACTIONS(1), + [anon_sym_into] = ACTIONS(1), + [anon_sym_order] = ACTIONS(1), + [anon_sym_desc] = ACTIONS(1), + [anon_sym_as] = ACTIONS(1), + [anon_sym_of] = ACTIONS(1), + [anon_sym_PLUS_EQ] = ACTIONS(1), + [anon_sym_DASH_EQ] = ACTIONS(1), + [anon_sym_STAR_EQ] = ACTIONS(1), + [anon_sym_SLASH_EQ] = ACTIONS(1), + [anon_sym_DOT_DOT] = ACTIONS(1), + [anon_sym_DOT_DOT_EQ] = ACTIONS(1), + [anon_sym_and] = ACTIONS(1), + [anon_sym_EQ_EQ] = ACTIONS(1), + [anon_sym_LT] = ACTIONS(1), + [anon_sym_GT] = ACTIONS(1), + [anon_sym_LT_EQ] = ACTIONS(1), + [anon_sym_GT_EQ] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [anon_sym_STAR] = ACTIONS(1), + [anon_sym_SLASH] = ACTIONS(1), + [anon_sym_not] = ACTIONS(1), + [anon_sym_COLON_COLON] = ACTIONS(1), + [anon_sym_DOT] = ACTIONS(1), + [anon_sym_do] = ACTIONS(1), + [anon_sym_if] = ACTIONS(1), + [anon_sym_else] = ACTIONS(1), + [anon_sym_match] = ACTIONS(1), + [anon_sym_loop] = ACTIONS(1), + [anon_sym_while] = ACTIONS(1), + [anon_sym_for] = ACTIONS(1), + [anon_sym_try] = ACTIONS(1), + [anon_sym_catch] = ACTIONS(1), + [anon_sym_finally] = ACTIONS(1), + [anon_sym_EQ_GT] = ACTIONS(1), + }, + [1] = { + [sym_program] = STATE(1566), + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(36), + [sym__stmt] = STATE(36), + [sym_stmt_def] = STATE(36), + [sym_stmt_type] = STATE(36), + [sym_stmt_enum] = STATE(36), + [sym_stmt_struct] = STATE(36), + [sym_stmt_val] = STATE(36), + [sym_stmt_var] = STATE(36), + [sym_stmt_expr] = STATE(36), + [sym_stmt_code] = STATE(36), + [sym_stmt_mod] = STATE(36), + [sym_stmt_use] = STATE(36), + [sym__stmt_noop] = STATE(36), + [sym__expr] = STATE(1050), + [sym_expr_return] = STATE(1050), + [sym_expr_break] = STATE(1050), + [sym_expr_continue] = STATE(1050), + [sym_expr_throw] = STATE(1050), + [sym_expr_query] = STATE(1050), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1050), + [sym_expr_binary] = STATE(1050), + [sym_expr_annot] = STATE(1050), + [sym_expr_call] = STATE(1050), + [sym_expr_tuple_access] = STATE(1050), + [sym_expr_record_access] = STATE(1050), + [sym_expr_array_access] = STATE(1050), + [sym_expr_method_call] = STATE(1050), + [sym_expr_record_variant] = STATE(1050), + [sym_expr_paren] = STATE(1050), + [sym_expr_constant] = STATE(1050), + [sym_expr_name] = STATE(1050), + [sym_expr_array] = STATE(1050), + [sym_expr_tuple] = STATE(1050), + [sym_expr_record] = STATE(1050), + [sym_expr_do] = STATE(1050), + [sym_expr_if] = STATE(1050), + [sym_expr_match] = STATE(1050), + [sym_expr_loop] = STATE(1050), + [sym_expr_while] = STATE(1050), + [sym_expr_for] = STATE(1050), + [sym_expr_try] = STATE(1050), + [ts_builtin_sym_end] = ACTIONS(5), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(29), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [2] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(545), + [sym_expr_return] = STATE(545), + [sym_expr_break] = STATE(545), + [sym_expr_continue] = STATE(545), + [sym_expr_throw] = STATE(545), + [sym_expr_query] = STATE(545), + [sym_query_from] = STATE(67), + [sym_expr_fun] = STATE(545), + [sym_expr_binary] = STATE(545), + [sym_expr_annot] = STATE(545), + [sym_expr_call] = STATE(545), + [sym_expr_tuple_access] = STATE(545), + [sym_expr_record_access] = STATE(545), + [sym_expr_array_access] = STATE(545), + [sym_expr_method_call] = STATE(545), + [sym_expr_record_variant] = STATE(545), + [sym_expr_paren] = STATE(545), + [sym_expr_constant] = STATE(545), + [sym_expr_name] = STATE(545), + [sym_expr_array] = STATE(545), + [sym_expr_tuple] = STATE(545), + [sym_expr_record] = STATE(545), + [sym_expr_do] = STATE(545), + [sym_expr_if] = STATE(545), + [sym_expr_match] = STATE(545), + [sym_expr_loop] = STATE(545), + [sym_expr_while] = STATE(545), + [sym_expr_for] = STATE(545), + [sym_expr_try] = STATE(545), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(91), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(93), + [anon_sym_break] = ACTIONS(95), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(99), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_on] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_desc] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_of] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [3] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(541), + [sym_expr_return] = STATE(541), + [sym_expr_break] = STATE(541), + [sym_expr_continue] = STATE(541), + [sym_expr_throw] = STATE(541), + [sym_expr_query] = STATE(541), + [sym_query_from] = STATE(67), + [sym_expr_fun] = STATE(541), + [sym_expr_binary] = STATE(541), + [sym_expr_annot] = STATE(541), + [sym_expr_call] = STATE(541), + [sym_expr_tuple_access] = STATE(541), + [sym_expr_record_access] = STATE(541), + [sym_expr_array_access] = STATE(541), + [sym_expr_method_call] = STATE(541), + [sym_expr_record_variant] = STATE(541), + [sym_expr_paren] = STATE(541), + [sym_expr_constant] = STATE(541), + [sym_expr_name] = STATE(541), + [sym_expr_array] = STATE(541), + [sym_expr_tuple] = STATE(541), + [sym_expr_record] = STATE(541), + [sym_expr_do] = STATE(541), + [sym_expr_if] = STATE(541), + [sym_expr_match] = STATE(541), + [sym_expr_loop] = STATE(541), + [sym_expr_while] = STATE(541), + [sym_expr_for] = STATE(541), + [sym_expr_try] = STATE(541), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(91), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(93), + [anon_sym_break] = ACTIONS(95), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(99), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_on] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_desc] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_of] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [4] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(564), + [sym_expr_return] = STATE(564), + [sym_expr_break] = STATE(564), + [sym_expr_continue] = STATE(564), + [sym_expr_throw] = STATE(564), + [sym_expr_query] = STATE(564), + [sym_query_from] = STATE(75), + [sym_expr_fun] = STATE(564), + [sym_expr_binary] = STATE(564), + [sym_expr_annot] = STATE(564), + [sym_expr_call] = STATE(564), + [sym_expr_tuple_access] = STATE(564), + [sym_expr_record_access] = STATE(564), + [sym_expr_array_access] = STATE(564), + [sym_expr_method_call] = STATE(564), + [sym_expr_record_variant] = STATE(564), + [sym_expr_paren] = STATE(564), + [sym_expr_constant] = STATE(564), + [sym_expr_name] = STATE(564), + [sym_expr_array] = STATE(564), + [sym_expr_tuple] = STATE(564), + [sym_expr_record] = STATE(564), + [sym_expr_do] = STATE(564), + [sym_expr_if] = STATE(564), + [sym_expr_match] = STATE(564), + [sym_expr_loop] = STATE(564), + [sym_expr_while] = STATE(564), + [sym_expr_for] = STATE(564), + [sym_expr_try] = STATE(564), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(119), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(121), + [anon_sym_break] = ACTIONS(123), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(125), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_on] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_desc] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [5] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(553), + [sym_expr_return] = STATE(553), + [sym_expr_break] = STATE(553), + [sym_expr_continue] = STATE(553), + [sym_expr_throw] = STATE(553), + [sym_expr_query] = STATE(553), + [sym_query_from] = STATE(71), + [sym_expr_fun] = STATE(553), + [sym_expr_binary] = STATE(553), + [sym_expr_annot] = STATE(553), + [sym_expr_call] = STATE(553), + [sym_expr_tuple_access] = STATE(553), + [sym_expr_record_access] = STATE(553), + [sym_expr_array_access] = STATE(553), + [sym_expr_method_call] = STATE(553), + [sym_expr_record_variant] = STATE(553), + [sym_expr_paren] = STATE(553), + [sym_expr_constant] = STATE(553), + [sym_expr_name] = STATE(553), + [sym_expr_array] = STATE(553), + [sym_expr_tuple] = STATE(553), + [sym_expr_record] = STATE(553), + [sym_expr_do] = STATE(553), + [sym_expr_if] = STATE(553), + [sym_expr_match] = STATE(553), + [sym_expr_loop] = STATE(553), + [sym_expr_while] = STATE(553), + [sym_expr_for] = STATE(553), + [sym_expr_try] = STATE(553), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(127), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(129), + [anon_sym_break] = ACTIONS(131), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(133), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_on] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_of] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [6] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(552), + [sym_expr_return] = STATE(552), + [sym_expr_break] = STATE(552), + [sym_expr_continue] = STATE(552), + [sym_expr_throw] = STATE(552), + [sym_expr_query] = STATE(552), + [sym_query_from] = STATE(71), + [sym_expr_fun] = STATE(552), + [sym_expr_binary] = STATE(552), + [sym_expr_annot] = STATE(552), + [sym_expr_call] = STATE(552), + [sym_expr_tuple_access] = STATE(552), + [sym_expr_record_access] = STATE(552), + [sym_expr_array_access] = STATE(552), + [sym_expr_method_call] = STATE(552), + [sym_expr_record_variant] = STATE(552), + [sym_expr_paren] = STATE(552), + [sym_expr_constant] = STATE(552), + [sym_expr_name] = STATE(552), + [sym_expr_array] = STATE(552), + [sym_expr_tuple] = STATE(552), + [sym_expr_record] = STATE(552), + [sym_expr_do] = STATE(552), + [sym_expr_if] = STATE(552), + [sym_expr_match] = STATE(552), + [sym_expr_loop] = STATE(552), + [sym_expr_while] = STATE(552), + [sym_expr_for] = STATE(552), + [sym_expr_try] = STATE(552), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(127), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(129), + [anon_sym_break] = ACTIONS(131), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(133), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_on] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_of] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [7] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(567), + [sym_expr_return] = STATE(567), + [sym_expr_break] = STATE(567), + [sym_expr_continue] = STATE(567), + [sym_expr_throw] = STATE(567), + [sym_expr_query] = STATE(567), + [sym_query_from] = STATE(75), + [sym_expr_fun] = STATE(567), + [sym_expr_binary] = STATE(567), + [sym_expr_annot] = STATE(567), + [sym_expr_call] = STATE(567), + [sym_expr_tuple_access] = STATE(567), + [sym_expr_record_access] = STATE(567), + [sym_expr_array_access] = STATE(567), + [sym_expr_method_call] = STATE(567), + [sym_expr_record_variant] = STATE(567), + [sym_expr_paren] = STATE(567), + [sym_expr_constant] = STATE(567), + [sym_expr_name] = STATE(567), + [sym_expr_array] = STATE(567), + [sym_expr_tuple] = STATE(567), + [sym_expr_record] = STATE(567), + [sym_expr_do] = STATE(567), + [sym_expr_if] = STATE(567), + [sym_expr_match] = STATE(567), + [sym_expr_loop] = STATE(567), + [sym_expr_while] = STATE(567), + [sym_expr_for] = STATE(567), + [sym_expr_try] = STATE(567), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(119), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(121), + [anon_sym_break] = ACTIONS(123), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(125), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_on] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_desc] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [8] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(605), + [sym_expr_return] = STATE(605), + [sym_expr_break] = STATE(605), + [sym_expr_continue] = STATE(605), + [sym_expr_throw] = STATE(605), + [sym_expr_query] = STATE(605), + [sym_query_from] = STATE(165), + [sym_expr_fun] = STATE(605), + [sym_expr_binary] = STATE(605), + [sym_expr_annot] = STATE(605), + [sym_expr_call] = STATE(605), + [sym_expr_tuple_access] = STATE(605), + [sym_expr_record_access] = STATE(605), + [sym_expr_array_access] = STATE(605), + [sym_expr_method_call] = STATE(605), + [sym_expr_record_variant] = STATE(605), + [sym_expr_paren] = STATE(605), + [sym_expr_constant] = STATE(605), + [sym_expr_name] = STATE(605), + [sym_expr_array] = STATE(605), + [sym_expr_tuple] = STATE(605), + [sym_expr_record] = STATE(605), + [sym_expr_do] = STATE(605), + [sym_expr_if] = STATE(605), + [sym_expr_match] = STATE(605), + [sym_expr_loop] = STATE(605), + [sym_expr_while] = STATE(605), + [sym_expr_for] = STATE(605), + [sym_expr_try] = STATE(605), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(135), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(137), + [anon_sym_break] = ACTIONS(139), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(141), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_on] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [9] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(621), + [sym_expr_return] = STATE(621), + [sym_expr_break] = STATE(621), + [sym_expr_continue] = STATE(621), + [sym_expr_throw] = STATE(621), + [sym_expr_query] = STATE(621), + [sym_query_from] = STATE(146), + [sym_expr_fun] = STATE(621), + [sym_expr_binary] = STATE(621), + [sym_expr_annot] = STATE(621), + [sym_expr_call] = STATE(621), + [sym_expr_tuple_access] = STATE(621), + [sym_expr_record_access] = STATE(621), + [sym_expr_array_access] = STATE(621), + [sym_expr_method_call] = STATE(621), + [sym_expr_record_variant] = STATE(621), + [sym_expr_paren] = STATE(621), + [sym_expr_constant] = STATE(621), + [sym_expr_name] = STATE(621), + [sym_expr_array] = STATE(621), + [sym_expr_tuple] = STATE(621), + [sym_expr_record] = STATE(621), + [sym_expr_do] = STATE(621), + [sym_expr_if] = STATE(621), + [sym_expr_match] = STATE(621), + [sym_expr_loop] = STATE(621), + [sym_expr_while] = STATE(621), + [sym_expr_for] = STATE(621), + [sym_expr_try] = STATE(621), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(143), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(145), + [anon_sym_break] = ACTIONS(147), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(149), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_on] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_desc] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [10] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(606), + [sym_expr_return] = STATE(606), + [sym_expr_break] = STATE(606), + [sym_expr_continue] = STATE(606), + [sym_expr_throw] = STATE(606), + [sym_expr_query] = STATE(606), + [sym_query_from] = STATE(165), + [sym_expr_fun] = STATE(606), + [sym_expr_binary] = STATE(606), + [sym_expr_annot] = STATE(606), + [sym_expr_call] = STATE(606), + [sym_expr_tuple_access] = STATE(606), + [sym_expr_record_access] = STATE(606), + [sym_expr_array_access] = STATE(606), + [sym_expr_method_call] = STATE(606), + [sym_expr_record_variant] = STATE(606), + [sym_expr_paren] = STATE(606), + [sym_expr_constant] = STATE(606), + [sym_expr_name] = STATE(606), + [sym_expr_array] = STATE(606), + [sym_expr_tuple] = STATE(606), + [sym_expr_record] = STATE(606), + [sym_expr_do] = STATE(606), + [sym_expr_if] = STATE(606), + [sym_expr_match] = STATE(606), + [sym_expr_loop] = STATE(606), + [sym_expr_while] = STATE(606), + [sym_expr_for] = STATE(606), + [sym_expr_try] = STATE(606), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(135), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(137), + [anon_sym_break] = ACTIONS(139), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(141), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_on] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [11] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(620), + [sym_expr_return] = STATE(620), + [sym_expr_break] = STATE(620), + [sym_expr_continue] = STATE(620), + [sym_expr_throw] = STATE(620), + [sym_expr_query] = STATE(620), + [sym_query_from] = STATE(146), + [sym_expr_fun] = STATE(620), + [sym_expr_binary] = STATE(620), + [sym_expr_annot] = STATE(620), + [sym_expr_call] = STATE(620), + [sym_expr_tuple_access] = STATE(620), + [sym_expr_record_access] = STATE(620), + [sym_expr_array_access] = STATE(620), + [sym_expr_method_call] = STATE(620), + [sym_expr_record_variant] = STATE(620), + [sym_expr_paren] = STATE(620), + [sym_expr_constant] = STATE(620), + [sym_expr_name] = STATE(620), + [sym_expr_array] = STATE(620), + [sym_expr_tuple] = STATE(620), + [sym_expr_record] = STATE(620), + [sym_expr_do] = STATE(620), + [sym_expr_if] = STATE(620), + [sym_expr_match] = STATE(620), + [sym_expr_loop] = STATE(620), + [sym_expr_while] = STATE(620), + [sym_expr_for] = STATE(620), + [sym_expr_try] = STATE(620), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(143), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(145), + [anon_sym_break] = ACTIONS(147), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(149), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_on] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_desc] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [12] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(630), + [sym_expr_return] = STATE(630), + [sym_expr_break] = STATE(630), + [sym_expr_continue] = STATE(630), + [sym_expr_throw] = STATE(630), + [sym_expr_query] = STATE(630), + [sym_query_from] = STATE(403), + [sym_expr_fun] = STATE(630), + [sym_expr_binary] = STATE(630), + [sym_expr_annot] = STATE(630), + [sym_expr_call] = STATE(630), + [sym_expr_tuple_access] = STATE(630), + [sym_expr_record_access] = STATE(630), + [sym_expr_array_access] = STATE(630), + [sym_expr_method_call] = STATE(630), + [sym_expr_record_variant] = STATE(630), + [sym_expr_paren] = STATE(630), + [sym_expr_constant] = STATE(630), + [sym_expr_name] = STATE(630), + [sym_expr_array] = STATE(630), + [sym_expr_tuple] = STATE(630), + [sym_expr_record] = STATE(630), + [sym_expr_do] = STATE(630), + [sym_expr_if] = STATE(630), + [sym_expr_match] = STATE(630), + [sym_expr_loop] = STATE(630), + [sym_expr_while] = STATE(630), + [sym_expr_for] = STATE(630), + [sym_expr_try] = STATE(630), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(151), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(153), + [anon_sym_break] = ACTIONS(155), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(157), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_on] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [13] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(631), + [sym_expr_return] = STATE(631), + [sym_expr_break] = STATE(631), + [sym_expr_continue] = STATE(631), + [sym_expr_throw] = STATE(631), + [sym_expr_query] = STATE(631), + [sym_query_from] = STATE(403), + [sym_expr_fun] = STATE(631), + [sym_expr_binary] = STATE(631), + [sym_expr_annot] = STATE(631), + [sym_expr_call] = STATE(631), + [sym_expr_tuple_access] = STATE(631), + [sym_expr_record_access] = STATE(631), + [sym_expr_array_access] = STATE(631), + [sym_expr_method_call] = STATE(631), + [sym_expr_record_variant] = STATE(631), + [sym_expr_paren] = STATE(631), + [sym_expr_constant] = STATE(631), + [sym_expr_name] = STATE(631), + [sym_expr_array] = STATE(631), + [sym_expr_tuple] = STATE(631), + [sym_expr_record] = STATE(631), + [sym_expr_do] = STATE(631), + [sym_expr_if] = STATE(631), + [sym_expr_match] = STATE(631), + [sym_expr_loop] = STATE(631), + [sym_expr_while] = STATE(631), + [sym_expr_for] = STATE(631), + [sym_expr_try] = STATE(631), + [sym_name] = ACTIONS(73), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(75), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(151), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(153), + [anon_sym_break] = ACTIONS(155), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(157), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_on] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [14] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(674), + [sym_expr_return] = STATE(674), + [sym_expr_break] = STATE(674), + [sym_expr_continue] = STATE(674), + [sym_expr_throw] = STATE(674), + [sym_expr_query] = STATE(674), + [sym_query_from] = STATE(407), + [sym_expr_fun] = STATE(674), + [sym_expr_binary] = STATE(674), + [sym_expr_annot] = STATE(674), + [sym_expr_call] = STATE(674), + [sym_expr_tuple_access] = STATE(674), + [sym_expr_record_access] = STATE(674), + [sym_expr_array_access] = STATE(674), + [sym_expr_method_call] = STATE(674), + [sym_expr_record_variant] = STATE(674), + [sym_expr_paren] = STATE(674), + [sym_expr_constant] = STATE(674), + [sym_expr_name] = STATE(674), + [sym_expr_array] = STATE(674), + [sym_expr_tuple] = STATE(674), + [sym_expr_record] = STATE(674), + [sym_expr_do] = STATE(674), + [sym_expr_if] = STATE(674), + [sym_expr_match] = STATE(674), + [sym_expr_loop] = STATE(674), + [sym_expr_while] = STATE(674), + [sym_expr_for] = STATE(674), + [sym_expr_try] = STATE(674), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(161), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(163), + [anon_sym_break] = ACTIONS(165), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(167), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_desc] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_of] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [15] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(681), + [sym_expr_return] = STATE(681), + [sym_expr_break] = STATE(681), + [sym_expr_continue] = STATE(681), + [sym_expr_throw] = STATE(681), + [sym_expr_query] = STATE(681), + [sym_query_from] = STATE(407), + [sym_expr_fun] = STATE(681), + [sym_expr_binary] = STATE(681), + [sym_expr_annot] = STATE(681), + [sym_expr_call] = STATE(681), + [sym_expr_tuple_access] = STATE(681), + [sym_expr_record_access] = STATE(681), + [sym_expr_array_access] = STATE(681), + [sym_expr_method_call] = STATE(681), + [sym_expr_record_variant] = STATE(681), + [sym_expr_paren] = STATE(681), + [sym_expr_constant] = STATE(681), + [sym_expr_name] = STATE(681), + [sym_expr_array] = STATE(681), + [sym_expr_tuple] = STATE(681), + [sym_expr_record] = STATE(681), + [sym_expr_do] = STATE(681), + [sym_expr_if] = STATE(681), + [sym_expr_match] = STATE(681), + [sym_expr_loop] = STATE(681), + [sym_expr_while] = STATE(681), + [sym_expr_for] = STATE(681), + [sym_expr_try] = STATE(681), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(161), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(163), + [anon_sym_break] = ACTIONS(165), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(167), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_desc] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_of] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [16] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(693), + [sym_expr_return] = STATE(693), + [sym_expr_break] = STATE(693), + [sym_expr_continue] = STATE(693), + [sym_expr_throw] = STATE(693), + [sym_expr_query] = STATE(693), + [sym_query_from] = STATE(410), + [sym_expr_fun] = STATE(693), + [sym_expr_binary] = STATE(693), + [sym_expr_annot] = STATE(693), + [sym_expr_call] = STATE(693), + [sym_expr_tuple_access] = STATE(693), + [sym_expr_record_access] = STATE(693), + [sym_expr_array_access] = STATE(693), + [sym_expr_method_call] = STATE(693), + [sym_expr_record_variant] = STATE(693), + [sym_expr_paren] = STATE(693), + [sym_expr_constant] = STATE(693), + [sym_expr_name] = STATE(693), + [sym_expr_array] = STATE(693), + [sym_expr_tuple] = STATE(693), + [sym_expr_record] = STATE(693), + [sym_expr_do] = STATE(693), + [sym_expr_if] = STATE(693), + [sym_expr_match] = STATE(693), + [sym_expr_loop] = STATE(693), + [sym_expr_while] = STATE(693), + [sym_expr_for] = STATE(693), + [sym_expr_try] = STATE(693), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(169), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(171), + [anon_sym_break] = ACTIONS(173), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(175), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_desc] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [17] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(690), + [sym_expr_return] = STATE(690), + [sym_expr_break] = STATE(690), + [sym_expr_continue] = STATE(690), + [sym_expr_throw] = STATE(690), + [sym_expr_query] = STATE(690), + [sym_query_from] = STATE(410), + [sym_expr_fun] = STATE(690), + [sym_expr_binary] = STATE(690), + [sym_expr_annot] = STATE(690), + [sym_expr_call] = STATE(690), + [sym_expr_tuple_access] = STATE(690), + [sym_expr_record_access] = STATE(690), + [sym_expr_array_access] = STATE(690), + [sym_expr_method_call] = STATE(690), + [sym_expr_record_variant] = STATE(690), + [sym_expr_paren] = STATE(690), + [sym_expr_constant] = STATE(690), + [sym_expr_name] = STATE(690), + [sym_expr_array] = STATE(690), + [sym_expr_tuple] = STATE(690), + [sym_expr_record] = STATE(690), + [sym_expr_do] = STATE(690), + [sym_expr_if] = STATE(690), + [sym_expr_match] = STATE(690), + [sym_expr_loop] = STATE(690), + [sym_expr_while] = STATE(690), + [sym_expr_for] = STATE(690), + [sym_expr_try] = STATE(690), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(169), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(171), + [anon_sym_break] = ACTIONS(173), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(175), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_desc] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [18] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(689), + [sym_expr_return] = STATE(689), + [sym_expr_break] = STATE(689), + [sym_expr_continue] = STATE(689), + [sym_expr_throw] = STATE(689), + [sym_expr_query] = STATE(689), + [sym_query_from] = STATE(414), + [sym_expr_fun] = STATE(689), + [sym_expr_binary] = STATE(689), + [sym_expr_annot] = STATE(689), + [sym_expr_call] = STATE(689), + [sym_expr_tuple_access] = STATE(689), + [sym_expr_record_access] = STATE(689), + [sym_expr_array_access] = STATE(689), + [sym_expr_method_call] = STATE(689), + [sym_expr_record_variant] = STATE(689), + [sym_expr_paren] = STATE(689), + [sym_expr_constant] = STATE(689), + [sym_expr_name] = STATE(689), + [sym_expr_array] = STATE(689), + [sym_expr_tuple] = STATE(689), + [sym_expr_record] = STATE(689), + [sym_expr_do] = STATE(689), + [sym_expr_if] = STATE(689), + [sym_expr_match] = STATE(689), + [sym_expr_loop] = STATE(689), + [sym_expr_while] = STATE(689), + [sym_expr_for] = STATE(689), + [sym_expr_try] = STATE(689), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(177), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(179), + [anon_sym_break] = ACTIONS(181), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(183), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_of] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [19] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(688), + [sym_expr_return] = STATE(688), + [sym_expr_break] = STATE(688), + [sym_expr_continue] = STATE(688), + [sym_expr_throw] = STATE(688), + [sym_expr_query] = STATE(688), + [sym_query_from] = STATE(414), + [sym_expr_fun] = STATE(688), + [sym_expr_binary] = STATE(688), + [sym_expr_annot] = STATE(688), + [sym_expr_call] = STATE(688), + [sym_expr_tuple_access] = STATE(688), + [sym_expr_record_access] = STATE(688), + [sym_expr_array_access] = STATE(688), + [sym_expr_method_call] = STATE(688), + [sym_expr_record_variant] = STATE(688), + [sym_expr_paren] = STATE(688), + [sym_expr_constant] = STATE(688), + [sym_expr_name] = STATE(688), + [sym_expr_array] = STATE(688), + [sym_expr_tuple] = STATE(688), + [sym_expr_record] = STATE(688), + [sym_expr_do] = STATE(688), + [sym_expr_if] = STATE(688), + [sym_expr_match] = STATE(688), + [sym_expr_loop] = STATE(688), + [sym_expr_while] = STATE(688), + [sym_expr_for] = STATE(688), + [sym_expr_try] = STATE(688), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(177), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(179), + [anon_sym_break] = ACTIONS(181), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(183), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_of] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [20] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(742), + [sym_expr_return] = STATE(742), + [sym_expr_break] = STATE(742), + [sym_expr_continue] = STATE(742), + [sym_expr_throw] = STATE(742), + [sym_expr_query] = STATE(742), + [sym_query_from] = STATE(417), + [sym_expr_fun] = STATE(742), + [sym_expr_binary] = STATE(742), + [sym_expr_annot] = STATE(742), + [sym_expr_call] = STATE(742), + [sym_expr_tuple_access] = STATE(742), + [sym_expr_record_access] = STATE(742), + [sym_expr_array_access] = STATE(742), + [sym_expr_method_call] = STATE(742), + [sym_expr_record_variant] = STATE(742), + [sym_expr_paren] = STATE(742), + [sym_expr_constant] = STATE(742), + [sym_expr_name] = STATE(742), + [sym_expr_array] = STATE(742), + [sym_expr_tuple] = STATE(742), + [sym_expr_record] = STATE(742), + [sym_expr_do] = STATE(742), + [sym_expr_if] = STATE(742), + [sym_expr_match] = STATE(742), + [sym_expr_loop] = STATE(742), + [sym_expr_while] = STATE(742), + [sym_expr_for] = STATE(742), + [sym_expr_try] = STATE(742), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(185), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(187), + [anon_sym_break] = ACTIONS(189), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(191), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_desc] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [21] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(727), + [sym_expr_return] = STATE(727), + [sym_expr_break] = STATE(727), + [sym_expr_continue] = STATE(727), + [sym_expr_throw] = STATE(727), + [sym_expr_query] = STATE(727), + [sym_query_from] = STATE(416), + [sym_expr_fun] = STATE(727), + [sym_expr_binary] = STATE(727), + [sym_expr_annot] = STATE(727), + [sym_expr_call] = STATE(727), + [sym_expr_tuple_access] = STATE(727), + [sym_expr_record_access] = STATE(727), + [sym_expr_array_access] = STATE(727), + [sym_expr_method_call] = STATE(727), + [sym_expr_record_variant] = STATE(727), + [sym_expr_paren] = STATE(727), + [sym_expr_constant] = STATE(727), + [sym_expr_name] = STATE(727), + [sym_expr_array] = STATE(727), + [sym_expr_tuple] = STATE(727), + [sym_expr_record] = STATE(727), + [sym_expr_do] = STATE(727), + [sym_expr_if] = STATE(727), + [sym_expr_match] = STATE(727), + [sym_expr_loop] = STATE(727), + [sym_expr_while] = STATE(727), + [sym_expr_for] = STATE(727), + [sym_expr_try] = STATE(727), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(193), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(195), + [anon_sym_break] = ACTIONS(197), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(199), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_as] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [22] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(747), + [sym_expr_return] = STATE(747), + [sym_expr_break] = STATE(747), + [sym_expr_continue] = STATE(747), + [sym_expr_throw] = STATE(747), + [sym_expr_query] = STATE(747), + [sym_query_from] = STATE(417), + [sym_expr_fun] = STATE(747), + [sym_expr_binary] = STATE(747), + [sym_expr_annot] = STATE(747), + [sym_expr_call] = STATE(747), + [sym_expr_tuple_access] = STATE(747), + [sym_expr_record_access] = STATE(747), + [sym_expr_array_access] = STATE(747), + [sym_expr_method_call] = STATE(747), + [sym_expr_record_variant] = STATE(747), + [sym_expr_paren] = STATE(747), + [sym_expr_constant] = STATE(747), + [sym_expr_name] = STATE(747), + [sym_expr_array] = STATE(747), + [sym_expr_tuple] = STATE(747), + [sym_expr_record] = STATE(747), + [sym_expr_do] = STATE(747), + [sym_expr_if] = STATE(747), + [sym_expr_match] = STATE(747), + [sym_expr_loop] = STATE(747), + [sym_expr_while] = STATE(747), + [sym_expr_for] = STATE(747), + [sym_expr_try] = STATE(747), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(185), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(187), + [anon_sym_break] = ACTIONS(189), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(191), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_desc] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [23] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(744), + [sym_expr_return] = STATE(744), + [sym_expr_break] = STATE(744), + [sym_expr_continue] = STATE(744), + [sym_expr_throw] = STATE(744), + [sym_expr_query] = STATE(744), + [sym_query_from] = STATE(416), + [sym_expr_fun] = STATE(744), + [sym_expr_binary] = STATE(744), + [sym_expr_annot] = STATE(744), + [sym_expr_call] = STATE(744), + [sym_expr_tuple_access] = STATE(744), + [sym_expr_record_access] = STATE(744), + [sym_expr_array_access] = STATE(744), + [sym_expr_method_call] = STATE(744), + [sym_expr_record_variant] = STATE(744), + [sym_expr_paren] = STATE(744), + [sym_expr_constant] = STATE(744), + [sym_expr_name] = STATE(744), + [sym_expr_array] = STATE(744), + [sym_expr_tuple] = STATE(744), + [sym_expr_record] = STATE(744), + [sym_expr_do] = STATE(744), + [sym_expr_if] = STATE(744), + [sym_expr_match] = STATE(744), + [sym_expr_loop] = STATE(744), + [sym_expr_while] = STATE(744), + [sym_expr_for] = STATE(744), + [sym_expr_try] = STATE(744), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(193), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(195), + [anon_sym_break] = ACTIONS(197), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(199), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_as] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [24] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(766), + [sym_expr_return] = STATE(766), + [sym_expr_break] = STATE(766), + [sym_expr_continue] = STATE(766), + [sym_expr_throw] = STATE(766), + [sym_expr_query] = STATE(766), + [sym_query_from] = STATE(425), + [sym_expr_fun] = STATE(766), + [sym_expr_binary] = STATE(766), + [sym_expr_annot] = STATE(766), + [sym_expr_call] = STATE(766), + [sym_expr_tuple_access] = STATE(766), + [sym_expr_record_access] = STATE(766), + [sym_expr_array_access] = STATE(766), + [sym_expr_method_call] = STATE(766), + [sym_expr_record_variant] = STATE(766), + [sym_expr_paren] = STATE(766), + [sym_expr_constant] = STATE(766), + [sym_expr_name] = STATE(766), + [sym_expr_array] = STATE(766), + [sym_expr_tuple] = STATE(766), + [sym_expr_record] = STATE(766), + [sym_expr_do] = STATE(766), + [sym_expr_if] = STATE(766), + [sym_expr_match] = STATE(766), + [sym_expr_loop] = STATE(766), + [sym_expr_while] = STATE(766), + [sym_expr_for] = STATE(766), + [sym_expr_try] = STATE(766), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(201), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(203), + [anon_sym_break] = ACTIONS(205), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(207), + [anon_sym_from] = ACTIONS(79), + [anon_sym_where] = ACTIONS(79), + [anon_sym_join] = ACTIONS(79), + [anon_sym_union] = ACTIONS(79), + [anon_sym_group] = ACTIONS(79), + [anon_sym_over] = ACTIONS(79), + [anon_sym_roll] = ACTIONS(79), + [anon_sym_compute] = ACTIONS(79), + [anon_sym_select] = ACTIONS(79), + [anon_sym_with] = ACTIONS(79), + [anon_sym_into] = ACTIONS(79), + [anon_sym_order] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [25] = { + [sym__constant] = STATE(472), + [sym_constant_string] = STATE(472), + [sym_constant_char] = STATE(472), + [sym_constant_bool] = STATE(472), + [sym_constant_unit] = STATE(472), + [sym__expr] = STATE(765), + [sym_expr_return] = STATE(765), + [sym_expr_break] = STATE(765), + [sym_expr_continue] = STATE(765), + [sym_expr_throw] = STATE(765), + [sym_expr_query] = STATE(765), + [sym_query_from] = STATE(425), + [sym_expr_fun] = STATE(765), + [sym_expr_binary] = STATE(765), + [sym_expr_annot] = STATE(765), + [sym_expr_call] = STATE(765), + [sym_expr_tuple_access] = STATE(765), + [sym_expr_record_access] = STATE(765), + [sym_expr_array_access] = STATE(765), + [sym_expr_method_call] = STATE(765), + [sym_expr_record_variant] = STATE(765), + [sym_expr_paren] = STATE(765), + [sym_expr_constant] = STATE(765), + [sym_expr_name] = STATE(765), + [sym_expr_array] = STATE(765), + [sym_expr_tuple] = STATE(765), + [sym_expr_record] = STATE(765), + [sym_expr_do] = STATE(765), + [sym_expr_if] = STATE(765), + [sym_expr_match] = STATE(765), + [sym_expr_loop] = STATE(765), + [sym_expr_while] = STATE(765), + [sym_expr_for] = STATE(765), + [sym_expr_try] = STATE(765), + [sym_name] = ACTIONS(159), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(81), + [sym_constant_float] = ACTIONS(83), + [sym_string_quote] = ACTIONS(85), + [anon_sym_SQUOTE] = ACTIONS(87), + [anon_sym_true] = ACTIONS(89), + [anon_sym_false] = ACTIONS(89), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(201), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(203), + [anon_sym_break] = ACTIONS(205), + [anon_sym_continue] = ACTIONS(97), + [anon_sym_throw] = ACTIONS(207), + [anon_sym_from] = ACTIONS(117), + [anon_sym_where] = ACTIONS(117), + [anon_sym_join] = ACTIONS(117), + [anon_sym_union] = ACTIONS(117), + [anon_sym_group] = ACTIONS(117), + [anon_sym_over] = ACTIONS(117), + [anon_sym_roll] = ACTIONS(117), + [anon_sym_compute] = ACTIONS(117), + [anon_sym_select] = ACTIONS(117), + [anon_sym_with] = ACTIONS(117), + [anon_sym_into] = ACTIONS(117), + [anon_sym_order] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(101), + [anon_sym_if] = ACTIONS(103), + [anon_sym_match] = ACTIONS(105), + [anon_sym_loop] = ACTIONS(107), + [anon_sym_while] = ACTIONS(109), + [anon_sym_for] = ACTIONS(111), + [anon_sym_try] = ACTIONS(113), + }, + [26] = { + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [sym__expr] = STATE(922), + [sym_expr_return] = STATE(922), + [sym_expr_break] = STATE(922), + [sym_expr_continue] = STATE(922), + [sym_expr_throw] = STATE(922), + [sym_expr_query] = STATE(922), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(922), + [sym_expr_binary] = STATE(922), + [sym_expr_annot] = STATE(922), + [sym_expr_call] = STATE(922), + [sym_expr_tuple_access] = STATE(922), + [sym_expr_record_access] = STATE(922), + [sym_expr_array_access] = STATE(922), + [sym_expr_method_call] = STATE(922), + [sym_expr_record_variant] = STATE(922), + [sym_expr_paren] = STATE(922), + [sym_expr_constant] = STATE(922), + [sym_expr_name] = STATE(922), + [sym_expr_array] = STATE(922), + [sym_expr_tuple] = STATE(922), + [sym_expr_record] = STATE(922), + [sym_expr_do] = STATE(922), + [sym_expr_if] = STATE(922), + [sym_expr_match] = STATE(922), + [sym_expr_loop] = STATE(922), + [sym_expr_while] = STATE(922), + [sym_expr_for] = STATE(922), + [sym_expr_try] = STATE(922), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(115), + [anon_sym_COMMA] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_RPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_RBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_on] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [27] = { + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [sym__expr] = STATE(928), + [sym_expr_return] = STATE(928), + [sym_expr_break] = STATE(928), + [sym_expr_continue] = STATE(928), + [sym_expr_throw] = STATE(928), + [sym_expr_query] = STATE(928), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(928), + [sym_expr_binary] = STATE(928), + [sym_expr_annot] = STATE(928), + [sym_expr_call] = STATE(928), + [sym_expr_tuple_access] = STATE(928), + [sym_expr_record_access] = STATE(928), + [sym_expr_array_access] = STATE(928), + [sym_expr_method_call] = STATE(928), + [sym_expr_record_variant] = STATE(928), + [sym_expr_paren] = STATE(928), + [sym_expr_constant] = STATE(928), + [sym_expr_name] = STATE(928), + [sym_expr_array] = STATE(928), + [sym_expr_tuple] = STATE(928), + [sym_expr_record] = STATE(928), + [sym_expr_do] = STATE(928), + [sym_expr_if] = STATE(928), + [sym_expr_match] = STATE(928), + [sym_expr_loop] = STATE(928), + [sym_expr_while] = STATE(928), + [sym_expr_for] = STATE(928), + [sym_expr_try] = STATE(928), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(77), + [anon_sym_COMMA] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_RPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_RBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_on] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [28] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1050), + [sym_expr_return] = STATE(1050), + [sym_expr_break] = STATE(1050), + [sym_expr_continue] = STATE(1050), + [sym_expr_throw] = STATE(1050), + [sym_expr_query] = STATE(1050), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1050), + [sym_expr_binary] = STATE(1050), + [sym_expr_annot] = STATE(1050), + [sym_expr_call] = STATE(1050), + [sym_expr_tuple_access] = STATE(1050), + [sym_expr_record_access] = STATE(1050), + [sym_expr_array_access] = STATE(1050), + [sym_expr_method_call] = STATE(1050), + [sym_expr_record_variant] = STATE(1050), + [sym_expr_paren] = STATE(1050), + [sym_expr_constant] = STATE(1050), + [sym_expr_name] = STATE(1050), + [sym_expr_array] = STATE(1050), + [sym_expr_tuple] = STATE(1050), + [sym_expr_record] = STATE(1050), + [sym_expr_do] = STATE(1050), + [sym_expr_if] = STATE(1050), + [sym_expr_match] = STATE(1050), + [sym_expr_loop] = STATE(1050), + [sym_expr_while] = STATE(1050), + [sym_expr_for] = STATE(1050), + [sym_expr_try] = STATE(1050), + [ts_builtin_sym_end] = ACTIONS(209), + [sym_name] = ACTIONS(211), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(214), + [anon_sym_LBRACE] = ACTIONS(217), + [anon_sym_RBRACE] = ACTIONS(209), + [sym_constant_int] = ACTIONS(220), + [sym_constant_float] = ACTIONS(223), + [sym_string_quote] = ACTIONS(226), + [anon_sym_SQUOTE] = ACTIONS(229), + [anon_sym_true] = ACTIONS(232), + [anon_sym_false] = ACTIONS(232), + [anon_sym_LPAREN] = ACTIONS(235), + [anon_sym_def] = ACTIONS(238), + [anon_sym_LBRACK] = ACTIONS(241), + [anon_sym_SEMI] = ACTIONS(244), + [anon_sym_type] = ACTIONS(247), + [anon_sym_enum] = ACTIONS(250), + [anon_sym_struct] = ACTIONS(253), + [anon_sym_val] = ACTIONS(256), + [anon_sym_var] = ACTIONS(259), + [anon_sym_DASH_DASH_DASH] = ACTIONS(262), + [anon_sym_mod] = ACTIONS(265), + [anon_sym_use] = ACTIONS(268), + [anon_sym_fun] = ACTIONS(271), + [anon_sym_return] = ACTIONS(274), + [anon_sym_break] = ACTIONS(277), + [anon_sym_continue] = ACTIONS(280), + [anon_sym_throw] = ACTIONS(283), + [anon_sym_from] = ACTIONS(286), + [anon_sym_do] = ACTIONS(289), + [anon_sym_if] = ACTIONS(292), + [anon_sym_match] = ACTIONS(295), + [anon_sym_loop] = ACTIONS(298), + [anon_sym_while] = ACTIONS(301), + [anon_sym_for] = ACTIONS(304), + [anon_sym_try] = ACTIONS(307), + }, + [29] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1026), + [sym_expr_return] = STATE(1026), + [sym_expr_break] = STATE(1026), + [sym_expr_continue] = STATE(1026), + [sym_expr_throw] = STATE(1026), + [sym_expr_query] = STATE(1026), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1026), + [sym_expr_binary] = STATE(1026), + [sym_expr_annot] = STATE(1026), + [sym_expr_call] = STATE(1026), + [sym_expr_tuple_access] = STATE(1026), + [sym_expr_record_access] = STATE(1026), + [sym_expr_array_access] = STATE(1026), + [sym_expr_method_call] = STATE(1026), + [sym_expr_record_variant] = STATE(1026), + [sym_expr_paren] = STATE(1026), + [sym_expr_constant] = STATE(1026), + [sym_expr_name] = STATE(1026), + [sym_expr_array] = STATE(1026), + [sym_expr_tuple] = STATE(1026), + [sym_expr_record] = STATE(1026), + [sym_expr_do] = STATE(1026), + [sym_expr_if] = STATE(1026), + [sym_expr_match] = STATE(1026), + [sym_expr_loop] = STATE(1026), + [sym_expr_while] = STATE(1026), + [sym_expr_for] = STATE(1026), + [sym_expr_try] = STATE(1026), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(310), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(312), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [30] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(35), + [sym__stmt] = STATE(35), + [sym_stmt_def] = STATE(35), + [sym_stmt_type] = STATE(35), + [sym_stmt_enum] = STATE(35), + [sym_stmt_struct] = STATE(35), + [sym_stmt_val] = STATE(35), + [sym_stmt_var] = STATE(35), + [sym_stmt_expr] = STATE(35), + [sym_stmt_code] = STATE(35), + [sym_stmt_mod] = STATE(35), + [sym_stmt_use] = STATE(35), + [sym__stmt_noop] = STATE(35), + [sym__expr] = STATE(1050), + [sym_expr_return] = STATE(1050), + [sym_expr_break] = STATE(1050), + [sym_expr_continue] = STATE(1050), + [sym_expr_throw] = STATE(1050), + [sym_expr_query] = STATE(1050), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1050), + [sym_expr_binary] = STATE(1050), + [sym_expr_annot] = STATE(1050), + [sym_expr_call] = STATE(1050), + [sym_expr_tuple_access] = STATE(1050), + [sym_expr_record_access] = STATE(1050), + [sym_expr_array_access] = STATE(1050), + [sym_expr_method_call] = STATE(1050), + [sym_expr_record_variant] = STATE(1050), + [sym_expr_paren] = STATE(1050), + [sym_expr_constant] = STATE(1050), + [sym_expr_name] = STATE(1050), + [sym_expr_array] = STATE(1050), + [sym_expr_tuple] = STATE(1050), + [sym_expr_record] = STATE(1050), + [sym_expr_do] = STATE(1050), + [sym_expr_if] = STATE(1050), + [sym_expr_match] = STATE(1050), + [sym_expr_loop] = STATE(1050), + [sym_expr_while] = STATE(1050), + [sym_expr_for] = STATE(1050), + [sym_expr_try] = STATE(1050), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(314), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(316), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [31] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(33), + [sym__stmt] = STATE(33), + [sym_stmt_def] = STATE(33), + [sym_stmt_type] = STATE(33), + [sym_stmt_enum] = STATE(33), + [sym_stmt_struct] = STATE(33), + [sym_stmt_val] = STATE(33), + [sym_stmt_var] = STATE(33), + [sym_stmt_expr] = STATE(33), + [sym_stmt_code] = STATE(33), + [sym_stmt_mod] = STATE(33), + [sym_stmt_use] = STATE(33), + [sym__stmt_noop] = STATE(33), + [sym__expr] = STATE(1033), + [sym_expr_return] = STATE(1033), + [sym_expr_break] = STATE(1033), + [sym_expr_continue] = STATE(1033), + [sym_expr_throw] = STATE(1033), + [sym_expr_query] = STATE(1033), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1033), + [sym_expr_binary] = STATE(1033), + [sym_expr_annot] = STATE(1033), + [sym_expr_call] = STATE(1033), + [sym_expr_tuple_access] = STATE(1033), + [sym_expr_record_access] = STATE(1033), + [sym_expr_array_access] = STATE(1033), + [sym_expr_method_call] = STATE(1033), + [sym_expr_record_variant] = STATE(1033), + [sym_expr_paren] = STATE(1033), + [sym_expr_constant] = STATE(1033), + [sym_expr_name] = STATE(1033), + [sym_expr_array] = STATE(1033), + [sym_expr_tuple] = STATE(1033), + [sym_expr_record] = STATE(1033), + [sym_expr_do] = STATE(1033), + [sym_expr_if] = STATE(1033), + [sym_expr_match] = STATE(1033), + [sym_expr_loop] = STATE(1033), + [sym_expr_while] = STATE(1033), + [sym_expr_for] = STATE(1033), + [sym_expr_try] = STATE(1033), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(318), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(320), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [32] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1035), + [sym_expr_return] = STATE(1035), + [sym_expr_break] = STATE(1035), + [sym_expr_continue] = STATE(1035), + [sym_expr_throw] = STATE(1035), + [sym_expr_query] = STATE(1035), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1035), + [sym_expr_binary] = STATE(1035), + [sym_expr_annot] = STATE(1035), + [sym_expr_call] = STATE(1035), + [sym_expr_tuple_access] = STATE(1035), + [sym_expr_record_access] = STATE(1035), + [sym_expr_array_access] = STATE(1035), + [sym_expr_method_call] = STATE(1035), + [sym_expr_record_variant] = STATE(1035), + [sym_expr_paren] = STATE(1035), + [sym_expr_constant] = STATE(1035), + [sym_expr_name] = STATE(1035), + [sym_expr_array] = STATE(1035), + [sym_expr_tuple] = STATE(1035), + [sym_expr_record] = STATE(1035), + [sym_expr_do] = STATE(1035), + [sym_expr_if] = STATE(1035), + [sym_expr_match] = STATE(1035), + [sym_expr_loop] = STATE(1035), + [sym_expr_while] = STATE(1035), + [sym_expr_for] = STATE(1035), + [sym_expr_try] = STATE(1035), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(322), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(312), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [33] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1031), + [sym_expr_return] = STATE(1031), + [sym_expr_break] = STATE(1031), + [sym_expr_continue] = STATE(1031), + [sym_expr_throw] = STATE(1031), + [sym_expr_query] = STATE(1031), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1031), + [sym_expr_binary] = STATE(1031), + [sym_expr_annot] = STATE(1031), + [sym_expr_call] = STATE(1031), + [sym_expr_tuple_access] = STATE(1031), + [sym_expr_record_access] = STATE(1031), + [sym_expr_array_access] = STATE(1031), + [sym_expr_method_call] = STATE(1031), + [sym_expr_record_variant] = STATE(1031), + [sym_expr_paren] = STATE(1031), + [sym_expr_constant] = STATE(1031), + [sym_expr_name] = STATE(1031), + [sym_expr_array] = STATE(1031), + [sym_expr_tuple] = STATE(1031), + [sym_expr_record] = STATE(1031), + [sym_expr_do] = STATE(1031), + [sym_expr_if] = STATE(1031), + [sym_expr_match] = STATE(1031), + [sym_expr_loop] = STATE(1031), + [sym_expr_while] = STATE(1031), + [sym_expr_for] = STATE(1031), + [sym_expr_try] = STATE(1031), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(324), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(312), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [34] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_struct] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym_stmt_mod] = STATE(32), + [sym_stmt_use] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(1007), + [sym_expr_return] = STATE(1007), + [sym_expr_break] = STATE(1007), + [sym_expr_continue] = STATE(1007), + [sym_expr_throw] = STATE(1007), + [sym_expr_query] = STATE(1007), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1007), + [sym_expr_binary] = STATE(1007), + [sym_expr_annot] = STATE(1007), + [sym_expr_call] = STATE(1007), + [sym_expr_tuple_access] = STATE(1007), + [sym_expr_record_access] = STATE(1007), + [sym_expr_array_access] = STATE(1007), + [sym_expr_method_call] = STATE(1007), + [sym_expr_record_variant] = STATE(1007), + [sym_expr_paren] = STATE(1007), + [sym_expr_constant] = STATE(1007), + [sym_expr_name] = STATE(1007), + [sym_expr_array] = STATE(1007), + [sym_expr_tuple] = STATE(1007), + [sym_expr_record] = STATE(1007), + [sym_expr_do] = STATE(1007), + [sym_expr_if] = STATE(1007), + [sym_expr_match] = STATE(1007), + [sym_expr_loop] = STATE(1007), + [sym_expr_while] = STATE(1007), + [sym_expr_for] = STATE(1007), + [sym_expr_try] = STATE(1007), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(326), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(328), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [35] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1050), + [sym_expr_return] = STATE(1050), + [sym_expr_break] = STATE(1050), + [sym_expr_continue] = STATE(1050), + [sym_expr_throw] = STATE(1050), + [sym_expr_query] = STATE(1050), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1050), + [sym_expr_binary] = STATE(1050), + [sym_expr_annot] = STATE(1050), + [sym_expr_call] = STATE(1050), + [sym_expr_tuple_access] = STATE(1050), + [sym_expr_record_access] = STATE(1050), + [sym_expr_array_access] = STATE(1050), + [sym_expr_method_call] = STATE(1050), + [sym_expr_record_variant] = STATE(1050), + [sym_expr_paren] = STATE(1050), + [sym_expr_constant] = STATE(1050), + [sym_expr_name] = STATE(1050), + [sym_expr_array] = STATE(1050), + [sym_expr_tuple] = STATE(1050), + [sym_expr_record] = STATE(1050), + [sym_expr_do] = STATE(1050), + [sym_expr_if] = STATE(1050), + [sym_expr_match] = STATE(1050), + [sym_expr_loop] = STATE(1050), + [sym_expr_while] = STATE(1050), + [sym_expr_for] = STATE(1050), + [sym_expr_try] = STATE(1050), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(330), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(312), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [36] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1050), + [sym_expr_return] = STATE(1050), + [sym_expr_break] = STATE(1050), + [sym_expr_continue] = STATE(1050), + [sym_expr_throw] = STATE(1050), + [sym_expr_query] = STATE(1050), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1050), + [sym_expr_binary] = STATE(1050), + [sym_expr_annot] = STATE(1050), + [sym_expr_call] = STATE(1050), + [sym_expr_tuple_access] = STATE(1050), + [sym_expr_record_access] = STATE(1050), + [sym_expr_array_access] = STATE(1050), + [sym_expr_method_call] = STATE(1050), + [sym_expr_record_variant] = STATE(1050), + [sym_expr_paren] = STATE(1050), + [sym_expr_constant] = STATE(1050), + [sym_expr_name] = STATE(1050), + [sym_expr_array] = STATE(1050), + [sym_expr_tuple] = STATE(1050), + [sym_expr_record] = STATE(1050), + [sym_expr_do] = STATE(1050), + [sym_expr_if] = STATE(1050), + [sym_expr_match] = STATE(1050), + [sym_expr_loop] = STATE(1050), + [sym_expr_while] = STATE(1050), + [sym_expr_for] = STATE(1050), + [sym_expr_try] = STATE(1050), + [ts_builtin_sym_end] = ACTIONS(332), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(312), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [37] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(28), + [sym__stmt] = STATE(28), + [sym_stmt_def] = STATE(28), + [sym_stmt_type] = STATE(28), + [sym_stmt_enum] = STATE(28), + [sym_stmt_struct] = STATE(28), + [sym_stmt_val] = STATE(28), + [sym_stmt_var] = STATE(28), + [sym_stmt_expr] = STATE(28), + [sym_stmt_code] = STATE(28), + [sym_stmt_mod] = STATE(28), + [sym_stmt_use] = STATE(28), + [sym__stmt_noop] = STATE(28), + [sym__expr] = STATE(1024), + [sym_expr_return] = STATE(1024), + [sym_expr_break] = STATE(1024), + [sym_expr_continue] = STATE(1024), + [sym_expr_throw] = STATE(1024), + [sym_expr_query] = STATE(1024), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1024), + [sym_expr_binary] = STATE(1024), + [sym_expr_annot] = STATE(1024), + [sym_expr_call] = STATE(1024), + [sym_expr_tuple_access] = STATE(1024), + [sym_expr_record_access] = STATE(1024), + [sym_expr_array_access] = STATE(1024), + [sym_expr_method_call] = STATE(1024), + [sym_expr_record_variant] = STATE(1024), + [sym_expr_paren] = STATE(1024), + [sym_expr_constant] = STATE(1024), + [sym_expr_name] = STATE(1024), + [sym_expr_array] = STATE(1024), + [sym_expr_tuple] = STATE(1024), + [sym_expr_record] = STATE(1024), + [sym_expr_do] = STATE(1024), + [sym_expr_if] = STATE(1024), + [sym_expr_match] = STATE(1024), + [sym_expr_loop] = STATE(1024), + [sym_expr_while] = STATE(1024), + [sym_expr_for] = STATE(1024), + [sym_expr_try] = STATE(1024), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(334), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(312), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [38] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(37), + [sym__stmt] = STATE(37), + [sym_stmt_def] = STATE(37), + [sym_stmt_type] = STATE(37), + [sym_stmt_enum] = STATE(37), + [sym_stmt_struct] = STATE(37), + [sym_stmt_val] = STATE(37), + [sym_stmt_var] = STATE(37), + [sym_stmt_expr] = STATE(37), + [sym_stmt_code] = STATE(37), + [sym_stmt_mod] = STATE(37), + [sym_stmt_use] = STATE(37), + [sym__stmt_noop] = STATE(37), + [sym__expr] = STATE(1025), + [sym_expr_return] = STATE(1025), + [sym_expr_break] = STATE(1025), + [sym_expr_continue] = STATE(1025), + [sym_expr_throw] = STATE(1025), + [sym_expr_query] = STATE(1025), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1025), + [sym_expr_binary] = STATE(1025), + [sym_expr_annot] = STATE(1025), + [sym_expr_call] = STATE(1025), + [sym_expr_tuple_access] = STATE(1025), + [sym_expr_record_access] = STATE(1025), + [sym_expr_array_access] = STATE(1025), + [sym_expr_method_call] = STATE(1025), + [sym_expr_record_variant] = STATE(1025), + [sym_expr_paren] = STATE(1025), + [sym_expr_constant] = STATE(1025), + [sym_expr_name] = STATE(1025), + [sym_expr_array] = STATE(1025), + [sym_expr_tuple] = STATE(1025), + [sym_expr_record] = STATE(1025), + [sym_expr_do] = STATE(1025), + [sym_expr_if] = STATE(1025), + [sym_expr_match] = STATE(1025), + [sym_expr_loop] = STATE(1025), + [sym_expr_while] = STATE(1025), + [sym_expr_for] = STATE(1025), + [sym_expr_try] = STATE(1025), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(336), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(338), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [39] = { + [sym_meta] = STATE(1185), + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [aux_sym__stmts] = STATE(29), + [sym__stmt] = STATE(29), + [sym_stmt_def] = STATE(29), + [sym_stmt_type] = STATE(29), + [sym_stmt_enum] = STATE(29), + [sym_stmt_struct] = STATE(29), + [sym_stmt_val] = STATE(29), + [sym_stmt_var] = STATE(29), + [sym_stmt_expr] = STATE(29), + [sym_stmt_code] = STATE(29), + [sym_stmt_mod] = STATE(29), + [sym_stmt_use] = STATE(29), + [sym__stmt_noop] = STATE(29), + [sym__expr] = STATE(1005), + [sym_expr_return] = STATE(1005), + [sym_expr_break] = STATE(1005), + [sym_expr_continue] = STATE(1005), + [sym_expr_throw] = STATE(1005), + [sym_expr_query] = STATE(1005), + [sym_query_from] = STATE(402), + [sym_expr_fun] = STATE(1005), + [sym_expr_binary] = STATE(1005), + [sym_expr_annot] = STATE(1005), + [sym_expr_call] = STATE(1005), + [sym_expr_tuple_access] = STATE(1005), + [sym_expr_record_access] = STATE(1005), + [sym_expr_array_access] = STATE(1005), + [sym_expr_method_call] = STATE(1005), + [sym_expr_record_variant] = STATE(1005), + [sym_expr_paren] = STATE(1005), + [sym_expr_constant] = STATE(1005), + [sym_expr_name] = STATE(1005), + [sym_expr_array] = STATE(1005), + [sym_expr_tuple] = STATE(1005), + [sym_expr_record] = STATE(1005), + [sym_expr_do] = STATE(1005), + [sym_expr_if] = STATE(1005), + [sym_expr_match] = STATE(1005), + [sym_expr_loop] = STATE(1005), + [sym_expr_while] = STATE(1005), + [sym_expr_for] = STATE(1005), + [sym_expr_try] = STATE(1005), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(340), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(342), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_struct] = ACTIONS(35), + [anon_sym_val] = ACTIONS(37), + [anon_sym_var] = ACTIONS(39), + [anon_sym_DASH_DASH_DASH] = ACTIONS(41), + [anon_sym_mod] = ACTIONS(43), + [anon_sym_use] = ACTIONS(45), + [anon_sym_fun] = ACTIONS(47), + [anon_sym_return] = ACTIONS(49), + [anon_sym_break] = ACTIONS(51), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(55), + [anon_sym_from] = ACTIONS(57), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [40] = { + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [sym__expr] = STATE(1028), + [sym_expr_return] = STATE(1028), + [sym_expr_break] = STATE(1028), + [sym_expr_continue] = STATE(1028), + [sym_expr_throw] = STATE(1028), + [sym_expr_query] = STATE(1028), + [sym_query_from] = STATE(421), + [sym_expr_fun] = STATE(1028), + [sym_expr_binary] = STATE(1028), + [sym_expr_annot] = STATE(1028), + [sym_expr_call] = STATE(1028), + [sym_expr_tuple_access] = STATE(1028), + [sym_expr_record_access] = STATE(1028), + [sym_expr_array_access] = STATE(1028), + [sym_expr_method_call] = STATE(1028), + [sym_expr_record_variant] = STATE(1028), + [sym_expr_paren] = STATE(1028), + [sym_expr_constant] = STATE(1028), + [sym_expr_name] = STATE(1028), + [sym_expr_array] = STATE(1028), + [sym_expr_tuple] = STATE(1028), + [sym_expr_record] = STATE(1028), + [sym_expr_do] = STATE(1028), + [sym_expr_if] = STATE(1028), + [sym_expr_match] = STATE(1028), + [sym_expr_loop] = STATE(1028), + [sym_expr_while] = STATE(1028), + [sym_expr_for] = STATE(1028), + [sym_expr_try] = STATE(1028), + [sym_name] = ACTIONS(344), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(346), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(348), + [anon_sym_break] = ACTIONS(350), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(352), + [anon_sym_from] = ACTIONS(354), + [anon_sym_as] = ACTIONS(79), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [41] = { + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [sym__expr] = STATE(1029), + [sym_expr_return] = STATE(1029), + [sym_expr_break] = STATE(1029), + [sym_expr_continue] = STATE(1029), + [sym_expr_throw] = STATE(1029), + [sym_expr_query] = STATE(1029), + [sym_query_from] = STATE(421), + [sym_expr_fun] = STATE(1029), + [sym_expr_binary] = STATE(1029), + [sym_expr_annot] = STATE(1029), + [sym_expr_call] = STATE(1029), + [sym_expr_tuple_access] = STATE(1029), + [sym_expr_record_access] = STATE(1029), + [sym_expr_array_access] = STATE(1029), + [sym_expr_method_call] = STATE(1029), + [sym_expr_record_variant] = STATE(1029), + [sym_expr_paren] = STATE(1029), + [sym_expr_constant] = STATE(1029), + [sym_expr_name] = STATE(1029), + [sym_expr_array] = STATE(1029), + [sym_expr_tuple] = STATE(1029), + [sym_expr_record] = STATE(1029), + [sym_expr_do] = STATE(1029), + [sym_expr_if] = STATE(1029), + [sym_expr_match] = STATE(1029), + [sym_expr_loop] = STATE(1029), + [sym_expr_while] = STATE(1029), + [sym_expr_for] = STATE(1029), + [sym_expr_try] = STATE(1029), + [sym_name] = ACTIONS(344), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(346), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(348), + [anon_sym_break] = ACTIONS(350), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(352), + [anon_sym_from] = ACTIONS(354), + [anon_sym_as] = ACTIONS(117), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [42] = { + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [sym__expr] = STATE(1066), + [sym_expr_return] = STATE(1066), + [sym_expr_break] = STATE(1066), + [sym_expr_continue] = STATE(1066), + [sym_expr_throw] = STATE(1066), + [sym_expr_query] = STATE(1066), + [sym_query_from] = STATE(427), + [sym_expr_fun] = STATE(1066), + [sym_expr_binary] = STATE(1066), + [sym_expr_annot] = STATE(1066), + [sym_expr_call] = STATE(1066), + [sym_expr_tuple_access] = STATE(1066), + [sym_expr_record_access] = STATE(1066), + [sym_expr_array_access] = STATE(1066), + [sym_expr_method_call] = STATE(1066), + [sym_expr_record_variant] = STATE(1066), + [sym_expr_paren] = STATE(1066), + [sym_expr_constant] = STATE(1066), + [sym_expr_name] = STATE(1066), + [sym_expr_array] = STATE(1066), + [sym_expr_tuple] = STATE(1066), + [sym_expr_record] = STATE(1066), + [sym_expr_do] = STATE(1066), + [sym_expr_if] = STATE(1066), + [sym_expr_match] = STATE(1066), + [sym_expr_loop] = STATE(1066), + [sym_expr_while] = STATE(1066), + [sym_expr_for] = STATE(1066), + [sym_expr_try] = STATE(1066), + [sym_name] = ACTIONS(344), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(77), + [anon_sym_COLON] = ACTIONS(79), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(77), + [anon_sym_LBRACK] = ACTIONS(77), + [anon_sym_EQ] = ACTIONS(79), + [anon_sym_fun] = ACTIONS(356), + [anon_sym_or] = ACTIONS(79), + [anon_sym_return] = ACTIONS(358), + [anon_sym_break] = ACTIONS(360), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(362), + [anon_sym_from] = ACTIONS(364), + [anon_sym_PLUS_EQ] = ACTIONS(77), + [anon_sym_DASH_EQ] = ACTIONS(77), + [anon_sym_STAR_EQ] = ACTIONS(77), + [anon_sym_SLASH_EQ] = ACTIONS(77), + [anon_sym_DOT_DOT] = ACTIONS(79), + [anon_sym_DOT_DOT_EQ] = ACTIONS(77), + [anon_sym_and] = ACTIONS(79), + [anon_sym_EQ_EQ] = ACTIONS(77), + [anon_sym_BANG_EQ] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(79), + [anon_sym_GT] = ACTIONS(79), + [anon_sym_LT_EQ] = ACTIONS(77), + [anon_sym_GT_EQ] = ACTIONS(77), + [anon_sym_PLUS] = ACTIONS(79), + [anon_sym_DASH] = ACTIONS(79), + [anon_sym_STAR] = ACTIONS(79), + [anon_sym_SLASH] = ACTIONS(79), + [anon_sym_COLON_COLON] = ACTIONS(77), + [anon_sym_DOT] = ACTIONS(79), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, + [43] = { + [sym__constant] = STATE(893), + [sym_constant_string] = STATE(893), + [sym_constant_char] = STATE(893), + [sym_constant_bool] = STATE(893), + [sym_constant_unit] = STATE(893), + [sym__expr] = STATE(1060), + [sym_expr_return] = STATE(1060), + [sym_expr_break] = STATE(1060), + [sym_expr_continue] = STATE(1060), + [sym_expr_throw] = STATE(1060), + [sym_expr_query] = STATE(1060), + [sym_query_from] = STATE(427), + [sym_expr_fun] = STATE(1060), + [sym_expr_binary] = STATE(1060), + [sym_expr_annot] = STATE(1060), + [sym_expr_call] = STATE(1060), + [sym_expr_tuple_access] = STATE(1060), + [sym_expr_record_access] = STATE(1060), + [sym_expr_array_access] = STATE(1060), + [sym_expr_method_call] = STATE(1060), + [sym_expr_record_variant] = STATE(1060), + [sym_expr_paren] = STATE(1060), + [sym_expr_constant] = STATE(1060), + [sym_expr_name] = STATE(1060), + [sym_expr_array] = STATE(1060), + [sym_expr_tuple] = STATE(1060), + [sym_expr_record] = STATE(1060), + [sym_expr_do] = STATE(1060), + [sym_expr_if] = STATE(1060), + [sym_expr_match] = STATE(1060), + [sym_expr_loop] = STATE(1060), + [sym_expr_while] = STATE(1060), + [sym_expr_for] = STATE(1060), + [sym_expr_try] = STATE(1060), + [sym_name] = ACTIONS(344), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(115), + [anon_sym_COLON] = ACTIONS(117), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(115), + [anon_sym_LBRACK] = ACTIONS(115), + [anon_sym_EQ] = ACTIONS(117), + [anon_sym_fun] = ACTIONS(356), + [anon_sym_or] = ACTIONS(117), + [anon_sym_return] = ACTIONS(358), + [anon_sym_break] = ACTIONS(360), + [anon_sym_continue] = ACTIONS(53), + [anon_sym_throw] = ACTIONS(362), + [anon_sym_from] = ACTIONS(364), + [anon_sym_PLUS_EQ] = ACTIONS(115), + [anon_sym_DASH_EQ] = ACTIONS(115), + [anon_sym_STAR_EQ] = ACTIONS(115), + [anon_sym_SLASH_EQ] = ACTIONS(115), + [anon_sym_DOT_DOT] = ACTIONS(117), + [anon_sym_DOT_DOT_EQ] = ACTIONS(115), + [anon_sym_and] = ACTIONS(117), + [anon_sym_EQ_EQ] = ACTIONS(115), + [anon_sym_BANG_EQ] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_EQ] = ACTIONS(115), + [anon_sym_GT_EQ] = ACTIONS(115), + [anon_sym_PLUS] = ACTIONS(117), + [anon_sym_DASH] = ACTIONS(117), + [anon_sym_STAR] = ACTIONS(117), + [anon_sym_SLASH] = ACTIONS(117), + [anon_sym_COLON_COLON] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(117), + [anon_sym_do] = ACTIONS(59), + [anon_sym_if] = ACTIONS(61), + [anon_sym_match] = ACTIONS(63), + [anon_sym_loop] = ACTIONS(65), + [anon_sym_while] = ACTIONS(67), + [anon_sym_for] = ACTIONS(69), + [anon_sym_try] = ACTIONS(71), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 30, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + ACTIONS(368), 1, + anon_sym_RBRACE, + STATE(402), 1, + sym_query_from, + STATE(1306), 1, + sym_expr_field, + STATE(1563), 1, + sym__expr_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [125] = 30, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + ACTIONS(370), 1, + anon_sym_RBRACE, + STATE(402), 1, + sym_query_from, + STATE(1306), 1, + sym_expr_field, + STATE(1478), 1, + sym__expr_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [250] = 30, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + ACTIONS(372), 1, + anon_sym_RBRACE, + STATE(402), 1, + sym_query_from, + STATE(1306), 1, + sym_expr_field, + STATE(1511), 1, + sym__expr_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [375] = 30, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + ACTIONS(374), 1, + anon_sym_RBRACE, + STATE(402), 1, + sym_query_from, + STATE(1306), 1, + sym_expr_field, + STATE(1459), 1, + sym__expr_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [500] = 29, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + ACTIONS(376), 1, + anon_sym_RBRACE, + STATE(402), 1, + sym_query_from, + STATE(1369), 1, + sym_expr_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [622] = 29, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + ACTIONS(378), 1, + anon_sym_RBRACE, + STATE(402), 1, + sym_query_from, + STATE(1369), 1, + sym_expr_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [744] = 28, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(366), 1, + sym_name, + STATE(402), 1, + sym_query_from, + STATE(1369), 1, + sym_expr_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1402), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1078), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [863] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(380), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1491), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [981] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(54), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 34, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [1051] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(386), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1519), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1169] = 16, + ACTIONS(392), 1, + anon_sym_from, + ACTIONS(395), 1, + anon_sym_where, + ACTIONS(398), 1, + anon_sym_join, + ACTIONS(401), 1, + anon_sym_union, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(410), 1, + anon_sym_roll, + ACTIONS(413), 1, + anon_sym_compute, + ACTIONS(416), 1, + anon_sym_select, + ACTIONS(419), 1, + anon_sym_with, + ACTIONS(422), 1, + anon_sym_into, + ACTIONS(425), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(54), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [1263] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(428), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1499), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1381] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1469), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1499] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(432), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1430), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1617] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(434), 1, + anon_sym_RBRACK, + STATE(402), 1, + sym_query_from, + STATE(1467), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1735] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(436), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1483), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1853] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(438), 1, + anon_sym_RBRACK, + STATE(402), 1, + sym_query_from, + STATE(1555), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1971] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(440), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(996), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2087] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(442), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1482), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2205] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(444), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1520), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2323] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(446), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1493), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2441] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(448), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(996), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2557] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(450), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + STATE(1461), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(987), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2675] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(52), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 34, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [2745] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(456), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1011), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2860] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(73), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [2929] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(74), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [2998] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(70), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [3067] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(458), 1, + anon_sym_RPAREN, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1008), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3182] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(460), 1, + anon_sym_from, + ACTIONS(463), 1, + anon_sym_where, + ACTIONS(466), 1, + anon_sym_join, + ACTIONS(469), 1, + anon_sym_union, + ACTIONS(472), 1, + anon_sym_roll, + ACTIONS(475), 1, + anon_sym_compute, + ACTIONS(478), 1, + anon_sym_select, + ACTIONS(481), 1, + anon_sym_with, + ACTIONS(484), 1, + anon_sym_into, + ACTIONS(487), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(73), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [3275] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(490), 1, + anon_sym_from, + ACTIONS(493), 1, + anon_sym_where, + ACTIONS(496), 1, + anon_sym_join, + ACTIONS(499), 1, + anon_sym_union, + ACTIONS(502), 1, + anon_sym_roll, + ACTIONS(505), 1, + anon_sym_compute, + ACTIONS(508), 1, + anon_sym_select, + ACTIONS(511), 1, + anon_sym_with, + ACTIONS(514), 1, + anon_sym_into, + ACTIONS(517), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(74), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [3368] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(69), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [3437] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(611), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3549] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(550), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3661] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(444), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3773] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(447), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3885] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1053), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3997] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1003), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4109] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(559), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4221] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(560), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4333] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(667), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4445] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(706), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4557] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(694), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4669] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(661), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4781] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(571), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4893] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(530), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5005] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(522), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5117] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1072), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5229] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(445), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5341] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(709), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5453] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1069), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5565] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1037), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5677] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(933), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5789] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(430), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5901] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(915), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6013] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(941), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6125] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(940), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6237] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(939), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6349] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(938), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6461] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(872), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6573] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(566), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6685] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(692), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6797] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(627), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6909] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(917), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7021] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(644), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7133] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(993), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7245] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1036), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7357] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(505), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7469] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(504), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7581] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(573), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7693] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(533), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7805] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(645), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7917] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(609), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8029] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(664), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8141] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(534), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8253] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8365] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(535), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8477] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(536), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8589] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(538), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8701] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(540), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8813] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1022), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8925] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(543), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9037] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(544), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9149] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(537), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9261] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(663), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9373] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(449), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9485] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(450), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9597] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(647), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9709] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(713), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9821] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(625), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9933] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1044), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10045] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(623), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10157] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10269] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(622), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10381] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(616), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10493] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(615), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10605] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(612), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10717] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(590), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10829] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(610), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10941] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(624), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11053] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(558), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11165] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(539), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11277] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(148), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [11345] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(646), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11457] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(211), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [11525] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(601), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11637] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(600), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11749] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11861] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1038), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11973] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(599), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12085] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(598), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12197] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(597), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12309] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(595), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12421] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1067), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12533] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(591), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12645] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(592), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12757] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(608), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12869] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(557), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12981] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(714), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13093] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(704), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13205] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(629), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13317] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(174), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [13385] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1056), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13497] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(555), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13609] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(554), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13721] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(757), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13833] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(568), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13945] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1032), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14057] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1068), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14169] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(582), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14281] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(215), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [14349] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(587), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14461] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(588), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14573] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14685] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(589), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14797] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(569), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14909] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(585), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15021] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(586), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15133] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(584), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15245] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(583), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15357] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(551), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15469] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1030), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15581] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1006), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15693] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1016), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15805] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(581), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15917] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(580), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16029] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(579), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16141] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(577), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16253] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(575), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16365] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16477] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1027), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16589] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1040), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16701] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(760), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16813] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1009), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16925] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1010), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17037] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(572), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17149] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(593), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17261] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1015), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17373] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1013), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17485] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(596), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17597] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(649), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17709] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(604), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17821] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1054), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17933] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(607), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18045] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(656), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18157] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1052), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18269] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(654), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18381] = 16, + ACTIONS(540), 1, + anon_sym_from, + ACTIONS(543), 1, + anon_sym_where, + ACTIONS(546), 1, + anon_sym_join, + ACTIONS(549), 1, + anon_sym_union, + ACTIONS(552), 1, + anon_sym_group, + ACTIONS(555), 1, + anon_sym_over, + ACTIONS(558), 1, + anon_sym_roll, + ACTIONS(561), 1, + anon_sym_compute, + ACTIONS(564), 1, + anon_sym_select, + ACTIONS(567), 1, + anon_sym_with, + ACTIONS(570), 1, + anon_sym_into, + ACTIONS(573), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(211), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [18473] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1049), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18585] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(652), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18697] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(653), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18809] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(576), 1, + anon_sym_from, + ACTIONS(579), 1, + anon_sym_where, + ACTIONS(582), 1, + anon_sym_join, + ACTIONS(585), 1, + anon_sym_union, + ACTIONS(588), 1, + anon_sym_roll, + ACTIONS(591), 1, + anon_sym_compute, + ACTIONS(594), 1, + anon_sym_select, + ACTIONS(597), 1, + anon_sym_with, + ACTIONS(600), 1, + anon_sym_into, + ACTIONS(603), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(215), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [18901] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(749), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19013] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(711), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19125] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1018), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19237] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(463), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19349] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(494), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19461] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(570), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19573] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1061), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19685] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1019), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19797] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(726), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19909] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(673), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20021] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(660), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20133] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(669), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20245] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(676), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20357] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(679), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20469] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(527), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20581] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(872), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20693] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(670), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20805] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(466), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20917] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(682), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21029] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(127), 1, + anon_sym_fun, + ACTIONS(129), 1, + anon_sym_return, + ACTIONS(131), 1, + anon_sym_break, + ACTIONS(133), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(530), 1, + anon_sym_from, + STATE(71), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(462), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21141] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(659), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21253] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1020), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21365] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21477] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(763), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21589] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(739), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21701] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(346), 1, + anon_sym_fun, + ACTIONS(348), 1, + anon_sym_return, + ACTIONS(350), 1, + anon_sym_break, + ACTIONS(352), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1021), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21813] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1043), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21925] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(626), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22037] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(703), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22149] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22261] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(678), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22373] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(677), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22485] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(668), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22597] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(651), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22709] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(658), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22821] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(675), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22933] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(672), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23045] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(666), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23157] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(648), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23269] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(738), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23381] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1042), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23493] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(671), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23605] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1073), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23717] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(736), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23829] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(767), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23941] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(641), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24053] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(734), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24165] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(662), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24277] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(687), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24389] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(613), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24501] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(614), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24613] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1041), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24725] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(565), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24837] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(705), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24949] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(618), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25061] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(768), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25173] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(728), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25285] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(702), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25397] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1074), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25509] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(562), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25621] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(602), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25733] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(563), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25845] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(756), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25957] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(701), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26069] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(775), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26181] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1059), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26293] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(561), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26405] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1039), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26517] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1063), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26629] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(729), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26741] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(776), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26853] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(685), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26965] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(650), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27077] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(655), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27189] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(777), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27301] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(574), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27413] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(779), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27525] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(578), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27637] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(603), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27749] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(700), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27861] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(699), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27973] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1014), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28085] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(698), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28197] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1062), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28309] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1012), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28421] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(542), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28533] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1077), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28645] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28757] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(576), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28869] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(697), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28981] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(926), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29093] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(135), 1, + anon_sym_fun, + ACTIONS(137), 1, + anon_sym_return, + ACTIONS(139), 1, + anon_sym_break, + ACTIONS(141), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(524), 1, + anon_sym_from, + STATE(165), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(594), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29205] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1045), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29317] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(733), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29429] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(617), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29541] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1071), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29653] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(751), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29765] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(642), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29877] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(750), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29989] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(762), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30101] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(778), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30213] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30325] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(774), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30437] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(773), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30549] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(696), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30661] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(772), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30773] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(771), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30885] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(770), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30997] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(769), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31109] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(717), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31221] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(201), 1, + anon_sym_fun, + ACTIONS(203), 1, + anon_sym_return, + ACTIONS(205), 1, + anon_sym_break, + ACTIONS(207), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(425), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(764), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31333] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1065), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31445] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(718), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31557] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(719), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31669] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(720), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31781] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(996), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31893] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(758), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32005] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(721), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32117] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(633), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32229] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(723), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32341] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(143), 1, + anon_sym_fun, + ACTIONS(145), 1, + anon_sym_return, + ACTIONS(147), 1, + anon_sym_break, + ACTIONS(149), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(536), 1, + anon_sym_from, + STATE(146), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(619), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32453] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(634), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32565] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1058), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32677] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(695), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32789] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(683), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32901] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(716), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33013] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(725), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33125] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(743), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33237] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(731), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33349] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33461] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(635), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33573] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(636), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33685] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(637), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33797] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(638), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33909] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(639), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34021] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(640), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34133] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34245] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(708), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34357] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(707), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34469] = 26, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(151), 1, + anon_sym_fun, + ACTIONS(153), 1, + anon_sym_return, + ACTIONS(155), 1, + anon_sym_break, + ACTIONS(157), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(403), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(632), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34581] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(684), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34693] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(761), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34805] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(628), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34917] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(722), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35029] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(735), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35141] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1048), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35253] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(737), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35365] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1070), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35477] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1075), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35589] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(935), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35701] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(741), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35813] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1057), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35925] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1051), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36037] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1034), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36149] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(740), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36261] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1076), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36373] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(715), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36485] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(745), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36597] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(712), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36709] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(169), 1, + anon_sym_fun, + ACTIONS(171), 1, + anon_sym_return, + ACTIONS(173), 1, + anon_sym_break, + ACTIONS(175), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(534), 1, + anon_sym_from, + STATE(410), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(686), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36821] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(643), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36933] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(177), 1, + anon_sym_fun, + ACTIONS(179), 1, + anon_sym_return, + ACTIONS(181), 1, + anon_sym_break, + ACTIONS(183), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(532), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(710), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37045] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37157] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1055), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37269] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(872), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37381] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(746), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37493] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(546), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37605] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(732), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37717] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(752), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37829] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(547), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37941] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1046), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38053] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(759), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38165] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(724), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38277] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(755), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38389] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(754), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38501] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(753), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38613] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(185), 1, + anon_sym_fun, + ACTIONS(187), 1, + anon_sym_return, + ACTIONS(189), 1, + anon_sym_break, + ACTIONS(191), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(606), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(748), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38725] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(161), 1, + anon_sym_fun, + ACTIONS(163), 1, + anon_sym_return, + ACTIONS(165), 1, + anon_sym_break, + ACTIONS(167), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(538), 1, + anon_sym_from, + STATE(407), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(657), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38837] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(119), 1, + anon_sym_fun, + ACTIONS(121), 1, + anon_sym_return, + ACTIONS(123), 1, + anon_sym_break, + ACTIONS(125), 1, + anon_sym_throw, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(526), 1, + anon_sym_from, + STATE(75), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(532), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38949] = 26, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(159), 1, + sym_name, + ACTIONS(193), 1, + anon_sym_fun, + ACTIONS(195), 1, + anon_sym_return, + ACTIONS(197), 1, + anon_sym_break, + ACTIONS(199), 1, + anon_sym_throw, + ACTIONS(354), 1, + anon_sym_from, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(730), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39061] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(548), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39173] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(549), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39285] = 26, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + ACTIONS(344), 1, + sym_name, + ACTIONS(356), 1, + anon_sym_fun, + ACTIONS(358), 1, + anon_sym_return, + ACTIONS(360), 1, + anon_sym_break, + ACTIONS(362), 1, + anon_sym_throw, + ACTIONS(364), 1, + anon_sym_from, + STATE(427), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1047), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39397] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(531), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39509] = 26, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(47), 1, + anon_sym_fun, + ACTIONS(49), 1, + anon_sym_return, + ACTIONS(51), 1, + anon_sym_break, + ACTIONS(53), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_throw, + ACTIONS(57), 1, + anon_sym_from, + ACTIONS(59), 1, + anon_sym_do, + ACTIONS(61), 1, + anon_sym_if, + ACTIONS(63), 1, + anon_sym_match, + ACTIONS(65), 1, + anon_sym_loop, + ACTIONS(67), 1, + anon_sym_while, + ACTIONS(69), 1, + anon_sym_for, + ACTIONS(71), 1, + anon_sym_try, + STATE(402), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(893), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1064), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39621] = 26, + ACTIONS(73), 1, + sym_name, + ACTIONS(75), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym_constant_int, + ACTIONS(83), 1, + sym_constant_float, + ACTIONS(85), 1, + sym_string_quote, + ACTIONS(87), 1, + anon_sym_SQUOTE, + ACTIONS(91), 1, + anon_sym_fun, + ACTIONS(93), 1, + anon_sym_return, + ACTIONS(95), 1, + anon_sym_break, + ACTIONS(97), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_throw, + ACTIONS(101), 1, + anon_sym_do, + ACTIONS(103), 1, + anon_sym_if, + ACTIONS(105), 1, + anon_sym_match, + ACTIONS(107), 1, + anon_sym_loop, + ACTIONS(109), 1, + anon_sym_while, + ACTIONS(111), 1, + anon_sym_for, + ACTIONS(113), 1, + anon_sym_try, + ACTIONS(520), 1, + anon_sym_LPAREN, + ACTIONS(522), 1, + anon_sym_LBRACK, + ACTIONS(528), 1, + anon_sym_from, + STATE(67), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(89), 2, + anon_sym_true, + anon_sym_false, + STATE(472), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(528), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_record_variant, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39733] = 16, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(620), 1, + anon_sym_roll, + ACTIONS(622), 1, + anon_sym_compute, + ACTIONS(624), 1, + anon_sym_select, + ACTIONS(626), 1, + anon_sym_with, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(630), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(405), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39824] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(406), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39891] = 16, + ACTIONS(552), 1, + anon_sym_group, + ACTIONS(555), 1, + anon_sym_over, + ACTIONS(632), 1, + anon_sym_from, + ACTIONS(635), 1, + anon_sym_where, + ACTIONS(638), 1, + anon_sym_join, + ACTIONS(641), 1, + anon_sym_union, + ACTIONS(644), 1, + anon_sym_roll, + ACTIONS(647), 1, + anon_sym_compute, + ACTIONS(650), 1, + anon_sym_select, + ACTIONS(653), 1, + anon_sym_with, + ACTIONS(656), 1, + anon_sym_into, + ACTIONS(659), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(404), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39982] = 16, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(620), 1, + anon_sym_roll, + ACTIONS(622), 1, + anon_sym_compute, + ACTIONS(624), 1, + anon_sym_select, + ACTIONS(626), 1, + anon_sym_with, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(630), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(404), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40073] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(404), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40140] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(408), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 29, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40205] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(409), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 29, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40270] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(662), 1, + anon_sym_from, + ACTIONS(665), 1, + anon_sym_where, + ACTIONS(668), 1, + anon_sym_join, + ACTIONS(671), 1, + anon_sym_union, + ACTIONS(674), 1, + anon_sym_roll, + ACTIONS(677), 1, + anon_sym_compute, + ACTIONS(680), 1, + anon_sym_select, + ACTIONS(683), 1, + anon_sym_with, + ACTIONS(686), 1, + anon_sym_into, + ACTIONS(689), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(409), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 17, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40359] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(412), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40423] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(692), 1, + anon_sym_from, + ACTIONS(695), 1, + anon_sym_where, + ACTIONS(698), 1, + anon_sym_join, + ACTIONS(701), 1, + anon_sym_union, + ACTIONS(704), 1, + anon_sym_roll, + ACTIONS(707), 1, + anon_sym_compute, + ACTIONS(710), 1, + anon_sym_select, + ACTIONS(713), 1, + anon_sym_with, + ACTIONS(716), 1, + anon_sym_into, + ACTIONS(719), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(411), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 16, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40511] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(411), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40575] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(722), 1, + anon_sym_from, + ACTIONS(725), 1, + anon_sym_where, + ACTIONS(728), 1, + anon_sym_join, + ACTIONS(731), 1, + anon_sym_union, + ACTIONS(734), 1, + anon_sym_roll, + ACTIONS(737), 1, + anon_sym_compute, + ACTIONS(740), 1, + anon_sym_select, + ACTIONS(743), 1, + anon_sym_with, + ACTIONS(746), 1, + anon_sym_into, + ACTIONS(749), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(413), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 16, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40663] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(415), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40727] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(413), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40791] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(420), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40854] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(422), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40917] = 16, + ACTIONS(752), 1, + anon_sym_from, + ACTIONS(754), 1, + anon_sym_where, + ACTIONS(756), 1, + anon_sym_join, + ACTIONS(758), 1, + anon_sym_union, + ACTIONS(760), 1, + anon_sym_group, + ACTIONS(762), 1, + anon_sym_over, + ACTIONS(764), 1, + anon_sym_roll, + ACTIONS(766), 1, + anon_sym_compute, + ACTIONS(768), 1, + anon_sym_select, + ACTIONS(770), 1, + anon_sym_with, + ACTIONS(772), 1, + anon_sym_into, + ACTIONS(774), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(419), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41004] = 16, + ACTIONS(404), 1, + anon_sym_group, + ACTIONS(407), 1, + anon_sym_over, + ACTIONS(776), 1, + anon_sym_from, + ACTIONS(779), 1, + anon_sym_where, + ACTIONS(782), 1, + anon_sym_join, + ACTIONS(785), 1, + anon_sym_union, + ACTIONS(788), 1, + anon_sym_roll, + ACTIONS(791), 1, + anon_sym_compute, + ACTIONS(794), 1, + anon_sym_select, + ACTIONS(797), 1, + anon_sym_with, + ACTIONS(800), 1, + anon_sym_into, + ACTIONS(803), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(419), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41091] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(419), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41154] = 16, + ACTIONS(752), 1, + anon_sym_from, + ACTIONS(754), 1, + anon_sym_where, + ACTIONS(756), 1, + anon_sym_join, + ACTIONS(758), 1, + anon_sym_union, + ACTIONS(760), 1, + anon_sym_group, + ACTIONS(762), 1, + anon_sym_over, + ACTIONS(764), 1, + anon_sym_roll, + ACTIONS(766), 1, + anon_sym_compute, + ACTIONS(768), 1, + anon_sym_select, + ACTIONS(770), 1, + anon_sym_with, + ACTIONS(772), 1, + anon_sym_into, + ACTIONS(774), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(418), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41241] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(423), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41304] = 16, + ACTIONS(552), 1, + anon_sym_group, + ACTIONS(555), 1, + anon_sym_over, + ACTIONS(806), 1, + anon_sym_from, + ACTIONS(809), 1, + anon_sym_where, + ACTIONS(812), 1, + anon_sym_join, + ACTIONS(815), 1, + anon_sym_union, + ACTIONS(818), 1, + anon_sym_roll, + ACTIONS(821), 1, + anon_sym_compute, + ACTIONS(824), 1, + anon_sym_select, + ACTIONS(827), 1, + anon_sym_with, + ACTIONS(830), 1, + anon_sym_into, + ACTIONS(833), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(423), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(388), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41391] = 16, + ACTIONS(552), 1, + anon_sym_group, + ACTIONS(555), 1, + anon_sym_over, + ACTIONS(836), 1, + anon_sym_from, + ACTIONS(839), 1, + anon_sym_where, + ACTIONS(842), 1, + anon_sym_join, + ACTIONS(845), 1, + anon_sym_union, + ACTIONS(848), 1, + anon_sym_roll, + ACTIONS(851), 1, + anon_sym_compute, + ACTIONS(854), 1, + anon_sym_select, + ACTIONS(857), 1, + anon_sym_with, + ACTIONS(860), 1, + anon_sym_into, + ACTIONS(863), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(390), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(388), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + STATE(424), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [41477] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(426), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(452), 26, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41539] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + STATE(424), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 26, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41601] = 16, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(866), 1, + anon_sym_from, + ACTIONS(868), 1, + anon_sym_where, + ACTIONS(870), 1, + anon_sym_join, + ACTIONS(872), 1, + anon_sym_union, + ACTIONS(874), 1, + anon_sym_roll, + ACTIONS(876), 1, + anon_sym_compute, + ACTIONS(878), 1, + anon_sym_select, + ACTIONS(880), 1, + anon_sym_with, + ACTIONS(882), 1, + anon_sym_into, + ACTIONS(884), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(454), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(452), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + STATE(428), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [41687] = 16, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(866), 1, + anon_sym_from, + ACTIONS(868), 1, + anon_sym_where, + ACTIONS(870), 1, + anon_sym_join, + ACTIONS(872), 1, + anon_sym_union, + ACTIONS(874), 1, + anon_sym_roll, + ACTIONS(876), 1, + anon_sym_compute, + ACTIONS(878), 1, + anon_sym_select, + ACTIONS(880), 1, + anon_sym_with, + ACTIONS(882), 1, + anon_sym_into, + ACTIONS(884), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(382), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + STATE(424), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [41773] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(888), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(886), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41829] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [41913] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(920), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(918), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41969] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(924), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(922), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42025] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(928), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(926), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42081] = 4, + STATE(488), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(932), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(930), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42139] = 4, + STATE(491), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(934), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42197] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(940), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(938), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42253] = 4, + ACTIONS(946), 1, + anon_sym_else, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(944), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(942), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42311] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(950), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(948), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42367] = 4, + STATE(514), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(954), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(952), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42425] = 4, + STATE(524), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(958), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(956), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42483] = 4, + ACTIONS(964), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(962), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(960), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42541] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(968), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(966), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42597] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(970), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42653] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(976), 1, + anon_sym_of, + STATE(479), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [42741] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(978), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [42825] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(984), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(982), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42881] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(976), 1, + anon_sym_of, + STATE(481), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(978), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [42969] = 4, + STATE(520), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(988), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(986), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43027] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(976), 1, + anon_sym_of, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(978), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43113] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(976), 1, + anon_sym_of, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43199] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(992), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(990), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43255] = 4, + ACTIONS(964), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(996), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(994), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43313] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1000), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(998), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43369] = 4, + STATE(503), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1004), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1002), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43427] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1008), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1006), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43483] = 4, + ACTIONS(964), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1012), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1010), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43541] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1016), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1014), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43597] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1020), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1018), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + [43653] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1024), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1022), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + [43709] = 4, + STATE(515), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1028), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1026), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43767] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1032), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1030), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + [43823] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43906] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1048), 1, + anon_sym_of, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43991] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1052), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1050), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44046] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1056), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1054), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44101] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [44184] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1060), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1058), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44239] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1064), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1062), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44294] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1068), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1066), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44349] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1072), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1070), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44404] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1076), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1074), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44459] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1080), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1078), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44514] = 4, + ACTIONS(1082), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1086), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1084), 34, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44571] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1090), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1088), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44626] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1094), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1092), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44681] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1098), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1096), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44736] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1102), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1100), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44791] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1106), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1104), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44846] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(514), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(954), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(952), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44905] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(954), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(952), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44960] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(515), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1028), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1026), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45019] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1028), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1026), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45074] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1110), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1108), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45129] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1114), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1112), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45184] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1118), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1116), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45239] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1122), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1120), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45294] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1126), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1124), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45349] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(958), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(956), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45404] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(524), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(958), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(956), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45463] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1130), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1128), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45518] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(988), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(986), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45573] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(520), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(988), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(986), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45632] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1134), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1132), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45687] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1048), 1, + anon_sym_of, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [45772] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1138), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1136), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45827] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1142), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1140), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45882] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1146), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1144), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45937] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1150), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1148), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45992] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1154), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1152), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46047] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1158), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1156), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46102] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1162), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1160), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46157] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1166), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1164), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46212] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1170), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1168), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46267] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1048), 1, + anon_sym_of, + STATE(479), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [46354] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1048), 1, + anon_sym_of, + STATE(481), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [46441] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1174), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1172), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46496] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1178), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1176), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46551] = 8, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 9, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 32, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [46616] = 5, + ACTIONS(1188), 1, + anon_sym_LPAREN, + ACTIONS(1190), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1186), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1184), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [46675] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1194), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1192), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46730] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1198), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1196), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46785] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1202), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1200), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46840] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1206), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1204), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46895] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1210), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1208), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46950] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1214), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1212), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47005] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1218), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1216), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47060] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(491), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(934), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47119] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1222), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1220), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47174] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1226), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1224), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47229] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1230), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1228), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47284] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(488), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(932), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(930), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47343] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1232), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47424] = 5, + ACTIONS(974), 1, + anon_sym_as, + STATE(503), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1004), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1002), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47483] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1004), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1002), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47538] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1238), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1236), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47593] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1242), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1240), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47648] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1232), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47728] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1246), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1248), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [47812] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1246), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1248), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [47896] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1256), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47974] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1246), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1248), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [48058] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48138] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1276), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48216] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1280), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48294] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [48360] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [48428] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [48510] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [48582] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1256), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48662] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1180), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48740] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [48822] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48904] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 27, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [48978] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49060] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49142] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1246), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1248), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [49226] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1300), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49304] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1246), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1248), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [49388] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(900), 1, + anon_sym_or, + ACTIONS(902), 1, + anon_sym_and, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1246), 1, + anon_sym_EQ, + ACTIONS(1250), 1, + anon_sym_DOT_DOT, + ACTIONS(1252), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(906), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(908), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(910), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(912), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1248), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [49472] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1308), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1310), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [49555] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49636] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49717] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49798] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [49881] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1300), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49958] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [50041] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [50124] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [50207] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [50290] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [50373] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1300), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50450] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1308), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1310), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [50533] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1308), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1310), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [50616] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [50697] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50776] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50855] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [50936] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [51017] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [51084] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1276), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51161] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51238] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1280), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51315] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51396] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1308), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1310), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [51479] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [51544] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1308), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1310), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [51627] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [51694] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1308), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1310), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [51777] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [51848] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51925] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [51998] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1262), 1, + anon_sym_or, + ACTIONS(1264), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1268), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1270), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1274), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [52079] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [52160] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [52233] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [52304] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1180), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52381] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1276), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52458] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1280), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52535] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [52600] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [52672] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [52744] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [52824] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1352), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1356), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [52906] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [52988] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [53064] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1352), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1356), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53146] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 27, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [53216] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [53282] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [53346] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [53422] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [53498] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [53574] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [53656] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1352), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1356), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53738] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [53818] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [53898] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1352), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1356), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53980] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54060] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54138] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54218] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [54300] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54376] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [54458] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [54540] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 27, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [54610] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [54676] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54752] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [54834] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1352), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1356), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [54916] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54996] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55076] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [55140] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55216] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55296] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55372] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55448] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1372), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [55529] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1392), 1, + anon_sym_of, + ACTIONS(1394), 1, + anon_sym_and, + STATE(481), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55612] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1372), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [55693] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55772] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55851] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55930] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56005] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56080] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [56143] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [56208] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [56277] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56352] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [56423] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [56502] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1372), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [56583] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56658] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1392), 1, + anon_sym_of, + ACTIONS(1394), 1, + anon_sym_and, + STATE(479), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56741] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1372), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [56822] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1372), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [56903] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56982] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57061] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1392), 1, + anon_sym_of, + ACTIONS(1394), 1, + anon_sym_and, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57142] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1392), 1, + anon_sym_of, + ACTIONS(1394), 1, + anon_sym_and, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57223] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1408), 1, + anon_sym_of, + ACTIONS(1410), 1, + anon_sym_and, + STATE(479), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57305] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1408), 1, + anon_sym_of, + ACTIONS(1410), 1, + anon_sym_and, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57385] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + STATE(439), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(898), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(890), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57463] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57541] = 22, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1048), 1, + anon_sym_of, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + STATE(481), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(978), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [57629] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1408), 1, + anon_sym_of, + ACTIONS(1410), 1, + anon_sym_and, + STATE(481), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57711] = 22, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1034), 1, + anon_sym_or, + ACTIONS(1036), 1, + anon_sym_and, + ACTIONS(1048), 1, + anon_sym_of, + ACTIONS(1316), 1, + anon_sym_DOT_DOT, + ACTIONS(1318), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1320), 1, + anon_sym_EQ, + STATE(479), 1, + sym__of, + STATE(480), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1040), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1042), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1044), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1046), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1322), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(890), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [57799] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57875] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1408), 1, + anon_sym_of, + ACTIONS(1410), 1, + anon_sym_and, + STATE(460), 1, + sym__of, + STATE(482), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57955] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58028] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58101] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58176] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [58253] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58328] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58401] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [58480] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58557] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58632] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [58699] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [58778] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [58857] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [58934] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 22, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [59003] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [59082] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [59159] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59232] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [59311] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 26, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [59374] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 26, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [59435] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [59514] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1086), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1084), 29, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [59563] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(1436), 1, + anon_sym_DOT_DOT, + ACTIONS(1438), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [59640] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1390), 1, + anon_sym_or, + ACTIONS(1394), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1396), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1398), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1400), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1402), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1404), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59713] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59787] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [59853] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59929] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60005] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60081] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60157] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60233] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60309] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1466), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1468), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [60387] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60459] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60535] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [60613] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60685] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60757] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60829] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [60889] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [60951] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [61017] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61089] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [61157] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1234), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1232), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61231] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1466), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1468), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [61309] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [61385] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61457] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [61519] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [61579] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1466), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1468), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [61657] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1466), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1468), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [61735] = 20, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1324), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_and, + ACTIONS(1348), 1, + anon_sym_DOT_DOT, + ACTIONS(1350), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1364), 1, + anon_sym_EQ, + STATE(477), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1328), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1330), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1332), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1334), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1336), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1366), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1232), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [61817] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [61893] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1466), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1468), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [61971] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1406), 1, + anon_sym_or, + ACTIONS(1410), 1, + anon_sym_and, + ACTIONS(1462), 1, + anon_sym_DOT_DOT, + ACTIONS(1464), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1466), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1412), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1414), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1416), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1418), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1420), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1468), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [62049] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [62117] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62189] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [62267] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62339] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [62417] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [62495] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [62573] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62645] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1422), 1, + anon_sym_or, + ACTIONS(1424), 1, + anon_sym_and, + ACTIONS(1458), 1, + anon_sym_DOT_DOT, + ACTIONS(1460), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1426), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1428), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1430), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1432), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1434), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [62723] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1474), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1478), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [62800] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1496), 1, + anon_sym_EQ, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1498), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [62877] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62948] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63023] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1496), 1, + anon_sym_EQ, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1498), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1254), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [63100] = 16, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1258), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1256), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63173] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63248] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63323] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63398] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [63465] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63536] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [63603] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 22, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [63668] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63739] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [63800] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [63859] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [63920] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 22, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [63985] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64060] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64135] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64210] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [64269] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64340] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64415] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1474), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1478), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [64492] = 19, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1288), 1, + anon_sym_desc, + ACTIONS(1352), 1, + anon_sym_EQ, + ACTIONS(1354), 1, + anon_sym_or, + ACTIONS(1358), 1, + anon_sym_DOT_DOT, + ACTIONS(1360), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1362), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1340), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1342), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1344), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1346), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1356), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1256), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [64571] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1496), 1, + anon_sym_EQ, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1498), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [64648] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64719] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64790] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64861] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1474), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1478), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [64938] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1474), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1478), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [65015] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1496), 1, + anon_sym_EQ, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1498), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [65092] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65163] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1496), 1, + anon_sym_EQ, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1498), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [65240] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1474), 1, + anon_sym_EQ, + ACTIONS(1476), 1, + anon_sym_or, + ACTIONS(1480), 1, + anon_sym_DOT_DOT, + ACTIONS(1482), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1484), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1486), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1488), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1490), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1492), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1494), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1478), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [65317] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65388] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1444), 1, + anon_sym_or, + ACTIONS(1446), 1, + anon_sym_and, + ACTIONS(1496), 1, + anon_sym_EQ, + ACTIONS(1500), 1, + anon_sym_DOT_DOT, + ACTIONS(1502), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1448), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1450), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1452), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1454), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1456), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1498), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [65465] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65535] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(1370), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_DOT_DOT, + ACTIONS(1376), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1378), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1382), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1384), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1386), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1388), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1372), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1300), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [65611] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [65685] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [65759] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [65833] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1522), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1524), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1298), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [65909] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1300), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65979] = 17, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [66053] = 13, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [66119] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [66189] = 12, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1180), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [66253] = 10, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [66313] = 9, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [66371] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1522), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1524), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1304), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66447] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1522), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1524), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1306), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66523] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1522), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1524), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1244), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66599] = 15, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [66669] = 18, + ACTIONS(892), 1, + anon_sym_COLON, + ACTIONS(894), 1, + anon_sym_LPAREN, + ACTIONS(896), 1, + anon_sym_LBRACK, + ACTIONS(914), 1, + anon_sym_COLON_COLON, + ACTIONS(916), 1, + anon_sym_DOT, + ACTIONS(1504), 1, + anon_sym_or, + ACTIONS(1506), 1, + anon_sym_and, + ACTIONS(1518), 1, + anon_sym_DOT_DOT, + ACTIONS(1520), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1522), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1510), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1512), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1514), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1516), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1524), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66745] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1526), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1528), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [66790] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1530), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1532), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [66835] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1534), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1536), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [66880] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1538), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1540), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [66925] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1542), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1544), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [66970] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1546), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1548), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67015] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1550), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1552), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67060] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1554), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1556), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67105] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1558), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1560), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67150] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1562), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1564), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67195] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1566), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1568), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67240] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1570), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1572), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67285] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1574), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1576), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67330] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1578), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1580), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67375] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1582), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1584), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67420] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1586), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1588), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67465] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1590), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1592), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67510] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1594), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1596), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67555] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1598), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1600), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67600] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1602), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1604), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67645] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1606), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1608), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67690] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1610), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1612), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67735] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1614), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1616), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67780] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1618), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1620), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67825] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1622), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1624), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67870] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1626), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1628), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67915] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1630), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1632), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [67960] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1634), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1636), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68005] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1638), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1640), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68050] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1642), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1644), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68095] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1646), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1648), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68140] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1650), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1652), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68185] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1654), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1656), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68230] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1658), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1660), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68275] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1662), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1664), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68320] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1666), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1668), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68365] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1018), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1020), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68410] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1670), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1672), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68455] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1022), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1024), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68500] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1674), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1676), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68545] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1678), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1680), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68590] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1682), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1684), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68635] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1686), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1688), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68680] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1690), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1692), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68725] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1694), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1696), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68770] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1698), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1700), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68815] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1702), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1704), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68860] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1706), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1708), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68905] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1030), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1032), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68950] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1710), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1712), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68995] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1714), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1716), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69040] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1718), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1720), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69085] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1722), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1724), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69130] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1726), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1728), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69175] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1730), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1732), 25, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + anon_sym_val, + anon_sym_var, + anon_sym_mod, + anon_sym_use, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69220] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1008), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1006), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69264] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(924), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(922), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69308] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1150), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1148), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69352] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(940), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(938), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69396] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1000), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(998), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69440] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(950), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(948), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69484] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(920), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(918), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69528] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(970), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69572] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1146), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1144), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69616] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(888), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(886), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69660] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(968), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(966), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69704] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1016), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1014), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69748] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1068), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1066), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69792] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1106), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1104), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69836] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1064), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1062), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69880] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(992), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(990), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69924] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(984), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(982), 25, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [69968] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1032), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1030), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + anon_sym_catch, + [70011] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1020), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1018), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + anon_sym_catch, + [70054] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1024), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1022), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + anon_sym_catch, + [70097] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(928), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(926), 23, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70139] = 4, + ACTIONS(1734), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(962), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(960), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70183] = 4, + ACTIONS(1734), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(996), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(994), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70227] = 4, + ACTIONS(1736), 1, + anon_sym_else, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(944), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(942), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70271] = 4, + ACTIONS(1734), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1012), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1010), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70315] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1748), 1, + anon_sym_RPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1364), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + STATE(1512), 1, + sym__params, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70384] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1122), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1120), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70425] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1060), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1058), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70466] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1166), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1164), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70507] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1174), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1172), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70548] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1206), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1204), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70589] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1110), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1108), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70630] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1754), 1, + anon_sym_RBRACE, + STATE(1298), 1, + sym_arm, + STATE(1394), 1, + sym_variant_name, + STATE(1455), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70699] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1076), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1074), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70740] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1756), 1, + anon_sym_RPAREN, + STATE(1364), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + STATE(1457), 1, + sym__params, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70809] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1126), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1124), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70850] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1178), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1176), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70891] = 8, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 8, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 19, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [70942] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1226), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1224), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70983] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1154), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1152), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71024] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1130), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1128), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71065] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1158), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1156), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71106] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1052), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1050), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71147] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1094), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1092), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71188] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1218), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1216), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71229] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1142), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1140), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71270] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1134), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1132), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71311] = 5, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1770), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1186), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1184), 20, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [71356] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1194), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1192), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71397] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1772), 1, + anon_sym_RBRACE, + STATE(1298), 1, + sym_arm, + STATE(1394), 1, + sym_variant_name, + STATE(1580), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [71466] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1118), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1116), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71507] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1774), 1, + anon_sym_RPAREN, + STATE(1364), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + STATE(1434), 1, + sym__params, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [71576] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1090), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1088), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71617] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1776), 1, + anon_sym_RPAREN, + STATE(1364), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + STATE(1504), 1, + sym__params, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [71686] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1238), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1236), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71727] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1072), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1070), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71768] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1202), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1200), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71809] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1114), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1112), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71850] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1080), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1078), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71891] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1162), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1160), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71932] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1056), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1054), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71973] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1198), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1196), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72014] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1778), 1, + anon_sym_RPAREN, + STATE(1364), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + STATE(1575), 1, + sym__params, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72083] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1138), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1136), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72124] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1242), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1240), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72165] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1780), 1, + anon_sym_RPAREN, + STATE(1364), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + STATE(1454), 1, + sym__params, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72234] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1782), 1, + anon_sym_RBRACE, + STATE(1394), 1, + sym_variant_name, + STATE(1395), 1, + sym_arm, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72300] = 4, + ACTIONS(1784), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1086), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1084), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72342] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1786), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1168), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72406] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1788), 1, + anon_sym_RPAREN, + STATE(1394), 1, + sym_variant_name, + STATE(1451), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72472] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1790), 1, + anon_sym_RPAREN, + STATE(1378), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72538] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1298), 1, + sym_arm, + STATE(1394), 1, + sym_variant_name, + STATE(1488), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72604] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1792), 1, + anon_sym_RPAREN, + STATE(1378), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72670] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1298), 1, + sym_arm, + STATE(1394), 1, + sym_variant_name, + STATE(1423), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72736] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1794), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1168), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72800] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1796), 1, + anon_sym_RPAREN, + STATE(1394), 1, + sym_variant_name, + STATE(1428), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72866] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1798), 1, + anon_sym_RBRACE, + STATE(1394), 1, + sym_variant_name, + STATE(1395), 1, + sym_arm, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72932] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + ACTIONS(1800), 1, + anon_sym_RBRACK, + STATE(1394), 1, + sym_variant_name, + STATE(1487), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72998] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1481), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73061] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1542), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73124] = 13, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 13, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [73183] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1576), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73246] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1276), 11, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [73307] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1577), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73370] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(458), 1, + anon_sym_RPAREN, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1174), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73433] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1395), 1, + sym_arm, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1254), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73496] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1564), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73559] = 16, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1290), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [73624] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1460), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73687] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1521), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73750] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1578), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73813] = 16, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1284), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [73878] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1559), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73941] = 16, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1294), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [74006] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1432), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74069] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1539), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74132] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1527), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74195] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1378), 1, + sym__param, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1327), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74258] = 16, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1180), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [74323] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1523), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74386] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1280), 11, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [74447] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1471), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74510] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + STATE(1495), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74573] = 9, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 6, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 17, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [74624] = 10, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 4, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 17, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [74677] = 12, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 15, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [74734] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1180), 11, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [74795] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1184), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74855] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1156), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74915] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1202), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74975] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1239), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75035] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1199), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75095] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1195), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75155] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1209), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75215] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1208), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75275] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1193), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75335] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1226), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75395] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1212), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75455] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1192), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75515] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1204), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75575] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1234), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75635] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1168), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75695] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1248), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75755] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1176), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75815] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1238), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75875] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1224), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75935] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1276), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75995] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1274), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76055] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1183), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76115] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1277), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76175] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1194), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76235] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1182), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76295] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1236), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76355] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1288), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76415] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1222), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76475] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1237), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76535] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1242), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76595] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1213), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76655] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1158), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76715] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1225), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76775] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1263), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76835] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1206), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76895] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1214), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76955] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1207), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77015] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1198), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77075] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1218), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77135] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1243), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77195] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1220), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77255] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1262), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77315] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1289), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77375] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1210), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77435] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1738), 1, + sym_name, + ACTIONS(1740), 1, + anon_sym_LBRACE, + ACTIONS(1742), 1, + sym_constant_int, + ACTIONS(1744), 1, + sym_constant_float, + ACTIONS(1746), 1, + anon_sym_LPAREN, + ACTIONS(1750), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym__, + STATE(1394), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1162), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1233), 12, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77495] = 19, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1818), 1, + anon_sym_COMMA, + ACTIONS(1822), 1, + anon_sym_EQ, + STATE(1228), 1, + aux_sym__exprs_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1820), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [77564] = 15, + ACTIONS(388), 1, + anon_sym_RBRACE, + ACTIONS(552), 1, + anon_sym_group, + ACTIONS(555), 1, + anon_sym_over, + ACTIONS(632), 1, + anon_sym_from, + ACTIONS(635), 1, + anon_sym_where, + ACTIONS(638), 1, + anon_sym_join, + ACTIONS(641), 1, + anon_sym_union, + ACTIONS(656), 1, + anon_sym_into, + ACTIONS(1826), 1, + anon_sym_roll, + ACTIONS(1829), 1, + anon_sym_compute, + ACTIONS(1832), 1, + anon_sym_select, + ACTIONS(1835), 1, + anon_sym_with, + ACTIONS(1838), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77624] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1841), 1, + anon_sym_RBRACE, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77684] = 6, + ACTIONS(1784), 1, + anon_sym_LBRACE, + ACTIONS(1855), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1853), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1086), 9, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1084), 14, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [77726] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1857), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1001), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77786] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1859), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77846] = 19, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1861), 1, + anon_sym_LBRACE, + ACTIONS(1863), 1, + anon_sym_EQ, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_DOT_DOT_EQ, + STATE(1427), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1867), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [77914] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1883), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(989), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77974] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1885), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78034] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1887), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78098] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1889), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1000), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78158] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1891), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(992), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78218] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1885), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1004), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78278] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1893), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78338] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1883), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78398] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1895), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(995), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78458] = 19, + ACTIONS(974), 1, + anon_sym_as, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1863), 1, + anon_sym_EQ, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1897), 1, + anon_sym_LBRACE, + STATE(1530), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1867), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78526] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1843), 1, + anon_sym_roll, + ACTIONS(1845), 1, + anon_sym_compute, + ACTIONS(1847), 1, + anon_sym_select, + ACTIONS(1849), 1, + anon_sym_with, + ACTIONS(1851), 1, + anon_sym_order, + ACTIONS(1899), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(988), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78586] = 18, + ACTIONS(310), 1, + anon_sym_RBRACE, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78651] = 16, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78712] = 18, + ACTIONS(322), 1, + anon_sym_RBRACE, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78777] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1903), 1, + anon_sym_COMMA, + ACTIONS(1905), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78842] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + STATE(502), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78907] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + STATE(437), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78972] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1929), 1, + anon_sym_COMMA, + ACTIONS(1931), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79037] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(858), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79102] = 12, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 11, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [79155] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(863), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79220] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 7, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [79277] = 13, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 9, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [79332] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1086), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1084), 16, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [79367] = 10, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 4, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 13, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [79416] = 9, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 6, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 13, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [79463] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 7, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [79520] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 7, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [79577] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1935), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79640] = 6, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1770), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1937), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1186), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_DOT, + ACTIONS(1184), 12, + anon_sym_LBRACK, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [79681] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(1939), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79746] = 18, + ACTIONS(334), 1, + anon_sym_RBRACE, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79811] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(1941), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79876] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + STATE(525), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79941] = 16, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80002] = 16, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80063] = 16, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1865), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1873), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1875), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1877), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1879), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1881), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80124] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(1943), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80189] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(889), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80254] = 18, + ACTIONS(324), 1, + anon_sym_RBRACE, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80319] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1945), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80382] = 18, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(1947), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80447] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1949), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80509] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1951), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80571] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1953), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80633] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1955), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80695] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1957), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80757] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1959), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80819] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1961), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80881] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1963), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80943] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1965), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81005] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1967), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81067] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1969), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81129] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 6, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [81185] = 16, + ACTIONS(1182), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81245] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1971), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81307] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1901), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81369] = 10, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 4, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1180), 12, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [81417] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1973), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81479] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1975), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81541] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1977), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81603] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 6, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [81659] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1979), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81721] = 12, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 10, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [81773] = 16, + ACTIONS(1286), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81833] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1981), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81895] = 16, + ACTIONS(1292), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1290), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81955] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1983), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82017] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1985), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82079] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1987), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82141] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1989), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82203] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1991), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82265] = 16, + ACTIONS(1296), 1, + anon_sym_EQ, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1294), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82325] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1993), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82387] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1909), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_DOT_DOT, + ACTIONS(1917), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1995), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1913), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82449] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1997), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82511] = 13, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 8, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [82565] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(1999), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82627] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(2001), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82689] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(2003), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82751] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(2005), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82813] = 14, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1182), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1911), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1919), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1921), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1923), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1925), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1180), 6, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [82869] = 9, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1927), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 6, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1180), 12, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [82915] = 17, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(2007), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82977] = 16, + ACTIONS(1758), 1, + anon_sym_COLON, + ACTIONS(1760), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_COLON_COLON, + ACTIONS(1814), 1, + anon_sym_DOT_DOT, + ACTIONS(1816), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1822), 1, + anon_sym_EQ, + ACTIONS(2009), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1802), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1804), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1806), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1808), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1810), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1812), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1824), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [83036] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2017), 1, + anon_sym_RPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + STATE(1148), 1, + sym_type_name, + STATE(1534), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83083] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2027), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1579), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83130] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2029), 1, + anon_sym_RBRACK, + STATE(1148), 1, + sym_type_name, + STATE(1494), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83177] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2033), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2031), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(1232), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83222] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2035), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1529), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83269] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2037), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1562), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83316] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2039), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1567), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83363] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2041), 1, + anon_sym_RBRACK, + STATE(1148), 1, + sym_type_name, + STATE(1422), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83410] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2043), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1509), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83457] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2045), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1473), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83504] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2047), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1419), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83551] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2049), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1500), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83598] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2051), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1484), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83645] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2033), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2053), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(1232), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83690] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2055), 1, + anon_sym_RBRACK, + STATE(1148), 1, + sym_type_name, + STATE(1486), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83737] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2057), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1505), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83784] = 12, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2059), 1, + anon_sym_RPAREN, + STATE(1148), 1, + sym_type_name, + STATE(1436), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83831] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + STATE(1148), 1, + sym_type_name, + STATE(1585), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83875] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + STATE(1148), 1, + sym_type_name, + STATE(1458), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83919] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + STATE(1148), 1, + sym_type_name, + STATE(1569), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83963] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2061), 1, + anon_sym_RPAREN, + ACTIONS(2063), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1293), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84007] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + ACTIONS(2025), 1, + anon_sym__, + STATE(1148), 1, + sym_type_name, + STATE(1424), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1177), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84051] = 11, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2065), 1, + anon_sym_RPAREN, + ACTIONS(2067), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1350), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84095] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2069), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1186), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84136] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2071), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1249), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84177] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2073), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1264), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84218] = 10, + ACTIONS(2075), 1, + sym_name, + ACTIONS(2077), 1, + anon_sym_LBRACE, + ACTIONS(2079), 1, + anon_sym_LPAREN, + ACTIONS(2081), 1, + anon_sym_LBRACK, + ACTIONS(2083), 1, + anon_sym_fun, + ACTIONS(2085), 1, + sym_type_never, + ACTIONS(2087), 1, + anon_sym__, + STATE(433), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(456), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84259] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2089), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1287), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84300] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2091), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1230), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84341] = 10, + ACTIONS(2075), 1, + sym_name, + ACTIONS(2077), 1, + anon_sym_LBRACE, + ACTIONS(2079), 1, + anon_sym_LPAREN, + ACTIONS(2081), 1, + anon_sym_LBRACK, + ACTIONS(2083), 1, + anon_sym_fun, + ACTIONS(2087), 1, + anon_sym__, + ACTIONS(2093), 1, + sym_type_never, + STATE(433), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(452), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84382] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2095), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1278), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84423] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2097), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1251), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84464] = 10, + ACTIONS(2075), 1, + sym_name, + ACTIONS(2077), 1, + anon_sym_LBRACE, + ACTIONS(2079), 1, + anon_sym_LPAREN, + ACTIONS(2081), 1, + anon_sym_LBRACK, + ACTIONS(2083), 1, + anon_sym_fun, + ACTIONS(2087), 1, + anon_sym__, + ACTIONS(2099), 1, + sym_type_never, + STATE(433), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(441), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84505] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2101), 1, + anon_sym_fun, + ACTIONS(2103), 1, + sym_type_never, + STATE(855), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(841), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84546] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2033), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1232), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84587] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2105), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1200), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84628] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2107), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1273), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84669] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2109), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1227), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84710] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2111), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1272), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84751] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2113), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1257), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84792] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2115), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1175), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84833] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2101), 1, + anon_sym_fun, + ACTIONS(2117), 1, + sym_type_never, + STATE(855), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(859), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84874] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2119), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1164), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84915] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2121), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1215), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84956] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2123), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1196), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84997] = 10, + ACTIONS(2075), 1, + sym_name, + ACTIONS(2077), 1, + anon_sym_LBRACE, + ACTIONS(2079), 1, + anon_sym_LPAREN, + ACTIONS(2081), 1, + anon_sym_LBRACK, + ACTIONS(2083), 1, + anon_sym_fun, + ACTIONS(2087), 1, + anon_sym__, + ACTIONS(2125), 1, + sym_type_never, + STATE(433), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(431), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85038] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2127), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1382), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85079] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2129), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1367), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85120] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2101), 1, + anon_sym_fun, + ACTIONS(2131), 1, + sym_type_never, + STATE(855), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(856), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85161] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2133), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1244), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85202] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2135), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1283), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85243] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2137), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1252), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85284] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2139), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1190), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85325] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2141), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1412), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85366] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2143), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1385), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85407] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2145), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1401), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85448] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2147), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1151), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85489] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2149), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1320), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85530] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2151), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1268), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85571] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2103), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(841), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85612] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2153), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1188), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85653] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2155), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1219), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85694] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2157), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1270), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85735] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2101), 1, + anon_sym_fun, + ACTIONS(2159), 1, + sym_type_never, + STATE(855), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(857), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85776] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2161), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1259), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85817] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2163), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1284), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85858] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2165), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1392), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85899] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2167), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1217), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85940] = 10, + ACTIONS(2011), 1, + sym_name, + ACTIONS(2013), 1, + anon_sym_LBRACE, + ACTIONS(2015), 1, + anon_sym_LPAREN, + ACTIONS(2019), 1, + anon_sym_LBRACK, + ACTIONS(2021), 1, + anon_sym_fun, + ACTIONS(2025), 1, + anon_sym__, + ACTIONS(2169), 1, + sym_type_never, + STATE(1148), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1150), 10, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85981] = 4, + ACTIONS(928), 1, + anon_sym_EQ, + ACTIONS(2171), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(926), 11, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86005] = 8, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(2173), 1, + sym_constant_int, + ACTIONS(2175), 1, + sym_constant_float, + ACTIONS(2179), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2177), 2, + anon_sym_true, + anon_sym_false, + STATE(1407), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + [86036] = 4, + ACTIONS(1012), 1, + anon_sym_EQ, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1010), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86059] = 4, + ACTIONS(996), 1, + anon_sym_EQ, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(994), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86082] = 4, + ACTIONS(2187), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2183), 2, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(2185), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86105] = 3, + ACTIONS(2191), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2189), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86124] = 3, + ACTIONS(2195), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2193), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86143] = 3, + ACTIONS(2199), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2197), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86162] = 3, + ACTIONS(2203), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2201), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86181] = 3, + ACTIONS(2207), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2205), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86200] = 3, + ACTIONS(2211), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2209), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86219] = 3, + ACTIONS(2215), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2213), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86238] = 3, + ACTIONS(2219), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2217), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86257] = 3, + ACTIONS(2223), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2221), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86276] = 3, + ACTIONS(2227), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2225), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86295] = 3, + ACTIONS(2231), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2229), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86314] = 4, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2235), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2233), 8, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86335] = 3, + ACTIONS(2239), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2237), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86354] = 3, + ACTIONS(2243), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2241), 9, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86373] = 7, + ACTIONS(2245), 1, + anon_sym_COMMA, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + STATE(1250), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2249), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86397] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2255), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86416] = 5, + ACTIONS(2259), 1, + sym_string_quote, + ACTIONS(2261), 1, + sym_string_content, + ACTIONS(2263), 1, + anon_sym_DOLLAR, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + STATE(1173), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86434] = 5, + ACTIONS(2263), 1, + anon_sym_DOLLAR, + ACTIONS(2265), 1, + sym_string_quote, + ACTIONS(2267), 1, + sym_string_content, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + STATE(1171), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86452] = 5, + ACTIONS(2261), 1, + sym_string_content, + ACTIONS(2263), 1, + anon_sym_DOLLAR, + ACTIONS(2269), 1, + sym_string_quote, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + STATE(1173), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86470] = 5, + ACTIONS(2263), 1, + anon_sym_DOLLAR, + ACTIONS(2271), 1, + sym_string_quote, + ACTIONS(2273), 1, + sym_string_content, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + STATE(1169), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86488] = 5, + ACTIONS(2275), 1, + sym_string_quote, + ACTIONS(2277), 1, + sym_string_content, + ACTIONS(2280), 1, + anon_sym_DOLLAR, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + STATE(1173), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86506] = 6, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2283), 1, + anon_sym_COMMA, + ACTIONS(2285), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86526] = 4, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2233), 2, + anon_sym_COLON, + anon_sym_or, + ACTIONS(2287), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + [86542] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2289), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [86560] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2291), 1, + anon_sym_COMMA, + STATE(1267), 1, + aux_sym__types_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2293), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86578] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2297), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1440), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86595] = 5, + ACTIONS(1933), 1, + anon_sym_LBRACE, + ACTIONS(2299), 1, + anon_sym_COLON, + ACTIONS(2301), 1, + anon_sym_EQ, + STATE(899), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86612] = 5, + ACTIONS(1933), 1, + anon_sym_LBRACE, + ACTIONS(2303), 1, + anon_sym_COLON, + ACTIONS(2305), 1, + anon_sym_EQ, + STATE(899), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86629] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2307), 1, + anon_sym_COLON, + ACTIONS(2309), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86646] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2311), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86663] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2313), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86680] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2315), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86697] = 5, + ACTIONS(2317), 1, + anon_sym_def, + ACTIONS(2319), 1, + anon_sym_type, + ACTIONS(2321), 1, + anon_sym_enum, + ACTIONS(2323), 1, + anon_sym_struct, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86714] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2325), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86731] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2327), 1, + anon_sym_COLON, + ACTIONS(2329), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86748] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2331), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86765] = 5, + ACTIONS(2333), 1, + sym_name, + ACTIONS(2335), 1, + anon_sym_RBRACE, + STATE(1336), 1, + sym_attribute, + STATE(1508), 1, + sym__attributes, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86782] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2337), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86799] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2339), 1, + anon_sym_COLON, + ACTIONS(2341), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86816] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2343), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86833] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2345), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86850] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2347), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86867] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2349), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86884] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2351), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86901] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2353), 1, + anon_sym_COLON, + ACTIONS(2355), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86918] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2357), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86935] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2359), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86952] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2361), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86969] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2363), 1, + anon_sym_COLON, + ACTIONS(2365), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86986] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2367), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87003] = 5, + ACTIONS(2369), 1, + sym_name, + ACTIONS(2371), 1, + anon_sym_RBRACE, + STATE(1354), 1, + sym_pattern_field, + STATE(1490), 1, + sym__pattern_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87020] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2373), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87037] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2375), 1, + anon_sym_COLON, + ACTIONS(2377), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87054] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2379), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87071] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2381), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87088] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2383), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87105] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2385), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87122] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2387), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87139] = 5, + ACTIONS(2389), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(2391), 1, + aux_sym_code_token1, + STATE(1355), 1, + aux_sym_code_repeat1, + STATE(1485), 1, + sym_code, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [87156] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2393), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87173] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2395), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87190] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2397), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87207] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2399), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87224] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2401), 1, + anon_sym_COLON, + ACTIONS(2403), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87241] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2405), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87258] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2407), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87275] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2409), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87292] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2411), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87309] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2413), 1, + anon_sym_COLON, + ACTIONS(2415), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87326] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2417), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87343] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2419), 4, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + [87354] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2421), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87371] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2423), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87388] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2425), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87405] = 5, + ACTIONS(1933), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2427), 1, + anon_sym_EQ, + STATE(875), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87422] = 4, + ACTIONS(2429), 1, + anon_sym_COMMA, + STATE(1246), 1, + aux_sym__exprs_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(448), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [87437] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2431), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1445), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87454] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2435), 1, + anon_sym_EQ, + STATE(817), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87471] = 5, + ACTIONS(2059), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1438), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87488] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2439), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [87501] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2441), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87518] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2443), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87535] = 5, + ACTIONS(1933), 1, + anon_sym_LBRACE, + ACTIONS(2445), 1, + anon_sym_COLON, + ACTIONS(2447), 1, + anon_sym_EQ, + STATE(899), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87552] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2449), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87569] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2451), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87586] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2453), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87603] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2455), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87620] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2457), 4, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_struct, + [87631] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2459), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1448), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87648] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2461), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87665] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2463), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87682] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2465), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87699] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2467), 1, + anon_sym_COLON, + ACTIONS(2469), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87716] = 4, + ACTIONS(2471), 1, + anon_sym_COMMA, + STATE(1246), 1, + aux_sym__exprs_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1887), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [87731] = 4, + ACTIONS(2474), 1, + anon_sym_LBRACE, + ACTIONS(2478), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2476), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [87746] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2480), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87763] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2482), 1, + anon_sym_EQ, + STATE(830), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87780] = 4, + ACTIONS(2484), 1, + anon_sym_COMMA, + STATE(1271), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1786), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [87795] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2486), 1, + anon_sym_EQ, + STATE(809), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87812] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2488), 1, + anon_sym_EQ, + STATE(808), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87829] = 5, + ACTIONS(1796), 1, + anon_sym_RBRACE, + ACTIONS(2369), 1, + sym_name, + STATE(1354), 1, + sym_pattern_field, + STATE(1472), 1, + sym__pattern_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87846] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2490), 1, + anon_sym_EQ_GT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87863] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2492), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1463), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87880] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2494), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1465), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87897] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2496), 1, + anon_sym_EQ, + STATE(804), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87914] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2498), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1416), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87931] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2500), 1, + anon_sym_EQ, + STATE(802), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87948] = 5, + ACTIONS(2045), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1510), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87965] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2502), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1474), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87982] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2504), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87999] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2506), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88016] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2508), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88033] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2510), 1, + anon_sym_COLON, + ACTIONS(2512), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88050] = 5, + ACTIONS(2043), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1507), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88067] = 4, + ACTIONS(2514), 1, + anon_sym_COMMA, + STATE(1281), 1, + aux_sym__types_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2031), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88082] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2516), 1, + anon_sym_EQ, + STATE(791), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88099] = 5, + ACTIONS(2035), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1528), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88116] = 5, + ACTIONS(1933), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2518), 1, + anon_sym_EQ, + STATE(875), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88133] = 4, + ACTIONS(2520), 1, + anon_sym_COMMA, + STATE(1271), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2255), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88148] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2523), 1, + anon_sym_EQ, + STATE(785), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88165] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2525), 1, + anon_sym_EQ, + STATE(805), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88182] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2527), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88199] = 5, + ACTIONS(2047), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1418), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88216] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2529), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88233] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2531), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88250] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2533), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88267] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2535), 1, + anon_sym_COLON, + ACTIONS(2537), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88284] = 5, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2539), 1, + anon_sym_RBRACK, + STATE(1345), 1, + sym_generic, + STATE(1433), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88301] = 4, + ACTIONS(2541), 1, + anon_sym_COMMA, + STATE(1281), 1, + aux_sym__types_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2439), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88316] = 5, + ACTIONS(2037), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1449), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88333] = 5, + ACTIONS(1933), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2544), 1, + anon_sym_EQ, + STATE(875), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88350] = 5, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2433), 1, + anon_sym_LBRACE, + ACTIONS(2546), 1, + anon_sym_EQ, + STATE(786), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88367] = 5, + ACTIONS(2049), 1, + anon_sym_RBRACE, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1417), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88384] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2548), 1, + anon_sym_COLON, + ACTIONS(2550), 1, + anon_sym_EQ, + STATE(526), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88401] = 5, + ACTIONS(1907), 1, + anon_sym_LBRACE, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2552), 1, + anon_sym_EQ, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88418] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2554), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88435] = 5, + ACTIONS(2247), 1, + anon_sym_COLON, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2556), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88452] = 4, + ACTIONS(2558), 1, + anon_sym_RBRACE, + ACTIONS(2560), 1, + anon_sym_COMMA, + STATE(1290), 1, + aux_sym__pattern_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88466] = 4, + ACTIONS(2563), 1, + anon_sym_RBRACE, + ACTIONS(2565), 1, + anon_sym_COMMA, + STATE(1291), 1, + aux_sym__type_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88480] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2570), 1, + anon_sym_RBRACE, + STATE(1359), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88494] = 4, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2572), 1, + anon_sym_COMMA, + ACTIONS(2574), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88508] = 4, + ACTIONS(2576), 1, + anon_sym_RBRACE, + ACTIONS(2578), 1, + anon_sym_COMMA, + STATE(1338), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88522] = 4, + ACTIONS(2576), 1, + anon_sym_RBRACE, + ACTIONS(2578), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88536] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2576), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88550] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2580), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88564] = 4, + ACTIONS(2582), 1, + anon_sym_RBRACE, + ACTIONS(2584), 1, + anon_sym_COMMA, + STATE(1352), 1, + aux_sym__arms_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88578] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2586), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88592] = 4, + ACTIONS(2586), 1, + anon_sym_RBRACE, + ACTIONS(2588), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88606] = 4, + ACTIONS(2590), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(2592), 1, + aux_sym_code_token1, + STATE(1301), 1, + aux_sym_code_repeat1, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [88620] = 4, + ACTIONS(2595), 1, + anon_sym_RBRACE, + ACTIONS(2597), 1, + anon_sym_COMMA, + STATE(1290), 1, + aux_sym__pattern_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88634] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2599), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88648] = 4, + ACTIONS(2333), 1, + sym_name, + ACTIONS(2601), 1, + anon_sym_RBRACE, + STATE(1406), 1, + sym_attribute, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88662] = 4, + ACTIONS(2603), 1, + anon_sym_RBRACE, + ACTIONS(2605), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88676] = 4, + ACTIONS(2607), 1, + anon_sym_RBRACE, + ACTIONS(2609), 1, + anon_sym_COMMA, + STATE(1344), 1, + aux_sym__expr_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88690] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2603), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88704] = 4, + ACTIONS(2369), 1, + sym_name, + ACTIONS(2595), 1, + anon_sym_RBRACE, + STATE(1381), 1, + sym_pattern_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88718] = 4, + ACTIONS(2611), 1, + sym_name, + ACTIONS(2613), 1, + anon_sym_LBRACE, + STATE(1348), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88732] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2615), 1, + anon_sym_RBRACE, + STATE(1346), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88746] = 4, + ACTIONS(2615), 1, + anon_sym_RBRACE, + ACTIONS(2617), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88760] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2615), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88774] = 4, + ACTIONS(2619), 1, + anon_sym_RBRACE, + ACTIONS(2621), 1, + anon_sym_COMMA, + STATE(1313), 1, + aux_sym__attributes_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88788] = 4, + ACTIONS(1790), 1, + anon_sym_RPAREN, + ACTIONS(2624), 1, + anon_sym_COMMA, + STATE(1351), 1, + aux_sym__params_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88802] = 4, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2626), 1, + anon_sym_RBRACK, + STATE(1384), 1, + sym_generic, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88816] = 4, + ACTIONS(2628), 1, + anon_sym_LBRACE, + ACTIONS(2630), 1, + anon_sym_LPAREN, + ACTIONS(2632), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88830] = 4, + ACTIONS(2626), 1, + anon_sym_RBRACK, + ACTIONS(2634), 1, + anon_sym_COMMA, + STATE(1340), 1, + aux_sym__generics_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88844] = 4, + ACTIONS(2636), 1, + anon_sym_RBRACE, + ACTIONS(2638), 1, + anon_sym_COMMA, + STATE(1318), 1, + aux_sym__arms_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88858] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2641), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88872] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2643), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [88884] = 4, + ACTIONS(2603), 1, + anon_sym_RBRACE, + ACTIONS(2605), 1, + anon_sym_COMMA, + STATE(1300), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88898] = 4, + ACTIONS(2645), 1, + anon_sym_RBRACE, + ACTIONS(2647), 1, + anon_sym_COMMA, + STATE(1337), 1, + aux_sym__type_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88912] = 4, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1492), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88926] = 4, + ACTIONS(2649), 1, + anon_sym_RBRACE, + ACTIONS(2651), 1, + anon_sym_COMMA, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88940] = 3, + ACTIONS(2655), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2653), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [88952] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2657), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88966] = 4, + ACTIONS(2251), 1, + anon_sym_AMP, + ACTIONS(2253), 1, + anon_sym_or, + ACTIONS(2659), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88980] = 4, + ACTIONS(2437), 1, + sym_name, + ACTIONS(2661), 1, + anon_sym_RBRACE, + STATE(1391), 1, + sym_type_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88994] = 4, + ACTIONS(2657), 1, + anon_sym_RBRACE, + ACTIONS(2663), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89008] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2657), 1, + anon_sym_RBRACE, + STATE(1332), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89022] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2665), 1, + anon_sym_RBRACE, + STATE(1294), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89036] = 4, + ACTIONS(2665), 1, + anon_sym_RBRACE, + ACTIONS(2667), 1, + anon_sym_COMMA, + STATE(1295), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89050] = 4, + ACTIONS(2669), 1, + anon_sym_RBRACE, + ACTIONS(2671), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89064] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2665), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89078] = 4, + ACTIONS(2437), 1, + sym_name, + ACTIONS(2674), 1, + anon_sym_RBRACE, + STATE(1391), 1, + sym_type_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89092] = 4, + ACTIONS(2676), 1, + anon_sym_RBRACE, + ACTIONS(2678), 1, + anon_sym_COMMA, + STATE(1360), 1, + aux_sym__attributes_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89106] = 4, + ACTIONS(2674), 1, + anon_sym_RBRACE, + ACTIONS(2680), 1, + anon_sym_COMMA, + STATE(1291), 1, + aux_sym__type_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89120] = 4, + ACTIONS(2682), 1, + anon_sym_RBRACE, + ACTIONS(2684), 1, + anon_sym_COMMA, + STATE(1333), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89134] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2682), 1, + anon_sym_RBRACE, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89148] = 4, + ACTIONS(2686), 1, + anon_sym_COMMA, + ACTIONS(2689), 1, + anon_sym_RBRACK, + STATE(1340), 1, + aux_sym__generics_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89162] = 4, + ACTIONS(2295), 1, + sym_name, + ACTIONS(2691), 1, + anon_sym_RBRACK, + STATE(1384), 1, + sym_generic, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89176] = 4, + ACTIONS(2369), 1, + sym_name, + ACTIONS(2693), 1, + anon_sym_RBRACE, + STATE(1381), 1, + sym_pattern_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89190] = 3, + ACTIONS(1024), 1, + sym_string_content, + ACTIONS(1022), 2, + sym_string_quote, + anon_sym_DOLLAR, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [89202] = 4, + ACTIONS(376), 1, + anon_sym_RBRACE, + ACTIONS(2695), 1, + anon_sym_COMMA, + STATE(1361), 1, + aux_sym__expr_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89216] = 4, + ACTIONS(2697), 1, + anon_sym_COMMA, + ACTIONS(2699), 1, + anon_sym_RBRACK, + STATE(1317), 1, + aux_sym__generics_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89230] = 4, + ACTIONS(2599), 1, + anon_sym_RBRACE, + ACTIONS(2701), 1, + anon_sym_COMMA, + STATE(1305), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89244] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2599), 1, + anon_sym_RBRACE, + STATE(1321), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89258] = 3, + ACTIONS(2705), 1, + sym_string_content, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2703), 2, + sym_string_quote, + anon_sym_DOLLAR, + [89270] = 4, + ACTIONS(2568), 1, + sym_name, + ACTIONS(2707), 1, + anon_sym_RBRACE, + STATE(1324), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89284] = 4, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2709), 1, + anon_sym_COMMA, + ACTIONS(2711), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89298] = 4, + ACTIONS(2713), 1, + anon_sym_COMMA, + ACTIONS(2716), 1, + anon_sym_RPAREN, + STATE(1351), 1, + aux_sym__params_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89312] = 4, + ACTIONS(1798), 1, + anon_sym_RBRACE, + ACTIONS(2718), 1, + anon_sym_COMMA, + STATE(1318), 1, + aux_sym__arms_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89326] = 3, + ACTIONS(2722), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2720), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89338] = 4, + ACTIONS(2724), 1, + anon_sym_RBRACE, + ACTIONS(2726), 1, + anon_sym_COMMA, + STATE(1302), 1, + aux_sym__pattern_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89352] = 4, + ACTIONS(2728), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(2730), 1, + aux_sym_code_token1, + STATE(1301), 1, + aux_sym_code_repeat1, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [89366] = 4, + ACTIONS(2732), 1, + anon_sym_LBRACE, + ACTIONS(2734), 1, + anon_sym_LPAREN, + ACTIONS(2736), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89380] = 4, + ACTIONS(2437), 1, + sym_name, + STATE(1322), 1, + sym_type_field, + STATE(1501), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89394] = 4, + ACTIONS(2333), 1, + sym_name, + ACTIONS(2738), 1, + anon_sym_RBRACE, + STATE(1406), 1, + sym_attribute, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89408] = 4, + ACTIONS(2740), 1, + anon_sym_RBRACE, + ACTIONS(2742), 1, + anon_sym_COMMA, + STATE(1311), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89422] = 4, + ACTIONS(2738), 1, + anon_sym_RBRACE, + ACTIONS(2744), 1, + anon_sym_COMMA, + STATE(1313), 1, + aux_sym__attributes_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89436] = 4, + ACTIONS(2746), 1, + anon_sym_RBRACE, + ACTIONS(2748), 1, + anon_sym_COMMA, + STATE(1361), 1, + aux_sym__expr_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89450] = 3, + ACTIONS(1032), 1, + sym_string_content, + ACTIONS(1030), 2, + sym_string_quote, + anon_sym_DOLLAR, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [89462] = 3, + ACTIONS(1020), 1, + sym_string_content, + ACTIONS(1018), 2, + sym_string_quote, + anon_sym_DOLLAR, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [89474] = 4, + ACTIONS(2751), 1, + anon_sym_COMMA, + ACTIONS(2753), 1, + anon_sym_RPAREN, + STATE(1314), 1, + aux_sym__params_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89488] = 3, + ACTIONS(2369), 1, + sym_name, + STATE(1381), 1, + sym_pattern_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89499] = 3, + ACTIONS(2755), 1, + anon_sym_LBRACK, + ACTIONS(2757), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89510] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2759), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89521] = 3, + ACTIONS(2761), 1, + anon_sym_LBRACE, + ACTIONS(2763), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89532] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2746), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89541] = 3, + ACTIONS(2765), 1, + anon_sym_LBRACE, + ACTIONS(2767), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89552] = 3, + ACTIONS(1907), 1, + anon_sym_LBRACE, + STATE(465), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89563] = 3, + ACTIONS(1907), 1, + anon_sym_LBRACE, + STATE(464), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89574] = 3, + ACTIONS(2333), 1, + sym_name, + STATE(1406), 1, + sym_attribute, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89585] = 3, + ACTIONS(2769), 1, + sym_name, + ACTIONS(2771), 1, + sym_index, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89596] = 3, + ACTIONS(2773), 1, + anon_sym_LPAREN, + ACTIONS(2775), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89607] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(1552), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89618] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2777), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [89627] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2716), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + [89636] = 3, + ACTIONS(1907), 1, + anon_sym_LBRACE, + STATE(495), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89647] = 3, + ACTIONS(2779), 1, + sym_name, + ACTIONS(2781), 1, + sym_index, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89658] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2558), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89667] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2783), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89678] = 3, + ACTIONS(2785), 1, + anon_sym_LBRACE, + ACTIONS(2787), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89689] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2689), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [89698] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2789), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89709] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2791), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89718] = 3, + ACTIONS(1907), 1, + anon_sym_LBRACE, + STATE(487), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89729] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(885), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89740] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2669), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89749] = 3, + ACTIONS(1907), 1, + anon_sym_LBRACE, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89760] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2563), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89769] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2793), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89780] = 3, + ACTIONS(2781), 1, + sym_index, + ACTIONS(2795), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89791] = 3, + ACTIONS(2797), 1, + anon_sym_LBRACE, + ACTIONS(2799), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89802] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2636), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89811] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(870), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89822] = 3, + ACTIONS(2801), 1, + anon_sym_LBRACE, + ACTIONS(2803), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89833] = 3, + ACTIONS(2805), 1, + anon_sym_LBRACE, + ACTIONS(2807), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89844] = 3, + ACTIONS(2809), 1, + anon_sym_LBRACK, + ACTIONS(2811), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89855] = 3, + ACTIONS(2813), 1, + anon_sym_LPAREN, + ACTIONS(2815), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89866] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2817), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89877] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2819), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89886] = 3, + ACTIONS(2821), 1, + anon_sym_LBRACE, + ACTIONS(2823), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89897] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(1522), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89908] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(898), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89919] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2619), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89928] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2825), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89937] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(895), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89948] = 3, + ACTIONS(2295), 1, + sym_name, + STATE(1384), 1, + sym_generic, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89959] = 3, + ACTIONS(1933), 1, + anon_sym_LBRACE, + STATE(877), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89970] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2827), 2, + anon_sym_rust, + anon_sym_python, + [89979] = 3, + ACTIONS(2181), 1, + anon_sym_AMP, + ACTIONS(2829), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89990] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2831), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89999] = 3, + ACTIONS(2568), 1, + sym_name, + STATE(1389), 1, + sym_variant, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90010] = 3, + ACTIONS(2437), 1, + sym_name, + STATE(1391), 1, + sym_type_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90021] = 2, + ACTIONS(2833), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90029] = 2, + ACTIONS(2047), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90037] = 2, + ACTIONS(2835), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90045] = 2, + ACTIONS(2835), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90053] = 2, + ACTIONS(2837), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90061] = 2, + ACTIONS(2839), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90069] = 2, + ACTIONS(2841), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90077] = 2, + ACTIONS(2843), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90085] = 2, + ACTIONS(2845), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90093] = 2, + ACTIONS(2847), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90101] = 2, + ACTIONS(2849), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90109] = 2, + ACTIONS(2851), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90117] = 2, + ACTIONS(2853), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90125] = 2, + ACTIONS(2855), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90133] = 2, + ACTIONS(2857), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90141] = 2, + ACTIONS(458), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90149] = 2, + ACTIONS(2859), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90157] = 2, + ACTIONS(2861), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90165] = 2, + ACTIONS(2863), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90173] = 2, + ACTIONS(2865), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90181] = 2, + ACTIONS(2867), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90189] = 2, + ACTIONS(2869), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90197] = 2, + ACTIONS(2867), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90205] = 2, + ACTIONS(2871), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90213] = 2, + ACTIONS(2873), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90221] = 2, + ACTIONS(2875), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90229] = 2, + ACTIONS(2877), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90237] = 2, + ACTIONS(2879), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90245] = 2, + ACTIONS(2881), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90253] = 2, + ACTIONS(2883), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90261] = 2, + ACTIONS(2885), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90269] = 2, + ACTIONS(2887), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90277] = 2, + ACTIONS(2889), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90285] = 2, + ACTIONS(2891), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90293] = 2, + ACTIONS(2893), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90301] = 2, + ACTIONS(2895), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90309] = 2, + ACTIONS(2897), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90317] = 2, + ACTIONS(2899), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90325] = 2, + ACTIONS(2901), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90333] = 2, + ACTIONS(2903), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90341] = 2, + ACTIONS(2905), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90349] = 2, + ACTIONS(2907), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90357] = 2, + ACTIONS(2909), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90365] = 2, + ACTIONS(2911), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90373] = 2, + ACTIONS(2913), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90381] = 2, + ACTIONS(2915), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90389] = 2, + ACTIONS(2917), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90397] = 2, + ACTIONS(2919), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90405] = 2, + ACTIONS(2921), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90413] = 2, + ACTIONS(2923), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90421] = 2, + ACTIONS(2925), 1, + anon_sym_SQUOTE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90429] = 2, + ACTIONS(2927), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90437] = 2, + ACTIONS(2929), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90445] = 2, + ACTIONS(2931), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90453] = 2, + ACTIONS(2933), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90461] = 2, + ACTIONS(2935), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90469] = 2, + ACTIONS(2853), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90477] = 2, + ACTIONS(2937), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90485] = 2, + ACTIONS(2939), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90493] = 2, + ACTIONS(2941), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90501] = 2, + ACTIONS(2943), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90509] = 2, + ACTIONS(2945), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90517] = 2, + ACTIONS(2947), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90525] = 2, + ACTIONS(2949), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90533] = 2, + ACTIONS(2951), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90541] = 2, + ACTIONS(2953), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90549] = 2, + ACTIONS(2955), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90557] = 2, + ACTIONS(2957), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90565] = 2, + ACTIONS(2959), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90573] = 2, + ACTIONS(2961), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90581] = 2, + ACTIONS(2963), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90589] = 2, + ACTIONS(2965), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90597] = 2, + ACTIONS(2967), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90605] = 2, + ACTIONS(2969), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90613] = 2, + ACTIONS(2971), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90621] = 2, + ACTIONS(2973), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90629] = 2, + ACTIONS(2975), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90637] = 2, + ACTIONS(2977), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90645] = 2, + ACTIONS(2979), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90653] = 2, + ACTIONS(2981), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90661] = 2, + ACTIONS(2983), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90669] = 2, + ACTIONS(2985), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90677] = 2, + ACTIONS(2987), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90685] = 2, + ACTIONS(2989), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90693] = 2, + ACTIONS(2047), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90701] = 2, + ACTIONS(2991), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90709] = 2, + ACTIONS(2993), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90717] = 2, + ACTIONS(2995), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90725] = 2, + ACTIONS(1778), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90733] = 2, + ACTIONS(2997), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90741] = 2, + ACTIONS(2999), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90749] = 2, + ACTIONS(3001), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90757] = 2, + ACTIONS(3003), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90765] = 2, + ACTIONS(3001), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90773] = 2, + ACTIONS(2937), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90781] = 2, + ACTIONS(3005), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90789] = 2, + ACTIONS(1774), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90797] = 2, + ACTIONS(3007), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90805] = 2, + ACTIONS(3009), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90813] = 2, + ACTIONS(3011), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90821] = 2, + ACTIONS(3013), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90829] = 2, + ACTIONS(3015), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90837] = 2, + ACTIONS(3017), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90845] = 2, + ACTIONS(3019), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90853] = 2, + ACTIONS(3021), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90861] = 2, + ACTIONS(3023), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90869] = 2, + ACTIONS(3025), 1, + anon_sym_catch, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90877] = 2, + ACTIONS(3027), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90885] = 2, + ACTIONS(3029), 1, + aux_sym_constant_char_token1, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [90893] = 2, + ACTIONS(3031), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90901] = 2, + ACTIONS(3033), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90909] = 2, + ACTIONS(3035), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90917] = 2, + ACTIONS(2037), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90925] = 2, + ACTIONS(2037), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90933] = 2, + ACTIONS(3037), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90941] = 2, + ACTIONS(3039), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90949] = 2, + ACTIONS(3041), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90957] = 2, + ACTIONS(3043), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90965] = 2, + ACTIONS(3045), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90973] = 2, + ACTIONS(3047), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90981] = 2, + ACTIONS(3049), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90989] = 2, + ACTIONS(3051), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90997] = 2, + ACTIONS(3053), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91005] = 2, + ACTIONS(3055), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91013] = 2, + ACTIONS(3057), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91021] = 2, + ACTIONS(3059), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91029] = 2, + ACTIONS(3061), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91037] = 2, + ACTIONS(3063), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91045] = 2, + ACTIONS(3065), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91053] = 2, + ACTIONS(3067), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91061] = 2, + ACTIONS(3069), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91069] = 2, + ACTIONS(3071), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91077] = 2, + ACTIONS(3073), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91085] = 2, + ACTIONS(3075), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91093] = 2, + ACTIONS(3077), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91101] = 2, + ACTIONS(3079), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91109] = 2, + ACTIONS(3081), 1, + anon_sym_catch, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91117] = 2, + ACTIONS(3083), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91125] = 2, + ACTIONS(3085), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91133] = 2, + ACTIONS(3087), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91141] = 2, + ACTIONS(3089), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91149] = 2, + ACTIONS(3091), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91157] = 2, + ACTIONS(3093), 1, + anon_sym_SQUOTE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91165] = 2, + ACTIONS(3095), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91173] = 2, + ACTIONS(3097), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91181] = 2, + ACTIONS(3099), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91189] = 2, + ACTIONS(2891), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91197] = 2, + ACTIONS(3101), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91205] = 2, + ACTIONS(3103), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91213] = 2, + ACTIONS(3105), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91221] = 2, + ACTIONS(3107), 1, + ts_builtin_sym_end, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91229] = 2, + ACTIONS(3109), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91237] = 2, + ACTIONS(3111), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91245] = 2, + ACTIONS(3113), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91253] = 2, + ACTIONS(3115), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91261] = 2, + ACTIONS(3117), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91269] = 2, + ACTIONS(3119), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91277] = 2, + ACTIONS(3121), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91285] = 2, + ACTIONS(3123), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91293] = 2, + ACTIONS(3125), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91301] = 2, + ACTIONS(3127), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91309] = 2, + ACTIONS(3129), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91317] = 2, + ACTIONS(3131), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91325] = 2, + ACTIONS(3133), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91333] = 2, + ACTIONS(3135), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91341] = 2, + ACTIONS(3137), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91349] = 2, + ACTIONS(3139), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91357] = 2, + ACTIONS(3141), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [91365] = 2, + ACTIONS(3143), 1, + aux_sym_constant_char_token1, + ACTIONS(2257), 2, + sym__whitespace, + sym_line_comment, + [91373] = 2, + ACTIONS(3145), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(44)] = 0, + [SMALL_STATE(45)] = 125, + [SMALL_STATE(46)] = 250, + [SMALL_STATE(47)] = 375, + [SMALL_STATE(48)] = 500, + [SMALL_STATE(49)] = 622, + [SMALL_STATE(50)] = 744, + [SMALL_STATE(51)] = 863, + [SMALL_STATE(52)] = 981, + [SMALL_STATE(53)] = 1051, + [SMALL_STATE(54)] = 1169, + [SMALL_STATE(55)] = 1263, + [SMALL_STATE(56)] = 1381, + [SMALL_STATE(57)] = 1499, + [SMALL_STATE(58)] = 1617, + [SMALL_STATE(59)] = 1735, + [SMALL_STATE(60)] = 1853, + [SMALL_STATE(61)] = 1971, + [SMALL_STATE(62)] = 2087, + [SMALL_STATE(63)] = 2205, + [SMALL_STATE(64)] = 2323, + [SMALL_STATE(65)] = 2441, + [SMALL_STATE(66)] = 2557, + [SMALL_STATE(67)] = 2675, + [SMALL_STATE(68)] = 2745, + [SMALL_STATE(69)] = 2860, + [SMALL_STATE(70)] = 2929, + [SMALL_STATE(71)] = 2998, + [SMALL_STATE(72)] = 3067, + [SMALL_STATE(73)] = 3182, + [SMALL_STATE(74)] = 3275, + [SMALL_STATE(75)] = 3368, + [SMALL_STATE(76)] = 3437, + [SMALL_STATE(77)] = 3549, + [SMALL_STATE(78)] = 3661, + [SMALL_STATE(79)] = 3773, + [SMALL_STATE(80)] = 3885, + [SMALL_STATE(81)] = 3997, + [SMALL_STATE(82)] = 4109, + [SMALL_STATE(83)] = 4221, + [SMALL_STATE(84)] = 4333, + [SMALL_STATE(85)] = 4445, + [SMALL_STATE(86)] = 4557, + [SMALL_STATE(87)] = 4669, + [SMALL_STATE(88)] = 4781, + [SMALL_STATE(89)] = 4893, + [SMALL_STATE(90)] = 5005, + [SMALL_STATE(91)] = 5117, + [SMALL_STATE(92)] = 5229, + [SMALL_STATE(93)] = 5341, + [SMALL_STATE(94)] = 5453, + [SMALL_STATE(95)] = 5565, + [SMALL_STATE(96)] = 5677, + [SMALL_STATE(97)] = 5789, + [SMALL_STATE(98)] = 5901, + [SMALL_STATE(99)] = 6013, + [SMALL_STATE(100)] = 6125, + [SMALL_STATE(101)] = 6237, + [SMALL_STATE(102)] = 6349, + [SMALL_STATE(103)] = 6461, + [SMALL_STATE(104)] = 6573, + [SMALL_STATE(105)] = 6685, + [SMALL_STATE(106)] = 6797, + [SMALL_STATE(107)] = 6909, + [SMALL_STATE(108)] = 7021, + [SMALL_STATE(109)] = 7133, + [SMALL_STATE(110)] = 7245, + [SMALL_STATE(111)] = 7357, + [SMALL_STATE(112)] = 7469, + [SMALL_STATE(113)] = 7581, + [SMALL_STATE(114)] = 7693, + [SMALL_STATE(115)] = 7805, + [SMALL_STATE(116)] = 7917, + [SMALL_STATE(117)] = 8029, + [SMALL_STATE(118)] = 8141, + [SMALL_STATE(119)] = 8253, + [SMALL_STATE(120)] = 8365, + [SMALL_STATE(121)] = 8477, + [SMALL_STATE(122)] = 8589, + [SMALL_STATE(123)] = 8701, + [SMALL_STATE(124)] = 8813, + [SMALL_STATE(125)] = 8925, + [SMALL_STATE(126)] = 9037, + [SMALL_STATE(127)] = 9149, + [SMALL_STATE(128)] = 9261, + [SMALL_STATE(129)] = 9373, + [SMALL_STATE(130)] = 9485, + [SMALL_STATE(131)] = 9597, + [SMALL_STATE(132)] = 9709, + [SMALL_STATE(133)] = 9821, + [SMALL_STATE(134)] = 9933, + [SMALL_STATE(135)] = 10045, + [SMALL_STATE(136)] = 10157, + [SMALL_STATE(137)] = 10269, + [SMALL_STATE(138)] = 10381, + [SMALL_STATE(139)] = 10493, + [SMALL_STATE(140)] = 10605, + [SMALL_STATE(141)] = 10717, + [SMALL_STATE(142)] = 10829, + [SMALL_STATE(143)] = 10941, + [SMALL_STATE(144)] = 11053, + [SMALL_STATE(145)] = 11165, + [SMALL_STATE(146)] = 11277, + [SMALL_STATE(147)] = 11345, + [SMALL_STATE(148)] = 11457, + [SMALL_STATE(149)] = 11525, + [SMALL_STATE(150)] = 11637, + [SMALL_STATE(151)] = 11749, + [SMALL_STATE(152)] = 11861, + [SMALL_STATE(153)] = 11973, + [SMALL_STATE(154)] = 12085, + [SMALL_STATE(155)] = 12197, + [SMALL_STATE(156)] = 12309, + [SMALL_STATE(157)] = 12421, + [SMALL_STATE(158)] = 12533, + [SMALL_STATE(159)] = 12645, + [SMALL_STATE(160)] = 12757, + [SMALL_STATE(161)] = 12869, + [SMALL_STATE(162)] = 12981, + [SMALL_STATE(163)] = 13093, + [SMALL_STATE(164)] = 13205, + [SMALL_STATE(165)] = 13317, + [SMALL_STATE(166)] = 13385, + [SMALL_STATE(167)] = 13497, + [SMALL_STATE(168)] = 13609, + [SMALL_STATE(169)] = 13721, + [SMALL_STATE(170)] = 13833, + [SMALL_STATE(171)] = 13945, + [SMALL_STATE(172)] = 14057, + [SMALL_STATE(173)] = 14169, + [SMALL_STATE(174)] = 14281, + [SMALL_STATE(175)] = 14349, + [SMALL_STATE(176)] = 14461, + [SMALL_STATE(177)] = 14573, + [SMALL_STATE(178)] = 14685, + [SMALL_STATE(179)] = 14797, + [SMALL_STATE(180)] = 14909, + [SMALL_STATE(181)] = 15021, + [SMALL_STATE(182)] = 15133, + [SMALL_STATE(183)] = 15245, + [SMALL_STATE(184)] = 15357, + [SMALL_STATE(185)] = 15469, + [SMALL_STATE(186)] = 15581, + [SMALL_STATE(187)] = 15693, + [SMALL_STATE(188)] = 15805, + [SMALL_STATE(189)] = 15917, + [SMALL_STATE(190)] = 16029, + [SMALL_STATE(191)] = 16141, + [SMALL_STATE(192)] = 16253, + [SMALL_STATE(193)] = 16365, + [SMALL_STATE(194)] = 16477, + [SMALL_STATE(195)] = 16589, + [SMALL_STATE(196)] = 16701, + [SMALL_STATE(197)] = 16813, + [SMALL_STATE(198)] = 16925, + [SMALL_STATE(199)] = 17037, + [SMALL_STATE(200)] = 17149, + [SMALL_STATE(201)] = 17261, + [SMALL_STATE(202)] = 17373, + [SMALL_STATE(203)] = 17485, + [SMALL_STATE(204)] = 17597, + [SMALL_STATE(205)] = 17709, + [SMALL_STATE(206)] = 17821, + [SMALL_STATE(207)] = 17933, + [SMALL_STATE(208)] = 18045, + [SMALL_STATE(209)] = 18157, + [SMALL_STATE(210)] = 18269, + [SMALL_STATE(211)] = 18381, + [SMALL_STATE(212)] = 18473, + [SMALL_STATE(213)] = 18585, + [SMALL_STATE(214)] = 18697, + [SMALL_STATE(215)] = 18809, + [SMALL_STATE(216)] = 18901, + [SMALL_STATE(217)] = 19013, + [SMALL_STATE(218)] = 19125, + [SMALL_STATE(219)] = 19237, + [SMALL_STATE(220)] = 19349, + [SMALL_STATE(221)] = 19461, + [SMALL_STATE(222)] = 19573, + [SMALL_STATE(223)] = 19685, + [SMALL_STATE(224)] = 19797, + [SMALL_STATE(225)] = 19909, + [SMALL_STATE(226)] = 20021, + [SMALL_STATE(227)] = 20133, + [SMALL_STATE(228)] = 20245, + [SMALL_STATE(229)] = 20357, + [SMALL_STATE(230)] = 20469, + [SMALL_STATE(231)] = 20581, + [SMALL_STATE(232)] = 20693, + [SMALL_STATE(233)] = 20805, + [SMALL_STATE(234)] = 20917, + [SMALL_STATE(235)] = 21029, + [SMALL_STATE(236)] = 21141, + [SMALL_STATE(237)] = 21253, + [SMALL_STATE(238)] = 21365, + [SMALL_STATE(239)] = 21477, + [SMALL_STATE(240)] = 21589, + [SMALL_STATE(241)] = 21701, + [SMALL_STATE(242)] = 21813, + [SMALL_STATE(243)] = 21925, + [SMALL_STATE(244)] = 22037, + [SMALL_STATE(245)] = 22149, + [SMALL_STATE(246)] = 22261, + [SMALL_STATE(247)] = 22373, + [SMALL_STATE(248)] = 22485, + [SMALL_STATE(249)] = 22597, + [SMALL_STATE(250)] = 22709, + [SMALL_STATE(251)] = 22821, + [SMALL_STATE(252)] = 22933, + [SMALL_STATE(253)] = 23045, + [SMALL_STATE(254)] = 23157, + [SMALL_STATE(255)] = 23269, + [SMALL_STATE(256)] = 23381, + [SMALL_STATE(257)] = 23493, + [SMALL_STATE(258)] = 23605, + [SMALL_STATE(259)] = 23717, + [SMALL_STATE(260)] = 23829, + [SMALL_STATE(261)] = 23941, + [SMALL_STATE(262)] = 24053, + [SMALL_STATE(263)] = 24165, + [SMALL_STATE(264)] = 24277, + [SMALL_STATE(265)] = 24389, + [SMALL_STATE(266)] = 24501, + [SMALL_STATE(267)] = 24613, + [SMALL_STATE(268)] = 24725, + [SMALL_STATE(269)] = 24837, + [SMALL_STATE(270)] = 24949, + [SMALL_STATE(271)] = 25061, + [SMALL_STATE(272)] = 25173, + [SMALL_STATE(273)] = 25285, + [SMALL_STATE(274)] = 25397, + [SMALL_STATE(275)] = 25509, + [SMALL_STATE(276)] = 25621, + [SMALL_STATE(277)] = 25733, + [SMALL_STATE(278)] = 25845, + [SMALL_STATE(279)] = 25957, + [SMALL_STATE(280)] = 26069, + [SMALL_STATE(281)] = 26181, + [SMALL_STATE(282)] = 26293, + [SMALL_STATE(283)] = 26405, + [SMALL_STATE(284)] = 26517, + [SMALL_STATE(285)] = 26629, + [SMALL_STATE(286)] = 26741, + [SMALL_STATE(287)] = 26853, + [SMALL_STATE(288)] = 26965, + [SMALL_STATE(289)] = 27077, + [SMALL_STATE(290)] = 27189, + [SMALL_STATE(291)] = 27301, + [SMALL_STATE(292)] = 27413, + [SMALL_STATE(293)] = 27525, + [SMALL_STATE(294)] = 27637, + [SMALL_STATE(295)] = 27749, + [SMALL_STATE(296)] = 27861, + [SMALL_STATE(297)] = 27973, + [SMALL_STATE(298)] = 28085, + [SMALL_STATE(299)] = 28197, + [SMALL_STATE(300)] = 28309, + [SMALL_STATE(301)] = 28421, + [SMALL_STATE(302)] = 28533, + [SMALL_STATE(303)] = 28645, + [SMALL_STATE(304)] = 28757, + [SMALL_STATE(305)] = 28869, + [SMALL_STATE(306)] = 28981, + [SMALL_STATE(307)] = 29093, + [SMALL_STATE(308)] = 29205, + [SMALL_STATE(309)] = 29317, + [SMALL_STATE(310)] = 29429, + [SMALL_STATE(311)] = 29541, + [SMALL_STATE(312)] = 29653, + [SMALL_STATE(313)] = 29765, + [SMALL_STATE(314)] = 29877, + [SMALL_STATE(315)] = 29989, + [SMALL_STATE(316)] = 30101, + [SMALL_STATE(317)] = 30213, + [SMALL_STATE(318)] = 30325, + [SMALL_STATE(319)] = 30437, + [SMALL_STATE(320)] = 30549, + [SMALL_STATE(321)] = 30661, + [SMALL_STATE(322)] = 30773, + [SMALL_STATE(323)] = 30885, + [SMALL_STATE(324)] = 30997, + [SMALL_STATE(325)] = 31109, + [SMALL_STATE(326)] = 31221, + [SMALL_STATE(327)] = 31333, + [SMALL_STATE(328)] = 31445, + [SMALL_STATE(329)] = 31557, + [SMALL_STATE(330)] = 31669, + [SMALL_STATE(331)] = 31781, + [SMALL_STATE(332)] = 31893, + [SMALL_STATE(333)] = 32005, + [SMALL_STATE(334)] = 32117, + [SMALL_STATE(335)] = 32229, + [SMALL_STATE(336)] = 32341, + [SMALL_STATE(337)] = 32453, + [SMALL_STATE(338)] = 32565, + [SMALL_STATE(339)] = 32677, + [SMALL_STATE(340)] = 32789, + [SMALL_STATE(341)] = 32901, + [SMALL_STATE(342)] = 33013, + [SMALL_STATE(343)] = 33125, + [SMALL_STATE(344)] = 33237, + [SMALL_STATE(345)] = 33349, + [SMALL_STATE(346)] = 33461, + [SMALL_STATE(347)] = 33573, + [SMALL_STATE(348)] = 33685, + [SMALL_STATE(349)] = 33797, + [SMALL_STATE(350)] = 33909, + [SMALL_STATE(351)] = 34021, + [SMALL_STATE(352)] = 34133, + [SMALL_STATE(353)] = 34245, + [SMALL_STATE(354)] = 34357, + [SMALL_STATE(355)] = 34469, + [SMALL_STATE(356)] = 34581, + [SMALL_STATE(357)] = 34693, + [SMALL_STATE(358)] = 34805, + [SMALL_STATE(359)] = 34917, + [SMALL_STATE(360)] = 35029, + [SMALL_STATE(361)] = 35141, + [SMALL_STATE(362)] = 35253, + [SMALL_STATE(363)] = 35365, + [SMALL_STATE(364)] = 35477, + [SMALL_STATE(365)] = 35589, + [SMALL_STATE(366)] = 35701, + [SMALL_STATE(367)] = 35813, + [SMALL_STATE(368)] = 35925, + [SMALL_STATE(369)] = 36037, + [SMALL_STATE(370)] = 36149, + [SMALL_STATE(371)] = 36261, + [SMALL_STATE(372)] = 36373, + [SMALL_STATE(373)] = 36485, + [SMALL_STATE(374)] = 36597, + [SMALL_STATE(375)] = 36709, + [SMALL_STATE(376)] = 36821, + [SMALL_STATE(377)] = 36933, + [SMALL_STATE(378)] = 37045, + [SMALL_STATE(379)] = 37157, + [SMALL_STATE(380)] = 37269, + [SMALL_STATE(381)] = 37381, + [SMALL_STATE(382)] = 37493, + [SMALL_STATE(383)] = 37605, + [SMALL_STATE(384)] = 37717, + [SMALL_STATE(385)] = 37829, + [SMALL_STATE(386)] = 37941, + [SMALL_STATE(387)] = 38053, + [SMALL_STATE(388)] = 38165, + [SMALL_STATE(389)] = 38277, + [SMALL_STATE(390)] = 38389, + [SMALL_STATE(391)] = 38501, + [SMALL_STATE(392)] = 38613, + [SMALL_STATE(393)] = 38725, + [SMALL_STATE(394)] = 38837, + [SMALL_STATE(395)] = 38949, + [SMALL_STATE(396)] = 39061, + [SMALL_STATE(397)] = 39173, + [SMALL_STATE(398)] = 39285, + [SMALL_STATE(399)] = 39397, + [SMALL_STATE(400)] = 39509, + [SMALL_STATE(401)] = 39621, + [SMALL_STATE(402)] = 39733, + [SMALL_STATE(403)] = 39824, + [SMALL_STATE(404)] = 39891, + [SMALL_STATE(405)] = 39982, + [SMALL_STATE(406)] = 40073, + [SMALL_STATE(407)] = 40140, + [SMALL_STATE(408)] = 40205, + [SMALL_STATE(409)] = 40270, + [SMALL_STATE(410)] = 40359, + [SMALL_STATE(411)] = 40423, + [SMALL_STATE(412)] = 40511, + [SMALL_STATE(413)] = 40575, + [SMALL_STATE(414)] = 40663, + [SMALL_STATE(415)] = 40727, + [SMALL_STATE(416)] = 40791, + [SMALL_STATE(417)] = 40854, + [SMALL_STATE(418)] = 40917, + [SMALL_STATE(419)] = 41004, + [SMALL_STATE(420)] = 41091, + [SMALL_STATE(421)] = 41154, + [SMALL_STATE(422)] = 41241, + [SMALL_STATE(423)] = 41304, + [SMALL_STATE(424)] = 41391, + [SMALL_STATE(425)] = 41477, + [SMALL_STATE(426)] = 41539, + [SMALL_STATE(427)] = 41601, + [SMALL_STATE(428)] = 41687, + [SMALL_STATE(429)] = 41773, + [SMALL_STATE(430)] = 41829, + [SMALL_STATE(431)] = 41913, + [SMALL_STATE(432)] = 41969, + [SMALL_STATE(433)] = 42025, + [SMALL_STATE(434)] = 42081, + [SMALL_STATE(435)] = 42139, + [SMALL_STATE(436)] = 42197, + [SMALL_STATE(437)] = 42253, + [SMALL_STATE(438)] = 42311, + [SMALL_STATE(439)] = 42367, + [SMALL_STATE(440)] = 42425, + [SMALL_STATE(441)] = 42483, + [SMALL_STATE(442)] = 42541, + [SMALL_STATE(443)] = 42597, + [SMALL_STATE(444)] = 42653, + [SMALL_STATE(445)] = 42741, + [SMALL_STATE(446)] = 42825, + [SMALL_STATE(447)] = 42881, + [SMALL_STATE(448)] = 42969, + [SMALL_STATE(449)] = 43027, + [SMALL_STATE(450)] = 43113, + [SMALL_STATE(451)] = 43199, + [SMALL_STATE(452)] = 43255, + [SMALL_STATE(453)] = 43313, + [SMALL_STATE(454)] = 43369, + [SMALL_STATE(455)] = 43427, + [SMALL_STATE(456)] = 43483, + [SMALL_STATE(457)] = 43541, + [SMALL_STATE(458)] = 43597, + [SMALL_STATE(459)] = 43653, + [SMALL_STATE(460)] = 43709, + [SMALL_STATE(461)] = 43767, + [SMALL_STATE(462)] = 43823, + [SMALL_STATE(463)] = 43906, + [SMALL_STATE(464)] = 43991, + [SMALL_STATE(465)] = 44046, + [SMALL_STATE(466)] = 44101, + [SMALL_STATE(467)] = 44184, + [SMALL_STATE(468)] = 44239, + [SMALL_STATE(469)] = 44294, + [SMALL_STATE(470)] = 44349, + [SMALL_STATE(471)] = 44404, + [SMALL_STATE(472)] = 44459, + [SMALL_STATE(473)] = 44514, + [SMALL_STATE(474)] = 44571, + [SMALL_STATE(475)] = 44626, + [SMALL_STATE(476)] = 44681, + [SMALL_STATE(477)] = 44736, + [SMALL_STATE(478)] = 44791, + [SMALL_STATE(479)] = 44846, + [SMALL_STATE(480)] = 44905, + [SMALL_STATE(481)] = 44960, + [SMALL_STATE(482)] = 45019, + [SMALL_STATE(483)] = 45074, + [SMALL_STATE(484)] = 45129, + [SMALL_STATE(485)] = 45184, + [SMALL_STATE(486)] = 45239, + [SMALL_STATE(487)] = 45294, + [SMALL_STATE(488)] = 45349, + [SMALL_STATE(489)] = 45404, + [SMALL_STATE(490)] = 45463, + [SMALL_STATE(491)] = 45518, + [SMALL_STATE(492)] = 45573, + [SMALL_STATE(493)] = 45632, + [SMALL_STATE(494)] = 45687, + [SMALL_STATE(495)] = 45772, + [SMALL_STATE(496)] = 45827, + [SMALL_STATE(497)] = 45882, + [SMALL_STATE(498)] = 45937, + [SMALL_STATE(499)] = 45992, + [SMALL_STATE(500)] = 46047, + [SMALL_STATE(501)] = 46102, + [SMALL_STATE(502)] = 46157, + [SMALL_STATE(503)] = 46212, + [SMALL_STATE(504)] = 46267, + [SMALL_STATE(505)] = 46354, + [SMALL_STATE(506)] = 46441, + [SMALL_STATE(507)] = 46496, + [SMALL_STATE(508)] = 46551, + [SMALL_STATE(509)] = 46616, + [SMALL_STATE(510)] = 46675, + [SMALL_STATE(511)] = 46730, + [SMALL_STATE(512)] = 46785, + [SMALL_STATE(513)] = 46840, + [SMALL_STATE(514)] = 46895, + [SMALL_STATE(515)] = 46950, + [SMALL_STATE(516)] = 47005, + [SMALL_STATE(517)] = 47060, + [SMALL_STATE(518)] = 47119, + [SMALL_STATE(519)] = 47174, + [SMALL_STATE(520)] = 47229, + [SMALL_STATE(521)] = 47284, + [SMALL_STATE(522)] = 47343, + [SMALL_STATE(523)] = 47424, + [SMALL_STATE(524)] = 47483, + [SMALL_STATE(525)] = 47538, + [SMALL_STATE(526)] = 47593, + [SMALL_STATE(527)] = 47648, + [SMALL_STATE(528)] = 47728, + [SMALL_STATE(529)] = 47812, + [SMALL_STATE(530)] = 47896, + [SMALL_STATE(531)] = 47974, + [SMALL_STATE(532)] = 48058, + [SMALL_STATE(533)] = 48138, + [SMALL_STATE(534)] = 48216, + [SMALL_STATE(535)] = 48294, + [SMALL_STATE(536)] = 48360, + [SMALL_STATE(537)] = 48428, + [SMALL_STATE(538)] = 48510, + [SMALL_STATE(539)] = 48582, + [SMALL_STATE(540)] = 48662, + [SMALL_STATE(541)] = 48740, + [SMALL_STATE(542)] = 48822, + [SMALL_STATE(543)] = 48904, + [SMALL_STATE(544)] = 48978, + [SMALL_STATE(545)] = 49060, + [SMALL_STATE(546)] = 49142, + [SMALL_STATE(547)] = 49226, + [SMALL_STATE(548)] = 49304, + [SMALL_STATE(549)] = 49388, + [SMALL_STATE(550)] = 49472, + [SMALL_STATE(551)] = 49555, + [SMALL_STATE(552)] = 49636, + [SMALL_STATE(553)] = 49717, + [SMALL_STATE(554)] = 49798, + [SMALL_STATE(555)] = 49881, + [SMALL_STATE(556)] = 49958, + [SMALL_STATE(557)] = 50041, + [SMALL_STATE(558)] = 50124, + [SMALL_STATE(559)] = 50207, + [SMALL_STATE(560)] = 50290, + [SMALL_STATE(561)] = 50373, + [SMALL_STATE(562)] = 50450, + [SMALL_STATE(563)] = 50533, + [SMALL_STATE(564)] = 50616, + [SMALL_STATE(565)] = 50697, + [SMALL_STATE(566)] = 50776, + [SMALL_STATE(567)] = 50855, + [SMALL_STATE(568)] = 50936, + [SMALL_STATE(569)] = 51017, + [SMALL_STATE(570)] = 51084, + [SMALL_STATE(571)] = 51161, + [SMALL_STATE(572)] = 51238, + [SMALL_STATE(573)] = 51315, + [SMALL_STATE(574)] = 51396, + [SMALL_STATE(575)] = 51479, + [SMALL_STATE(576)] = 51544, + [SMALL_STATE(577)] = 51627, + [SMALL_STATE(578)] = 51694, + [SMALL_STATE(579)] = 51777, + [SMALL_STATE(580)] = 51848, + [SMALL_STATE(581)] = 51925, + [SMALL_STATE(582)] = 51998, + [SMALL_STATE(583)] = 52079, + [SMALL_STATE(584)] = 52160, + [SMALL_STATE(585)] = 52233, + [SMALL_STATE(586)] = 52304, + [SMALL_STATE(587)] = 52381, + [SMALL_STATE(588)] = 52458, + [SMALL_STATE(589)] = 52535, + [SMALL_STATE(590)] = 52600, + [SMALL_STATE(591)] = 52672, + [SMALL_STATE(592)] = 52744, + [SMALL_STATE(593)] = 52824, + [SMALL_STATE(594)] = 52906, + [SMALL_STATE(595)] = 52988, + [SMALL_STATE(596)] = 53064, + [SMALL_STATE(597)] = 53146, + [SMALL_STATE(598)] = 53216, + [SMALL_STATE(599)] = 53282, + [SMALL_STATE(600)] = 53346, + [SMALL_STATE(601)] = 53422, + [SMALL_STATE(602)] = 53498, + [SMALL_STATE(603)] = 53574, + [SMALL_STATE(604)] = 53656, + [SMALL_STATE(605)] = 53738, + [SMALL_STATE(606)] = 53818, + [SMALL_STATE(607)] = 53898, + [SMALL_STATE(608)] = 53980, + [SMALL_STATE(609)] = 54060, + [SMALL_STATE(610)] = 54138, + [SMALL_STATE(611)] = 54218, + [SMALL_STATE(612)] = 54300, + [SMALL_STATE(613)] = 54376, + [SMALL_STATE(614)] = 54458, + [SMALL_STATE(615)] = 54540, + [SMALL_STATE(616)] = 54610, + [SMALL_STATE(617)] = 54676, + [SMALL_STATE(618)] = 54752, + [SMALL_STATE(619)] = 54834, + [SMALL_STATE(620)] = 54916, + [SMALL_STATE(621)] = 54996, + [SMALL_STATE(622)] = 55076, + [SMALL_STATE(623)] = 55140, + [SMALL_STATE(624)] = 55216, + [SMALL_STATE(625)] = 55296, + [SMALL_STATE(626)] = 55372, + [SMALL_STATE(627)] = 55448, + [SMALL_STATE(628)] = 55529, + [SMALL_STATE(629)] = 55612, + [SMALL_STATE(630)] = 55693, + [SMALL_STATE(631)] = 55772, + [SMALL_STATE(632)] = 55851, + [SMALL_STATE(633)] = 55930, + [SMALL_STATE(634)] = 56005, + [SMALL_STATE(635)] = 56080, + [SMALL_STATE(636)] = 56143, + [SMALL_STATE(637)] = 56208, + [SMALL_STATE(638)] = 56277, + [SMALL_STATE(639)] = 56352, + [SMALL_STATE(640)] = 56423, + [SMALL_STATE(641)] = 56502, + [SMALL_STATE(642)] = 56583, + [SMALL_STATE(643)] = 56658, + [SMALL_STATE(644)] = 56741, + [SMALL_STATE(645)] = 56822, + [SMALL_STATE(646)] = 56903, + [SMALL_STATE(647)] = 56982, + [SMALL_STATE(648)] = 57061, + [SMALL_STATE(649)] = 57142, + [SMALL_STATE(650)] = 57223, + [SMALL_STATE(651)] = 57305, + [SMALL_STATE(652)] = 57385, + [SMALL_STATE(653)] = 57463, + [SMALL_STATE(654)] = 57541, + [SMALL_STATE(655)] = 57629, + [SMALL_STATE(656)] = 57711, + [SMALL_STATE(657)] = 57799, + [SMALL_STATE(658)] = 57875, + [SMALL_STATE(659)] = 57955, + [SMALL_STATE(660)] = 58028, + [SMALL_STATE(661)] = 58101, + [SMALL_STATE(662)] = 58176, + [SMALL_STATE(663)] = 58253, + [SMALL_STATE(664)] = 58328, + [SMALL_STATE(665)] = 58401, + [SMALL_STATE(666)] = 58480, + [SMALL_STATE(667)] = 58557, + [SMALL_STATE(668)] = 58632, + [SMALL_STATE(669)] = 58699, + [SMALL_STATE(670)] = 58778, + [SMALL_STATE(671)] = 58857, + [SMALL_STATE(672)] = 58934, + [SMALL_STATE(673)] = 59003, + [SMALL_STATE(674)] = 59082, + [SMALL_STATE(675)] = 59159, + [SMALL_STATE(676)] = 59232, + [SMALL_STATE(677)] = 59311, + [SMALL_STATE(678)] = 59374, + [SMALL_STATE(679)] = 59435, + [SMALL_STATE(680)] = 59514, + [SMALL_STATE(681)] = 59563, + [SMALL_STATE(682)] = 59640, + [SMALL_STATE(683)] = 59713, + [SMALL_STATE(684)] = 59787, + [SMALL_STATE(685)] = 59853, + [SMALL_STATE(686)] = 59929, + [SMALL_STATE(687)] = 60005, + [SMALL_STATE(688)] = 60081, + [SMALL_STATE(689)] = 60157, + [SMALL_STATE(690)] = 60233, + [SMALL_STATE(691)] = 60309, + [SMALL_STATE(692)] = 60387, + [SMALL_STATE(693)] = 60459, + [SMALL_STATE(694)] = 60535, + [SMALL_STATE(695)] = 60613, + [SMALL_STATE(696)] = 60685, + [SMALL_STATE(697)] = 60757, + [SMALL_STATE(698)] = 60829, + [SMALL_STATE(699)] = 60889, + [SMALL_STATE(700)] = 60951, + [SMALL_STATE(701)] = 61017, + [SMALL_STATE(702)] = 61089, + [SMALL_STATE(703)] = 61157, + [SMALL_STATE(704)] = 61231, + [SMALL_STATE(705)] = 61309, + [SMALL_STATE(706)] = 61385, + [SMALL_STATE(707)] = 61457, + [SMALL_STATE(708)] = 61519, + [SMALL_STATE(709)] = 61579, + [SMALL_STATE(710)] = 61657, + [SMALL_STATE(711)] = 61735, + [SMALL_STATE(712)] = 61817, + [SMALL_STATE(713)] = 61893, + [SMALL_STATE(714)] = 61971, + [SMALL_STATE(715)] = 62049, + [SMALL_STATE(716)] = 62117, + [SMALL_STATE(717)] = 62189, + [SMALL_STATE(718)] = 62267, + [SMALL_STATE(719)] = 62339, + [SMALL_STATE(720)] = 62417, + [SMALL_STATE(721)] = 62495, + [SMALL_STATE(722)] = 62573, + [SMALL_STATE(723)] = 62645, + [SMALL_STATE(724)] = 62723, + [SMALL_STATE(725)] = 62800, + [SMALL_STATE(726)] = 62877, + [SMALL_STATE(727)] = 62948, + [SMALL_STATE(728)] = 63023, + [SMALL_STATE(729)] = 63100, + [SMALL_STATE(730)] = 63173, + [SMALL_STATE(731)] = 63248, + [SMALL_STATE(732)] = 63323, + [SMALL_STATE(733)] = 63398, + [SMALL_STATE(734)] = 63465, + [SMALL_STATE(735)] = 63536, + [SMALL_STATE(736)] = 63603, + [SMALL_STATE(737)] = 63668, + [SMALL_STATE(738)] = 63739, + [SMALL_STATE(739)] = 63800, + [SMALL_STATE(740)] = 63859, + [SMALL_STATE(741)] = 63920, + [SMALL_STATE(742)] = 63985, + [SMALL_STATE(743)] = 64060, + [SMALL_STATE(744)] = 64135, + [SMALL_STATE(745)] = 64210, + [SMALL_STATE(746)] = 64269, + [SMALL_STATE(747)] = 64340, + [SMALL_STATE(748)] = 64415, + [SMALL_STATE(749)] = 64492, + [SMALL_STATE(750)] = 64571, + [SMALL_STATE(751)] = 64648, + [SMALL_STATE(752)] = 64719, + [SMALL_STATE(753)] = 64790, + [SMALL_STATE(754)] = 64861, + [SMALL_STATE(755)] = 64938, + [SMALL_STATE(756)] = 65015, + [SMALL_STATE(757)] = 65092, + [SMALL_STATE(758)] = 65163, + [SMALL_STATE(759)] = 65240, + [SMALL_STATE(760)] = 65317, + [SMALL_STATE(761)] = 65388, + [SMALL_STATE(762)] = 65465, + [SMALL_STATE(763)] = 65535, + [SMALL_STATE(764)] = 65611, + [SMALL_STATE(765)] = 65685, + [SMALL_STATE(766)] = 65759, + [SMALL_STATE(767)] = 65833, + [SMALL_STATE(768)] = 65909, + [SMALL_STATE(769)] = 65979, + [SMALL_STATE(770)] = 66053, + [SMALL_STATE(771)] = 66119, + [SMALL_STATE(772)] = 66189, + [SMALL_STATE(773)] = 66253, + [SMALL_STATE(774)] = 66313, + [SMALL_STATE(775)] = 66371, + [SMALL_STATE(776)] = 66447, + [SMALL_STATE(777)] = 66523, + [SMALL_STATE(778)] = 66599, + [SMALL_STATE(779)] = 66669, + [SMALL_STATE(780)] = 66745, + [SMALL_STATE(781)] = 66790, + [SMALL_STATE(782)] = 66835, + [SMALL_STATE(783)] = 66880, + [SMALL_STATE(784)] = 66925, + [SMALL_STATE(785)] = 66970, + [SMALL_STATE(786)] = 67015, + [SMALL_STATE(787)] = 67060, + [SMALL_STATE(788)] = 67105, + [SMALL_STATE(789)] = 67150, + [SMALL_STATE(790)] = 67195, + [SMALL_STATE(791)] = 67240, + [SMALL_STATE(792)] = 67285, + [SMALL_STATE(793)] = 67330, + [SMALL_STATE(794)] = 67375, + [SMALL_STATE(795)] = 67420, + [SMALL_STATE(796)] = 67465, + [SMALL_STATE(797)] = 67510, + [SMALL_STATE(798)] = 67555, + [SMALL_STATE(799)] = 67600, + [SMALL_STATE(800)] = 67645, + [SMALL_STATE(801)] = 67690, + [SMALL_STATE(802)] = 67735, + [SMALL_STATE(803)] = 67780, + [SMALL_STATE(804)] = 67825, + [SMALL_STATE(805)] = 67870, + [SMALL_STATE(806)] = 67915, + [SMALL_STATE(807)] = 67960, + [SMALL_STATE(808)] = 68005, + [SMALL_STATE(809)] = 68050, + [SMALL_STATE(810)] = 68095, + [SMALL_STATE(811)] = 68140, + [SMALL_STATE(812)] = 68185, + [SMALL_STATE(813)] = 68230, + [SMALL_STATE(814)] = 68275, + [SMALL_STATE(815)] = 68320, + [SMALL_STATE(816)] = 68365, + [SMALL_STATE(817)] = 68410, + [SMALL_STATE(818)] = 68455, + [SMALL_STATE(819)] = 68500, + [SMALL_STATE(820)] = 68545, + [SMALL_STATE(821)] = 68590, + [SMALL_STATE(822)] = 68635, + [SMALL_STATE(823)] = 68680, + [SMALL_STATE(824)] = 68725, + [SMALL_STATE(825)] = 68770, + [SMALL_STATE(826)] = 68815, + [SMALL_STATE(827)] = 68860, + [SMALL_STATE(828)] = 68905, + [SMALL_STATE(829)] = 68950, + [SMALL_STATE(830)] = 68995, + [SMALL_STATE(831)] = 69040, + [SMALL_STATE(832)] = 69085, + [SMALL_STATE(833)] = 69130, + [SMALL_STATE(834)] = 69175, + [SMALL_STATE(835)] = 69220, + [SMALL_STATE(836)] = 69264, + [SMALL_STATE(837)] = 69308, + [SMALL_STATE(838)] = 69352, + [SMALL_STATE(839)] = 69396, + [SMALL_STATE(840)] = 69440, + [SMALL_STATE(841)] = 69484, + [SMALL_STATE(842)] = 69528, + [SMALL_STATE(843)] = 69572, + [SMALL_STATE(844)] = 69616, + [SMALL_STATE(845)] = 69660, + [SMALL_STATE(846)] = 69704, + [SMALL_STATE(847)] = 69748, + [SMALL_STATE(848)] = 69792, + [SMALL_STATE(849)] = 69836, + [SMALL_STATE(850)] = 69880, + [SMALL_STATE(851)] = 69924, + [SMALL_STATE(852)] = 69968, + [SMALL_STATE(853)] = 70011, + [SMALL_STATE(854)] = 70054, + [SMALL_STATE(855)] = 70097, + [SMALL_STATE(856)] = 70139, + [SMALL_STATE(857)] = 70183, + [SMALL_STATE(858)] = 70227, + [SMALL_STATE(859)] = 70271, + [SMALL_STATE(860)] = 70315, + [SMALL_STATE(861)] = 70384, + [SMALL_STATE(862)] = 70425, + [SMALL_STATE(863)] = 70466, + [SMALL_STATE(864)] = 70507, + [SMALL_STATE(865)] = 70548, + [SMALL_STATE(866)] = 70589, + [SMALL_STATE(867)] = 70630, + [SMALL_STATE(868)] = 70699, + [SMALL_STATE(869)] = 70740, + [SMALL_STATE(870)] = 70809, + [SMALL_STATE(871)] = 70850, + [SMALL_STATE(872)] = 70891, + [SMALL_STATE(873)] = 70942, + [SMALL_STATE(874)] = 70983, + [SMALL_STATE(875)] = 71024, + [SMALL_STATE(876)] = 71065, + [SMALL_STATE(877)] = 71106, + [SMALL_STATE(878)] = 71147, + [SMALL_STATE(879)] = 71188, + [SMALL_STATE(880)] = 71229, + [SMALL_STATE(881)] = 71270, + [SMALL_STATE(882)] = 71311, + [SMALL_STATE(883)] = 71356, + [SMALL_STATE(884)] = 71397, + [SMALL_STATE(885)] = 71466, + [SMALL_STATE(886)] = 71507, + [SMALL_STATE(887)] = 71576, + [SMALL_STATE(888)] = 71617, + [SMALL_STATE(889)] = 71686, + [SMALL_STATE(890)] = 71727, + [SMALL_STATE(891)] = 71768, + [SMALL_STATE(892)] = 71809, + [SMALL_STATE(893)] = 71850, + [SMALL_STATE(894)] = 71891, + [SMALL_STATE(895)] = 71932, + [SMALL_STATE(896)] = 71973, + [SMALL_STATE(897)] = 72014, + [SMALL_STATE(898)] = 72083, + [SMALL_STATE(899)] = 72124, + [SMALL_STATE(900)] = 72165, + [SMALL_STATE(901)] = 72234, + [SMALL_STATE(902)] = 72300, + [SMALL_STATE(903)] = 72342, + [SMALL_STATE(904)] = 72406, + [SMALL_STATE(905)] = 72472, + [SMALL_STATE(906)] = 72538, + [SMALL_STATE(907)] = 72604, + [SMALL_STATE(908)] = 72670, + [SMALL_STATE(909)] = 72736, + [SMALL_STATE(910)] = 72800, + [SMALL_STATE(911)] = 72866, + [SMALL_STATE(912)] = 72932, + [SMALL_STATE(913)] = 72998, + [SMALL_STATE(914)] = 73061, + [SMALL_STATE(915)] = 73124, + [SMALL_STATE(916)] = 73183, + [SMALL_STATE(917)] = 73246, + [SMALL_STATE(918)] = 73307, + [SMALL_STATE(919)] = 73370, + [SMALL_STATE(920)] = 73433, + [SMALL_STATE(921)] = 73496, + [SMALL_STATE(922)] = 73559, + [SMALL_STATE(923)] = 73624, + [SMALL_STATE(924)] = 73687, + [SMALL_STATE(925)] = 73750, + [SMALL_STATE(926)] = 73813, + [SMALL_STATE(927)] = 73878, + [SMALL_STATE(928)] = 73941, + [SMALL_STATE(929)] = 74006, + [SMALL_STATE(930)] = 74069, + [SMALL_STATE(931)] = 74132, + [SMALL_STATE(932)] = 74195, + [SMALL_STATE(933)] = 74258, + [SMALL_STATE(934)] = 74323, + [SMALL_STATE(935)] = 74386, + [SMALL_STATE(936)] = 74447, + [SMALL_STATE(937)] = 74510, + [SMALL_STATE(938)] = 74573, + [SMALL_STATE(939)] = 74624, + [SMALL_STATE(940)] = 74677, + [SMALL_STATE(941)] = 74734, + [SMALL_STATE(942)] = 74795, + [SMALL_STATE(943)] = 74855, + [SMALL_STATE(944)] = 74915, + [SMALL_STATE(945)] = 74975, + [SMALL_STATE(946)] = 75035, + [SMALL_STATE(947)] = 75095, + [SMALL_STATE(948)] = 75155, + [SMALL_STATE(949)] = 75215, + [SMALL_STATE(950)] = 75275, + [SMALL_STATE(951)] = 75335, + [SMALL_STATE(952)] = 75395, + [SMALL_STATE(953)] = 75455, + [SMALL_STATE(954)] = 75515, + [SMALL_STATE(955)] = 75575, + [SMALL_STATE(956)] = 75635, + [SMALL_STATE(957)] = 75695, + [SMALL_STATE(958)] = 75755, + [SMALL_STATE(959)] = 75815, + [SMALL_STATE(960)] = 75875, + [SMALL_STATE(961)] = 75935, + [SMALL_STATE(962)] = 75995, + [SMALL_STATE(963)] = 76055, + [SMALL_STATE(964)] = 76115, + [SMALL_STATE(965)] = 76175, + [SMALL_STATE(966)] = 76235, + [SMALL_STATE(967)] = 76295, + [SMALL_STATE(968)] = 76355, + [SMALL_STATE(969)] = 76415, + [SMALL_STATE(970)] = 76475, + [SMALL_STATE(971)] = 76535, + [SMALL_STATE(972)] = 76595, + [SMALL_STATE(973)] = 76655, + [SMALL_STATE(974)] = 76715, + [SMALL_STATE(975)] = 76775, + [SMALL_STATE(976)] = 76835, + [SMALL_STATE(977)] = 76895, + [SMALL_STATE(978)] = 76955, + [SMALL_STATE(979)] = 77015, + [SMALL_STATE(980)] = 77075, + [SMALL_STATE(981)] = 77135, + [SMALL_STATE(982)] = 77195, + [SMALL_STATE(983)] = 77255, + [SMALL_STATE(984)] = 77315, + [SMALL_STATE(985)] = 77375, + [SMALL_STATE(986)] = 77435, + [SMALL_STATE(987)] = 77495, + [SMALL_STATE(988)] = 77564, + [SMALL_STATE(989)] = 77624, + [SMALL_STATE(990)] = 77684, + [SMALL_STATE(991)] = 77726, + [SMALL_STATE(992)] = 77786, + [SMALL_STATE(993)] = 77846, + [SMALL_STATE(994)] = 77914, + [SMALL_STATE(995)] = 77974, + [SMALL_STATE(996)] = 78034, + [SMALL_STATE(997)] = 78098, + [SMALL_STATE(998)] = 78158, + [SMALL_STATE(999)] = 78218, + [SMALL_STATE(1000)] = 78278, + [SMALL_STATE(1001)] = 78338, + [SMALL_STATE(1002)] = 78398, + [SMALL_STATE(1003)] = 78458, + [SMALL_STATE(1004)] = 78526, + [SMALL_STATE(1005)] = 78586, + [SMALL_STATE(1006)] = 78651, + [SMALL_STATE(1007)] = 78712, + [SMALL_STATE(1008)] = 78777, + [SMALL_STATE(1009)] = 78842, + [SMALL_STATE(1010)] = 78907, + [SMALL_STATE(1011)] = 78972, + [SMALL_STATE(1012)] = 79037, + [SMALL_STATE(1013)] = 79102, + [SMALL_STATE(1014)] = 79155, + [SMALL_STATE(1015)] = 79220, + [SMALL_STATE(1016)] = 79277, + [SMALL_STATE(1017)] = 79332, + [SMALL_STATE(1018)] = 79367, + [SMALL_STATE(1019)] = 79416, + [SMALL_STATE(1020)] = 79463, + [SMALL_STATE(1021)] = 79520, + [SMALL_STATE(1022)] = 79577, + [SMALL_STATE(1023)] = 79640, + [SMALL_STATE(1024)] = 79681, + [SMALL_STATE(1025)] = 79746, + [SMALL_STATE(1026)] = 79811, + [SMALL_STATE(1027)] = 79876, + [SMALL_STATE(1028)] = 79941, + [SMALL_STATE(1029)] = 80002, + [SMALL_STATE(1030)] = 80063, + [SMALL_STATE(1031)] = 80124, + [SMALL_STATE(1032)] = 80189, + [SMALL_STATE(1033)] = 80254, + [SMALL_STATE(1034)] = 80319, + [SMALL_STATE(1035)] = 80382, + [SMALL_STATE(1036)] = 80447, + [SMALL_STATE(1037)] = 80509, + [SMALL_STATE(1038)] = 80571, + [SMALL_STATE(1039)] = 80633, + [SMALL_STATE(1040)] = 80695, + [SMALL_STATE(1041)] = 80757, + [SMALL_STATE(1042)] = 80819, + [SMALL_STATE(1043)] = 80881, + [SMALL_STATE(1044)] = 80943, + [SMALL_STATE(1045)] = 81005, + [SMALL_STATE(1046)] = 81067, + [SMALL_STATE(1047)] = 81129, + [SMALL_STATE(1048)] = 81185, + [SMALL_STATE(1049)] = 81245, + [SMALL_STATE(1050)] = 81307, + [SMALL_STATE(1051)] = 81369, + [SMALL_STATE(1052)] = 81417, + [SMALL_STATE(1053)] = 81479, + [SMALL_STATE(1054)] = 81541, + [SMALL_STATE(1055)] = 81603, + [SMALL_STATE(1056)] = 81659, + [SMALL_STATE(1057)] = 81721, + [SMALL_STATE(1058)] = 81773, + [SMALL_STATE(1059)] = 81833, + [SMALL_STATE(1060)] = 81895, + [SMALL_STATE(1061)] = 81955, + [SMALL_STATE(1062)] = 82017, + [SMALL_STATE(1063)] = 82079, + [SMALL_STATE(1064)] = 82141, + [SMALL_STATE(1065)] = 82203, + [SMALL_STATE(1066)] = 82265, + [SMALL_STATE(1067)] = 82325, + [SMALL_STATE(1068)] = 82387, + [SMALL_STATE(1069)] = 82449, + [SMALL_STATE(1070)] = 82511, + [SMALL_STATE(1071)] = 82565, + [SMALL_STATE(1072)] = 82627, + [SMALL_STATE(1073)] = 82689, + [SMALL_STATE(1074)] = 82751, + [SMALL_STATE(1075)] = 82813, + [SMALL_STATE(1076)] = 82869, + [SMALL_STATE(1077)] = 82915, + [SMALL_STATE(1078)] = 82977, + [SMALL_STATE(1079)] = 83036, + [SMALL_STATE(1080)] = 83083, + [SMALL_STATE(1081)] = 83130, + [SMALL_STATE(1082)] = 83177, + [SMALL_STATE(1083)] = 83222, + [SMALL_STATE(1084)] = 83269, + [SMALL_STATE(1085)] = 83316, + [SMALL_STATE(1086)] = 83363, + [SMALL_STATE(1087)] = 83410, + [SMALL_STATE(1088)] = 83457, + [SMALL_STATE(1089)] = 83504, + [SMALL_STATE(1090)] = 83551, + [SMALL_STATE(1091)] = 83598, + [SMALL_STATE(1092)] = 83645, + [SMALL_STATE(1093)] = 83690, + [SMALL_STATE(1094)] = 83737, + [SMALL_STATE(1095)] = 83784, + [SMALL_STATE(1096)] = 83831, + [SMALL_STATE(1097)] = 83875, + [SMALL_STATE(1098)] = 83919, + [SMALL_STATE(1099)] = 83963, + [SMALL_STATE(1100)] = 84007, + [SMALL_STATE(1101)] = 84051, + [SMALL_STATE(1102)] = 84095, + [SMALL_STATE(1103)] = 84136, + [SMALL_STATE(1104)] = 84177, + [SMALL_STATE(1105)] = 84218, + [SMALL_STATE(1106)] = 84259, + [SMALL_STATE(1107)] = 84300, + [SMALL_STATE(1108)] = 84341, + [SMALL_STATE(1109)] = 84382, + [SMALL_STATE(1110)] = 84423, + [SMALL_STATE(1111)] = 84464, + [SMALL_STATE(1112)] = 84505, + [SMALL_STATE(1113)] = 84546, + [SMALL_STATE(1114)] = 84587, + [SMALL_STATE(1115)] = 84628, + [SMALL_STATE(1116)] = 84669, + [SMALL_STATE(1117)] = 84710, + [SMALL_STATE(1118)] = 84751, + [SMALL_STATE(1119)] = 84792, + [SMALL_STATE(1120)] = 84833, + [SMALL_STATE(1121)] = 84874, + [SMALL_STATE(1122)] = 84915, + [SMALL_STATE(1123)] = 84956, + [SMALL_STATE(1124)] = 84997, + [SMALL_STATE(1125)] = 85038, + [SMALL_STATE(1126)] = 85079, + [SMALL_STATE(1127)] = 85120, + [SMALL_STATE(1128)] = 85161, + [SMALL_STATE(1129)] = 85202, + [SMALL_STATE(1130)] = 85243, + [SMALL_STATE(1131)] = 85284, + [SMALL_STATE(1132)] = 85325, + [SMALL_STATE(1133)] = 85366, + [SMALL_STATE(1134)] = 85407, + [SMALL_STATE(1135)] = 85448, + [SMALL_STATE(1136)] = 85489, + [SMALL_STATE(1137)] = 85530, + [SMALL_STATE(1138)] = 85571, + [SMALL_STATE(1139)] = 85612, + [SMALL_STATE(1140)] = 85653, + [SMALL_STATE(1141)] = 85694, + [SMALL_STATE(1142)] = 85735, + [SMALL_STATE(1143)] = 85776, + [SMALL_STATE(1144)] = 85817, + [SMALL_STATE(1145)] = 85858, + [SMALL_STATE(1146)] = 85899, + [SMALL_STATE(1147)] = 85940, + [SMALL_STATE(1148)] = 85981, + [SMALL_STATE(1149)] = 86005, + [SMALL_STATE(1150)] = 86036, + [SMALL_STATE(1151)] = 86059, + [SMALL_STATE(1152)] = 86082, + [SMALL_STATE(1153)] = 86105, + [SMALL_STATE(1154)] = 86124, + [SMALL_STATE(1155)] = 86143, + [SMALL_STATE(1156)] = 86162, + [SMALL_STATE(1157)] = 86181, + [SMALL_STATE(1158)] = 86200, + [SMALL_STATE(1159)] = 86219, + [SMALL_STATE(1160)] = 86238, + [SMALL_STATE(1161)] = 86257, + [SMALL_STATE(1162)] = 86276, + [SMALL_STATE(1163)] = 86295, + [SMALL_STATE(1164)] = 86314, + [SMALL_STATE(1165)] = 86335, + [SMALL_STATE(1166)] = 86354, + [SMALL_STATE(1167)] = 86373, + [SMALL_STATE(1168)] = 86397, + [SMALL_STATE(1169)] = 86416, + [SMALL_STATE(1170)] = 86434, + [SMALL_STATE(1171)] = 86452, + [SMALL_STATE(1172)] = 86470, + [SMALL_STATE(1173)] = 86488, + [SMALL_STATE(1174)] = 86506, + [SMALL_STATE(1175)] = 86526, + [SMALL_STATE(1176)] = 86542, + [SMALL_STATE(1177)] = 86560, + [SMALL_STATE(1178)] = 86578, + [SMALL_STATE(1179)] = 86595, + [SMALL_STATE(1180)] = 86612, + [SMALL_STATE(1181)] = 86629, + [SMALL_STATE(1182)] = 86646, + [SMALL_STATE(1183)] = 86663, + [SMALL_STATE(1184)] = 86680, + [SMALL_STATE(1185)] = 86697, + [SMALL_STATE(1186)] = 86714, + [SMALL_STATE(1187)] = 86731, + [SMALL_STATE(1188)] = 86748, + [SMALL_STATE(1189)] = 86765, + [SMALL_STATE(1190)] = 86782, + [SMALL_STATE(1191)] = 86799, + [SMALL_STATE(1192)] = 86816, + [SMALL_STATE(1193)] = 86833, + [SMALL_STATE(1194)] = 86850, + [SMALL_STATE(1195)] = 86867, + [SMALL_STATE(1196)] = 86884, + [SMALL_STATE(1197)] = 86901, + [SMALL_STATE(1198)] = 86918, + [SMALL_STATE(1199)] = 86935, + [SMALL_STATE(1200)] = 86952, + [SMALL_STATE(1201)] = 86969, + [SMALL_STATE(1202)] = 86986, + [SMALL_STATE(1203)] = 87003, + [SMALL_STATE(1204)] = 87020, + [SMALL_STATE(1205)] = 87037, + [SMALL_STATE(1206)] = 87054, + [SMALL_STATE(1207)] = 87071, + [SMALL_STATE(1208)] = 87088, + [SMALL_STATE(1209)] = 87105, + [SMALL_STATE(1210)] = 87122, + [SMALL_STATE(1211)] = 87139, + [SMALL_STATE(1212)] = 87156, + [SMALL_STATE(1213)] = 87173, + [SMALL_STATE(1214)] = 87190, + [SMALL_STATE(1215)] = 87207, + [SMALL_STATE(1216)] = 87224, + [SMALL_STATE(1217)] = 87241, + [SMALL_STATE(1218)] = 87258, + [SMALL_STATE(1219)] = 87275, + [SMALL_STATE(1220)] = 87292, + [SMALL_STATE(1221)] = 87309, + [SMALL_STATE(1222)] = 87326, + [SMALL_STATE(1223)] = 87343, + [SMALL_STATE(1224)] = 87354, + [SMALL_STATE(1225)] = 87371, + [SMALL_STATE(1226)] = 87388, + [SMALL_STATE(1227)] = 87405, + [SMALL_STATE(1228)] = 87422, + [SMALL_STATE(1229)] = 87437, + [SMALL_STATE(1230)] = 87454, + [SMALL_STATE(1231)] = 87471, + [SMALL_STATE(1232)] = 87488, + [SMALL_STATE(1233)] = 87501, + [SMALL_STATE(1234)] = 87518, + [SMALL_STATE(1235)] = 87535, + [SMALL_STATE(1236)] = 87552, + [SMALL_STATE(1237)] = 87569, + [SMALL_STATE(1238)] = 87586, + [SMALL_STATE(1239)] = 87603, + [SMALL_STATE(1240)] = 87620, + [SMALL_STATE(1241)] = 87631, + [SMALL_STATE(1242)] = 87648, + [SMALL_STATE(1243)] = 87665, + [SMALL_STATE(1244)] = 87682, + [SMALL_STATE(1245)] = 87699, + [SMALL_STATE(1246)] = 87716, + [SMALL_STATE(1247)] = 87731, + [SMALL_STATE(1248)] = 87746, + [SMALL_STATE(1249)] = 87763, + [SMALL_STATE(1250)] = 87780, + [SMALL_STATE(1251)] = 87795, + [SMALL_STATE(1252)] = 87812, + [SMALL_STATE(1253)] = 87829, + [SMALL_STATE(1254)] = 87846, + [SMALL_STATE(1255)] = 87863, + [SMALL_STATE(1256)] = 87880, + [SMALL_STATE(1257)] = 87897, + [SMALL_STATE(1258)] = 87914, + [SMALL_STATE(1259)] = 87931, + [SMALL_STATE(1260)] = 87948, + [SMALL_STATE(1261)] = 87965, + [SMALL_STATE(1262)] = 87982, + [SMALL_STATE(1263)] = 87999, + [SMALL_STATE(1264)] = 88016, + [SMALL_STATE(1265)] = 88033, + [SMALL_STATE(1266)] = 88050, + [SMALL_STATE(1267)] = 88067, + [SMALL_STATE(1268)] = 88082, + [SMALL_STATE(1269)] = 88099, + [SMALL_STATE(1270)] = 88116, + [SMALL_STATE(1271)] = 88133, + [SMALL_STATE(1272)] = 88148, + [SMALL_STATE(1273)] = 88165, + [SMALL_STATE(1274)] = 88182, + [SMALL_STATE(1275)] = 88199, + [SMALL_STATE(1276)] = 88216, + [SMALL_STATE(1277)] = 88233, + [SMALL_STATE(1278)] = 88250, + [SMALL_STATE(1279)] = 88267, + [SMALL_STATE(1280)] = 88284, + [SMALL_STATE(1281)] = 88301, + [SMALL_STATE(1282)] = 88316, + [SMALL_STATE(1283)] = 88333, + [SMALL_STATE(1284)] = 88350, + [SMALL_STATE(1285)] = 88367, + [SMALL_STATE(1286)] = 88384, + [SMALL_STATE(1287)] = 88401, + [SMALL_STATE(1288)] = 88418, + [SMALL_STATE(1289)] = 88435, + [SMALL_STATE(1290)] = 88452, + [SMALL_STATE(1291)] = 88466, + [SMALL_STATE(1292)] = 88480, + [SMALL_STATE(1293)] = 88494, + [SMALL_STATE(1294)] = 88508, + [SMALL_STATE(1295)] = 88522, + [SMALL_STATE(1296)] = 88536, + [SMALL_STATE(1297)] = 88550, + [SMALL_STATE(1298)] = 88564, + [SMALL_STATE(1299)] = 88578, + [SMALL_STATE(1300)] = 88592, + [SMALL_STATE(1301)] = 88606, + [SMALL_STATE(1302)] = 88620, + [SMALL_STATE(1303)] = 88634, + [SMALL_STATE(1304)] = 88648, + [SMALL_STATE(1305)] = 88662, + [SMALL_STATE(1306)] = 88676, + [SMALL_STATE(1307)] = 88690, + [SMALL_STATE(1308)] = 88704, + [SMALL_STATE(1309)] = 88718, + [SMALL_STATE(1310)] = 88732, + [SMALL_STATE(1311)] = 88746, + [SMALL_STATE(1312)] = 88760, + [SMALL_STATE(1313)] = 88774, + [SMALL_STATE(1314)] = 88788, + [SMALL_STATE(1315)] = 88802, + [SMALL_STATE(1316)] = 88816, + [SMALL_STATE(1317)] = 88830, + [SMALL_STATE(1318)] = 88844, + [SMALL_STATE(1319)] = 88858, + [SMALL_STATE(1320)] = 88872, + [SMALL_STATE(1321)] = 88884, + [SMALL_STATE(1322)] = 88898, + [SMALL_STATE(1323)] = 88912, + [SMALL_STATE(1324)] = 88926, + [SMALL_STATE(1325)] = 88940, + [SMALL_STATE(1326)] = 88952, + [SMALL_STATE(1327)] = 88966, + [SMALL_STATE(1328)] = 88980, + [SMALL_STATE(1329)] = 88994, + [SMALL_STATE(1330)] = 89008, + [SMALL_STATE(1331)] = 89022, + [SMALL_STATE(1332)] = 89036, + [SMALL_STATE(1333)] = 89050, + [SMALL_STATE(1334)] = 89064, + [SMALL_STATE(1335)] = 89078, + [SMALL_STATE(1336)] = 89092, + [SMALL_STATE(1337)] = 89106, + [SMALL_STATE(1338)] = 89120, + [SMALL_STATE(1339)] = 89134, + [SMALL_STATE(1340)] = 89148, + [SMALL_STATE(1341)] = 89162, + [SMALL_STATE(1342)] = 89176, + [SMALL_STATE(1343)] = 89190, + [SMALL_STATE(1344)] = 89202, + [SMALL_STATE(1345)] = 89216, + [SMALL_STATE(1346)] = 89230, + [SMALL_STATE(1347)] = 89244, + [SMALL_STATE(1348)] = 89258, + [SMALL_STATE(1349)] = 89270, + [SMALL_STATE(1350)] = 89284, + [SMALL_STATE(1351)] = 89298, + [SMALL_STATE(1352)] = 89312, + [SMALL_STATE(1353)] = 89326, + [SMALL_STATE(1354)] = 89338, + [SMALL_STATE(1355)] = 89352, + [SMALL_STATE(1356)] = 89366, + [SMALL_STATE(1357)] = 89380, + [SMALL_STATE(1358)] = 89394, + [SMALL_STATE(1359)] = 89408, + [SMALL_STATE(1360)] = 89422, + [SMALL_STATE(1361)] = 89436, + [SMALL_STATE(1362)] = 89450, + [SMALL_STATE(1363)] = 89462, + [SMALL_STATE(1364)] = 89474, + [SMALL_STATE(1365)] = 89488, + [SMALL_STATE(1366)] = 89499, + [SMALL_STATE(1367)] = 89510, + [SMALL_STATE(1368)] = 89521, + [SMALL_STATE(1369)] = 89532, + [SMALL_STATE(1370)] = 89541, + [SMALL_STATE(1371)] = 89552, + [SMALL_STATE(1372)] = 89563, + [SMALL_STATE(1373)] = 89574, + [SMALL_STATE(1374)] = 89585, + [SMALL_STATE(1375)] = 89596, + [SMALL_STATE(1376)] = 89607, + [SMALL_STATE(1377)] = 89618, + [SMALL_STATE(1378)] = 89627, + [SMALL_STATE(1379)] = 89636, + [SMALL_STATE(1380)] = 89647, + [SMALL_STATE(1381)] = 89658, + [SMALL_STATE(1382)] = 89667, + [SMALL_STATE(1383)] = 89678, + [SMALL_STATE(1384)] = 89689, + [SMALL_STATE(1385)] = 89698, + [SMALL_STATE(1386)] = 89709, + [SMALL_STATE(1387)] = 89718, + [SMALL_STATE(1388)] = 89729, + [SMALL_STATE(1389)] = 89740, + [SMALL_STATE(1390)] = 89749, + [SMALL_STATE(1391)] = 89760, + [SMALL_STATE(1392)] = 89769, + [SMALL_STATE(1393)] = 89780, + [SMALL_STATE(1394)] = 89791, + [SMALL_STATE(1395)] = 89802, + [SMALL_STATE(1396)] = 89811, + [SMALL_STATE(1397)] = 89822, + [SMALL_STATE(1398)] = 89833, + [SMALL_STATE(1399)] = 89844, + [SMALL_STATE(1400)] = 89855, + [SMALL_STATE(1401)] = 89866, + [SMALL_STATE(1402)] = 89877, + [SMALL_STATE(1403)] = 89886, + [SMALL_STATE(1404)] = 89897, + [SMALL_STATE(1405)] = 89908, + [SMALL_STATE(1406)] = 89919, + [SMALL_STATE(1407)] = 89928, + [SMALL_STATE(1408)] = 89937, + [SMALL_STATE(1409)] = 89948, + [SMALL_STATE(1410)] = 89959, + [SMALL_STATE(1411)] = 89970, + [SMALL_STATE(1412)] = 89979, + [SMALL_STATE(1413)] = 89990, + [SMALL_STATE(1414)] = 89999, + [SMALL_STATE(1415)] = 90010, + [SMALL_STATE(1416)] = 90021, + [SMALL_STATE(1417)] = 90029, + [SMALL_STATE(1418)] = 90037, + [SMALL_STATE(1419)] = 90045, + [SMALL_STATE(1420)] = 90053, + [SMALL_STATE(1421)] = 90061, + [SMALL_STATE(1422)] = 90069, + [SMALL_STATE(1423)] = 90077, + [SMALL_STATE(1424)] = 90085, + [SMALL_STATE(1425)] = 90093, + [SMALL_STATE(1426)] = 90101, + [SMALL_STATE(1427)] = 90109, + [SMALL_STATE(1428)] = 90117, + [SMALL_STATE(1429)] = 90125, + [SMALL_STATE(1430)] = 90133, + [SMALL_STATE(1431)] = 90141, + [SMALL_STATE(1432)] = 90149, + [SMALL_STATE(1433)] = 90157, + [SMALL_STATE(1434)] = 90165, + [SMALL_STATE(1435)] = 90173, + [SMALL_STATE(1436)] = 90181, + [SMALL_STATE(1437)] = 90189, + [SMALL_STATE(1438)] = 90197, + [SMALL_STATE(1439)] = 90205, + [SMALL_STATE(1440)] = 90213, + [SMALL_STATE(1441)] = 90221, + [SMALL_STATE(1442)] = 90229, + [SMALL_STATE(1443)] = 90237, + [SMALL_STATE(1444)] = 90245, + [SMALL_STATE(1445)] = 90253, + [SMALL_STATE(1446)] = 90261, + [SMALL_STATE(1447)] = 90269, + [SMALL_STATE(1448)] = 90277, + [SMALL_STATE(1449)] = 90285, + [SMALL_STATE(1450)] = 90293, + [SMALL_STATE(1451)] = 90301, + [SMALL_STATE(1452)] = 90309, + [SMALL_STATE(1453)] = 90317, + [SMALL_STATE(1454)] = 90325, + [SMALL_STATE(1455)] = 90333, + [SMALL_STATE(1456)] = 90341, + [SMALL_STATE(1457)] = 90349, + [SMALL_STATE(1458)] = 90357, + [SMALL_STATE(1459)] = 90365, + [SMALL_STATE(1460)] = 90373, + [SMALL_STATE(1461)] = 90381, + [SMALL_STATE(1462)] = 90389, + [SMALL_STATE(1463)] = 90397, + [SMALL_STATE(1464)] = 90405, + [SMALL_STATE(1465)] = 90413, + [SMALL_STATE(1466)] = 90421, + [SMALL_STATE(1467)] = 90429, + [SMALL_STATE(1468)] = 90437, + [SMALL_STATE(1469)] = 90445, + [SMALL_STATE(1470)] = 90453, + [SMALL_STATE(1471)] = 90461, + [SMALL_STATE(1472)] = 90469, + [SMALL_STATE(1473)] = 90477, + [SMALL_STATE(1474)] = 90485, + [SMALL_STATE(1475)] = 90493, + [SMALL_STATE(1476)] = 90501, + [SMALL_STATE(1477)] = 90509, + [SMALL_STATE(1478)] = 90517, + [SMALL_STATE(1479)] = 90525, + [SMALL_STATE(1480)] = 90533, + [SMALL_STATE(1481)] = 90541, + [SMALL_STATE(1482)] = 90549, + [SMALL_STATE(1483)] = 90557, + [SMALL_STATE(1484)] = 90565, + [SMALL_STATE(1485)] = 90573, + [SMALL_STATE(1486)] = 90581, + [SMALL_STATE(1487)] = 90589, + [SMALL_STATE(1488)] = 90597, + [SMALL_STATE(1489)] = 90605, + [SMALL_STATE(1490)] = 90613, + [SMALL_STATE(1491)] = 90621, + [SMALL_STATE(1492)] = 90629, + [SMALL_STATE(1493)] = 90637, + [SMALL_STATE(1494)] = 90645, + [SMALL_STATE(1495)] = 90653, + [SMALL_STATE(1496)] = 90661, + [SMALL_STATE(1497)] = 90669, + [SMALL_STATE(1498)] = 90677, + [SMALL_STATE(1499)] = 90685, + [SMALL_STATE(1500)] = 90693, + [SMALL_STATE(1501)] = 90701, + [SMALL_STATE(1502)] = 90709, + [SMALL_STATE(1503)] = 90717, + [SMALL_STATE(1504)] = 90725, + [SMALL_STATE(1505)] = 90733, + [SMALL_STATE(1506)] = 90741, + [SMALL_STATE(1507)] = 90749, + [SMALL_STATE(1508)] = 90757, + [SMALL_STATE(1509)] = 90765, + [SMALL_STATE(1510)] = 90773, + [SMALL_STATE(1511)] = 90781, + [SMALL_STATE(1512)] = 90789, + [SMALL_STATE(1513)] = 90797, + [SMALL_STATE(1514)] = 90805, + [SMALL_STATE(1515)] = 90813, + [SMALL_STATE(1516)] = 90821, + [SMALL_STATE(1517)] = 90829, + [SMALL_STATE(1518)] = 90837, + [SMALL_STATE(1519)] = 90845, + [SMALL_STATE(1520)] = 90853, + [SMALL_STATE(1521)] = 90861, + [SMALL_STATE(1522)] = 90869, + [SMALL_STATE(1523)] = 90877, + [SMALL_STATE(1524)] = 90885, + [SMALL_STATE(1525)] = 90893, + [SMALL_STATE(1526)] = 90901, + [SMALL_STATE(1527)] = 90909, + [SMALL_STATE(1528)] = 90917, + [SMALL_STATE(1529)] = 90925, + [SMALL_STATE(1530)] = 90933, + [SMALL_STATE(1531)] = 90941, + [SMALL_STATE(1532)] = 90949, + [SMALL_STATE(1533)] = 90957, + [SMALL_STATE(1534)] = 90965, + [SMALL_STATE(1535)] = 90973, + [SMALL_STATE(1536)] = 90981, + [SMALL_STATE(1537)] = 90989, + [SMALL_STATE(1538)] = 90997, + [SMALL_STATE(1539)] = 91005, + [SMALL_STATE(1540)] = 91013, + [SMALL_STATE(1541)] = 91021, + [SMALL_STATE(1542)] = 91029, + [SMALL_STATE(1543)] = 91037, + [SMALL_STATE(1544)] = 91045, + [SMALL_STATE(1545)] = 91053, + [SMALL_STATE(1546)] = 91061, + [SMALL_STATE(1547)] = 91069, + [SMALL_STATE(1548)] = 91077, + [SMALL_STATE(1549)] = 91085, + [SMALL_STATE(1550)] = 91093, + [SMALL_STATE(1551)] = 91101, + [SMALL_STATE(1552)] = 91109, + [SMALL_STATE(1553)] = 91117, + [SMALL_STATE(1554)] = 91125, + [SMALL_STATE(1555)] = 91133, + [SMALL_STATE(1556)] = 91141, + [SMALL_STATE(1557)] = 91149, + [SMALL_STATE(1558)] = 91157, + [SMALL_STATE(1559)] = 91165, + [SMALL_STATE(1560)] = 91173, + [SMALL_STATE(1561)] = 91181, + [SMALL_STATE(1562)] = 91189, + [SMALL_STATE(1563)] = 91197, + [SMALL_STATE(1564)] = 91205, + [SMALL_STATE(1565)] = 91213, + [SMALL_STATE(1566)] = 91221, + [SMALL_STATE(1567)] = 91229, + [SMALL_STATE(1568)] = 91237, + [SMALL_STATE(1569)] = 91245, + [SMALL_STATE(1570)] = 91253, + [SMALL_STATE(1571)] = 91261, + [SMALL_STATE(1572)] = 91269, + [SMALL_STATE(1573)] = 91277, + [SMALL_STATE(1574)] = 91285, + [SMALL_STATE(1575)] = 91293, + [SMALL_STATE(1576)] = 91301, + [SMALL_STATE(1577)] = 91309, + [SMALL_STATE(1578)] = 91317, + [SMALL_STATE(1579)] = 91325, + [SMALL_STATE(1580)] = 91333, + [SMALL_STATE(1581)] = 91341, + [SMALL_STATE(1582)] = 91349, + [SMALL_STATE(1583)] = 91357, + [SMALL_STATE(1584)] = 91365, + [SMALL_STATE(1585)] = 91373, +}; + +static const TSParseActionEntry ts_parse_actions[] = { + [0] = {.entry = {.count = 0, .reusable = false}}, + [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), + [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), + [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 0), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(902), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1498), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(893), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(893), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1170), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1584), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(848), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1583), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1582), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1581), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1574), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(949), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(948), + [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1411), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1572), + [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1571), + [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1570), + [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), + [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), + [53] = {.entry = {.count = 1, .reusable = false}}, SHIFT(878), + [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(306), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(952), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1408), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(300), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(299), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1405), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(297), + [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(977), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1404), + [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(473), + [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [77] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_return, 1), + [79] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_return, 1), + [81] = {.entry = {.count = 1, .reusable = false}}, SHIFT(472), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(472), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1172), + [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1524), + [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(478), + [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1548), + [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(3), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(475), + [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(127), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1371), + [103] = {.entry = {.count = 1, .reusable = false}}, SHIFT(198), + [105] = {.entry = {.count = 1, .reusable = false}}, SHIFT(172), + [107] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1379), + [109] = {.entry = {.count = 1, .reusable = false}}, SHIFT(197), + [111] = {.entry = {.count = 1, .reusable = false}}, SHIFT(966), + [113] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1376), + [115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_break, 1), + [117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_break, 1), + [119] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1549), + [121] = {.entry = {.count = 1, .reusable = false}}, SHIFT(4), + [123] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), + [125] = {.entry = {.count = 1, .reusable = false}}, SHIFT(170), + [127] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1531), + [129] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5), + [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), + [133] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), + [135] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1536), + [137] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), + [139] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [141] = {.entry = {.count = 1, .reusable = false}}, SHIFT(160), + [143] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1541), + [145] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [147] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [149] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), + [151] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1503), + [153] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [155] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), + [157] = {.entry = {.count = 1, .reusable = false}}, SHIFT(355), + [159] = {.entry = {.count = 1, .reusable = false}}, SHIFT(680), + [161] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1550), + [163] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [165] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), + [167] = {.entry = {.count = 1, .reusable = false}}, SHIFT(263), + [169] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1547), + [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17), + [175] = {.entry = {.count = 1, .reusable = false}}, SHIFT(375), + [177] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1544), + [179] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), + [181] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [183] = {.entry = {.count = 1, .reusable = false}}, SHIFT(264), + [185] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1546), + [187] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), + [189] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), + [191] = {.entry = {.count = 1, .reusable = false}}, SHIFT(343), + [193] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1545), + [195] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), + [197] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), + [199] = {.entry = {.count = 1, .reusable = false}}, SHIFT(395), + [201] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1543), + [203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), + [205] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), + [207] = {.entry = {.count = 1, .reusable = false}}, SHIFT(326), + [209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__stmts, 2), + [211] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(902), + [214] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1498), + [217] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(44), + [220] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(893), + [223] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(893), + [226] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1170), + [229] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1584), + [232] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(848), + [235] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(72), + [238] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1583), + [241] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(60), + [244] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(28), + [247] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1582), + [250] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1581), + [253] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1574), + [256] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(949), + [259] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(948), + [262] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1411), + [265] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1572), + [268] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1571), + [271] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1570), + [274] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(27), + [277] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(26), + [280] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(878), + [283] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(306), + [286] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(952), + [289] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1408), + [292] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(300), + [295] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(299), + [298] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1405), + [301] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(297), + [304] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(977), + [307] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1404), + [310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), + [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(826), + [316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1362), + [320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854), + [324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1343), + [326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), + [328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), + [332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 1), + [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(818), + [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(828), + [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), + [342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [344] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1017), + [346] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1518), + [348] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), + [350] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), + [352] = {.entry = {.count = 1, .reusable = false}}, SHIFT(185), + [354] = {.entry = {.count = 1, .reusable = false}}, SHIFT(953), + [356] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1475), + [358] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), + [360] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43), + [362] = {.entry = {.count = 1, .reusable = false}}, SHIFT(338), + [364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(972), + [366] = {.entry = {.count = 1, .reusable = false}}, SHIFT(990), + [368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), + [370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), + [372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), + [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(470), + [376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_fields, 2), + [378] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_fields, 3), + [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(864), + [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_query, 2), + [384] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_query, 2), + [386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(486), + [388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), + [390] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__query_stmts, 2), + [392] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(978), + [395] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(399), + [398] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(955), + [401] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(401), + [404] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(81), + [407] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(80), + [410] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(92), + [413] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(97), + [416] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(90), + [419] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(954), + [422] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(397), + [425] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(89), + [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(506), + [430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(871), + [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(866), + [434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(467), + [436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(512), + [438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(862), + [440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__exprs, 3), + [442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(507), + [444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(483), + [446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861), + [448] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__exprs, 2), + [450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), + [452] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_query, 1), + [454] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_query, 1), + [456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(468), + [458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(849), + [460] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(944), + [463] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(304), + [466] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(962), + [469] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(77), + [472] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(129), + [475] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(130), + [478] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(394), + [481] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(947), + [484] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(293), + [487] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(88), + [490] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(970), + [493] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(83), + [496] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(942), + [499] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(82), + [502] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(235), + [505] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(233), + [508] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(230), + [511] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(957), + [514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(144), + [517] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(145), + [520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [524] = {.entry = {.count = 1, .reusable = false}}, SHIFT(951), + [526] = {.entry = {.count = 1, .reusable = false}}, SHIFT(944), + [528] = {.entry = {.count = 1, .reusable = false}}, SHIFT(978), + [530] = {.entry = {.count = 1, .reusable = false}}, SHIFT(970), + [532] = {.entry = {.count = 1, .reusable = false}}, SHIFT(968), + [534] = {.entry = {.count = 1, .reusable = false}}, SHIFT(975), + [536] = {.entry = {.count = 1, .reusable = false}}, SHIFT(969), + [538] = {.entry = {.count = 1, .reusable = false}}, SHIFT(981), + [540] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(969), + [543] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(200), + [546] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(986), + [549] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(203), + [552] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(109), + [555] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(110), + [558] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(79), + [561] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(78), + [564] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(301), + [567] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(980), + [570] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(205), + [573] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(243), + [576] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(951), + [579] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(76), + [582] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(963), + [585] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(265), + [588] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(220), + [591] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(219), + [594] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(104), + [597] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(960), + [600] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(266), + [603] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(268), + [606] = {.entry = {.count = 1, .reusable = false}}, SHIFT(964), + [608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(952), + [610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(959), + [614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), + [628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [632] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(952), + [635] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(106), + [638] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(959), + [641] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(108), + [644] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(111), + [647] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(112), + [650] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(113), + [653] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(945), + [656] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(115), + [659] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(116), + [662] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(981), + [665] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(232), + [668] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(950), + [671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(229), + [674] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(131), + [677] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(147), + [680] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(393), + [683] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(971), + [686] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(228), + [689] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(117), + [692] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(975), + [695] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(335), + [698] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(946), + [701] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(333), + [704] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(204), + [707] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(254), + [710] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(87), + [713] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(983), + [716] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(330), + [719] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(105), + [722] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(968), + [725] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(163), + [728] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(982), + [731] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(162), + [734] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(214), + [737] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(213), + [740] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(84), + [743] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(984), + [746] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(132), + [749] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(128), + [752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(953), + [754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), + [756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(974), + [758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), + [760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(250), + [766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), + [768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), + [770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), + [772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), + [774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(340), + [776] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(953), + [779] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(332), + [782] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(974), + [785] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(357), + [788] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(250), + [791] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(249), + [794] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(244), + [797] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(965), + [800] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(342), + [803] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(340), + [806] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(964), + [809] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(387), + [812] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(976), + [815] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(388), + [818] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(358), + [821] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(376), + [824] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(253), + [827] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(961), + [830] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(389), + [833] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(224), + [836] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(972), + [839] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(292), + [842] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(967), + [845] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(290), + [848] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(289), + [851] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(288), + [854] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(287), + [857] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(985), + [860] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(286), + [863] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(285), + [866] = {.entry = {.count = 1, .reusable = true}}, SHIFT(972), + [868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(292), + [870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(967), + [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), + [874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(985), + [882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), + [886] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_nominal, 3), + [888] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_nominal, 3), + [890] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_compute, 2), + [892] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1111), + [894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), + [898] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_compute, 2), + [900] = {.entry = {.count = 1, .reusable = false}}, SHIFT(125), + [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [906] = {.entry = {.count = 1, .reusable = false}}, SHIFT(121), + [908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [910] = {.entry = {.count = 1, .reusable = false}}, SHIFT(120), + [912] = {.entry = {.count = 1, .reusable = false}}, SHIFT(119), + [914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1553), + [916] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1374), + [918] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_record_concat, 3), + [920] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_record_concat, 3), + [922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_name, 1), + [924] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_name, 1), + [926] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_nominal, 1), + [928] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_nominal, 1), + [930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 4), + [932] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 4), + [934] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_over, 4), + [936] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_over, 4), + [938] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_tuple, 4), + [940] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_tuple, 4), + [942] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_if, 3), + [944] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_if, 3), + [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1372), + [948] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_nominal, 4), + [950] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_nominal, 4), + [952] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_compute, 3), + [954] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_compute, 3), + [956] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 5), + [958] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 5), + [960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_annot, 3), + [962] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_annot, 3), + [964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1124), + [966] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_array, 3), + [968] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_array, 3), + [970] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_paren, 3), + [972] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_paren, 3), + [974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1426), + [976] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), + [978] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_roll, 2), + [980] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_roll, 2), + [982] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_wild, 1), + [984] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_wild, 1), + [986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_over, 5), + [988] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_over, 5), + [990] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_tuple, 5), + [992] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_tuple, 5), + [994] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_fun, 5), + [996] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_fun, 5), + [998] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_record, 3), + [1000] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_record, 3), + [1002] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 6), + [1004] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 6), + [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_unit, 2), + [1008] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_unit, 2), + [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_fun, 6), + [1012] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_fun, 6), + [1014] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_array, 2), + [1016] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_array, 2), + [1018] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4), + [1020] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 4), + [1022] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), + [1024] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 3), + [1026] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_roll, 3), + [1028] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_roll, 3), + [1030] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), + [1032] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2), + [1034] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), + [1036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(182), + [1038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [1040] = {.entry = {.count = 1, .reusable = false}}, SHIFT(179), + [1042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), + [1044] = {.entry = {.count = 1, .reusable = false}}, SHIFT(178), + [1046] = {.entry = {.count = 1, .reusable = false}}, SHIFT(177), + [1048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [1050] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_if, 5), + [1052] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_if, 5), + [1054] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_do, 2), + [1056] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_do, 2), + [1058] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_array, 2), + [1060] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_array, 2), + [1062] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_unit, 2), + [1064] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_unit, 2), + [1066] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_string, 2), + [1068] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_string, 2), + [1070] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record, 2), + [1072] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record, 2), + [1074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_match, 5), + [1076] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_match, 5), + [1078] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_constant, 1), + [1080] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_constant, 1), + [1082] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [1084] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_name, 1), + [1086] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_name, 1), + [1088] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 10, .production_id = 7), + [1090] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 10, .production_id = 7), + [1092] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_continue, 1), + [1094] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_continue, 1), + [1096] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_order, 3), + [1098] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_order, 3), + [1100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_select, 3), + [1102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_select, 3), + [1104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_bool, 1), + [1106] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_bool, 1), + [1108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 9, .production_id = 7), + [1110] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 9, .production_id = 7), + [1112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 8, .production_id = 2), + [1114] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 8, .production_id = 2), + [1116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_try, 8), + [1118] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_try, 8), + [1120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 7, .production_id = 2), + [1122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 7, .production_id = 2), + [1124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_try, 7), + [1126] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_try, 7), + [1128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 7), + [1130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 7), + [1132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record_variant, 3), + [1134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record_variant, 3), + [1136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_loop, 2), + [1138] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_loop, 2), + [1140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record, 3), + [1142] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record, 3), + [1144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_string, 3), + [1146] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_string, 3), + [1148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_char, 3), + [1150] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_char, 3), + [1152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_paren, 3), + [1154] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_paren, 3), + [1156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_array, 3), + [1158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_array, 3), + [1160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 6, .production_id = 7), + [1162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 6, .production_id = 7), + [1164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_while, 3), + [1166] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_while, 3), + [1168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 7), + [1170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 7), + [1172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 5, .production_id = 7), + [1174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 5, .production_id = 7), + [1176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 3, .production_id = 2), + [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 3, .production_id = 2), + [1180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_binary, 3), + [1182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_binary, 3), + [1184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record_access, 3), + [1186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record_access, 3), + [1188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [1190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1556), + [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_tuple_access, 3), + [1194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_tuple_access, 3), + [1196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record_variant, 4), + [1198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record_variant, 4), + [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_tuple, 4), + [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_tuple, 4), + [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 4, .production_id = 2), + [1206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 4, .production_id = 2), + [1208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_compute, 4), + [1210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_compute, 4), + [1212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_roll, 4), + [1214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_roll, 4), + [1216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_array_access, 4), + [1218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_array_access, 4), + [1220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__as, 2), + [1222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__as, 2), + [1224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_tuple, 5), + [1226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_tuple, 5), + [1228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_over, 6), + [1230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_over, 6), + [1232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_select, 2), + [1234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_select, 2), + [1236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_for, 5), + [1238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_for, 5), + [1240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 5), + [1242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 5), + [1244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_union, 2), + [1246] = {.entry = {.count = 1, .reusable = false}}, SHIFT(126), + [1248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [1250] = {.entry = {.count = 1, .reusable = false}}, SHIFT(123), + [1252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [1254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__of, 2), + [1256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_order, 2), + [1258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_order, 2), + [1260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_where, 2), + [1262] = {.entry = {.count = 1, .reusable = false}}, SHIFT(188), + [1264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [1266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [1268] = {.entry = {.count = 1, .reusable = false}}, SHIFT(191), + [1270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [1272] = {.entry = {.count = 1, .reusable = false}}, SHIFT(192), + [1274] = {.entry = {.count = 1, .reusable = false}}, SHIFT(193), + [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 8), + [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 8), + [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 6), + [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 6), + [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_throw, 2), + [1286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_throw, 2), + [1288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(476), + [1290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_break, 2), + [1292] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_break, 2), + [1294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_return, 2), + [1296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_return, 2), + [1298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_join, 6), + [1300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_val, 4), + [1302] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_val, 4), + [1304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_from, 4), + [1306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_into, 2), + [1308] = {.entry = {.count = 1, .reusable = false}}, SHIFT(173), + [1310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [1312] = {.entry = {.count = 1, .reusable = false}}, SHIFT(189), + [1314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [1316] = {.entry = {.count = 1, .reusable = false}}, SHIFT(181), + [1318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [1320] = {.entry = {.count = 1, .reusable = false}}, SHIFT(183), + [1322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), + [1324] = {.entry = {.count = 1, .reusable = false}}, SHIFT(158), + [1326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [1328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [1330] = {.entry = {.count = 1, .reusable = false}}, SHIFT(154), + [1332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [1334] = {.entry = {.count = 1, .reusable = false}}, SHIFT(153), + [1336] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), + [1338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), + [1340] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), + [1342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [1344] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), + [1346] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [1348] = {.entry = {.count = 1, .reusable = false}}, SHIFT(156), + [1350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [1352] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), + [1354] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), + [1356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142), + [1358] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), + [1360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), + [1362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [1364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(159), + [1366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [1368] = {.entry = {.count = 1, .reusable = false}}, SHIFT(351), + [1370] = {.entry = {.count = 1, .reusable = false}}, SHIFT(350), + [1372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [1374] = {.entry = {.count = 1, .reusable = false}}, SHIFT(349), + [1376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), + [1378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(350), + [1380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [1382] = {.entry = {.count = 1, .reusable = false}}, SHIFT(347), + [1384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), + [1386] = {.entry = {.count = 1, .reusable = false}}, SHIFT(346), + [1388] = {.entry = {.count = 1, .reusable = false}}, SHIFT(345), + [1390] = {.entry = {.count = 1, .reusable = false}}, SHIFT(252), + [1392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [1394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [1396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), + [1398] = {.entry = {.count = 1, .reusable = false}}, SHIFT(247), + [1400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), + [1402] = {.entry = {.count = 1, .reusable = false}}, SHIFT(246), + [1404] = {.entry = {.count = 1, .reusable = false}}, SHIFT(245), + [1406] = {.entry = {.count = 1, .reusable = false}}, SHIFT(273), + [1408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(272), + [1410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), + [1412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), + [1414] = {.entry = {.count = 1, .reusable = false}}, SHIFT(296), + [1416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), + [1418] = {.entry = {.count = 1, .reusable = false}}, SHIFT(298), + [1420] = {.entry = {.count = 1, .reusable = false}}, SHIFT(303), + [1422] = {.entry = {.count = 1, .reusable = false}}, SHIFT(372), + [1424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), + [1426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [1428] = {.entry = {.count = 1, .reusable = false}}, SHIFT(354), + [1430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(354), + [1432] = {.entry = {.count = 1, .reusable = false}}, SHIFT(353), + [1434] = {.entry = {.count = 1, .reusable = false}}, SHIFT(352), + [1436] = {.entry = {.count = 1, .reusable = false}}, SHIFT(251), + [1438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), + [1440] = {.entry = {.count = 1, .reusable = false}}, SHIFT(257), + [1442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [1444] = {.entry = {.count = 1, .reusable = false}}, SHIFT(309), + [1446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), + [1448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [1450] = {.entry = {.count = 1, .reusable = false}}, SHIFT(255), + [1452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), + [1454] = {.entry = {.count = 1, .reusable = false}}, SHIFT(240), + [1456] = {.entry = {.count = 1, .reusable = false}}, SHIFT(238), + [1458] = {.entry = {.count = 1, .reusable = false}}, SHIFT(359), + [1460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), + [1462] = {.entry = {.count = 1, .reusable = false}}, SHIFT(279), + [1464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), + [1466] = {.entry = {.count = 1, .reusable = false}}, SHIFT(269), + [1468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [1470] = {.entry = {.count = 1, .reusable = false}}, SHIFT(374), + [1472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(374), + [1474] = {.entry = {.count = 1, .reusable = false}}, SHIFT(344), + [1476] = {.entry = {.count = 1, .reusable = false}}, SHIFT(360), + [1478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(344), + [1480] = {.entry = {.count = 1, .reusable = false}}, SHIFT(362), + [1482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(362), + [1484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(360), + [1486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), + [1488] = {.entry = {.count = 1, .reusable = false}}, SHIFT(370), + [1490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), + [1492] = {.entry = {.count = 1, .reusable = false}}, SHIFT(373), + [1494] = {.entry = {.count = 1, .reusable = false}}, SHIFT(378), + [1496] = {.entry = {.count = 1, .reusable = false}}, SHIFT(383), + [1498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [1500] = {.entry = {.count = 1, .reusable = false}}, SHIFT(262), + [1502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [1504] = {.entry = {.count = 1, .reusable = false}}, SHIFT(323), + [1506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), + [1508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(321), + [1510] = {.entry = {.count = 1, .reusable = false}}, SHIFT(319), + [1512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319), + [1514] = {.entry = {.count = 1, .reusable = false}}, SHIFT(318), + [1516] = {.entry = {.count = 1, .reusable = false}}, SHIFT(317), + [1518] = {.entry = {.count = 1, .reusable = false}}, SHIFT(322), + [1520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(322), + [1522] = {.entry = {.count = 1, .reusable = false}}, SHIFT(324), + [1524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(324), + [1526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 5, .production_id = 5), + [1528] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 5, .production_id = 5), + [1530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 8, .production_id = 13), + [1532] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 8, .production_id = 13), + [1534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 5, .production_id = 6), + [1536] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 5, .production_id = 6), + [1538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 7, .production_id = 11), + [1540] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 7, .production_id = 11), + [1542] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 7, .production_id = 11), + [1544] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 7, .production_id = 11), + [1546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 9, .production_id = 15), + [1548] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 9, .production_id = 15), + [1550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 8, .production_id = 14), + [1552] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 8, .production_id = 14), + [1554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 9, .production_id = 15), + [1556] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 9, .production_id = 15), + [1558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 8, .production_id = 13), + [1560] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 8, .production_id = 13), + [1562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_val, 5), + [1564] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_val, 5), + [1566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 7, .production_id = 11), + [1568] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 7, .production_id = 11), + [1570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 9, .production_id = 16), + [1572] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 9, .production_id = 16), + [1574] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_var, 5), + [1576] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_var, 5), + [1578] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_mod, 5), + [1580] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_mod, 5), + [1582] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 6, .production_id = 8), + [1584] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 6, .production_id = 8), + [1586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_code, 3, .production_id = 1), + [1588] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_code, 3, .production_id = 1), + [1590] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_use, 3), + [1592] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_use, 3), + [1594] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_expr, 2), + [1596] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_expr, 2), + [1598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 9, .production_id = 16), + [1600] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 9, .production_id = 16), + [1602] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 9, .production_id = 16), + [1604] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 9, .production_id = 16), + [1606] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 8, .production_id = 13), + [1608] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 8, .production_id = 13), + [1610] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 9, .production_id = 16), + [1612] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 9, .production_id = 16), + [1614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 10, .production_id = 17), + [1616] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 10, .production_id = 17), + [1618] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 10, .production_id = 17), + [1620] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 10, .production_id = 17), + [1622] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 10, .production_id = 18), + [1624] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 10, .production_id = 18), + [1626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 7, .production_id = 11), + [1628] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 7, .production_id = 11), + [1630] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 10, .production_id = 18), + [1632] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 10, .production_id = 18), + [1634] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 7, .production_id = 12), + [1636] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 7, .production_id = 12), + [1638] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 11, .production_id = 19), + [1640] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 11, .production_id = 19), + [1642] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 11, .production_id = 20), + [1644] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 11, .production_id = 20), + [1646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 4, .production_id = 3), + [1648] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 4, .production_id = 3), + [1650] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 11, .production_id = 20), + [1652] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 11, .production_id = 20), + [1654] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 12, .production_id = 21), + [1656] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 12, .production_id = 21), + [1658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 5, .production_id = 5), + [1660] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 5, .production_id = 5), + [1662] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 8, .production_id = 14), + [1664] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 8, .production_id = 14), + [1666] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 6, .production_id = 8), + [1668] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 6, .production_id = 8), + [1670] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 8, .production_id = 13), + [1672] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 8, .production_id = 13), + [1674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 6, .production_id = 10), + [1676] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 6, .production_id = 10), + [1678] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 6, .production_id = 10), + [1680] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 6, .production_id = 10), + [1682] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 6, .production_id = 10), + [1684] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 6, .production_id = 10), + [1686] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 14, .production_id = 25), + [1688] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 14, .production_id = 25), + [1690] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 13, .production_id = 24), + [1692] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 13, .production_id = 24), + [1694] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 5, .production_id = 6), + [1696] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 5, .production_id = 6), + [1698] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 8, .production_id = 14), + [1700] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 8, .production_id = 14), + [1702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_mod, 4), + [1704] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_mod, 4), + [1706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_code, 4, .production_id = 4), + [1708] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_code, 4, .production_id = 4), + [1710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 8, .production_id = 14), + [1712] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 8, .production_id = 14), + [1714] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 12, .production_id = 22), + [1716] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 12, .production_id = 22), + [1718] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 5, .production_id = 5), + [1720] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 5, .production_id = 5), + [1722] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 13, .production_id = 23), + [1724] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 13, .production_id = 23), + [1726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 7, .production_id = 12), + [1728] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 7, .production_id = 12), + [1730] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_struct, 4, .production_id = 3), + [1732] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_struct, 4, .production_id = 3), + [1734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1112), + [1736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1410), + [1738] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1152), + [1740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1203), + [1742] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1162), + [1744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1162), + [1746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), + [1748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1540), + [1750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(912), + [1752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1161), + [1754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1453), + [1756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1456), + [1758] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1127), + [1760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [1762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [1764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1513), + [1766] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1393), + [1768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [1770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), + [1772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1532), + [1774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1443), + [1776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1502), + [1778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1573), + [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1429), + [1782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__arms, 3), + [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [1786] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2), + [1788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), + [1790] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__params, 2), + [1792] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__params, 3), + [1794] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3), + [1796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1159), + [1798] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__arms, 2), + [1800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1163), + [1802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [1804] = {.entry = {.count = 1, .reusable = false}}, SHIFT(101), + [1806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [1808] = {.entry = {.count = 1, .reusable = false}}, SHIFT(102), + [1810] = {.entry = {.count = 1, .reusable = false}}, SHIFT(103), + [1812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [1814] = {.entry = {.count = 1, .reusable = false}}, SHIFT(99), + [1816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [1818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [1820] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__exprs, 1), + [1822] = {.entry = {.count = 1, .reusable = false}}, SHIFT(96), + [1824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [1826] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(210), + [1829] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(208), + [1832] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(217), + [1835] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(979), + [1838] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(216), + [1841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(523), + [1843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [1845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), + [1847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [1849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(979), + [1851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [1853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field_expr, 1), + [1855] = {.entry = {.count = 1, .reusable = false}}, SHIFT(124), + [1857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(521), + [1859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(492), + [1861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(991), + [1863] = {.entry = {.count = 1, .reusable = false}}, SHIFT(186), + [1865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [1867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [1869] = {.entry = {.count = 1, .reusable = false}}, SHIFT(201), + [1871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [1873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [1875] = {.entry = {.count = 1, .reusable = false}}, SHIFT(218), + [1877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [1879] = {.entry = {.count = 1, .reusable = false}}, SHIFT(223), + [1881] = {.entry = {.count = 1, .reusable = false}}, SHIFT(231), + [1883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(489), + [1885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), + [1887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__exprs_repeat1, 2), + [1889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), + [1891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(517), + [1893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), + [1895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [1897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1002), + [1899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(454), + [1901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(797), + [1903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [1905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(874), + [1907] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [1909] = {.entry = {.count = 1, .reusable = false}}, SHIFT(361), + [1911] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), + [1913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), + [1915] = {.entry = {.count = 1, .reusable = false}}, SHIFT(364), + [1917] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [1919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [1921] = {.entry = {.count = 1, .reusable = false}}, SHIFT(368), + [1923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [1925] = {.entry = {.count = 1, .reusable = false}}, SHIFT(371), + [1927] = {.entry = {.count = 1, .reusable = false}}, SHIFT(380), + [1929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [1931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(499), + [1933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [1935] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field_expr, 3), + [1937] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field_name, 3), + [1939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(816), + [1941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(458), + [1943] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1363), + [1945] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arm, 3, .production_id = 9), + [1947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), + [1949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(998), + [1951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), + [1953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(789), + [1955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(823), + [1957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(516), + [1959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(832), + [1961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(830), + [1963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(812), + [1965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), + [1967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [1969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(392), + [1971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), + [1973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(809), + [1975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(997), + [1977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(808), + [1979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), + [1981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), + [1983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), + [1985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), + [1987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), + [1989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), + [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), + [1993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), + [1995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), + [1997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(804), + [1999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(822), + [2001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(802), + [2003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(785), + [2005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), + [2007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [2009] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1380), + [2011] = {.entry = {.count = 1, .reusable = false}}, SHIFT(836), + [2013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1357), + [2015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1099), + [2017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1496), + [2019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1086), + [2021] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1480), + [2023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1177), + [2025] = {.entry = {.count = 1, .reusable = false}}, SHIFT(851), + [2027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1533), + [2029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), + [2031] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__types, 2), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1232), + [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(794), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(783), + [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), + [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), + [2043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1386), + [2045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(782), + [2047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(814), + [2049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(807), + [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1476), + [2053] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__types, 3), + [2055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(844), + [2057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), + [2059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(835), + [2063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1293), + [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(455), + [2067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1350), + [2069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1186), + [2071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1249), + [2073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1264), + [2075] = {.entry = {.count = 1, .reusable = false}}, SHIFT(432), + [2077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1323), + [2079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1101), + [2081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1081), + [2083] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1420), + [2085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), + [2087] = {.entry = {.count = 1, .reusable = false}}, SHIFT(446), + [2089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1287), + [2091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1230), + [2093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452), + [2095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1278), + [2097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1251), + [2099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(441), + [2101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1470), + [2103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), + [2105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1200), + [2107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1273), + [2109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1227), + [2111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1272), + [2113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1257), + [2115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1175), + [2117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(859), + [2119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1164), + [2121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1215), + [2123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1196), + [2125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), + [2127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1382), + [2129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1367), + [2131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(856), + [2133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1244), + [2135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1283), + [2137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1252), + [2139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1190), + [2141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1412), + [2143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1385), + [2145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1401), + [2147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1151), + [2149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1320), + [2151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1268), + [2153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1188), + [2155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1219), + [2157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1270), + [2159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(857), + [2161] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259), + [2163] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1284), + [2165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1392), + [2167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1217), + [2169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), + [2171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1093), + [2173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1407), + [2175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1407), + [2177] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848), + [2179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1431), + [2181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1138), + [2183] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant_name, 1), + [2185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_name, 1), + [2187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_name, 1), + [2189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_tuple, 5), + [2191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_tuple, 5), + [2193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_tuple, 4), + [2195] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_tuple, 4), + [2197] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_record, 3), + [2199] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_record, 3), + [2201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_record_concat, 3), + [2203] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_record_concat, 3), + [2205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_paren, 3), + [2207] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_paren, 3), + [2209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_or, 3), + [2211] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_or, 3), + [2213] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_variant, 3), + [2215] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_variant, 3), + [2217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_array, 3), + [2219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_array, 3), + [2221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_wild, 1), + [2223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_wild, 1), + [2225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_constant, 1), + [2227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_constant, 1), + [2229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_array, 2), + [2231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_array, 2), + [2233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_annot, 3), + [2235] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_annot, 3), + [2237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_record, 2), + [2239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_record, 2), + [2241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_variant, 4), + [2243] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_variant, 4), + [2245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), + [2247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1121), + [2249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1), + [2251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [2253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(973), + [2255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), + [2257] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [2259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), + [2261] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1173), + [2263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1309), + [2265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(847), + [2267] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1171), + [2269] = {.entry = {.count = 1, .reusable = true}}, SHIFT(843), + [2271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(469), + [2273] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1169), + [2275] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_constant_string_repeat1, 2), + [2277] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_constant_string_repeat1, 2), SHIFT_REPEAT(1173), + [2280] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_constant_string_repeat1, 2), SHIFT_REPEAT(1309), + [2283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(904), + [2285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1157), + [2287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__param, 3), + [2289] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_field, 3), + [2291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1082), + [2293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__types, 1), + [2295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1377), + [2297] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1441), + [2299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1129), + [2301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [2303] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1141), + [2305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [2307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1102), + [2309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [2311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), + [2313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [2315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [2317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1517), + [2319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1516), + [2321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1515), + [2323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1514), + [2325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [2327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1139), + [2329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), + [2331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), + [2333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1325), + [2335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1223), + [2337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), + [2339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1131), + [2341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [2343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), + [2345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [2347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [2349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), + [2351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), + [2353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1123), + [2355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), + [2357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [2359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [2361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), + [2363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114), + [2365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [2367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [2369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1353), + [2371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1165), + [2373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), + [2375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1122), + [2377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(316), + [2379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [2381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), + [2383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [2385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [2387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), + [2389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(795), + [2391] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1355), + [2393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), + [2395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [2397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), + [2399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(315), + [2401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1146), + [2403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [2405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [2407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [2409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), + [2411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [2413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1140), + [2415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(337), + [2417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), + [2419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 3), + [2421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [2423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), + [2425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), + [2427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), + [2429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [2431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1446), + [2433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [2435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [2437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), + [2439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__types_repeat1, 2), + [2441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), + [2443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(327), + [2445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1116), + [2447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), + [2449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), + [2451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [2453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [2455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), + [2457] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 4), + [2459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1450), + [2461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [2463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [2465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [2467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1128), + [2469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [2471] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__exprs_repeat1, 2), SHIFT_REPEAT(331), + [2474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1266), + [2476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant, 1), + [2478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1087), + [2480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [2482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [2484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), + [2486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), + [2488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), + [2490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), + [2492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1462), + [2494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1464), + [2496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), + [2498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1468), + [2500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [2502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1370), + [2504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [2506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(329), + [2508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), + [2510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1104), + [2512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [2514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1092), + [2516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [2518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), + [2520] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), SHIFT_REPEAT(956), + [2523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [2525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [2527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), + [2529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(391), + [2531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), + [2533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), + [2535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1109), + [2537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), + [2539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1398), + [2541] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__types_repeat1, 2), SHIFT_REPEAT(1113), + [2544] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [2546] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [2548] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1106), + [2550] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [2552] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [2554] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [2556] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [2558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__pattern_fields_repeat1, 2), + [2560] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__pattern_fields_repeat1, 2), SHIFT_REPEAT(1365), + [2563] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__type_fields_repeat1, 2), + [2565] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__type_fields_repeat1, 2), SHIFT_REPEAT(1415), + [2568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1247), + [2570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(824), + [2572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1085), + [2574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(842), + [2576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(800), + [2578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339), + [2580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(803), + [2582] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__arms, 1), + [2584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(911), + [2586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(806), + [2588] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1319), + [2590] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_code_repeat1, 2), + [2592] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_code_repeat1, 2), SHIFT_REPEAT(1301), + [2595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pattern_fields, 2), + [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342), + [2599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(825), + [2601] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attributes, 3), + [2603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(799), + [2605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1299), + [2607] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_fields, 1), + [2609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [2611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1348), + [2613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [2615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(833), + [2617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1303), + [2619] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__attributes_repeat1, 2), + [2621] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__attributes_repeat1, 2), SHIFT_REPEAT(1373), + [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), + [2626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__generics, 2), + [2628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1231), + [2630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1095), + [2632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1280), + [2634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341), + [2636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__arms_repeat1, 2), + [2638] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__arms_repeat1, 2), SHIFT_REPEAT(920), + [2641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(811), + [2643] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_field, 3), + [2645] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_fields, 1), + [2647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1335), + [2649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), + [2651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1326), + [2653] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1), + [2655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1149), + [2657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(815), + [2659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), + [2661] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_fields, 3), + [2663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1334), + [2665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(784), + [2667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1296), + [2669] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 2), + [2671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 2), SHIFT_REPEAT(1414), + [2674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_fields, 2), + [2676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attributes, 1), + [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1358), + [2680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1328), + [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(787), + [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1297), + [2686] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__generics_repeat1, 2), SHIFT_REPEAT(1409), + [2689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__generics_repeat1, 2), + [2691] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__generics, 3), + [2693] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pattern_fields, 3), + [2695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [2697] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1315), + [2699] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__generics, 1), + [2701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1307), + [2703] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_interpolation, 2), + [2705] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_interpolation, 2), + [2707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810), + [2709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1094), + [2711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [2713] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__params_repeat1, 2), SHIFT_REPEAT(932), + [2716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__params_repeat1, 2), + [2718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), + [2720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_field, 1), + [2722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(958), + [2724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pattern_fields, 1), + [2726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1308), + [2728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_code, 1), + [2730] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1301), + [2732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1260), + [2734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1088), + [2736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1261), + [2738] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attributes, 2), + [2740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), + [2742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1312), + [2744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), + [2746] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expr_fields_repeat1, 2), + [2748] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expr_fields_repeat1, 2), SHIFT_REPEAT(50), + [2751] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), + [2753] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__params, 1), + [2755] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1256), + [2757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1126), + [2759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(819), + [2761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1292), + [2763] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1258), + [2765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1285), + [2767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1090), + [2769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(509), + [2771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(510), + [2773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), + [2775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1255), + [2777] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic, 1), + [2779] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1023), + [2781] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), + [2783] = {.entry = {.count = 1, .reusable = true}}, SHIFT(831), + [2785] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), + [2787] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1084), + [2789] = {.entry = {.count = 1, .reusable = true}}, SHIFT(790), + [2791] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant, 3), + [2793] = {.entry = {.count = 1, .reusable = true}}, SHIFT(829), + [2795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), + [2797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1253), + [2799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(910), + [2801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1349), + [2803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1178), + [2805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1269), + [2807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1083), + [2809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1229), + [2811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1125), + [2813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), + [2815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1241), + [2817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(798), + [2819] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field, 1), + [2821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275), + [2823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1089), + [2825] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), + [2827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1211), + [2829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(781), + [2831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant, 4), + [2833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1561), + [2835] = {.entry = {.count = 1, .reusable = true}}, SHIFT(801), + [2837] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1079), + [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1103), + [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(845), + [2843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(868), + [2845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1489), + [2847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1098), + [2849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), + [2851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994), + [2853] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1166), + [2855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1115), + [2857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), + [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1265), + [2861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1383), + [2863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1421), + [2865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1107), + [2867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(780), + [2869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), + [2871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1136), + [2873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1444), + [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330), + [2877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), + [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), + [2881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1331), + [2883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1442), + [2885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), + [2887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), + [2889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1437), + [2891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(788), + [2893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(888), + [2895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1153), + [2897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [2899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), + [2901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1435), + [2903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1551), + [2905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1144), + [2907] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1554), + [2909] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1565), + [2911] = {.entry = {.count = 1, .reusable = true}}, SHIFT(496), + [2913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1245), + [2915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(873), + [2917] = {.entry = {.count = 1, .reusable = true}}, SHIFT(860), + [2919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1557), + [2921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1145), + [2923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1560), + [2925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(498), + [2927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), + [2929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1310), + [2931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(865), + [2933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1091), + [2935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1286), + [2937] = {.entry = {.count = 1, .reusable = true}}, SHIFT(821), + [2939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1403), + [2941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(931), + [2943] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1142), + [2945] = {.entry = {.count = 1, .reusable = true}}, SHIFT(867), + [2947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(511), + [2949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), + [2951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1080), + [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1179), + [2955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(513), + [2957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(519), + [2959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1568), + [2961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(827), + [2963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(840), + [2965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1160), + [2967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(471), + [2969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [2971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1155), + [2973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), + [2975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453), + [2977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), + [2979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), + [2981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1279), + [2983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1108), + [2985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), + [2987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1189), + [2989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(501), + [2991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(839), + [2993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1117), + [2995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(930), + [2997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(451), + [2999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1105), + [3001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1413), + [3003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1240), + [3005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [3007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1100), + [3009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1356), + [3011] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1368), + [3013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366), + [3015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1375), + [3017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), + [3019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(484), + [3021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(474), + [3023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), + [3025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1477), + [3027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1187), + [3029] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1466), + [3031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(796), + [3033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [3035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1235), + [3037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(999), + [3039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(914), + [3041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1387), + [3043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1135), + [3045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1506), + [3047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1390), + [3049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(921), + [3051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1147), + [3053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [3055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1221), + [3057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1118), + [3059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), + [3061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1201), + [3063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(918), + [3065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), + [3067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), + [3069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), + [3071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), + [3073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), + [3075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), + [3077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1388), + [3081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1479), + [3083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1097), + [3085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1137), + [3087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(876), + [3089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1096), + [3091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), + [3093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(837), + [3095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1180), + [3097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), + [3099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1347), + [3101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), + [3103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1197), + [3105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [3107] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [3109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(850), + [3111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1120), + [3113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1452), + [3115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(913), + [3117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1525), + [3119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1526), + [3121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), + [3123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1316), + [3125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1447), + [3127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1191), + [3129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1205), + [3131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1181), + [3133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1537), + [3135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1535), + [3137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1397), + [3139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1399), + [3141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1400), + [3143] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1558), + [3145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1538), +}; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef _WIN32 +#define extern __declspec(dllexport) +#endif + +extern const TSLanguage *tree_sitter_aqua(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, + .keyword_lex_fn = ts_lex_keywords, + .keyword_capture_token = sym_name, + .primary_state_ids = ts_primary_state_ids, + }; + return &language; +} +#ifdef __cplusplus +} +#endif diff --git a/crates/tree-sitter-aqua/src/tree_sitter/parser.h b/crates/tree-sitter-aqua/src/tree_sitter/parser.h new file mode 100644 index 0000000..2b14ac1 --- /dev/null +++ b/crates/tree-sitter-aqua/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/experiments/libffi/library/Cargo.lock b/experiments/libffi/library/Cargo.lock new file mode 100644 index 0000000..a362402 --- /dev/null +++ b/experiments/libffi/library/Cargo.lock @@ -0,0 +1,127 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "libc" +version = "0.2.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" + +[[package]] +name = "libffi" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce826c243048e3d5cec441799724de52e2d42f820468431fc3fceee2341871e2" +dependencies = [ + "libc", + "libffi-sys", +] + +[[package]] +name = "libffi-sys" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36115160c57e8529781b4183c2bb51fdc1f6d6d1ed345591d84be7703befb3c" +dependencies = [ + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "library" +version = "0.1.0" +dependencies = [ + "libffi", + "libloading", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/experiments/libffi/library/Cargo.toml b/experiments/libffi/library/Cargo.toml new file mode 100644 index 0000000..6d0e221 --- /dev/null +++ b/experiments/libffi/library/Cargo.toml @@ -0,0 +1,13 @@ +[workspace] + +[package] +name = "library" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +libffi = "3.2.0" +libloading = "0.8.1" diff --git a/experiments/libffi/library/src/lib.rs b/experiments/libffi/library/src/lib.rs new file mode 100644 index 0000000..a6245cc --- /dev/null +++ b/experiments/libffi/library/src/lib.rs @@ -0,0 +1,66 @@ +#[no_mangle] +pub extern "C" fn add(a: i32, b: i32) -> i32 { + a + b +} + +#[repr(C)] +pub struct Pair { + pub x: L, + pub y: R, +} + +#[no_mangle] +pub extern "C" fn pair(x: i32, y: i32) -> Pair { + Pair { x, y } +} + +#[no_mangle] +pub extern "C" fn pair2(x: i64, y: i32) -> Pair { + Pair { x, y } +} + +#[no_mangle] +pub extern "C" fn fst(p: Pair) -> i32 { + p.x +} + +#[no_mangle] +pub extern "C" fn snd(p: Pair) -> i32 { + p.y +} + +#[repr(u8)] +pub enum Color { + Red, + Green, + Blue, +} + +#[no_mangle] +pub extern "C" fn is_red(c: Color) -> bool { + matches!(c, Color::Red) +} + +#[repr(C)] +pub enum Maybe { + Nothing, + Just(T), +} + +#[no_mangle] +pub extern "C" fn just(just: i32) -> Maybe { + Maybe::Just(just) +} + +#[no_mangle] +pub extern "C" fn nothing() -> Maybe { + Maybe::Nothing +} + +#[no_mangle] +pub extern "C" fn unwrap(m: Maybe) -> i32 { + match m { + Maybe::Just(x) => x, + Maybe::Nothing => panic!("unwrap called on Nothing"), + } +} diff --git a/experiments/libffi/loader/Cargo.lock b/experiments/libffi/loader/Cargo.lock new file mode 100644 index 0000000..3f2deb6 --- /dev/null +++ b/experiments/libffi/loader/Cargo.lock @@ -0,0 +1,127 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "libc" +version = "0.2.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" + +[[package]] +name = "libffi" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce826c243048e3d5cec441799724de52e2d42f820468431fc3fceee2341871e2" +dependencies = [ + "libc", + "libffi-sys", +] + +[[package]] +name = "libffi-sys" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36115160c57e8529781b4183c2bb51fdc1f6d6d1ed345591d84be7703befb3c" +dependencies = [ + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "loader" +version = "0.1.0" +dependencies = [ + "libffi", + "libloading", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/experiments/libffi/loader/Cargo.toml b/experiments/libffi/loader/Cargo.toml new file mode 100644 index 0000000..be13ab7 --- /dev/null +++ b/experiments/libffi/loader/Cargo.toml @@ -0,0 +1,10 @@ +[workspace] + +[package] +name = "loader" +version = "0.1.0" +edition = "2021" + +[dependencies] +libloading = "0.8.1" +libffi = "3.2.0" diff --git a/experiments/libffi/loader/build.rs b/experiments/libffi/loader/build.rs new file mode 100644 index 0000000..b525177 --- /dev/null +++ b/experiments/libffi/loader/build.rs @@ -0,0 +1,24 @@ +use std::env; +use std::process::Command; + +fn main() { + let library_dir = env::current_dir() + .unwrap() + .parent() + .unwrap() + .join("library"); + + println!("cargo:rerun-if-changed={}", library_dir.display()); + + let status = Command::new("cargo") + .arg("build") + .arg("--release") + .arg("--manifest-path") + .arg(library_dir.join("Cargo.toml")) + .status() + .unwrap(); + + if !status.success() { + panic!("Failed to build the crate in the parent directory"); + } +} diff --git a/experiments/libffi/loader/src/lib.rs b/experiments/libffi/loader/src/lib.rs new file mode 100644 index 0000000..5bae205 --- /dev/null +++ b/experiments/libffi/loader/src/lib.rs @@ -0,0 +1,254 @@ +#![allow(unused)] +use std::alloc::Layout; +use std::ffi::c_void; +use std::path::PathBuf; +use std::rc::Rc; + +use libloading::os::unix::Symbol; +use libloading::Library; + +use libffi::middle::*; + +#[cfg(target_os = "macos")] +const LIB_PATH: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/../library/target/debug/liblibrary.dylib" +); + +#[cfg(target_os = "linux")] +const LIB_PATH: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/../library/target/debug/liblibrary.so" +); + +#[cfg(target_os = "windows")] +const LIB_PATH: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/../library/target/debug/liblibrary.dll" +); + +fn load() -> Library { + unsafe { Library::new(LIB_PATH).unwrap() } +} + +fn fun<'a>(lib: &'a Library, name: &str) -> libloading::Symbol<'a, *mut c_void> { + unsafe { lib.get(name.as_bytes()).unwrap() } +} + +fn cif(arg_types: [Type; N], ret_type: Type) -> Cif { + Builder::new().args(arg_types).res(ret_type).into_cif() +} + +#[test] +fn test_i32_add() { + let lib = load(); + let fun = fun(&lib, "add"); + let res = unsafe { + cif([Type::i32(), Type::i32()], Type::i32()) + .call::(CodePtr(*fun), &[Arg::new(&10), Arg::new(&20)]) + }; + assert_eq!(res, 30); +} + +#[derive(Debug, PartialEq)] +#[repr(C)] +struct Pair { + x: L, + y: R, +} + +#[test] +fn test_struct_pair() { + let lib = load(); + let fun = fun(&lib, "pair"); + let res = unsafe { + cif( + [Type::i32(), Type::i32()], + Type::structure([Type::i32(), Type::i32()]), + ) + .call::>(CodePtr(*fun), &[Arg::new(&10), Arg::new(&20)]) + }; + assert_eq!(res, Pair { x: 10, y: 20 }); +} + +#[test] +fn test_struct_pair2() { + let lib = load(); + let fun = fun(&lib, "pair2"); + let res = unsafe { + cif( + [Type::i64(), Type::i32()], + Type::structure([Type::i64(), Type::i32()]), + ) + .call::>(CodePtr(*fun), &[Arg::new(&10i64), Arg::new(&20i32)]) + }; + assert_eq!(res, Pair { x: 10i64, y: 20i32 }); +} + +#[test] +fn test_struct_fst() { + let lib = load(); + let fun = fun(&lib, "fst"); + let res = unsafe { + cif([Type::structure([Type::i32(), Type::i32()])], Type::i32()) + .call::(CodePtr(*fun), &[Arg::new(&Pair { x: 10, y: 20 })]) + }; + assert_eq!(res, 10); +} + +#[test] +fn test_struct_fst_raw() { + let lib = load(); + let v: Vec = vec![0; 4]; + let fun = fun(&lib, "fst"); + let rvalue = v.as_ptr() as *mut c_void; + let avalue = &[Arg::new(&Pair { x: 10, y: 20 })]; + let avalue = avalue.as_ptr() as *mut *mut c_void; + + unsafe { + let fun = Some(*CodePtr(*fun).as_fun()); + let cif = cif([Type::structure([Type::i32(), Type::i32()])], Type::i32()); + libffi::raw::ffi_call(cif.as_raw_ptr(), fun, rvalue, avalue); + } + + let res = unsafe { *(rvalue as *const i32) }; + assert_eq!(res, 10); +} + +#[test] +fn test_struct_snd() { + let lib = load(); + let fun = fun(&lib, "snd"); + let res = unsafe { + cif([Type::structure([Type::i32(), Type::i32()])], Type::i32()) + .call::(CodePtr(*fun), &[Arg::new(&Pair { x: 10, y: 20 })]) + }; + assert_eq!(res, 20); +} + +#[repr(u8)] +enum Color { + Red, + Green, + Blue, +} + +#[test] +fn test_enum_color() { + let lib = load(); + let fun = fun(&lib, "is_red"); + let res = unsafe { + cif([Type::u8()], Type::u8()).call::(CodePtr(*fun), &[Arg::new(&Color::Red)]) != 0 + }; + assert_eq!(res, true); + let res = unsafe { + cif([Type::u8()], Type::u8()).call::(CodePtr(*fun), &[Arg::new(&Color::Green)]) != 0 + }; + assert_eq!(res, false); +} + +/// #[repr(C)] +/// pub struct MaybeRepr { +/// tag: MaybeTag, +/// payload: MaybePayload, +/// } +/// #[repr(u8)] +/// enum MaybeTag { +/// Nothing, +/// Just, +/// } +/// +/// #[repr(C)] +/// pub union MaybePayload { +/// Nothing: MaybePayloadNothing, +/// Just: MaybePayloadJust, +/// } +/// +/// #[repr(C)] +/// pub struct MaybePayloadNothing; +/// +/// #[repr(C)] +/// pub struct MaybePayloadJust(i32); +#[derive(PartialEq, Debug)] +#[repr(C, u8)] +pub enum Maybe { + Nothing, + Just(T), +} + +fn type_enum(variants: [Type; N]) -> Type { + let t = variants + .into_iter() + .max_by_key(|t| unsafe { t.as_raw_ptr().read().size }) + .unwrap(); + Type::structure([Type::u8(), t]) +} + +#[test] +fn test_enum_just() { + let lib = load(); + let fun = fun(&lib, "just"); + let out = type_enum([Type::i32()]); + let res = + unsafe { cif([Type::i32()], out).call::>(CodePtr(*fun), &[Arg::new(&123)]) }; + assert_eq!(res, Maybe::Just(123)); +} + +#[test] +fn test_enum_nothing() { + let lib = load(); + let fun = fun(&lib, "nothing"); + let out = type_enum([Type::i32()]); + let res = unsafe { cif([], out).call::>(CodePtr(*fun), &[]) }; + assert_eq!(res, Maybe::Nothing); +} + +#[test] +fn test_enum_just_pair() { + let lib = load(); + let fun = fun(&lib, "nothing"); + let out = type_enum([Type::structure([Type::i32(), Type::i32()])]); + let res = unsafe { cif([], out).call::>>(CodePtr(*fun), &[]) }; + assert_eq!(res, Maybe::Nothing); +} + +// #[test] +// fn test_head() { +// let struct_layout = Layout::new::() // size and alignment for the first field +// .extend(Layout::new::()) // size and alignment for the second field +// .unwrap() +// .0 +// .pad_to_align(); +// +// // Get the function pointer +// let func: libloading::Symbol<*mut c_void> = unsafe { lib.get(b"add").unwrap() }; +// +// // Prepare libffi types +// let arg_types = [Type::i32(), Type::i32()]; +// let ret_type = Type::i32(); +// +// let func_ptr = *func as *mut c_void; +// let code_ptr = CodePtr(func_ptr); +// +// // Create CIF +// let cif = Builder::new().args(arg_types).res(ret_type).into_cif(); +// +// // Prepare arguments +// let arg1 = 10; +// let arg2 = 20; +// let args = [Arg::new(&arg1), Arg::new(&arg2)]; +// +// // Call the function +// let result: i32 = unsafe { cif.call(code_ptr, &args) }; +// +// println!("Result: {}", result); +// } +// +// #[test] +// fn test2() { +// let lib = unsafe { +// Library::new("/Users/klasseg/Workspace/rust/aqua-dynamic-linking/dynamic/target/release/libdynamic.dylib").unwrap() +// }; +// +// let func: libloading::Symbol<*mut c_void> = unsafe { lib.get(b"add").unwrap() }; +// } diff --git a/experiments/nexmark/.gitignore b/experiments/nexmark/.gitignore new file mode 100644 index 0000000..024b8c6 --- /dev/null +++ b/experiments/nexmark/.gitignore @@ -0,0 +1,6 @@ +.* +!/.gitignore + +*.jsonl +*.csv +target/ diff --git a/experiments/nexmark/Dockerfile b/experiments/nexmark/Dockerfile new file mode 100644 index 0000000..d253cdb --- /dev/null +++ b/experiments/nexmark/Dockerfile @@ -0,0 +1,35 @@ +FROM aqua + +# Set the noninteractive timezone (prevents configuration prompts) +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/London + +# Set a working directory +WORKDIR /aqua/experiments/nexmark/ + +# Install apt packages +RUN apt-get update && apt-get install -y \ + curl wget software-properties-common default-jdk python3 python3-pip maven + +# Install Apache Flink +RUN wget https://downloads.apache.org/flink/flink-1.18.1/flink-1.18.1-bin-scala_2.12.tgz \ + && tar xzf flink-1.18.1-bin-scala_2.12.tgz \ + && mv flink-1.18.1 /opt/flink +ENV PATH="/opt/flink/bin:${PATH}" + +# Set the environment variable for JAVA_HOME +RUN JAVA_HOME="$(dirname $(dirname $(update-alternatives --list | head -n 1)) | tail -1)" + +# Install Python dependencies +RUN pip install matplotlib numpy + +# Cleanup +RUN apt-get clean + +# Copy the Flink and Shark source code into the image +COPY . . + +# Copy Flink configuration +COPY flink-conf.yaml /opt/flink/conf/flink-conf.yaml + +CMD ["python3", "run.py"] diff --git a/experiments/nexmark/README.md b/experiments/nexmark/README.md new file mode 100644 index 0000000..97cb002 --- /dev/null +++ b/experiments/nexmark/README.md @@ -0,0 +1,21 @@ +# Nexmark Benchmark + +This directory contains the Nexmark benchmark implemented for Aqua. + +The benchmark contains 2 experiments: +* Experiment 1: The 8 standard Nexmark Queries. Each query: +* Experiment 2: A custom Sliding Window Aggregation query evaluated for different window sizes using bid data provided in the Nexmark dataset + +All queries process a total of 1M events. Queries target Rust and Flink, with and without optimisations. + +## Running + +To run the experiments, install and startup [docker](https://docs.docker.com/) and then run: + +```bash +./docker.sh +``` + +## Output + +After running, plots of the experiments can be found in the generated `output/` folder. diff --git a/experiments/nexmark/data-generator/Cargo.lock b/experiments/nexmark/data-generator/Cargo.lock new file mode 100644 index 0000000..0c57f14 --- /dev/null +++ b/experiments/nexmark/data-generator/Cargo.lock @@ -0,0 +1,367 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anstream" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "data-generator" +version = "0.1.0" +dependencies = [ + "clap", + "csv", + "nexmark", + "serde", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "nexmark" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45fc401175963954a7046238c51799a99eaa4d8be7dd7a0c52dbf00813e52f92" +dependencies = [ + "lazy_static", + "rand", + "serde", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "serde" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "2.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/experiments/nexmark/data-generator/Cargo.toml b/experiments/nexmark/data-generator/Cargo.toml new file mode 100644 index 0000000..0cb0c29 --- /dev/null +++ b/experiments/nexmark/data-generator/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] + +[package] +name = "data-generator" +version = "0.1.0" +edition = "2021" + +[dependencies] +nexmark = { version = "0.2.0", features = ["serde"] } +csv = "1.3.0" +serde = { version = "1.0.130", features = ["derive"] } +clap = { version = "4.0.0", features = ["derive"] } diff --git a/experiments/nexmark/data-generator/src/main.rs b/experiments/nexmark/data-generator/src/main.rs new file mode 100644 index 0000000..fd27c0c --- /dev/null +++ b/experiments/nexmark/data-generator/src/main.rs @@ -0,0 +1,85 @@ +use std::error::Error; +use std::fs::File; +use std::io::BufWriter; +use std::path::PathBuf; + +use clap::Parser; +use csv::WriterBuilder; +use nexmark::config::NexmarkConfig; +use nexmark::event::Event; +use nexmark::event::EventType; + +#[derive(Parser, Clone, Debug)] +struct Args { + /// Number of events to generate. + #[clap(long, default_value = "2000000")] + num_events: usize, + #[clap(long, default_value_t = false)] + persons: bool, + #[clap(long, default_value_t = false)] + auctions: bool, + #[clap(long, default_value_t = false)] + bids: bool, + #[clap(long, default_value = ".")] + dir: PathBuf, +} + +fn main() -> Result<(), Box> { + let args = Args::parse(); + let conf = NexmarkConfig { + // Set to 1700000000 (Tue Nov 14 2023 22:13:20 GMT+0000) to make events reproducible. + base_time: 1700000000, + ..Default::default() + }; + let mut total = 0; + if args.persons { + total += conf.person_proportion; + } + if args.auctions { + total += conf.auction_proportion; + } + if args.bids { + total += conf.bid_proportion; + } + if total == 0 { + return Err("At least one of --bids, --auctions, --persons must be set".into()); + } + std::fs::create_dir_all(&args.dir)?; + + for (name, ty, flag, proportion) in [ + ("persons", EventType::Person, args.persons, conf.person_proportion), + ("auctions", EventType::Auction, args.auctions, conf.auction_proportion), + ("bids", EventType::Bid, args.bids, conf.bid_proportion), + ] { + if flag == false { + continue; + } + let n = args.num_events * proportion / total; + println!("Generating {}*{}/{} = {} events", args.num_events, proportion, total, n); + + let file = File::create(args.dir.join(name).with_extension("csv"))?; + let mut writer = WriterBuilder::new() + .has_headers(false) + .from_writer(BufWriter::new(file)); + nexmark::EventGenerator::new(conf.clone()) + .with_type_filter(ty) + .take(n) + .enumerate() + .inspect(|(i, _)| { + let m = i + 1; + let p = n / 100; + if m % p == 10 { + let progress = m / p; + println!("{name}: {progress}%"); + } + }) + .try_for_each(|(_, event)| match event { + Event::Person(row) if ty == EventType::Person => writer.serialize(&row), + Event::Auction(row) if ty == EventType::Auction => writer.serialize(&row), + Event::Bid(row) if ty == EventType::Bid => writer.serialize(&row), + _ => unreachable!(), + })?; + } + + Ok(()) +} diff --git a/experiments/nexmark/docker.sh b/experiments/nexmark/docker.sh new file mode 100755 index 0000000..17b16ef --- /dev/null +++ b/experiments/nexmark/docker.sh @@ -0,0 +1,6 @@ +docker image rm -f aqua aqua-nexmark &>/dev/null && echo 'Removed old image' +docker container rm -f aqua-nexmark &>/dev/null && echo 'Removed old container' +docker build --tag aqua -f ../../Dockerfile ../../ +docker build --tag aqua-nexmark . +docker run --name aqua-nexmark aqua-nexmark +docker cp aqua-nexmark:/aqua/experiments/nexmark/output . diff --git a/experiments/nexmark/flink-conf.yaml b/experiments/nexmark/flink-conf.yaml new file mode 100644 index 0000000..1e247b2 --- /dev/null +++ b/experiments/nexmark/flink-conf.yaml @@ -0,0 +1,319 @@ +################################################################################ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +# These parameters are required for Java 17 support. +# They can be safely removed when using Java 8/11. +env.java.opts.all: --add-exports=java.base/sun.net.util=ALL-UNNAMED --add-exports=java.rmi/sun.rmi.registry=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED + +#============================================================================== +# Common +#============================================================================== + +# The external address of the host on which the JobManager runs and can be +# reached by the TaskManagers and any clients which want to connect. This setting +# is only used in Standalone mode and may be overwritten on the JobManager side +# by specifying the --host parameter of the bin/jobmanager.sh executable. +# In high availability mode, if you use the bin/start-cluster.sh script and setup +# the conf/masters file, this will be taken care of automatically. Yarn +# automatically configure the host name based on the hostname of the node where the +# JobManager runs. + +jobmanager.rpc.address: localhost + +# The RPC port where the JobManager is reachable. + +jobmanager.rpc.port: 6123 + +# The host interface the JobManager will bind to. By default, this is localhost, and will prevent +# the JobManager from communicating outside the machine/container it is running on. +# On YARN this setting will be ignored if it is set to 'localhost', defaulting to 0.0.0.0. +# On Kubernetes this setting will be ignored, defaulting to 0.0.0.0. +# +# To enable this, set the bind-host address to one that has access to an outside facing network +# interface, such as 0.0.0.0. + +jobmanager.bind-host: localhost + + +# The total process memory size for the JobManager. +# +# Note this accounts for all memory usage within the JobManager process, including JVM metaspace and other overhead. + +# jobmanager.memory.process.size: 1600m + +# The host interface the TaskManager will bind to. By default, this is localhost, and will prevent +# the TaskManager from communicating outside the machine/container it is running on. +# On YARN this setting will be ignored if it is set to 'localhost', defaulting to 0.0.0.0. +# On Kubernetes this setting will be ignored, defaulting to 0.0.0.0. +# +# To enable this, set the bind-host address to one that has access to an outside facing network +# interface, such as 0.0.0.0. + +taskmanager.bind-host: localhost + +# The address of the host on which the TaskManager runs and can be reached by the JobManager and +# other TaskManagers. If not specified, the TaskManager will try different strategies to identify +# the address. +# +# Note this address needs to be reachable by the JobManager and forward traffic to one of +# the interfaces the TaskManager is bound to (see 'taskmanager.bind-host'). +# +# Note also that unless all TaskManagers are running on the same machine, this address needs to be +# configured separately for each TaskManager. + +taskmanager.host: localhost + +# The total process memory size for the TaskManager. +# +# Note this accounts for all memory usage within the TaskManager process, including JVM metaspace and other overhead. + +# NOTE: These values are non-default +taskmanager.memory.process.size: 8192m +# taskmanager.memory.flink.size: 2048m +taskmanager.memory.managed.size: 2048m +taskmanager.memory.network.min: 1024m +taskmanager.memory.network.max: 2048m +jobmanager.memory.process.size: 4096m +taskmanager.memory.managed.fraction: 0.2 +# jobmanager.memory.flink.size: 1024m + +# To exclude JVM metaspace and overhead, please, use total Flink memory size instead of 'taskmanager.memory.process.size'. +# It is not recommended to set both 'taskmanager.memory.process.size' and Flink memory. +# +# taskmanager.memory.flink.size: 1280m + +# The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline. + +taskmanager.numberOfTaskSlots: 1 + +# The parallelism used for programs that did not specify and other parallelism. + +parallelism.default: 1 + +# The default file system scheme and authority. +# +# By default file paths without scheme are interpreted relative to the local +# root file system 'file:///'. Use this to override the default and interpret +# relative paths relative to a different file system, +# for example 'hdfs://mynamenode:12345' +# +# fs.default-scheme + +#============================================================================== +# High Availability +#============================================================================== + +# The high-availability mode. Possible options are 'NONE' or 'zookeeper'. +# +# high-availability.type: zookeeper + +# The path where metadata for master recovery is persisted. While ZooKeeper stores +# the small ground truth for checkpoint and leader election, this location stores +# the larger objects, like persisted dataflow graphs. +# +# Must be a durable file system that is accessible from all nodes +# (like HDFS, S3, Ceph, nfs, ...) +# +# high-availability.storageDir: hdfs:///flink/ha/ + +# The list of ZooKeeper quorum peers that coordinate the high-availability +# setup. This must be a list of the form: +# "host1:clientPort,host2:clientPort,..." (default clientPort: 2181) +# +# high-availability.zookeeper.quorum: localhost:2181 + + +# ACL options are based on https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_BuiltinACLSchemes +# It can be either "creator" (ZOO_CREATE_ALL_ACL) or "open" (ZOO_OPEN_ACL_UNSAFE) +# The default value is "open" and it can be changed to "creator" if ZK security is enabled +# +# high-availability.zookeeper.client.acl: open + +#============================================================================== +# Fault tolerance and checkpointing +#============================================================================== + +# The backend that will be used to store operator state checkpoints if +# checkpointing is enabled. Checkpointing is enabled when execution.checkpointing.interval > 0. +# +# Execution checkpointing related parameters. Please refer to CheckpointConfig and ExecutionCheckpointingOptions for more details. +# +# execution.checkpointing.interval: 3min +# execution.checkpointing.externalized-checkpoint-retention: [DELETE_ON_CANCELLATION, RETAIN_ON_CANCELLATION] +# execution.checkpointing.max-concurrent-checkpoints: 1 +# execution.checkpointing.min-pause: 0 +# execution.checkpointing.mode: [EXACTLY_ONCE, AT_LEAST_ONCE] +# execution.checkpointing.timeout: 10min +# execution.checkpointing.tolerable-failed-checkpoints: 0 +# execution.checkpointing.unaligned: false +# +# Supported backends are 'hashmap', 'rocksdb', or the +# . +# +# state.backend.type: hashmap + +# Directory for checkpoints filesystem, when using any of the default bundled +# state backends. +# +# state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints + +# Default target directory for savepoints, optional. +# +# state.savepoints.dir: hdfs://namenode-host:port/flink-savepoints + +# Flag to enable/disable incremental checkpoints for backends that +# support incremental checkpoints (like the RocksDB state backend). +# +# state.backend.incremental: false + +# The failover strategy, i.e., how the job computation recovers from task failures. +# Only restart tasks that may have been affected by the task failure, which typically includes +# downstream tasks and potentially upstream tasks if their produced data is no longer available for consumption. + +jobmanager.execution.failover-strategy: region + +#============================================================================== +# Rest & web frontend +#============================================================================== + +# The port to which the REST client connects to. If rest.bind-port has +# not been specified, then the server will bind to this port as well. +# +#rest.port: 8081 + +# The address to which the REST client will connect to +# +rest.address: localhost + +# Port range for the REST and web server to bind to. +# +#rest.bind-port: 8080-8090 + +# The address that the REST & web server binds to +# By default, this is localhost, which prevents the REST & web server from +# being able to communicate outside of the machine/container it is running on. +# +# To enable this, set the bind address to one that has access to outside-facing +# network interface, such as 0.0.0.0. +# +rest.bind-address: localhost + +# Flag to specify whether job submission is enabled from the web-based +# runtime monitor. Uncomment to disable. + +#web.submit.enable: false + +# Flag to specify whether job cancellation is enabled from the web-based +# runtime monitor. Uncomment to disable. + +#web.cancel.enable: false + +#============================================================================== +# Advanced +#============================================================================== + +# Override the directories for temporary files. If not specified, the +# system-specific Java temporary directory (java.io.tmpdir property) is taken. +# +# For framework setups on Yarn, Flink will automatically pick up the +# containers' temp directories without any need for configuration. +# +# Add a delimited list for multiple directories, using the system directory +# delimiter (colon ':' on unix) or a comma, e.g.: +# /data1/tmp:/data2/tmp:/data3/tmp +# +# Note: Each directory entry is read from and written to by a different I/O +# thread. You can include the same directory multiple times in order to create +# multiple I/O threads against that directory. This is for example relevant for +# high-throughput RAIDs. +# +# io.tmp.dirs: /tmp + +# The classloading resolve order. Possible values are 'child-first' (Flink's default) +# and 'parent-first' (Java's default). +# +# Child first classloading allows users to use different dependency/library +# versions in their application than those in the classpath. Switching back +# to 'parent-first' may help with debugging dependency issues. +# +# classloader.resolve-order: child-first + +# The amount of memory going to the network stack. These numbers usually need +# no tuning. Adjusting them may be necessary in case of an "Insufficient number +# of network buffers" error. The default min is 64MB, the default max is 1GB. +# +# taskmanager.memory.network.fraction: 0.1 +# taskmanager.memory.network.min: 64mb +# taskmanager.memory.network.max: 1gb + +#============================================================================== +# Flink Cluster Security Configuration +#============================================================================== + +# Kerberos authentication for various components - Hadoop, ZooKeeper, and connectors - +# may be enabled in four steps: +# 1. configure the local krb5.conf file +# 2. provide Kerberos credentials (either a keytab or a ticket cache w/ kinit) +# 3. make the credentials available to various JAAS login contexts +# 4. configure the connector to use JAAS/SASL + +# The below configure how Kerberos credentials are provided. A keytab will be used instead of +# a ticket cache if the keytab path and principal are set. + +# security.kerberos.login.use-ticket-cache: true +# security.kerberos.login.keytab: /path/to/kerberos/keytab +# security.kerberos.login.principal: flink-user + +# The configuration below defines which JAAS login contexts + +# security.kerberos.login.contexts: Client,KafkaClient + +#============================================================================== +# ZK Security Configuration +#============================================================================== + +# Below configurations are applicable if ZK ensemble is configured for security + +# Override below configuration to provide custom ZK service name if configured +# zookeeper.sasl.service-name: zookeeper + +# The configuration below must match one of the values set in "security.kerberos.login.contexts" +# zookeeper.sasl.login-context-name: Client + +#============================================================================== +# HistoryServer +#============================================================================== + +# The HistoryServer is started and stopped via bin/historyserver.sh (start|stop) + +# Directory to upload completed jobs to. Add this directory to the list of +# monitored directories of the HistoryServer as well (see below). +#jobmanager.archive.fs.dir: hdfs:///completed-jobs/ + +# The address under which the web-based HistoryServer listens. +#historyserver.web.address: 0.0.0.0 + +# The port under which the web-based HistoryServer listens. +#historyserver.web.port: 8082 + +# Comma separated list of directories to monitor for completed jobs. +#historyserver.archive.fs.dir: hdfs:///completed-jobs/ + +# Interval in milliseconds for refreshing the monitored directories. +#historyserver.archive.fs.refresh-interval: 10000 + diff --git a/experiments/nexmark/output-old/experiment1-io-plot.pdf b/experiments/nexmark/output-old/experiment1-io-plot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f76b2519be4d5e9c5a330c17614184700fb208cf GIT binary patch literal 126614 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 literal 0 HcmV?d00001 diff --git a/experiments/nexmark/output-old/experiment1-plot.pdf b/experiments/nexmark/output-old/experiment1-plot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..426adb14e870a8176e85c228fbd9db5af56d3ab9 GIT binary patch literal 125956 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 literal 0 HcmV?d00001 diff --git a/experiments/nexmark/output-old/experiment2-results.json b/experiments/nexmark/output-old/experiment2-results.json new file mode 100644 index 0000000..d982bdb --- /dev/null +++ b/experiments/nexmark/output-old/experiment2-results.json @@ -0,0 +1,83 @@ +{ + "num_events": 2000000, + "results": { + "Size 100": { + "Flink": [ + 2.7193, + 0.03402366823257014, + 2.2588999999999997, + 0.029777340378213713 + ], + "FlinkOpt": [ + 2.6676, + 0.04355272666550283, + 2.2588999999999997, + 0.029777340378213713 + ], + "Rust": [ + 1.0588000000000002, + 0.006289674077406552, + 1.027, + 0.009055385138137443 + ], + "RustOpt": [ + 1.052, + 0.005234500931320952, + 1.027, + 0.009055385138137443 + ] + }, + "Size 1000": { + "Flink": [ + 2.5837, + 0.019282375372344555, + 2.2588999999999997, + 0.029777340378213713 + ], + "FlinkOpt": [ + 2.619, + 0.02635526512862279, + 2.2588999999999997, + 0.029777340378213713 + ], + "Rust": [ + 1.1625, + 0.018386136081297796, + 1.027, + 0.009055385138137443 + ], + "RustOpt": [ + 1.0555999999999999, + 0.008685620300243396, + 1.027, + 0.009055385138137443 + ] + }, + "Size 10000": { + "Flink": [ + 15.654900000000001, + 0.08451561985810686, + 2.2588999999999997, + 0.029777340378213713 + ], + "FlinkOpt": [ + 13.7861, + 0.13138375089789475, + 2.2588999999999997, + 0.029777340378213713 + ], + "Rust": [ + 1.7730000000000001, + 0.02322068043792001, + 1.027, + 0.009055385138137443 + ], + "RustOpt": [ + 1.0549000000000002, + 0.00474236228055174, + 1.027, + 0.009055385138137443 + ] + } + } +} diff --git a/experiments/nexmark/output-old2/experiment1-io-plot.pdf b/experiments/nexmark/output-old2/experiment1-io-plot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..54cafe41566bb392b1494913b8136ae399f16805 GIT binary patch literal 126716 zcmagEb9CiR(=ME3V%xTDPHfw@Z9AFRnAo1!wrzVdv7IlO`+nZ@eDC?=ti5`7S9NvO zRoAcgTDxj*5;-9e8U|WsNRov27G#aTLTM7Zf<-!C3ibxd^$mWCw(hhQ+zr( zeN$sce8x`$1$6W>mC7poX1k>?QeVp$^pR$D?<6^*d zHDF(_%+b%$ylANzts+BABJ=KzyUZl5*EqCdUD?VKTAA+7^=%sg0I+tX<@xQbOLueq z{b_7!aH|8o>bWhWDGD<*KDt*s~2N}^{>btolzm_6p9vFp_w z-3PsjcVKCAH(wW4@RD?1%L~1Osk0wBJow4N0b#nFXy1V)iR6xMQV!{T>go|s*U(v8 zHcv(A$r{}l6iRKq3A;+Y!qEg4`h6P zyEm&x6EDuj0mc5}h^YL6f{$PE(xV}WA>|URh+Yn?Un?;My>psiHA9IX-L z%Xio0flV6sD-E5J@n=9M(PKSsrJNq zQ#%^z1YB#I7*F9 z1$fOEdFA!Bh=($nG{yz0GVQW<#&28&Q04^*b~av{lM_aVX!ipT_Y{+cwtv8=!E#J+ z5EHxG-xIrV{V=YXXhB}uRu2nuz1h={ao`gHZ}GEE7q-d4Mt~Jkk`-v`+de$YC0QV1 z=zD3gCn0O0BMS1GK1(mAjFH?=b!4O$O z1*On<1X=bedL3hEY~}w!?sY0atN$`z2u{*6Eq+=Q!J;SQgxH2t)w8c9Xz{chEat|> zS9MUZx+xEL+D{+&bAkmAJ)u@y%|^Te9ci4pOWf~ZdlY#N|i!WQ-rIS#d;7lQ8k zAdWC-O9IVC0+;>=&nE$dDxZM6(|`=%cib33oY`|t3e4a#U*y2u`1q>!3$A~CIUzy` ztPXKQY#T05N8~G$%jC)oq^KEdS};T-{D(>l)wWnkH6B`f!%-tfVMwwcG2|M4N*Gmw@T6nvfEvC!Hb zOdMe!(zh3I4{@(dGAt2}3Hp2pyBac-XkRf{JpRysgyeBK+A_5!`e6vmqtf$zD`~F~ zgW-deztr*38WZO|xL~B+-ku<2p?7f;1Qf5ta9wt{45)6vQB2%Sdi1f;8j;{WLHo1; zpCn{4$y5_8B@2o%6Q{2Xfxn~wMbWOI-qyX5?12+(ftladT+HY^vGG_{wO zR8&yF!_6+I3?qUmf~33Koq1}N+bcU~C#}Kg3}T5cZ^)*+Xo)Y_LG00>Zs=51XgS@w zSW&!l>Uhbl+gl&}j^yq)1`5-CFq19FbR$FD>Mp!2@4c*;B|f-pUAPH9CNMj$XS)Fo z!k~@;(O)|4)k~HgrZQC%$9;Esh16l+Y@rI9bJ)!Wj%2``9(T%cW?2sva<}r!+p4*; zj(H!BjYIHqxrhyCB#XBtZlPM|!p|LFG?-q&Hy|KVewFpRB^Bb2k+r6zz%o69PpE

    ^!7%d=>CCEBX8tj<798}na>yg&-hYChGu&FHm;u$X+J;o z49wK5thjV6EYx)Lp8;qDK2!TV?|{qp4?sR^YnxAr?#uYU%kj1SpZZA}S(`YT;(j{# zvY`<+v;55XbGG~}gP@UtjiJ#Oa0f?wBRwk!*USkGDF>`p=+1}g<9sjGa9l8NtaHO9 zG984WvQfN@zGUUo#{3!LWCW5AZrHOl;*}G-g1WMDt-`XjBXj^*U@+ga*2lNIZXRu| zkEe;#YnRKAi06wF>zr%EckW2%*T8NXf+(A-2fZ3s7c?x;1O)BPOl|qdV64rx=RZq& zk47!7LDd^O`8L6RKXzinjVLaZ1jDR#382tD!)&3&|-F({#L z9>v-Ba|E*~Q*J&R0!5&b@b4X+UeoNIyIzm>w)J9UCmfuK?wU$T$`Zke89eZ0@4ymV zfhR{4-^&4z2U(>rXWOY5_@aIO$U}bQ@!eq=4W$w>8rpy8Cy}P@z z_T+Aw*<%Po0SiJ@^ZEvk^^#tquYa+#DMf5@_)k zINRDS@=$rNiDiXY#}=M$yX}Keo(Z*!;kQp~Ie;AWeLa(qRL^Ig*kCKEoGEDBRn$aU zr~JwvmlmFHahDMFeY}fl#}x_Oc^YWz`1Zt{SAF0c77z(hg9hE#vkJoW@%ue*7%Vki zl7OtJD&z9(p2cPzqtasebP*+$5l&S#V3rb#ZJVf69ZQPZM4*$d1Z)K19+Sv0lcCUh zJ7FLj7WCEf3WK5&;&HS7*H9i*f}usz9C<-58IzKO^yK7snQCzCVQ2bD6yp_)TEpM7 zf*P*06WpRONj+Mq2UAhUH1(v3_Xd8!GPJA-Y7-QB4)kPB_Wx@B1EMSBtXKctsX=S4%g3cpQR*NValxFl)IxS(8af{aIm!Tq z6Q{*CVPVL4tc|#$#*boqVv$(i8%m4c$dg=c+pj5^ISZU^*l;X8=bD6phPWxX;o>of zJn7EuZ&SPp|9L3{wTX%|g_sIDayFOH~$CHPI0CMFW#o7sv{N-DH}Cdaiu^JwJi#ise{i^QK`5|+7;zc;1>;`j}( zu7D6P5MIh(WR7O$nO6Iqv%^({W@t>N?;%BiZhJh}OXx>6npA4U;Wm^3L zx>tubQe>d09m<=pj@)?Xt^)}lvUi6$f9y*v{Vm6MJgn18(1k+^7D8SIadsaO*DCpvDP**rRhwV3A;!)s6qzclI_Vr4XW$=$`j9jal zdSbt^yozJ#&I^W=rI7-nXCEd5=LO_C=JEmX8-PRhaaU6OvXv}_@e$l6+6U)wif6_F zFjmD0G%ljkaDDb-GzXVS|J60Js^d8%$VIFw|B)~fopy(C0(MBet<#^q#iawprnw77 zk{Ci1*>mY|P|W7#t7VnPbGO8a@L;$GJjJPS3H~-k-a(j;VYP)R>}rhEy=}+I z^=&^Hz`i%gcV0m7$g$)e=WHX2yJzlFWG+moA*#MCNxKAPmt+Ls97o`MUnT3`Rog&- zYK>$rU((tkIYD8@!qTH?pw)Dm;t+%19;}c7%;bgzM8WQNF?F5B)B`1A!gwhmcIGEB zWOB|qmc{Av>*$WA>H3(uTj;*vd3S!Xe~m_mpfhHTxx&)X^ybv$5%lr2bMd-cJD+ml z>GEWIx9adLKjf6yE7FSPre>748fg;=V!hZ9n$dA9y zx?`LrkasMdF9Lz`#xP*6Cl&02+2SLbF)<>INT1IskP33}mdK}_R)hUnxG4-FTRi34 zU@F`rozbT(T&PQHUpL1k%t1Az{1AmAj7SIt*~Ca;pzRPCG#7%$={{8#;bQ7Md|(xY zAXqoxn14i*R+)I1%NKwGW_8WN7+x`eV%Di`ub0xureDNEx$TQhX=$MpOcPGU4ptCZ z6&|4mJxNUW+#t0i+owkA(Vvh5uM0+caiZH`$K7f*!S8e^>5jSA(C8l%u0|F4q&DT! z%s5udr;>h~OIS>V^`g*9YNH3WlgzTwAbM&i4RcO#YNsYjctG9$>v-s!9?RMyr6g=1 zm2blauK>e&Ayp>yp#bGYk+EJBGY52`!4=Y7KisdYH+x<=y#f@2Jjcmyx>j|5RiJiHA0k!T} zZB`v7HhHcp7bX5uaB3Ci(}XieQhTFnF+qE{aBUXY@rpvsx$X$Q?Xy3gjw z8n6uvstrLRvUFKdOSspbnp9A9zxxe?@?f%aKCZxV-yLUTIc0N+t0u8(DfK=!KL?P$ zdXYI6Ws5*ByRXZEtUAmmo9RoNLV7kFS7NlhYWEmq^CHgm0Nnhp_lHQcw8ajMGke}& znC{_|bTe!Ysndg2a;#pnf}hM-c3y2o5E zLw#9(o9;q{%G}1 z*({ZB)jVF-!#vMTZ%{9fzFxm$RDC9wYO8IBw13EO_f|q;K4LCUiHmV;x}ASK#=M;P ziEMRcU-P9Z}_q)wU+{Xlf*%&UZ@c!oZU!LXVPOCPXV?#6rvy;F85{%WrO z?F;{Hv;Q`cUyUU_6AQzCdhfs8=a*6gSL=W4zWVQfbj& z{by55_fOC-2VdiB>)%_dze+K*?^8W?uKXJb1FF%Yd z^nb_K`ftLttp6m<%z(?xN{h?P^jQE_#=me>WlJ8$$#EjUqr>k0hbZt?+*VzJA0qL~4owTY$CXA~Mf2ZJxF^;IRBuK-`d*BOXUE@>-jWM*RO_*uSBq%^AkN?(xw zM)~AOM!26>;2*;D2}oGa%FNOYmsG&U%GT+NK1qGjCVOkLPsZqIWTpI>?0=KLuY>g=e@I$n^LIt0lY4Hcc%b-M zCQ%jv7Z(>6C|XDH2*&{297h%~Qc+PC(dJpLS*q(FlUxtJNAHWzT?6XloG+Co-ItqF zn*w4*6@#Su7rGGfjx{bu!1T3OK>bLHev|+xD9pqtD9VK5;!ZW?RL3?92!+JME8ov_ zr(O*GQyGT)k@XQ-?1IJ>Y->P=+g5;lEdg*zXksH$g1+~R{`z&Z6$Ufe0brM~r0d`d zgvh(ti?i=9NOrh={2QvN!9EDXaV*s|G?dpJveAKu{OSld_ z0Yd;nh#b>Cng;xNz$F@fTJHub4mGw;EOsD(xF8xe=);@e>wZmaV(mluX2QrO#DS8s z`Ja6-sJ-(bq5=5mzyJ&bznZjntMFI?H+@*thNYzi{LByQBw5}>&;@Mz4wy)IkfzC{ zi4H(~e+Y{xWvPXQdn%=!;cF!&iHG>EZw(ZSBnOzv%lW#-h00)3lV1**0J(hMD|8rQ zg}X$lXG49cYXVy5;>5@Aj!O#T43fr2y_xXDV`E`(xov&<#!>^YmZ8Dvs&{cXT%iZ+ zZ2xT}^n>fWKEHc|n!hF>79}O6CZ{DpEF!?Zp7FqIO=nv%!ErU;b^!XWe|2+y06`DX z?)PC-OF(~5T(|br4iG@ipBubgn=+v9f}*^*Jy@295VYUb{LkZXTtZU$P(FHNk6b`J z0B%)rXF!2#IA7mxCIAq04`J?`vSQ{w+_$^6-iAoYPqqQCj15fyY3uB30DNJu2fjb; zz8pRKaDG%T`KTpH_4w4g*X2ic27U8A;@QV*zHj~paJb|n0z9$xn;-IV4-B9_?;Bw( zA3*w0%aX~CE?vOuxA%|e_wM9Z9lDR2u@9By4_E>*7LB#;L9_SttL{BwXI+h{ZWCUh zl?mi{BnX(;`I?XHR`r~Zf;ymKtTW>Wo<902;@Dfb+UAD0OCzAvUg~&V*w|M3<%RJR z9=h8H-$8-<75{U-Q5foN&`v;Few>S~fY?lidcV+c$o-jjjBkAMCsQU#H7pLaKEqtf zFw(wZ_4Q#S2>Xt>!1e$gc-gUm0B*0yn*hed9-u12_yGM9I=(>x46}WEbpWY_l4oa< zI2AtVz5vE{v6ZL!e#ku)*5BRrb-&S$Wh|$q^QbQaj<0U}z=8UzJ;B=nr7rX&%fM{= zyB>pyIfTxAFxd$xt8!8A`0=KQfQ3056LG{IAV$N*qoBmV@z3mzc!Kdku89o4(>{&R z4t?{chtV^=04Rl|mYLdr9x{D14ZLb_^cH>hp@b_VHjXWE>!1QtV?aD2nXKg>PG=9u zs?ZO*YGj~$F+d2czv<(6H}I`t4iHSQJWojRrELagTjMhvnO{7ZfwJq_AGv@#fsw%t zYzT;`42xLE2mhrmxO>g@e|2P{ z7a4fx;RoQO2{8Z0=EUSJA3x=f4da*73p{Rio^;$>Y`)1@{u@K4eo#b?(1nBCl2?O+ zr`)%mlXb-}b zb`5t9V;#dXcnx>CO>#W|n0pFTO7Wo!riLmCz-=EC`kmo8CSu!Hwh@$v=-1o!%^c;y zw%hU`%xiH{!a=v5E(}?Hj4_x^Y(mC}L6%(|Hz(@w0pG=Y=IA}^m1*Fk?jO+@#9jYk z0{>}LFG08y{TQ%c8n5tttUSTYsDb7C1pcy#?t*acv!8mgLwLU7VQzdd)K(GT9sG|_ zTume#_`rx=0)JaM_jyh*)Pqlb-k(ps;*U@L>X+U}5RMw-^RUnjJYS0`*XQB$FQXgM z7C7p*m}8n=db)bR*7rDm&Wf0owa36sK#q*o6}4r5oV~b^JsP{9+i01D z%#fSQ^N)4R-F}1BYu-%SPsAkSS&87GsE0D!0>IpUux2;F{Hz+>esD#~pZCJf91w8s zeF0PrFY5}YADq0*D0o4io_C_)w!mGT4-j4jRu(T9#SqCA9`e`X=yMU1{kd2of%`Rj z4jx$J{szpi+R9U!3a5N$f_qC2ZcYv5nd8nX!q* z?tS2zK$!jawR9f0m=Jm+7!W>jh{rG)*o6}xa_B2Q15GTc@hnQ8=@cI(YFMBflT#qi z*kqmz)a`(p*K#jF?vk+t5Rk_lno$|LrS1&0?SS#u_NY(w#GEk5BQC2?13hf|p8n2r z^(>$#+z*dApVr45zK;`+mgNsiPn?2dGm9HsVHu4KP`2m%2RGRQp7d-`x#z8mBfiY{ zn0wGip0}w0`L`7Sz#sc3Q!rqUIch#lygi^h&nmFMp0U-RxBGTL;9EN+5I5<{#|#MI z55|doGn>IbA_Tym(~Uk({5_yj9U?14!~VGw;ry5>$!KL0 zaED#$_EzAN|K0sqtuu}r3pxyC<~-UPNi+QHAiHN&2$svS_Z-{9deF8gqAq-?c0}B4 zp%^H*8s6Y5bmS1%-{pMUssx_Su=As!d9(d)0W25#QmO0hzLhRq0bA=Mn32JMjw`d7 z;!k13BO82v+g0#XWkO6*H?$;|V+5s9asnnxnLW&6p+|AzP)b#N_Le}=q7pMX>p`rI z_#j$7Q{L?xBnfG~)EvpRc5gd90>P{vj(d(&=Fb=dW01$OON$o8XxZwd{;U-Ez%k$OGz2=wIgD?uH{> zv!+To+au5-&3v^5eM1$bb;)dKdh{!@ld_vf%U4J-=P044Xg7%oBjz%P##V{h5qDXO zvp?~%IF0lXh)7Y8+SJ>#yd=y}M-E7n50(scfs8#Qz8N3KV01=wGf@|(-#YhI3xr4E zh_5Z_I0~~jVb~x_Cx?L{xOP4_CNU-JufI>q=*Y=z?F#``--b`zLx;~Gx2DxI@+1{~ za3VwMAiR}MEWh5mmzqA@$QAX_0YR&3@EtJW8}#jkM=ZBYnWnYW)7(pCigPM-ZM9cd zO}InAiIlD91bZx2w$K@}9_<0CUmxCQx2AT#U5o9Vk;3@7`_a^!7Py^l7toEDud~t4 zQfTrUCVP5HLQ`06E?~+ewKEGaB=D!}B+~eZ5bUeDntZIe%7uGAqm}cWfiKBABXx6& zJ2LiHWE*?9wleCUj{xxJzTCL5E0K2p0t4~Ptu1Eb6eAYccums!9XCv&f0WY5-Z z-1_;5_+XnMmfUpC$id;~%|Ko*^+{fdcnYZ26!?+UE@t>Vk}hMRBB z9Y*_-B_E}!ccFjiGi1dSUJUbp1V zjwR?tQXqRn9i^N+m{^`NQ;>*S)5K=5dM&mAtxRO(q+Nb_E}}AQP3h0yag&D}AMWDL z-(lfEjo{Cvkcs_}oG08WabDEXh*`_``Z2T!sU%At;i^nW2Ne&c4>Twe*n1iJ;2ENZ zkWNsdbE6PT3v`)D%U*GSkIN>~H4Eh>{EbD&9bZtrE zBPq;j6NgfzHWO@oc!&7gJ=b&d2XP0?v}& zAB|z(JGIv0t@Dif93+}o3hnk`Eh*7+{X*~ecs_d7cyl7NICgnUMBU$n%xZlT5`s~5 z0hFdG;YQ8U_(!42Pv_jD44qm?@~*^Qhp+hr$2}p(J{SkngsfAXTnmY@#h!XDk)ORn zIf6eKyGsvO(PI;dFN|B5!9yJA9MAMV%yi$w_s2cA(>BT`C~+KVv$%Ks7DRfTv*LqX zoavE6QMx=!+stqDsM}1Away#-NEFWb+QSO$`h!1B@^mk1hyx;Mm-zavqZ%A4_?UHz zOce&i6^W3V{$b7WwJl2uTPrqX8NYOKzd;AW8amauTA4&nODhiBVV~qc5++GgcX)im z=R%VwxDvFq3|VUQ#u2kHKG>aBV}mRiAZAY1Wb$wrR6wQ&+tc0rDSUb>w*}&hGG~^} z)*{=_R&+pMazSaT$%_i0oic?d<9g;&tEpF@kpA!-hFK(BTI4yx_jtU`{Ly)~U+id_ zs_r~wvbF7^AxL4GDjhM6ZU$98E1%t6WZ8#!ZrVuur+QKj{?ydc(=5z$YOHGLVIv~w z>27Q=?!J1A1PoAGNO<4T-Sam^M#yYH<_!z4!x$wer1{$Ev59M8Uy_!-wInFJvGA;l zBM4&i!mpt2)RiCBJIpp_?(H2R8?+Rn75{KT7Q(&f5=MR*UN(;qn zZ&xcP(=Nv>OYqvh$~fdH3@mHik4kx&vk8AH`-Si!JJRe6~-_S&GiRnxd3R@i+liy3>xt2j#CVbS@N zvxCN+t?W$Wx-k@4`&S2L=0`@e*m9oCR2qS!wZHL@c^|K%V&sSLRJNMDxf2hxDW&D+ zrf|n61Y3!rkW0DD8YBG=iRCZ0JLH}nSt;mkEarFSY3Slpw*E|AnzN#(s_*ou2^sp}GLY@$QLo|(IQw9YeaqwdRm zXtgIY3KY#fTP@^Fl*d1U3+rJPgTfjOfpITTYm94~dnm&)d2YX$S9!TdxC|S79TJ27 zt+;_6xKQ!hfu`f#b;S}6y!x@((4kH50B2KXE?G#uGM;G@6sBud2#dZF-H-mqy?()x zN_HfDUa7R)p5~6TO8NZ{7splyr9kOAX1a_#&VnQfA&!|+wrMy_Iju@Uv0H0?5PKN) znvYbq^;tqAFKTTZ86CZx$RImHQAhn~(%rEvIrye4vH0XiCk3Zb-*MUovmZhhLRl%1 z+7a&M#?txOi9Ecak44(+f+&2IQbvE0$2?7|l)k2Fw3x-!?OgsVx#r^^jW(Lv7iv|6 z2TW&mQ?m>Mz=|-o!sP3GTEPf$v8Nf(U8h+cfrld@Hwf>&2w1-or6BtWyG@nG8Kf31 zA+@F{5iq?}!^=50onyfp<9RgHF*0F`7-zvlX(xdF6Ov-DcXRpKlAbh^k{hNL3 zjvD+s96MqyXJO~Vy9uDN!j41t>e3k}!iD`5E8l~v$ionsNhM0N^YkA_EMa<03~rWl zsJkL>uK*hO34P#=s~iPCf~{=^+VJM)^HheRI{1wn^{460M^~l&!|DrAHXH*Qb`mw~h3xR6F=>TB z(a=OCj-i8ht^pJehm0b7Jw!n$DNnUUh)P0v9IMian#K4&{R)h@Mi~DDt*9~6s$(0_ zte}r1VqdsxxtVeY9^n9Xb{S~Eh)I2DU}4Pi)Y?zgF(e&>og?2xjnLRyj^CW~IWmW@ z>;1q#E$1pZ-Hi?E>s3G{1xN_U0+fnroanUoi*Pa`l9X>8*qid&QTXJB_*EFiy|yjqOJf72SgA3Ko6~E!Wtpj2^g1_z_^7sO zSZK6DV$fEb7sJhGYVuQ7Z}*|MAo=vLewN34)8k<)ztPVO`nhrqvv~K%JhV|}(QA=# zh7*z8S?bga-VpuqUUHyP1sdzmpQ_{-XBJflSY@gR7m8e2CvQdP^k*ls(-MH`O6gZk zOF`%L)x*BA+grc1)qDolySgW>#6)Z{ZCUW;)=mP`5-rIN7O#3TY5pQs7uIMKjZ%?j z)f|e80G*K07gh!|TW>Kbb(=VRbD*tDk7f9vdfAM;UV*r+F2yH3&;%scxo!X7BXlRWwQ3 zx>Y<$1p$A-*q~*!tFBomSkyMi4P7IMZADpr?_wNF-7JIbC27L!_K~Ae|uHobx|0}tZqknTP=Ggh=%QY0u#J`-&8$ZabSx+y z*`2ddj+zXT6W6hEpy~U`Wx#m{EBzF}meLkaX2rm(yYL>0lhRjxd0s(A_PZq@W=#P$ z;R0Rt*cy+mGk6SpC&W6P0A2Ok!t45rNIOkr9nbo&Q8xDUaqnnDCg{Hv+J?_n@Puqj ze9@;s+1&{Y0{>tGzol~BF1m2V%TEQkrh73IM$pU->yiOZoiei{uftuVH=+tsB%p~{ zfJ!n+celwNnl<@@DxU5*8(py)lPQXDhMKc5{yZ8e8q{IP-N44VlLnj^2g|gN2adO` zu8`v%eVSOR7eliE?zdapw6|3DWa zMahVv0lA&-xt}lhSmp#asT803Ip7SmQy)R!p&=SL2O^7F{|@yR7zR{rOOJ%))zIUQ z+r;YlhjJ4aeVLQufbylyiM1b+Cv7YPW73Tw?W7eszXMANd+=IaBje7#jS>dOZe-oE@WlPvh*)&glR_)SCN{qgqT>@ykDLh8i zchE#n^gD~R#IERY*OmC0O%>RCwEn9@A5Aki>B&MxFV%mez1qM?E6SVP=*p?0ce6GpOB*VMGH*3H7{;2>eRlc;7Wav>p9QZ~S3s z?DRy7;rAw7%-7==SeVAqlEs9P$)}NTt*{06Zd%xNt58x(VNJ-;WKBCC!0jRnXI1Sv z({Wnr@zV(Qvi%ymTJ|joNwCjWp(;~@#OS}&`3 zvHId*;-q?f`>0DDFhw?}VQ(hGtp~N;+H{6{;=Xm;&J83Tvvk<;wg#<@`@71CuL6xp za)MW#J{t4QFs4T$ao!7%tXE9r&v8)9$(qXI=)7T!(FC4u91@L0W{pcWHXsM=5n|WV zm4OxT&5E_YMalO-E_h{kgdwT0por7olzwwcZX|*zdb$(z%AZ)^&8FYcafA_4u@OrU zC=fN@jJ1co0@(*?K_HJlYIh=L3$iR`xH3Q(9lDdoSAh03l`eh17q_lLkr2X{hUv25 zbC<5ftxPB4=bD^fslU}CTX?GD|9oqt%W^4P>+urUZU3Eoxx6~>BxR#_ z1ZfeyJJjDxPvqz?lt0lZ^+Bu*$cSQg9=vI_^0&UV>+zp;xt_VV3;?KEp=yav%zRF59!&X~xHEI0;^D z7#*ssggIZgiM@(5b9?DLnumKO;wnk#AhZ*81n?_FHRDlv_wZd}c4!57FfEG~%JP|p z$N7mA16!0>cYlJ*NQW`HiZ!O~Q&Pi3M)$bqf#r9MX7GJK#=94B=S89Qd|$*ypdwU#jT%tuTkt$+i24vUK3Q?qHx%H<}R zf=;s-k3Mm-`J?rT-z8VDjr28UK?lHbTc(H-u45d8in+MAF=uk&n3Mkf%Ixboo~;)V_)S4UUo(u zm>i25m)IoA_L{1_!JMX9^LV3%rd2kQ#$J_d(A$&#ck@%{cQRR>KdMK3tjZbz`F)o9 zh2r!iVHtUh%N2B1heAvWl|se3GrcG?xPK(0$bIUk?00U$fy{iWdlUC!f*C>TAt~G> zxHeU{94Gq}Fr#(zoOYtRO$ExIeE0yuk5S^#5KIfiJy~s7fRG zezl^6Iqez4(7dc)@h0S+I2F|csMGISma{tx&%}P>G#bcUDSa#EFIqFxTz(8t0%mgq zQPAQ-&QvTLx#=&D(=B;YUf&gFSgmVK(H~(jCQ)E=@hG3C=21X0j2CK)wekxR#*Aao zGe5t$))@kB(CY38-C0k_VBoe$-vj(8bpj@*!2;|Z4WF|`8(#vCYnlK2G(7i#JOfk6 zE3kDihhPUt)}mzF>m&`FN9#=d!!s>~mB9+TXz-Uh#=@*mR#ifJi2a0+>3jxd(l!F~ z!l~(c5IYInx9w`KaYu(O_uF4V{Vi13wUp3Dg!R4jQ!M$%krp3{_e)(Mh3U3<)t@We8s%&E=6 zCM(a$95acXRC7TIe+Km^yeqXv5t`el5BhBCQ1QHMFjjd}0txLX-NG7B8OsI5+=qzC z_oWnMHMp!ZVSoqEIh!--5wRq&)>%jq6MBRBA^oEC6)Or~1^QR)i7l7S{Xh?812A*4 zgr>H(I{V3d-g1H~WihQM{Ti8r&lQ#_O)N_)h}X6gnEouC$dsx?fzxl5jI~D3XMnE5 z<~bd4i1iK;QTBE?2SKm`bQDP<8(@N)4d;eCM$3w>>Sa?YWsm}ey z8&+w9Sxs7x$Wh)aX#Oqmc^xaM$G3C}x;n^&LQoszmcm-7uo`D|H(=_;rLga$VTg6h zqY|H^D@EG*j3b1)h=Px!Y|UZApJz91%bRZox#N(-TLJA1v&SjKH==5VHS5*Q*VgI> z^5qjNWv9$#u#JB!?VOq3H{`>x<&~8c%9(uUXgQS2k6=CjvcQ}d+=s5Lgcw3R78TJH^2h!#Mv zVDy?`gw5B?ijw^FzlV_7lWba@9~WymXZjJoyg7xeDy}zx0^WNMB}(n3sIZg-L#e0C z#gDj#9tKYbUsaIMF$}sFwi?NDAE5q7!iO6VAJVBztj<=mm>nIXcFr=t2Y)<(w;Eag z6C>}p_re@Ym)~LE*5+l%9m9TQf*0cWgk!21tvYS^X89|1qde#Hsq-^fS6=7RRM`+1 zx`?Lma^Y5Kk}&dxv9GqZc@-^};K7;wOlf;{zjyi^jsm(lWboWp2Texto>2{X?Xeuxa=Jy=JzF3N|| z2hhly6l;AJOAg}|L@uhjw*gNS8>H7R7$l$sssU{{_(Yeg?)?=&2%AXlD9KZQrG}I{ z^vnG6x90<;4U&K+Hc3k??lVgsAB1FEEaZVoN^FjILVFyKi7N)3f_Nz3E?A59`p}!z zgWUM*%d3&yw>qdvu0Um@gY`m8%7Dp>bUvRUtKA4fRTZ}6Og=v?w#}INc=pWx{nzdS zbA@I)B6sLyAcNBad~hlPd_auxOO;ETbtNE8^oRW2BA9ExdbLthXqg2a}xYFOmM`@W$4lfr?rVu7OZRXWd)lDqP^cQ zFRqBiqsaLx9j4a}a5^^Wr7Iq1g2jQI@O&|T&xG2F zYk4vb<>bcM@^CwKCPs$PnbcK^(ebTNB;^@4eb3;jOOCC>q5Ks-s$peH_y)6VJqGB- zR|T-4m8fQo)?}#VwKWpwwTa)USINq>2I$J(o|8=VIH&a9D!f$JV!Y+7P zvMxV=s+30-+AcgK=|_s#q4wG0KN{4KWkG_Zq@Jx6*aO{t|Vrw zPm`ODknUEYNLHpW-DEGvLPT$#!mqzqSp02^u{?eH!@cl;NU83I6$zEL?g?677(4oz zkwu^29S31Ya)#9Wbxi3cEC6TUq6N4CGEtR|@{3*ham&S;>kLqm`nY zglNx32R>10VCgl!vq+KsvJCl~viy=?t1w9P0)gO)4OX`WWQWRw7svcIo)pZ3l(gZ( zqC9NMe0I^9s^PADYBse%A}n zj8t&D6RBE@nm}`^P_ue^uri&Sn2BBzAW4_Hi7V_dG}nI|3sbBuMYe8YY1x87nEAHC z)6sg=J`&qsDAdA8_MwNjdvdg#?TxS}xg#a|4E}nqaa&^}xpOt&fT?GbXq4oS!Gs}g z#ESxL)drv^q(np6`0V5e2p_rYDL0Gc-*v^;!0GvPE+N=x@EW=m{f6B>0w|#5k`(ab zxB%WB7RKb|8lpNS>pu~kr9+J73RGIB^>6RVXM2D`GSW*%OTLb2O8;Rh|3PF!# zS*kRukg`5hSyY8!<>dnGEO-DD5p;zqSvuytgv_L)r2kq{pBo^$gHq9%84su39I0Rv z%BnrIJ=X7>uh|Yv;#yPIF$9tOPF7f=^iSi>_t{<^#7sAfR3E$yGM}qVt(8tMe$PmK z$%O;!^N=td2PIM3DYz^-Uwb?B$%h;Ou4Go8<=Gh4)wfGAriq?kaVXS?2!paL9V9nN z8r3ADJEyEB6*EAfdqi8d;WQ|bBbo;(1JDZb&HEPwOY5ima!NLjQp;=3`8f)1G>s?_ zN(o0uu-<6kenQ?(e~6u3cJsUV-e-GAY{-5l-nT_*zo|OTfD@K!v0@3X8YtZ!>XeR> zhUI7S7!k^|noJG|K1xuMLy$dp2u&r~YGZe8l+CsQcV{5?RlOv)QGygts^rFqKea3P zkcm<(aLC)Br#|SBG&^-bP9xLg)r3XW^&rtV7dkj%%&d<1Mdc=?s8XvVx*>29q2xBr>)$jWNK89Ru^<9Z@Jru|&&O+IuZ;@K;GBnb+7U;A%HN zJmT$#>s{!mY~Q?|FTNCL<2wnXbf4>(4=vDqzHpuYbVihLuJ6c#_*?~Z7kCP_Jzj?3Ha+ea_Kp3U|oWcPD6c;c<5{|L$BO?i#_JIM}^~Jdg zPl#A@b90<iFjvr4JsSH-l4MrmE9gL@WQIyY&5m(d7|kbn>qy+8k`v zET*cXmVHfaN|WB-QiF>9fxy<;sV2YhM>Z>@V5}~rs4Od@!}CVj%;KM;;qW^`@XqIy z>#y>&z?s*dl36I*uUGTN@*M}=el2WR+1siRMBurnVs0wcyZwOf)E^a2>gk>hE9G|7 zW}M*C=vxEsMRdE7m`bZ6@qgu|bm7d#{1tlc3?bk!cJHVH>NG1Mu<{LIlS=!I(}zhP z`q={sT%jZo$rP2)%3yI5@b?cCG>Pun6hjUy+sLVSAfB4<&3Ud+8W_i?srKDa8?aZB z93ous@0k*nF6Fws_hmpI5AN=4uf#*?`wi_#?0&1{R!#bBQeGz($xPC{$JtV61pvm3awUl+>DK^geQ)@x z+N`Q-8K~1V@@j~tsc)bfu-1u*a%bD$16VQ+rftv@hmP>u_F-Hqc*|<0G5x+(L|3CD z)EJD>7M*+1*>HC4un@dQ$78}DB1P-neEuhbjYec4JuY;Mg25akKjX5JdWD-<#*mL8 zYIw3j`fS+yWUyHO zs0iRj?+bsDrc%>-X)>LS#;j#YclRD>vJ?j(VSg$1n8T$fWxzvnTW@7WozUdM`Ey?f zi9`l`_T1wH`ceNB=aLWE&y@Mr`J|^d*4*SNy0Op}xly+}Id1{EbwRQ_G8??2N7-H8 z2+OXcBKo5nvzA5>QJ-=z2C{9pd0FF5_EzN-#!?e>G>JT_PR23uS((aHIor@%@g5&K z8)EA$9$4*j&{jT66Gidhcw?(IH%$6Vuj7b6=CIH%9z^}ES@p7=EOZWcMPW);#S+Ml zs9X?@WQEf|!#Rrtcdjq629OR{Et`VV25~uzSuRl{F)Jc7>|S*Z8tJ|(4@e^|?1ch7 z@LL%Sdb3#mHkLF_$Z3y9seb8QU^^PvD*yhw3{~hy)<NFMs|FF}z=9 zT%*44Q$dwYX~~HLcHm}fpOC*7s54&>CLVIX+8fbH%Oaei3iP7ZX@?7^g1_qlTP8)o zbY6UUKh*lp)**rbcIOb^Dsg;mA~yhB!PDSD!`89`a^==YAM;jDEk`UqhZ?c#N%5$O zppMu~6nOz;o&s_FN4s6DBqh)UN~|lZmB&))yT=BA6=bnfong5!Uq#Kh37VCsx%HH6 zBa^1Tuk4-9W(*Fk4Y;{}6I9g)X8}o_$!_3pkYXaV3Hw8QZD`-P_?`7ZAU* zthl@PcId~Op4m8=2NUu; z)%XNFvl$R}2$SKx9~9XXWrFRubH=mEfUVY)6i~Ma2l1s*%c*WpEnc@vX6l#S&N%2i zRSsCz3z9#A{rwSe&ei52Do@tj({a^=dIH5sB%#5-QDCPSrZ&r*-WwW&Fcqt-qK9<> z!;OR{!vRN|v^sq>QIf-aT*DR*4ZFY*^cr$^{H5KgyNz@X*_f9tjMUhM{DsbKR}OxB z7QAqhlWDL#q!{!N`FDrc;B3X!aE?BsQG<@Xxks(dI zzX&n0=-112lzSlAT6X8lwJo^G@9(GVMVk6baUB~$$;Rl$$KRr=6aDk#^~sl5#!y2` zzvV2|u-Ok{k|}~T>HQLJN-R(O#-yHAtrUw1uD(>{P?=SxZV0IZ6U0lbYz#bho3G`PpIqCxHow47G4h)LTWA|O6`+c)s?++j$9RZ$C={VRL8>w zSlQn%8mnIyd|~vm`GC=rd<|7m8?~L{cnNGpRWBnl2olaEE`-EVu7Sxmct=6+O*t}} zUmYS5%433~@*M8iK**mV^`P?7-HjxTzTS&z$RiB}Ew8AiNx3;*J8Ps!UGs<8n|Zd| zWx^)d{0@qhy&A0#n~ZOzY%VreZ9cp+j24g6X8g8VjyR*hw~INJlN!De=

    ))r3%(sDMI|vrbMunotvGX^Wqr8{VD!Pe>V5 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

    v^A7Y|SL6aSSES&x@gj3gCF*t7? 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%0ADJlgrymW!mF;18jnMMCh-(2qVCXPk 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�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

    WMN{RSFL6l`0^H@8LK1YA(O>xjkgb(_ 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 Xl!HI&c$?!*KwcUoAfS0s3-rGLVXHfP literal 0 HcmV?d00001 diff --git a/experiments/nexmark/output-old/experiment1-results.json b/experiments/nexmark/output-old/experiment1-results.json new file mode 100644 index 0000000..4f7a755 --- /dev/null +++ b/experiments/nexmark/output-old/experiment1-results.json @@ -0,0 +1,189 @@ +{ + "num_events": 2000000, + "results": { + "Q1": { + "Flink": [ + 2.812, + 0.029175332046096805, + 2.2718999999999996, + 0.013729166034395569 + ], + "Rust": [ + 1.2124000000000001, + 0.005102940328869238, + 1.02, + 0.0038470768123342954 + ] + }, + "Q2": { + "Flink": [ + 2.2880000000000003, + 0.012296340919151478, + 2.2718999999999996, + 0.013729166034395569 + ], + "Rust": [ + 1.0408000000000002, + 0.003572114219898344, + 1.02, + 0.0038470768123342954 + ] + }, + "Q3": { + "Flink": [ + 8.381000000000002, + 0.05593567734460711, + 2.7840000000000003, + 0.01674514855114761 + ], + "Rust": [ + 3.1463, + 0.017053152201279412, + 1.6363999999999996, + 0.007748548251124236 + ], + "FlinkOpt": [ + 3.1076, + 0.021265935201631676, + 2.7840000000000003, + 0.01674514855114761 + ], + "RustOpt": [ + 1.9256, + 0.006374950980203689, + 1.6363999999999996, + 0.007748548251124236 + ] + }, + "Q4": { + "Flink": [ + 7.722499999999999, + 0.02813272116237609, + 2.0053, + 0.018788560349318924 + ], + "Rust": [ + 3.1767999999999996, + 0.01565119803721106, + 1.0752000000000002, + 0.005114684741017773 + ], + "FlinkOpt": [ + 4.4724, + 0.05160077518797553, + 2.0053, + 0.018788560349318924 + ], + "RustOpt": [ + 2.3586, + 0.004498888751680815, + 1.0752000000000002, + 0.005114684741017773 + ] + }, + "Q5": { + "Flink": [ + 2.9888000000000003, + 0.11332060712862425, + 2.2718999999999996, + 0.013729166034395569 + ], + "Rust": [ + 2.098, + 0.01268857754044954, + 1.02, + 0.0038470768123342954 + ], + "FlinkOpt": [ + 2.4828, + 0.046593561787010816, + 2.2718999999999996, + 0.013729166034395569 + ], + "RustOpt": [ + 1.7422, + 0.013444701558606628, + 1.02, + 0.0038470768123342954 + ] + }, + "Q6": { + "Flink": [ + 4.389999999999999, + 0.08843867932075876, + 2.0053, + 0.018788560349318924 + ], + "Rust": [ + 2.2752000000000003, + 0.0064930732322991845, + 1.0752000000000002, + 0.005114684741017773 + ], + "FlinkOpt": [ + 3.6609000000000003, + 0.024913650876577643, + 2.0053, + 0.018788560349318924 + ], + "RustOpt": [ + 2.1795, + 0.006216912416947851, + 1.0752000000000002, + 0.005114684741017773 + ] + }, + "Q7": { + "Flink": [ + 2.6616, + 0.0290282620905903, + 2.2718999999999996, + 0.013729166034395569 + ], + "Rust": [ + 2.0516999999999994, + 0.009829038610159201, + 1.02, + 0.0038470768123342954 + ], + "FlinkOpt": [ + 2.3945, + 0.008224962005991316, + 2.2718999999999996, + 0.013729166034395569 + ], + "RustOpt": [ + 1.7479000000000002, + 0.007006425622241332, + 1.02, + 0.0038470768123342954 + ] + }, + "Q8": { + "Flink": [ + 6.1745, + 0.06647443117470052, + 2.7840000000000003, + 0.01674514855114761 + ], + "Rust": [ + 5.417199999999999, + 0.02885064990602456, + 1.6363999999999996, + 0.007748548251124236 + ], + "FlinkOpt": [ + 3.9266999999999994, + 0.058723164083690216, + 2.7840000000000003, + 0.01674514855114761 + ], + "RustOpt": [ + 4.6208, + 0.010543244282477755, + 1.6363999999999996, + 0.007748548251124236 + ] + } + } +} diff --git a/experiments/nexmark/output-old/experiment2-plot.pdf b/experiments/nexmark/output-old/experiment2-plot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d2c5839e72376a13714350315bd1507ebe8cb41d GIT binary patch literal 125192 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