[INFO] fetching crate oak-tcl 0.0.11... [INFO] testing oak-tcl-0.0.11 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate oak-tcl 0.0.11 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate oak-tcl 0.0.11 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate oak-tcl 0.0.11 [INFO] tweaked toml for crates.io crate oak-tcl 0.0.11 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate oak-tcl 0.0.11 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate oak-tcl 0.0.11 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded triomphe v0.1.15 [INFO] [stderr] Downloaded oak-vfs v0.0.11 [INFO] [stderr] Downloaded oak-macros v0.0.11 [INFO] [stderr] Downloaded oak-symbols v0.0.11 [INFO] [stderr] Downloaded oak-hover v0.0.11 [INFO] [stderr] Downloaded oak-testing v0.0.11 [INFO] [stderr] Downloaded oak-mcp v0.0.11 [INFO] [stderr] Downloaded oak-resolver v0.0.11 [INFO] [stderr] Downloaded oak-semantic-search v0.0.11 [INFO] [stderr] Downloaded oak-navigation v0.0.11 [INFO] [stderr] Downloaded oak-highlight v0.0.11 [INFO] [stderr] Downloaded oak-folding v0.0.11 [INFO] [stderr] Downloaded oak-lsp v0.0.11 [INFO] [stderr] Downloaded oak-pretty-print v0.0.11 [INFO] [stderr] Downloaded twox-hash v2.1.2 [INFO] [stderr] Downloaded oak-core v0.0.11 [INFO] [stderr] Downloaded zerocopy-derive v0.8.40 [INFO] [stderr] Downloaded zerocopy v0.8.40 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 100c3322174a2c716ee28d5cd4ef7d385e65600b59f80ceaf6fd7baedcbd36bc [INFO] running `Command { std: "docker" "start" "-a" "100c3322174a2c716ee28d5cd4ef7d385e65600b59f80ceaf6fd7baedcbd36bc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "100c3322174a2c716ee28d5cd4ef7d385e65600b59f80ceaf6fd7baedcbd36bc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "100c3322174a2c716ee28d5cd4ef7d385e65600b59f80ceaf6fd7baedcbd36bc", kill_on_drop: false }` [INFO] [stdout] 100c3322174a2c716ee28d5cd4ef7d385e65600b59f80ceaf6fd7baedcbd36bc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 95c60c38c78e22045ea308619d2b7837de52c65abc9af562fd2e4240e947e6f2 [INFO] running `Command { std: "docker" "start" "-a" "95c60c38c78e22045ea308619d2b7837de52c65abc9af562fd2e4240e947e6f2", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling zerocopy v0.8.40 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling twox-hash v2.1.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling triomphe v0.1.15 [INFO] [stderr] Compiling oak-core v0.0.11 [INFO] [stderr] Compiling oak-tcl v0.0.11 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `RedTree` [INFO] [stdout] --> src/builder/mod.rs:7:100 [INFO] [stdout] | [INFO] [stdout] 7 | use oak_core::{Builder, BuilderCache, GreenNode, Lexer, OakDiagnostics, OakError, Parser, RedNode, RedTree, SourceText, TextEdit, sou... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Source` [INFO] [stdout] --> src/lexer/token_type.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use oak_core::{Source, Token, TokenType, UniversalElementRole, UniversalTokenRole}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Parser` [INFO] [stdout] --> src/parser/element_type.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use oak_core::{ElementType, Parser, UniversalElementRole}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GreenNode` [INFO] [stdout] --> src/parser/mod.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | GreenNode, OakError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TCL_WHITESPACE` is never used [INFO] [stdout] --> src/lexer/mod.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | static TCL_WHITESPACE: WhitespaceConfig = WhitespaceConfig { unicode_whitespace: true }; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct TclLexer<'config> { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 24 | config: &'config TclLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TclLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.47s [INFO] running `Command { std: "docker" "inspect" "95c60c38c78e22045ea308619d2b7837de52c65abc9af562fd2e4240e947e6f2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "95c60c38c78e22045ea308619d2b7837de52c65abc9af562fd2e4240e947e6f2", kill_on_drop: false }` [INFO] [stdout] 95c60c38c78e22045ea308619d2b7837de52c65abc9af562fd2e4240e947e6f2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ab77ff304a0f7eaa3bacd4c1653cae599d601bee632e8b25d7059db1534d4380 [INFO] running `Command { std: "docker" "start" "-a" "ab77ff304a0f7eaa3bacd4c1653cae599d601bee632e8b25d7059db1534d4380", kill_on_drop: false }` [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stdout] warning: unused import: `RedTree` [INFO] [stdout] --> src/builder/mod.rs:7:100 [INFO] [stdout] | [INFO] [stdout] 7 | use oak_core::{Builder, BuilderCache, GreenNode, Lexer, OakDiagnostics, OakError, Parser, RedNode, RedTree, SourceText, TextEdit, sou... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Source` [INFO] [stdout] --> src/lexer/token_type.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use oak_core::{Source, Token, TokenType, UniversalElementRole, UniversalTokenRole}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Parser` [INFO] [stdout] --> src/parser/element_type.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use oak_core::{ElementType, Parser, UniversalElementRole}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GreenNode` [INFO] [stdout] --> src/parser/mod.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | GreenNode, OakError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TCL_WHITESPACE` is never used [INFO] [stdout] --> src/lexer/mod.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | static TCL_WHITESPACE: WhitespaceConfig = WhitespaceConfig { unicode_whitespace: true }; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct TclLexer<'config> { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 24 | config: &'config TclLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TclLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling oak-testing v0.0.11 [INFO] [stderr] Compiling oak-tcl v0.0.11 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `RedTree` [INFO] [stdout] --> src/builder/mod.rs:7:100 [INFO] [stdout] | [INFO] [stdout] 7 | use oak_core::{Builder, BuilderCache, GreenNode, Lexer, OakDiagnostics, OakError, Parser, RedNode, RedTree, SourceText, TextEdit, sou... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Source` [INFO] [stdout] --> src/lexer/token_type.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use oak_core::{Source, Token, TokenType, UniversalElementRole, UniversalTokenRole}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Parser` [INFO] [stdout] --> src/parser/element_type.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use oak_core::{ElementType, Parser, UniversalElementRole}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GreenNode` [INFO] [stdout] --> src/parser/mod.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | GreenNode, OakError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TCL_WHITESPACE` is never used [INFO] [stdout] --> src/lexer/mod.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | static TCL_WHITESPACE: WhitespaceConfig = WhitespaceConfig { unicode_whitespace: true }; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct TclLexer<'config> { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 24 | config: &'config TclLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TclLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.08s [INFO] running `Command { std: "docker" "inspect" "ab77ff304a0f7eaa3bacd4c1653cae599d601bee632e8b25d7059db1534d4380", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ab77ff304a0f7eaa3bacd4c1653cae599d601bee632e8b25d7059db1534d4380", kill_on_drop: false }` [INFO] [stdout] ab77ff304a0f7eaa3bacd4c1653cae599d601bee632e8b25d7059db1534d4380 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 651250fa14f96ad4d95bc37d710bc91a6f778aa60630fbbe718e5778e99b195b [INFO] running `Command { std: "docker" "start" "-a" "651250fa14f96ad4d95bc37d710bc91a6f778aa60630fbbe718e5778e99b195b", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `RedTree` [INFO] [stderr] --> src/builder/mod.rs:7:100 [INFO] [stderr] | [INFO] [stderr] 7 | use oak_core::{Builder, BuilderCache, GreenNode, Lexer, OakDiagnostics, OakError, Parser, RedNode, RedTree, SourceText, TextEdit, sou... [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Source` [INFO] [stderr] --> src/lexer/token_type.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use oak_core::{Source, Token, TokenType, UniversalElementRole, UniversalTokenRole}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Parser` [INFO] [stderr] --> src/parser/element_type.rs:1:29 [INFO] [stderr] | [INFO] [stderr] 1 | use oak_core::{ElementType, Parser, UniversalElementRole}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `GreenNode` [INFO] [stderr] --> src/parser/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | GreenNode, OakError, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `TCL_WHITESPACE` is never used [INFO] [stderr] --> src/lexer/mod.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | static TCL_WHITESPACE: WhitespaceConfig = WhitespaceConfig { unicode_whitespace: true }; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `config` is never read [INFO] [stderr] --> src/lexer/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub struct TclLexer<'config> { [INFO] [stderr] | -------- field in this struct [INFO] [stderr] 24 | config: &'config TclLanguage, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `TclLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: `oak-tcl` (lib) generated 6 warnings (run `cargo fix --lib -p oak-tcl` to apply 4 suggestions) [INFO] [stderr] warning: `oak-tcl` (lib test) generated 6 warnings (6 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.09s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oak_tcl-b27910de2d07fc2f) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Running tests/main.rs (/opt/rustwide/target/debug/deps/main-05fbd09891b1fab3) [INFO] [stdout] running 2 tests [INFO] [stdout] test ready ... ok [INFO] [stdout] test lexer::test_tcl_lexer ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- lexer::test_tcl_lexer stdout ---- [INFO] [stdout] Testing file: /opt/rustwide/workdir/tests/lexer/basic.tcl [INFO] [stderr] error: test failed, to rerun pass `--test main` [INFO] [stdout] Error: TestFailure { path: "/opt/rustwide/workdir/tests/lexer/basic.tcl", expected: "LexerTestExpected {\n success: true,\n count: 100,\n tokens: [\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 93,\n end: 96,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"name\",\n start: 97,\n end: 101,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"John Doe\\\"\",\n start: 102,\n end: 112,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 114,\n end: 117,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"age\",\n start: 118,\n end: 121,\n },\n TokenData {\n kind: \"Number\",\n text: \"30\",\n start: 122,\n end: 124,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 126,\n end: 129,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"height\",\n start: 130,\n end: 136,\n },\n TokenData {\n kind: \"Number\",\n text: \"5\",\n start: 137,\n end: 138,\n },\n TokenData {\n kind: \"Number\",\n text: \"9\",\n start: 139,\n end: 140,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 142,\n end: 145,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_student\",\n start: 146,\n end: 156,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"true\",\n start: 157,\n end: 161,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 163,\n end: 166,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"empty_var\",\n start: 167,\n end: 176,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"\\\"\",\n start: 177,\n end: 179,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 192,\n end: 195,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fruits\",\n start: 196,\n end: 202,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{apple banana cherry date elderberry}\",\n start: 203,\n end: 240,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 242,\n end: 245,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numbers\",\n start: 246,\n end: 253,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{1 2 3 4 5}\",\n start: 254,\n end: 265,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 267,\n end: 270,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"mixed_list\",\n start: 271,\n end: 281,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{hello 42 3.14 world}\",\n start: 282,\n end: 303,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 305,\n end: 308,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"nested_list\",\n start: 309,\n end: 320,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{{a b c} {1 2 3} {x y z}}\",\n start: 321,\n end: 346,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array\",\n start: 381,\n end: 386,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 387,\n end: 390,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"person\",\n start: 391,\n end: 397,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n name \\\"Alice Smith\\\"\\r\\n age 25\\r\\n city \\\"New York\\\"\\r\\n occupation \\\"Engineer\\\"\\r\\n}\",\n start: 398,\n end: 486,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array\",\n start: 490,\n end: 495,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 496,\n end: 499,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"colors\",\n start: 500,\n end: 506,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n red \\\"#FF0000\\\"\\r\\n green \\\"#00FF00\\\"\\r\\n blue \\\"#0000FF\\\"\\r\\n yellow \\\"#FFFF00\\\"\\r\\n}\",\n start: 507,\n end: 593,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 622,\n end: 625,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"config\",\n start: 626,\n end: 632,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 633,\n end: 634,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dict\",\n start: 634,\n end: 638,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"create\",\n start: 639,\n end: 645,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"host\",\n start: 653,\n end: 657,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"localhost\\\"\",\n start: 658,\n end: 669,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"port\",\n start: 677,\n end: 681,\n },\n TokenData {\n kind: \"Number\",\n text: \"8080\",\n start: 682,\n end: 686,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"timeout\",\n start: 694,\n end: 701,\n },\n TokenData {\n kind: \"Number\",\n text: \"30\",\n start: 702,\n end: 704,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ssl_enabled\",\n start: 712,\n end: 723,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"true\",\n start: 724,\n end: 728,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max_connections\",\n start: 736,\n end: 751,\n },\n TokenData {\n kind: \"Number\",\n text: \"100\",\n start: 752,\n end: 755,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 755,\n end: 756,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 786,\n end: 790,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"greet\",\n start: 791,\n end: 796,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{name}\",\n start: 797,\n end: 803,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return \\\"Hello, $name!\\\"\\r\\n}\",\n start: 804,\n end: 836,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 840,\n end: 844,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"add\",\n start: 845,\n end: 848,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{a b}\",\n start: 849,\n end: 854,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [expr {$a + $b}]\\r\\n}\",\n start: 855,\n end: 888,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 892,\n end: 896,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"multiply\",\n start: 897,\n end: 905,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{a b}\",\n start: 906,\n end: 911,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [expr {$a * $b}]\\r\\n}\",\n start: 912,\n end: 945,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 949,\n end: 953,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"factorial\",\n start: 954,\n end: 963,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{n}\",\n start: 964,\n end: 967,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {$n <= 1} {\\r\\n return 1\\r\\n } else {\\r\\n return [expr {$n * [factorial [expr {$n - 1}]]}]\\r\\n }\\r\\n}\",\n start: 968,\n end: 1089,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1093,\n end: 1097,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fibonacci\",\n start: 1098,\n end: 1107,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{n}\",\n start: 1108,\n end: 1111,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {$n <= 1} {\\r\\n return $n\\r\\n } else {\\r\\n return [expr {[fibonacci [expr {$n - 1}]] + [fibonacci [expr {$n - 2}]]}]\\r\\n }\\r\\n}\",\n start: 1112,\n end: 1259,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1263,\n end: 1267,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sum_list\",\n start: 1268,\n end: 1276,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{lst}\",\n start: 1277,\n end: 1282,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set total 0\\r\\n foreach item $lst {\\r\\n set total [expr {$total + $item}]\\r\\n }\\r\\n return $total\\r\\n}\",\n start: 1283,\n end: 1398,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1402,\n end: 1406,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"find_max\",\n start: 1407,\n end: 1415,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{lst}\",\n start: 1416,\n end: 1421,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set max [lindex $lst 0]\\r\\n foreach item $lst {\\r\\n if {$item > $max} {\\r\\n set max $item\\r\\n }\\r\\n }\\r\\n return $max\\r\\n}\",\n start: 1422,\n end: 1571,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1575,\n end: 1579,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_prime\",\n start: 1580,\n end: 1588,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{n}\",\n start: 1589,\n end: 1592,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {$n < 2} {\\r\\n return 0\\r\\n }\\r\\n if {$n == 2} {\\r\\n return 1\\r\\n }\\r\\n if {$n % 2 == 0} {\\r\\n return 0\\r\\n }\\r\\n for {set i 3} {$i * $i <= $n} {incr i 2} {\\r\\n if {$n % $i == 0} {\\r\\n return 0\\r\\n }\\r\\n }\\r\\n return 1\\r\\n}\",\n start: 1593,\n end: 1866,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1870,\n end: 1874,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"reverse_string\",\n start: 1875,\n end: 1889,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{str}\",\n start: 1890,\n end: 1895,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set result \\\"\\\"\\r\\n for {set i [expr {[string length $str] - 1}]} {$i >= 0} {incr i -1} {\\r\\n append result [string index $str $i]\\r\\n }\\r\\n return $result\\r\\n}\",\n start: 1896,\n end: 2067,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2071,\n end: 2075,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"count_words\",\n start: 2076,\n end: 2087,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{text}\",\n start: 2088,\n end: 2094,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [llength [split $text]]\\r\\n}\",\n start: 2095,\n end: 2135,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2176,\n end: 2180,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"print_all\",\n start: 2181,\n end: 2190,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{args}\",\n start: 2191,\n end: 2197,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n foreach arg $args {\\r\\n puts $arg\\r\\n }\\r\\n}\",\n start: 2198,\n end: 2253,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2294,\n end: 2298,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"connect_db\",\n start: 2299,\n end: 2309,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{host {port 5432} {database \\\"mydb\\\"}}\",\n start: 2310,\n end: 2346,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Connecting to $host:$port/$database\\\"\\r\\n}\",\n start: 2347,\n end: 2399,\n },\n ],\n errors: [],\n}", actual: "LexerTestExpected {\n success: true,\n count: 1221,\n tokens: [\n TokenData {\n kind: \"Comment\",\n text: \"#!/usr/bin/env tclsh\\r\",\n start: 0,\n end: 21,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 21,\n end: 22,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# TCL test file for lexer testing\\r\",\n start: 22,\n end: 56,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 56,\n end: 57,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 57,\n end: 59,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Basic variables and data types\\r\",\n start: 59,\n end: 92,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 92,\n end: 93,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 93,\n end: 96,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 96,\n end: 97,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"name\",\n start: 97,\n end: 101,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 101,\n end: 102,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"John Doe\\\"\",\n start: 102,\n end: 112,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 112,\n end: 114,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 114,\n end: 117,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 117,\n end: 118,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"age\",\n start: 118,\n end: 121,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 121,\n end: 122,\n },\n TokenData {\n kind: \"Number\",\n text: \"30\",\n start: 122,\n end: 124,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 124,\n end: 126,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 126,\n end: 129,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 129,\n end: 130,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"height\",\n start: 130,\n end: 136,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 136,\n end: 137,\n },\n TokenData {\n kind: \"Number\",\n text: \"5\",\n start: 137,\n end: 138,\n },\n TokenData {\n kind: \"Number\",\n text: \"9\",\n start: 139,\n end: 140,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 140,\n end: 142,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 142,\n end: 145,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 145,\n end: 146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_student\",\n start: 146,\n end: 156,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 156,\n end: 157,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"true\",\n start: 157,\n end: 161,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 161,\n end: 163,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 163,\n end: 166,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 166,\n end: 167,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"empty_var\",\n start: 167,\n end: 176,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 176,\n end: 177,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"\\\"\",\n start: 177,\n end: 179,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 179,\n end: 181,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 181,\n end: 183,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Lists\\r\",\n start: 183,\n end: 191,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 191,\n end: 192,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 192,\n end: 195,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 195,\n end: 196,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fruits\",\n start: 196,\n end: 202,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 202,\n end: 203,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{apple banana cherry date elderberry}\",\n start: 203,\n end: 240,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 240,\n end: 242,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 242,\n end: 245,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 245,\n end: 246,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numbers\",\n start: 246,\n end: 253,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 253,\n end: 254,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{1 2 3 4 5}\",\n start: 254,\n end: 265,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 265,\n end: 267,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 267,\n end: 270,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 270,\n end: 271,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"mixed_list\",\n start: 271,\n end: 281,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 281,\n end: 282,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{hello 42 3.14 world}\",\n start: 282,\n end: 303,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 303,\n end: 305,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 305,\n end: 308,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 308,\n end: 309,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"nested_list\",\n start: 309,\n end: 320,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 320,\n end: 321,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{{a b c} {1 2 3} {x y z}}\",\n start: 321,\n end: 346,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 346,\n end: 348,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 348,\n end: 350,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Arrays (associative arrays)\\r\",\n start: 350,\n end: 380,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 380,\n end: 381,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array\",\n start: 381,\n end: 386,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 386,\n end: 387,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 387,\n end: 390,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 390,\n end: 391,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"person\",\n start: 391,\n end: 397,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 397,\n end: 398,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n name \\\"Alice Smith\\\"\\r\\n age 25\\r\\n city \\\"New York\\\"\\r\\n occupation \\\"Engineer\\\"\\r\\n}\",\n start: 398,\n end: 486,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 486,\n end: 488,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 488,\n end: 490,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array\",\n start: 490,\n end: 495,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 495,\n end: 496,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 496,\n end: 499,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 499,\n end: 500,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"colors\",\n start: 500,\n end: 506,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 506,\n end: 507,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n red \\\"#FF0000\\\"\\r\\n green \\\"#00FF00\\\"\\r\\n blue \\\"#0000FF\\\"\\r\\n yellow \\\"#FFFF00\\\"\\r\\n}\",\n start: 507,\n end: 593,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 593,\n end: 595,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 595,\n end: 597,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Dictionary (Tcl 8.5+)\\r\",\n start: 597,\n end: 621,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 621,\n end: 622,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 622,\n end: 625,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 625,\n end: 626,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"config\",\n start: 626,\n end: 632,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 632,\n end: 633,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 633,\n end: 634,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dict\",\n start: 634,\n end: 638,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 638,\n end: 639,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"create\",\n start: 639,\n end: 645,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 645,\n end: 646,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 647,\n end: 649,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 649,\n end: 653,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"host\",\n start: 653,\n end: 657,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 657,\n end: 658,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"localhost\\\"\",\n start: 658,\n end: 669,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 669,\n end: 670,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 671,\n end: 673,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 673,\n end: 677,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"port\",\n start: 677,\n end: 681,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 681,\n end: 682,\n },\n TokenData {\n kind: \"Number\",\n text: \"8080\",\n start: 682,\n end: 686,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 686,\n end: 687,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 688,\n end: 690,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 690,\n end: 694,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"timeout\",\n start: 694,\n end: 701,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 701,\n end: 702,\n },\n TokenData {\n kind: \"Number\",\n text: \"30\",\n start: 702,\n end: 704,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 704,\n end: 705,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 706,\n end: 708,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 708,\n end: 712,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ssl_enabled\",\n start: 712,\n end: 723,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 723,\n end: 724,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"true\",\n start: 724,\n end: 728,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 728,\n end: 729,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 730,\n end: 732,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 732,\n end: 736,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max_connections\",\n start: 736,\n end: 751,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 751,\n end: 752,\n },\n TokenData {\n kind: \"Number\",\n text: \"100\",\n start: 752,\n end: 755,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 755,\n end: 756,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 756,\n end: 758,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 758,\n end: 760,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Procedures (functions)\\r\",\n start: 760,\n end: 785,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 785,\n end: 786,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 786,\n end: 790,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 790,\n end: 791,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"greet\",\n start: 791,\n end: 796,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 796,\n end: 797,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{name}\",\n start: 797,\n end: 803,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 803,\n end: 804,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return \\\"Hello, $name!\\\"\\r\\n}\",\n start: 804,\n end: 836,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 836,\n end: 838,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 838,\n end: 840,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 840,\n end: 844,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 844,\n end: 845,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"add\",\n start: 845,\n end: 848,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 848,\n end: 849,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{a b}\",\n start: 849,\n end: 854,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 854,\n end: 855,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [expr {$a + $b}]\\r\\n}\",\n start: 855,\n end: 888,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 888,\n end: 890,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 890,\n end: 892,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 892,\n end: 896,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 896,\n end: 897,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"multiply\",\n start: 897,\n end: 905,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 905,\n end: 906,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{a b}\",\n start: 906,\n end: 911,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 911,\n end: 912,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [expr {$a * $b}]\\r\\n}\",\n start: 912,\n end: 945,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 945,\n end: 947,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 947,\n end: 949,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 949,\n end: 953,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 953,\n end: 954,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"factorial\",\n start: 954,\n end: 963,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 963,\n end: 964,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{n}\",\n start: 964,\n end: 967,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 967,\n end: 968,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {$n <= 1} {\\r\\n return 1\\r\\n } else {\\r\\n return [expr {$n * [factorial [expr {$n - 1}]]}]\\r\\n }\\r\\n}\",\n start: 968,\n end: 1089,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1089,\n end: 1091,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1091,\n end: 1093,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1093,\n end: 1097,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1097,\n end: 1098,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fibonacci\",\n start: 1098,\n end: 1107,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1107,\n end: 1108,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{n}\",\n start: 1108,\n end: 1111,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1111,\n end: 1112,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {$n <= 1} {\\r\\n return $n\\r\\n } else {\\r\\n return [expr {[fibonacci [expr {$n - 1}]] + [fibonacci [expr {$n - 2}]]}]\\r\\n }\\r\\n}\",\n start: 1112,\n end: 1259,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1259,\n end: 1261,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1261,\n end: 1263,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1263,\n end: 1267,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1267,\n end: 1268,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sum_list\",\n start: 1268,\n end: 1276,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1276,\n end: 1277,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{lst}\",\n start: 1277,\n end: 1282,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1282,\n end: 1283,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set total 0\\r\\n foreach item $lst {\\r\\n set total [expr {$total + $item}]\\r\\n }\\r\\n return $total\\r\\n}\",\n start: 1283,\n end: 1398,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1398,\n end: 1400,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1400,\n end: 1402,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1402,\n end: 1406,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1406,\n end: 1407,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"find_max\",\n start: 1407,\n end: 1415,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1415,\n end: 1416,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{lst}\",\n start: 1416,\n end: 1421,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1421,\n end: 1422,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set max [lindex $lst 0]\\r\\n foreach item $lst {\\r\\n if {$item > $max} {\\r\\n set max $item\\r\\n }\\r\\n }\\r\\n return $max\\r\\n}\",\n start: 1422,\n end: 1571,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1571,\n end: 1573,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1573,\n end: 1575,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1575,\n end: 1579,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1579,\n end: 1580,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_prime\",\n start: 1580,\n end: 1588,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1588,\n end: 1589,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{n}\",\n start: 1589,\n end: 1592,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1592,\n end: 1593,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {$n < 2} {\\r\\n return 0\\r\\n }\\r\\n if {$n == 2} {\\r\\n return 1\\r\\n }\\r\\n if {$n % 2 == 0} {\\r\\n return 0\\r\\n }\\r\\n for {set i 3} {$i * $i <= $n} {incr i 2} {\\r\\n if {$n % $i == 0} {\\r\\n return 0\\r\\n }\\r\\n }\\r\\n return 1\\r\\n}\",\n start: 1593,\n end: 1866,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1866,\n end: 1868,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1868,\n end: 1870,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 1870,\n end: 1874,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1874,\n end: 1875,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"reverse_string\",\n start: 1875,\n end: 1889,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1889,\n end: 1890,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{str}\",\n start: 1890,\n end: 1895,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 1895,\n end: 1896,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set result \\\"\\\"\\r\\n for {set i [expr {[string length $str] - 1}]} {$i >= 0} {incr i -1} {\\r\\n append result [string index $str $i]\\r\\n }\\r\\n return $result\\r\\n}\",\n start: 1896,\n end: 2067,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2067,\n end: 2069,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2069,\n end: 2071,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2071,\n end: 2075,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2075,\n end: 2076,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"count_words\",\n start: 2076,\n end: 2087,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2087,\n end: 2088,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{text}\",\n start: 2088,\n end: 2094,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2094,\n end: 2095,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [llength [split $text]]\\r\\n}\",\n start: 2095,\n end: 2135,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2135,\n end: 2137,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2137,\n end: 2139,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Procedure with variable arguments\\r\",\n start: 2139,\n end: 2175,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2175,\n end: 2176,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2176,\n end: 2180,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2180,\n end: 2181,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"print_all\",\n start: 2181,\n end: 2190,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2190,\n end: 2191,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{args}\",\n start: 2191,\n end: 2197,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2197,\n end: 2198,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n foreach arg $args {\\r\\n puts $arg\\r\\n }\\r\\n}\",\n start: 2198,\n end: 2253,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2253,\n end: 2255,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2255,\n end: 2257,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Procedure with optional arguments\\r\",\n start: 2257,\n end: 2293,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2293,\n end: 2294,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2294,\n end: 2298,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2298,\n end: 2299,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"connect_db\",\n start: 2299,\n end: 2309,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2309,\n end: 2310,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{host {port 5432} {database \\\"mydb\\\"}}\",\n start: 2310,\n end: 2346,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2346,\n end: 2347,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Connecting to $host:$port/$database\\\"\\r\\n}\",\n start: 2347,\n end: 2399,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2399,\n end: 2401,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2401,\n end: 2403,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Procedure with upvar (reference parameters)\\r\",\n start: 2403,\n end: 2449,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2449,\n end: 2450,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2450,\n end: 2454,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2454,\n end: 2455,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"increment\",\n start: 2455,\n end: 2464,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2464,\n end: 2465,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{varname}\",\n start: 2465,\n end: 2474,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2474,\n end: 2475,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n upvar $varname var\\r\\n incr var\\r\\n}\",\n start: 2475,\n end: 2517,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2517,\n end: 2519,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2519,\n end: 2521,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Procedure with global variables\\r\",\n start: 2521,\n end: 2555,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2555,\n end: 2556,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 2556,\n end: 2559,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2559,\n end: 2560,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_counter\",\n start: 2560,\n end: 2574,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2574,\n end: 2575,\n },\n TokenData {\n kind: \"Number\",\n text: \"0\",\n start: 2575,\n end: 2576,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2576,\n end: 2578,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2578,\n end: 2580,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 2580,\n end: 2584,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2584,\n end: 2585,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"increment_global\",\n start: 2585,\n end: 2601,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2601,\n end: 2602,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{}\",\n start: 2602,\n end: 2604,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2604,\n end: 2605,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n global global_counter\\r\\n incr global_counter\\r\\n}\",\n start: 2605,\n end: 2661,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2661,\n end: 2663,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2663,\n end: 2665,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Control structures\\r\",\n start: 2665,\n end: 2686,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2686,\n end: 2687,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# If-else statements\\r\",\n start: 2687,\n end: 2708,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2708,\n end: 2709,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 2709,\n end: 2712,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2712,\n end: 2713,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"score\",\n start: 2713,\n end: 2718,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2718,\n end: 2719,\n },\n TokenData {\n kind: \"Number\",\n text: \"85\",\n start: 2719,\n end: 2721,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2721,\n end: 2723,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 2723,\n end: 2725,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2725,\n end: 2726,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$score >= 90}\",\n start: 2726,\n end: 2740,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2740,\n end: 2741,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set grade \\\"A\\\"\\r\\n}\",\n start: 2741,\n end: 2764,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2764,\n end: 2765,\n },\n TokenData {\n kind: \"ElseIf\",\n text: \"elseif\",\n start: 2765,\n end: 2771,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2771,\n end: 2772,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$score >= 80}\",\n start: 2772,\n end: 2786,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2786,\n end: 2787,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set grade \\\"B\\\"\\r\\n}\",\n start: 2787,\n end: 2810,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2810,\n end: 2811,\n },\n TokenData {\n kind: \"ElseIf\",\n text: \"elseif\",\n start: 2811,\n end: 2817,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2817,\n end: 2818,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$score >= 70}\",\n start: 2818,\n end: 2832,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2832,\n end: 2833,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set grade \\\"C\\\"\\r\\n}\",\n start: 2833,\n end: 2856,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2856,\n end: 2857,\n },\n TokenData {\n kind: \"ElseIf\",\n text: \"elseif\",\n start: 2857,\n end: 2863,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2863,\n end: 2864,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$score >= 60}\",\n start: 2864,\n end: 2878,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2878,\n end: 2879,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set grade \\\"D\\\"\\r\\n}\",\n start: 2879,\n end: 2902,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2902,\n end: 2903,\n },\n TokenData {\n kind: \"Else\",\n text: \"else\",\n start: 2903,\n end: 2907,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2907,\n end: 2908,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set grade \\\"F\\\"\\r\\n}\",\n start: 2908,\n end: 2931,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2931,\n end: 2933,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2933,\n end: 2935,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Switch statement\\r\",\n start: 2935,\n end: 2954,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 2954,\n end: 2955,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 2955,\n end: 2958,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2958,\n end: 2959,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"day\",\n start: 2959,\n end: 2962,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2962,\n end: 2963,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Monday\\\"\",\n start: 2963,\n end: 2971,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2971,\n end: 2973,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"switch\",\n start: 2973,\n end: 2979,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2979,\n end: 2980,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 2980,\n end: 2981,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"day\",\n start: 2981,\n end: 2984,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 2984,\n end: 2985,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n \\\"Monday\\\" {\\r\\n set mood \\\"Tired\\\"\\r\\n }\\r\\n \\\"Tuesday\\\" {\\r\\n set mood \\\"Getting better\\\"\\r\\n }\\r\\n \\\"Wednesday\\\" {\\r\\n set mood \\\"Hump day\\\"\\r\\n }\\r\\n \\\"Thursday\\\" {\\r\\n set mood \\\"Almost there\\\"\\r\\n }\\r\\n \\\"Friday\\\" {\\r\\n set mood \\\"TGIF!\\\"\\r\\n }\\r\\n \\\"Saturday\\\" -\\r\\n \\\"Sunday\\\" {\\r\\n set mood \\\"Weekend!\\\"\\r\\n }\\r\\n default {\\r\\n set mood \\\"Unknown day\\\"\\r\\n }\\r\\n}\",\n start: 2985,\n end: 3383,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3383,\n end: 3385,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3385,\n end: 3387,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# For loops\\r\",\n start: 3387,\n end: 3399,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 3399,\n end: 3400,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 3400,\n end: 3404,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3404,\n end: 3405,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Counting from 1 to 10:\\\"\",\n start: 3405,\n end: 3429,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3429,\n end: 3431,\n },\n TokenData {\n kind: \"For\",\n text: \"for\",\n start: 3431,\n end: 3434,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3434,\n end: 3435,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{set i 1}\",\n start: 3435,\n end: 3444,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3444,\n end: 3445,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$i <= 10}\",\n start: 3445,\n end: 3455,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3455,\n end: 3456,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{incr i}\",\n start: 3456,\n end: 3464,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3464,\n end: 3465,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts $i\\r\\n}\",\n start: 3465,\n end: 3482,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3482,\n end: 3484,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3484,\n end: 3486,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 3486,\n end: 3490,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3490,\n end: 3491,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Counting down from 10 to 1:\\\"\",\n start: 3491,\n end: 3520,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3520,\n end: 3522,\n },\n TokenData {\n kind: \"For\",\n text: \"for\",\n start: 3522,\n end: 3525,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3525,\n end: 3526,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{set i 10}\",\n start: 3526,\n end: 3536,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3536,\n end: 3537,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$i >= 1}\",\n start: 3537,\n end: 3546,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3546,\n end: 3547,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{incr i -1}\",\n start: 3547,\n end: 3558,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3558,\n end: 3559,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts $i\\r\\n}\",\n start: 3559,\n end: 3576,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3576,\n end: 3578,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3578,\n end: 3580,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# While loop\\r\",\n start: 3580,\n end: 3593,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 3593,\n end: 3594,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 3594,\n end: 3597,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3597,\n end: 3598,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"count\",\n start: 3598,\n end: 3603,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3603,\n end: 3604,\n },\n TokenData {\n kind: \"Number\",\n text: \"0\",\n start: 3604,\n end: 3605,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3605,\n end: 3607,\n },\n TokenData {\n kind: \"While\",\n text: \"while\",\n start: 3607,\n end: 3612,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3612,\n end: 3613,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{$count < 5}\",\n start: 3613,\n end: 3625,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3625,\n end: 3626,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Count: $count\\\"\\r\\n incr count\\r\\n}\",\n start: 3626,\n end: 3672,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3672,\n end: 3674,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3674,\n end: 3676,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Foreach loop\\r\",\n start: 3676,\n end: 3691,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 3691,\n end: 3692,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 3692,\n end: 3696,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3696,\n end: 3697,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Fruits:\\\"\",\n start: 3697,\n end: 3706,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3706,\n end: 3708,\n },\n TokenData {\n kind: \"ForEach\",\n text: \"foreach\",\n start: 3708,\n end: 3715,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3715,\n end: 3716,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fruit\",\n start: 3716,\n end: 3721,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3721,\n end: 3722,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 3722,\n end: 3723,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fruits\",\n start: 3723,\n end: 3729,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3729,\n end: 3730,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"- $fruit\\\"\\r\\n}\",\n start: 3730,\n end: 3755,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3755,\n end: 3757,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3757,\n end: 3759,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 3759,\n end: 3763,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3763,\n end: 3764,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Numbers and their squares:\\\"\",\n start: 3764,\n end: 3792,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3792,\n end: 3794,\n },\n TokenData {\n kind: \"ForEach\",\n text: \"foreach\",\n start: 3794,\n end: 3801,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3801,\n end: 3802,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"num\",\n start: 3802,\n end: 3805,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3805,\n end: 3806,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 3806,\n end: 3807,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numbers\",\n start: 3807,\n end: 3814,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3814,\n end: 3815,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"$num squared is [expr {$num * $num}]\\\"\\r\\n}\",\n start: 3815,\n end: 3868,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3868,\n end: 3870,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3870,\n end: 3872,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Foreach with multiple variables\\r\",\n start: 3872,\n end: 3906,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 3906,\n end: 3907,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 3907,\n end: 3910,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3910,\n end: 3911,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pairs\",\n start: 3911,\n end: 3916,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3916,\n end: 3917,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{{name Alice} {age 25} {city \\\"New York\\\"}}\",\n start: 3917,\n end: 3958,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3958,\n end: 3960,\n },\n TokenData {\n kind: \"ForEach\",\n text: \"foreach\",\n start: 3960,\n end: 3967,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3967,\n end: 3968,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{key value}\",\n start: 3968,\n end: 3979,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3979,\n end: 3980,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 3980,\n end: 3981,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pairs\",\n start: 3981,\n end: 3986,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 3986,\n end: 3987,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"$key: $value\\\"\\r\\n}\",\n start: 3987,\n end: 4016,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4016,\n end: 4018,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4018,\n end: 4020,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Array iteration\\r\",\n start: 4020,\n end: 4038,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 4038,\n end: 4039,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4039,\n end: 4043,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4043,\n end: 4044,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Person information:\\\"\",\n start: 4044,\n end: 4065,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4065,\n end: 4067,\n },\n TokenData {\n kind: \"ForEach\",\n text: \"foreach\",\n start: 4067,\n end: 4074,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4074,\n end: 4075,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{key value}\",\n start: 4075,\n end: 4086,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4086,\n end: 4087,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 4087,\n end: 4088,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array\",\n start: 4088,\n end: 4093,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4093,\n end: 4094,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"get\",\n start: 4094,\n end: 4097,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4097,\n end: 4098,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"person\",\n start: 4098,\n end: 4104,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 4104,\n end: 4105,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4105,\n end: 4106,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"$key: $value\\\"\\r\\n}\",\n start: 4106,\n end: 4135,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4135,\n end: 4137,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4137,\n end: 4139,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# String operations\\r\",\n start: 4139,\n end: 4159,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 4159,\n end: 4160,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 4160,\n end: 4163,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4163,\n end: 4164,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"text\",\n start: 4164,\n end: 4168,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4168,\n end: 4169,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Hello, World!\\\"\",\n start: 4169,\n end: 4184,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4184,\n end: 4186,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4186,\n end: 4190,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4190,\n end: 4191,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Original: $text\\\"\",\n start: 4191,\n end: 4208,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4208,\n end: 4210,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4210,\n end: 4214,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4214,\n end: 4215,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Length: [string length $text]\\\"\",\n start: 4215,\n end: 4246,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4246,\n end: 4248,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4248,\n end: 4252,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4252,\n end: 4253,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Uppercase: [string toupper $text]\\\"\",\n start: 4253,\n end: 4288,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4288,\n end: 4290,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4290,\n end: 4294,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4294,\n end: 4295,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Lowercase: [string tolower $text]\\\"\",\n start: 4295,\n end: 4330,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4330,\n end: 4332,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4332,\n end: 4336,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4336,\n end: 4337,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"First 5 chars: [string range $text 0 4]\\\"\",\n start: 4337,\n end: 4378,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4378,\n end: 4380,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4380,\n end: 4384,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4384,\n end: 4385,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Last 6 chars: [string range $text end-5 end]\\\"\",\n start: 4385,\n end: 4431,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4431,\n end: 4433,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4433,\n end: 4437,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4437,\n end: 4438,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Index of 'World': [string first \\\"\",\n start: 4438,\n end: 4472,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"World\",\n start: 4472,\n end: 4477,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\" $text]\\\"\",\n start: 4477,\n end: 4486,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4486,\n end: 4488,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 4488,\n end: 4492,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4492,\n end: 4493,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Replace 'World' with 'TCL': [string map {\\\"\",\n start: 4493,\n end: 4536,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"World\",\n start: 4536,\n end: 4541,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\" \\\"\",\n start: 4541,\n end: 4544,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"TCL\",\n start: 4544,\n end: 4547,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"} $text]\\\"\",\n start: 4547,\n end: 4557,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4557,\n end: 4559,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4559,\n end: 4561,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Regular expressions\\r\",\n start: 4561,\n end: 4583,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 4583,\n end: 4584,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 4584,\n end: 4587,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4587,\n end: 4588,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 4588,\n end: 4593,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4593,\n end: 4594,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"user@example.com\\\"\",\n start: 4594,\n end: 4612,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4612,\n end: 4614,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 4614,\n end: 4616,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4616,\n end: 4617,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[regexp {^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$} $email]}\",\n start: 4617,\n end: 4685,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4685,\n end: 4686,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"$email is a valid email address\\\"\\r\\n}\",\n start: 4686,\n end: 4734,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4734,\n end: 4735,\n },\n TokenData {\n kind: \"Else\",\n text: \"else\",\n start: 4735,\n end: 4739,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4739,\n end: 4740,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"$email is not a valid email address\\\"\\r\\n}\",\n start: 4740,\n end: 4792,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4792,\n end: 4794,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4794,\n end: 4796,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Extract parts using regexp\\r\",\n start: 4796,\n end: 4825,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 4825,\n end: 4826,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 4826,\n end: 4829,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4829,\n end: 4830,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"phone\",\n start: 4830,\n end: 4835,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4835,\n end: 4836,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"123-456-7890\\\"\",\n start: 4836,\n end: 4850,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4850,\n end: 4852,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 4852,\n end: 4854,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4854,\n end: 4855,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[regexp {(\\\\d{3})-(\\\\d{3})-(\\\\d{4})} $phone match area exchange number]}\",\n start: 4855,\n end: 4925,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 4925,\n end: 4926,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Area code: $area\\\"\\r\\n puts \\\"Exchange: $exchange\\\"\\r\\n puts \\\"Number: $number\\\"\\r\\n}\",\n start: 4926,\n end: 5019,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5019,\n end: 5021,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5021,\n end: 5023,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# List operations\\r\",\n start: 5023,\n end: 5041,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5041,\n end: 5042,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5042,\n end: 5045,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5045,\n end: 5046,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"original_list\",\n start: 5046,\n end: 5059,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5059,\n end: 5060,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{1 2 3 4 5}\",\n start: 5060,\n end: 5071,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5071,\n end: 5073,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5073,\n end: 5077,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5077,\n end: 5078,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Original list: $original_list\\\"\",\n start: 5078,\n end: 5109,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5109,\n end: 5111,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5111,\n end: 5115,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5115,\n end: 5116,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Length: [llength $original_list]\\\"\",\n start: 5116,\n end: 5150,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5150,\n end: 5152,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5152,\n end: 5156,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5156,\n end: 5157,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"First element: [lindex $original_list 0]\\\"\",\n start: 5157,\n end: 5199,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5199,\n end: 5201,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5201,\n end: 5205,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5205,\n end: 5206,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Last element: [lindex $original_list end]\\\"\",\n start: 5206,\n end: 5249,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5249,\n end: 5251,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5251,\n end: 5255,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5255,\n end: 5256,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Range 1-3: [lrange $original_list 1 3]\\\"\",\n start: 5256,\n end: 5296,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5296,\n end: 5298,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5298,\n end: 5300,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Append to list\\r\",\n start: 5300,\n end: 5317,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5317,\n end: 5318,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lappend\",\n start: 5318,\n end: 5325,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5325,\n end: 5326,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"original_list\",\n start: 5326,\n end: 5339,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5339,\n end: 5340,\n },\n TokenData {\n kind: \"Number\",\n text: \"6\",\n start: 5340,\n end: 5341,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5341,\n end: 5342,\n },\n TokenData {\n kind: \"Number\",\n text: \"7\",\n start: 5342,\n end: 5343,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5343,\n end: 5344,\n },\n TokenData {\n kind: \"Number\",\n text: \"8\",\n start: 5344,\n end: 5345,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5345,\n end: 5347,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5347,\n end: 5351,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5351,\n end: 5352,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"After append: $original_list\\\"\",\n start: 5352,\n end: 5382,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5382,\n end: 5384,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5384,\n end: 5386,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Insert into list\\r\",\n start: 5386,\n end: 5405,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5405,\n end: 5406,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5406,\n end: 5409,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5409,\n end: 5410,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"original_list\",\n start: 5410,\n end: 5423,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5423,\n end: 5424,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 5424,\n end: 5425,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"linsert\",\n start: 5425,\n end: 5432,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5432,\n end: 5433,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 5433,\n end: 5434,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"original_list\",\n start: 5434,\n end: 5447,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5447,\n end: 5448,\n },\n TokenData {\n kind: \"Number\",\n text: \"0\",\n start: 5448,\n end: 5449,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5449,\n end: 5450,\n },\n TokenData {\n kind: \"Number\",\n text: \"0\",\n start: 5450,\n end: 5451,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 5451,\n end: 5452,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5452,\n end: 5454,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5454,\n end: 5458,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5458,\n end: 5459,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"After insert at beginning: $original_list\\\"\",\n start: 5459,\n end: 5502,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5502,\n end: 5504,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5504,\n end: 5506,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Replace in list\\r\",\n start: 5506,\n end: 5524,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5524,\n end: 5525,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5525,\n end: 5528,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5528,\n end: 5529,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"original_list\",\n start: 5529,\n end: 5542,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5542,\n end: 5543,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 5543,\n end: 5544,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lreplace\",\n start: 5544,\n end: 5552,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5552,\n end: 5553,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 5553,\n end: 5554,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"original_list\",\n start: 5554,\n end: 5567,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5567,\n end: 5568,\n },\n TokenData {\n kind: \"Number\",\n text: \"2\",\n start: 5568,\n end: 5569,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5569,\n end: 5570,\n },\n TokenData {\n kind: \"Number\",\n text: \"2\",\n start: 5570,\n end: 5571,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5571,\n end: 5572,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"THREE\\\"\",\n start: 5572,\n end: 5579,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 5579,\n end: 5580,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5580,\n end: 5582,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5582,\n end: 5586,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5586,\n end: 5587,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"After replace: $original_list\\\"\",\n start: 5587,\n end: 5618,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5618,\n end: 5620,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5620,\n end: 5622,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Sort list\\r\",\n start: 5622,\n end: 5634,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5634,\n end: 5635,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5635,\n end: 5638,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5638,\n end: 5639,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"unsorted\",\n start: 5639,\n end: 5647,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5647,\n end: 5648,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{banana apple cherry date}\",\n start: 5648,\n end: 5674,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5674,\n end: 5676,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5676,\n end: 5679,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5679,\n end: 5680,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sorted\",\n start: 5680,\n end: 5686,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5686,\n end: 5687,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 5687,\n end: 5688,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lsort\",\n start: 5688,\n end: 5693,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5693,\n end: 5694,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 5694,\n end: 5695,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"unsorted\",\n start: 5695,\n end: 5703,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 5703,\n end: 5704,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5704,\n end: 5706,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5706,\n end: 5710,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5710,\n end: 5711,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Unsorted: $unsorted\\\"\",\n start: 5711,\n end: 5732,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5732,\n end: 5734,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5734,\n end: 5738,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5738,\n end: 5739,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Sorted: $sorted\\\"\",\n start: 5739,\n end: 5756,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5756,\n end: 5758,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5758,\n end: 5760,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Sort numerically\\r\",\n start: 5760,\n end: 5779,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5779,\n end: 5780,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5780,\n end: 5783,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5783,\n end: 5784,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numbers_unsorted\",\n start: 5784,\n end: 5800,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5800,\n end: 5801,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{10 2 30 4 5}\",\n start: 5801,\n end: 5814,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5814,\n end: 5816,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 5816,\n end: 5819,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5819,\n end: 5820,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numbers_sorted\",\n start: 5820,\n end: 5834,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5834,\n end: 5835,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 5835,\n end: 5836,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lsort\",\n start: 5836,\n end: 5841,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5841,\n end: 5842,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 5842,\n end: 5843,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"integer\",\n start: 5843,\n end: 5850,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5850,\n end: 5851,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 5851,\n end: 5852,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numbers_unsorted\",\n start: 5852,\n end: 5868,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 5868,\n end: 5869,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5869,\n end: 5871,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5871,\n end: 5875,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5875,\n end: 5876,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Numbers unsorted: $numbers_unsorted\\\"\",\n start: 5876,\n end: 5913,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5913,\n end: 5915,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5915,\n end: 5919,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5919,\n end: 5920,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Numbers sorted: $numbers_sorted\\\"\",\n start: 5920,\n end: 5953,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5953,\n end: 5955,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5955,\n end: 5957,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Dictionary operations (Tcl 8.5+)\\r\",\n start: 5957,\n end: 5992,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 5992,\n end: 5993,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 5993,\n end: 5997,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 5997,\n end: 5998,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Configuration:\\\"\",\n start: 5998,\n end: 6014,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6014,\n end: 6016,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dict\",\n start: 6016,\n end: 6020,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6020,\n end: 6021,\n },\n TokenData {\n kind: \"For\",\n text: \"for\",\n start: 6021,\n end: 6024,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6024,\n end: 6025,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{key value}\",\n start: 6025,\n end: 6036,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6036,\n end: 6037,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 6037,\n end: 6038,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"config\",\n start: 6038,\n end: 6044,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6044,\n end: 6045,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"$key: $value\\\"\\r\\n}\",\n start: 6045,\n end: 6074,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6074,\n end: 6076,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6076,\n end: 6078,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Add to dictionary\\r\",\n start: 6078,\n end: 6098,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6098,\n end: 6099,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dict\",\n start: 6099,\n end: 6103,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6103,\n end: 6104,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 6104,\n end: 6107,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6107,\n end: 6108,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"config\",\n start: 6108,\n end: 6114,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6114,\n end: 6115,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"debug_mode\",\n start: 6115,\n end: 6125,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6125,\n end: 6126,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"true\",\n start: 6126,\n end: 6130,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6130,\n end: 6132,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 6132,\n end: 6136,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6136,\n end: 6137,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"After adding debug_mode: [dict get $config debug_mode]\\\"\",\n start: 6137,\n end: 6193,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6193,\n end: 6195,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6195,\n end: 6197,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Check if key exists\\r\",\n start: 6197,\n end: 6219,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6219,\n end: 6220,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 6220,\n end: 6222,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6222,\n end: 6223,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[dict exists $config ssl_enabled]}\",\n start: 6223,\n end: 6258,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6258,\n end: 6259,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"SSL is [expr {[dict get $config ssl_enabled] ? \\\"enabled\\\" : \\\"disabled\\\"}]\\\"\\r\\n}\",\n start: 6259,\n end: 6347,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6347,\n end: 6349,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6349,\n end: 6351,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# File operations\\r\",\n start: 6351,\n end: 6369,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6369,\n end: 6370,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 6370,\n end: 6373,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6373,\n end: 6374,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"filename\",\n start: 6374,\n end: 6382,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6382,\n end: 6383,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"test.txt\\\"\",\n start: 6383,\n end: 6393,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6393,\n end: 6395,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6395,\n end: 6397,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Write to file\\r\",\n start: 6397,\n end: 6413,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6413,\n end: 6414,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 6414,\n end: 6417,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6417,\n end: 6418,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file\",\n start: 6418,\n end: 6422,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6422,\n end: 6423,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6423,\n end: 6424,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"open\",\n start: 6424,\n end: 6428,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6428,\n end: 6429,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 6429,\n end: 6430,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"filename\",\n start: 6430,\n end: 6438,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6438,\n end: 6439,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"w\",\n start: 6439,\n end: 6440,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6440,\n end: 6441,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6441,\n end: 6443,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 6443,\n end: 6447,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6447,\n end: 6448,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 6448,\n end: 6449,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file\",\n start: 6449,\n end: 6453,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6453,\n end: 6454,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"This is a test file\\\"\",\n start: 6454,\n end: 6475,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6475,\n end: 6477,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 6477,\n end: 6481,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6481,\n end: 6482,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 6482,\n end: 6483,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file\",\n start: 6483,\n end: 6487,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6487,\n end: 6488,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Line 2\\\"\",\n start: 6488,\n end: 6496,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6496,\n end: 6498,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 6498,\n end: 6502,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6502,\n end: 6503,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 6503,\n end: 6504,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file\",\n start: 6504,\n end: 6508,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6508,\n end: 6509,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Line 3\\\"\",\n start: 6509,\n end: 6517,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6517,\n end: 6519,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"close\",\n start: 6519,\n end: 6524,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6524,\n end: 6525,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 6525,\n end: 6526,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file\",\n start: 6526,\n end: 6530,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6530,\n end: 6532,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6532,\n end: 6534,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Read from file\\r\",\n start: 6534,\n end: 6551,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6551,\n end: 6552,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 6552,\n end: 6554,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6554,\n end: 6555,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[file exists $filename]}\",\n start: 6555,\n end: 6580,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6580,\n end: 6581,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set file [open $filename r]\\r\\n set content [read $file]\\r\\n close $file\\r\\n puts \\\"File content:\\\"\\r\\n puts $content\\r\\n}\",\n start: 6581,\n end: 6710,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6710,\n end: 6712,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6712,\n end: 6714,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Read file line by line\\r\",\n start: 6714,\n end: 6739,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6739,\n end: 6740,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 6740,\n end: 6742,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6742,\n end: 6743,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[file exists $filename]}\",\n start: 6743,\n end: 6768,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6768,\n end: 6769,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set file [open $filename r]\\r\\n set line_number 1\\r\\n while {[gets $file line] >= 0} {\\r\\n puts \\\"Line $line_number: $line\\\"\\r\\n incr line_number\\r\\n }\\r\\n close $file\\r\\n}\",\n start: 6769,\n end: 6958,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6958,\n end: 6960,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6960,\n end: 6962,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# File information\\r\",\n start: 6962,\n end: 6981,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 6981,\n end: 6982,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 6982,\n end: 6984,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 6984,\n end: 6985,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[file exists $filename]}\",\n start: 6985,\n end: 7010,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7010,\n end: 7011,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"File size: [file size $filename] bytes\\\"\\r\\n puts \\\"File type: [file type $filename]\\\"\\r\\n puts \\\"File readable: [file readable $filename]\\\"\\r\\n puts \\\"File writable: [file writable $filename]\\\"\\r\\n puts \\\"File executable: [file executable $filename]\\\"\\r\\n}\",\n start: 7011,\n end: 7274,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7274,\n end: 7276,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7276,\n end: 7278,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Delete file\\r\",\n start: 7278,\n end: 7292,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 7292,\n end: 7293,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 7293,\n end: 7295,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7295,\n end: 7296,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[file exists $filename]}\",\n start: 7296,\n end: 7321,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7321,\n end: 7322,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n file delete $filename\\r\\n puts \\\"File deleted\\\"\\r\\n}\",\n start: 7322,\n end: 7378,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7378,\n end: 7380,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7380,\n end: 7382,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Error handling\\r\",\n start: 7382,\n end: 7399,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 7399,\n end: 7400,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 7400,\n end: 7404,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7404,\n end: 7405,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"safe_divide\",\n start: 7405,\n end: 7416,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7416,\n end: 7417,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{a b}\",\n start: 7417,\n end: 7422,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7422,\n end: 7423,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n if {[catch {expr {$a / $b}} result]} {\\r\\n return \\\"Error: Division by zero or invalid input\\\"\\r\\n } else {\\r\\n return $result\\r\\n }\\r\\n}\",\n start: 7423,\n end: 7575,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7575,\n end: 7577,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7577,\n end: 7579,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 7579,\n end: 7583,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7583,\n end: 7584,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"10 / 2 = [safe_divide 10 2]\\\"\",\n start: 7584,\n end: 7613,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7613,\n end: 7615,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 7615,\n end: 7619,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7619,\n end: 7620,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"10 / 0 = [safe_divide 10 0]\\\"\",\n start: 7620,\n end: 7649,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7649,\n end: 7651,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7651,\n end: 7653,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Try-catch equivalent\\r\",\n start: 7653,\n end: 7676,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 7676,\n end: 7677,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 7677,\n end: 7679,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7679,\n end: 7680,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[catch {\\r\\n set result [expr {10 / 0}]\\r\\n puts \\\"Result: $result\\\"\\r\\n} error_msg]}\",\n start: 7680,\n end: 7764,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7764,\n end: 7765,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Caught error: $error_msg\\\"\\r\\n}\",\n start: 7765,\n end: 7806,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7806,\n end: 7808,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7808,\n end: 7810,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Namespace example\\r\",\n start: 7810,\n end: 7830,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 7830,\n end: 7831,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"namespace\",\n start: 7831,\n end: 7840,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7840,\n end: 7841,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"eval\",\n start: 7841,\n end: 7845,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7845,\n end: 7846,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"math\",\n start: 7848,\n end: 7852,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 7852,\n end: 7853,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n variable pi 3.14159\\r\\n \\r\\n proc circle_area {radius} {\\r\\n variable pi\\r\\n return [expr {$pi * $radius * $radius}]\\r\\n }\\r\\n \\r\\n proc circle_circumference {radius} {\\r\\n variable pi\\r\\n return [expr {2 * $pi * $radius}]\\r\\n }\\r\\n}\",\n start: 7853,\n end: 8117,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8117,\n end: 8119,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8119,\n end: 8121,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 8121,\n end: 8125,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 8125,\n end: 8126,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Circle area (r=5): [::math::circle_area 5]\\\"\",\n start: 8126,\n end: 8170,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8170,\n end: 8172,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 8172,\n end: 8176,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 8176,\n end: 8177,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Circle circumference (r=5): [::math::circle_circumference 5]\\\"\",\n start: 8177,\n end: 8239,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8239,\n end: 8241,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8241,\n end: 8243,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Object-oriented programming with TclOO (Tcl 8.6+)\\r\",\n start: 8243,\n end: 8295,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 8295,\n end: 8296,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 8296,\n end: 8298,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 8298,\n end: 8299,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[info commands oo::class] ne \\\"\\\"}\",\n start: 8299,\n end: 8332,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 8332,\n end: 8333,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n oo::class create Person {\\r\\n variable name age\\r\\n \\r\\n constructor {person_name person_age} {\\r\\n set name $person_name\\r\\n set age $person_age\\r\\n }\\r\\n \\r\\n method get_name {} {\\r\\n return $name\\r\\n }\\r\\n \\r\\n method get_age {} {\\r\\n return $age\\r\\n }\\r\\n \\r\\n method set_age {new_age} {\\r\\n set age $new_age\\r\\n }\\r\\n \\r\\n method introduce {} {\\r\\n return \\\"Hi, I'm $name and I'm $age years old.\\\"\\r\\n }\\r\\n \\r\\n method birthday {} {\\r\\n incr age\\r\\n return \\\"Happy birthday! I'm now $age years old.\\\"\\r\\n }\\r\\n }\\r\\n \\r\\n # Create instances\\r\\n set person1 [Person new \\\"Alice\\\" 25]\\r\\n set person2 [Person new \\\"Bob\\\" 30]\\r\\n \\r\\n puts [$person1 introduce]\\r\\n puts [$person2 introduce]\\r\\n \\r\\n puts [$person1 birthday]\\r\\n puts \\\"Alice's new age: [$person1 get_age]\\\"\\r\\n \\r\\n # Cleanup\\r\\n $person1 destroy\\r\\n $person2 destroy\\r\\n}\",\n start: 8333,\n end: 9352,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9352,\n end: 9354,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9354,\n end: 9356,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Advanced list processing\\r\",\n start: 9356,\n end: 9383,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 9383,\n end: 9384,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 9384,\n end: 9388,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9388,\n end: 9389,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"map\",\n start: 9389,\n end: 9392,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9392,\n end: 9393,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{func list}\",\n start: 9393,\n end: 9404,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9404,\n end: 9405,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set result {}\\r\\n foreach item $list {\\r\\n lappend result [$func $item]\\r\\n }\\r\\n return $result\\r\\n}\",\n start: 9405,\n end: 9519,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9519,\n end: 9521,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9521,\n end: 9523,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 9523,\n end: 9527,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9527,\n end: 9528,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"filter\",\n start: 9528,\n end: 9534,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9534,\n end: 9535,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{predicate list}\",\n start: 9535,\n end: 9551,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9551,\n end: 9552,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n set result {}\\r\\n foreach item $list {\\r\\n if {[$predicate $item]} {\\r\\n lappend result $item\\r\\n }\\r\\n }\\r\\n return $result\\r\\n}\",\n start: 9552,\n end: 9708,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9708,\n end: 9710,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9710,\n end: 9712,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 9712,\n end: 9716,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9716,\n end: 9717,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"square\",\n start: 9717,\n end: 9723,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9723,\n end: 9724,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{x}\",\n start: 9724,\n end: 9727,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9727,\n end: 9728,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [expr {$x * $x}]\\r\\n}\",\n start: 9728,\n end: 9761,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9761,\n end: 9763,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9763,\n end: 9765,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 9765,\n end: 9769,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9769,\n end: 9770,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_even\",\n start: 9770,\n end: 9777,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9777,\n end: 9778,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{x}\",\n start: 9778,\n end: 9781,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9781,\n end: 9782,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [expr {$x % 2 == 0}]\\r\\n}\",\n start: 9782,\n end: 9819,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9819,\n end: 9821,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9821,\n end: 9823,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 9823,\n end: 9826,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9826,\n end: 9827,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"test_numbers\",\n start: 9827,\n end: 9839,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9839,\n end: 9840,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{1 2 3 4 5 6 7 8 9 10}\",\n start: 9840,\n end: 9862,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9862,\n end: 9864,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 9864,\n end: 9868,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9868,\n end: 9869,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Original numbers: $test_numbers\\\"\",\n start: 9869,\n end: 9902,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9902,\n end: 9904,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 9904,\n end: 9908,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9908,\n end: 9909,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Squared: [map square $test_numbers]\\\"\",\n start: 9909,\n end: 9946,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9946,\n end: 9948,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 9948,\n end: 9952,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 9952,\n end: 9953,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Even numbers: [filter is_even $test_numbers]\\\"\",\n start: 9953,\n end: 9999,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9999,\n end: 10001,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10001,\n end: 10003,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Time and date\\r\",\n start: 10003,\n end: 10019,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 10019,\n end: 10020,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10020,\n end: 10024,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10024,\n end: 10025,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Current time: [clock format [clock seconds]]\\\"\",\n start: 10025,\n end: 10071,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10071,\n end: 10073,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10073,\n end: 10077,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10077,\n end: 10078,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Current time (ISO): [clock format [clock seconds] -format \\\"\",\n start: 10078,\n end: 10138,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10138,\n end: 10139,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Y\",\n start: 10139,\n end: 10140,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 10140,\n end: 10141,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10141,\n end: 10142,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"m\",\n start: 10142,\n end: 10143,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 10143,\n end: 10144,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10144,\n end: 10145,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"d\",\n start: 10145,\n end: 10146,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10146,\n end: 10147,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10147,\n end: 10148,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"H\",\n start: 10148,\n end: 10149,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10150,\n end: 10151,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"M\",\n start: 10151,\n end: 10152,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10153,\n end: 10154,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"S\",\n start: 10154,\n end: 10155,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"]\\\"\",\n start: 10155,\n end: 10158,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10158,\n end: 10160,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10160,\n end: 10164,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10164,\n end: 10165,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Timestamp: [clock seconds]\\\"\",\n start: 10165,\n end: 10193,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10193,\n end: 10195,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10195,\n end: 10197,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Parse date\\r\",\n start: 10197,\n end: 10210,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 10210,\n end: 10211,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 10211,\n end: 10214,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10214,\n end: 10215,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"date_string\",\n start: 10215,\n end: 10226,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10226,\n end: 10227,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"2023-12-25 15:30:00\\\"\",\n start: 10227,\n end: 10248,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10248,\n end: 10250,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 10250,\n end: 10252,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10252,\n end: 10253,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{[catch {clock scan $date_string -format \\\"%Y-%m-%d %H:%M:%S\\\"} timestamp]}\",\n start: 10253,\n end: 10326,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10326,\n end: 10327,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Failed to parse date\\\"\\r\\n}\",\n start: 10327,\n end: 10364,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10364,\n end: 10365,\n },\n TokenData {\n kind: \"Else\",\n text: \"else\",\n start: 10365,\n end: 10369,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10369,\n end: 10370,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Parsed timestamp: $timestamp\\\"\\r\\n puts \\\"Formatted: [clock format $timestamp]\\\"\\r\\n}\",\n start: 10370,\n end: 10464,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10464,\n end: 10466,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10466,\n end: 10468,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Mathematical operations\\r\",\n start: 10468,\n end: 10494,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 10494,\n end: 10495,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10495,\n end: 10499,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10499,\n end: 10500,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Mathematical operations:\\\"\",\n start: 10500,\n end: 10526,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10526,\n end: 10528,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10528,\n end: 10532,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10532,\n end: 10533,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"2 + 3 = [expr {2 + 3}]\\\"\",\n start: 10533,\n end: 10557,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10557,\n end: 10559,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10559,\n end: 10563,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10563,\n end: 10564,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"10 - 4 = [expr {10 - 4}]\\\"\",\n start: 10564,\n end: 10590,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10590,\n end: 10592,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10592,\n end: 10596,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10596,\n end: 10597,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"6 * 7 = [expr {6 * 7}]\\\"\",\n start: 10597,\n end: 10621,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10621,\n end: 10623,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10623,\n end: 10627,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10627,\n end: 10628,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"15 / 3 = [expr {15 / 3}]\\\"\",\n start: 10628,\n end: 10654,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10654,\n end: 10656,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10656,\n end: 10660,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10660,\n end: 10661,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"17 % 5 = [expr {17 % 5}]\\\"\",\n start: 10661,\n end: 10687,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10687,\n end: 10689,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10689,\n end: 10693,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10693,\n end: 10694,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"2^8 = [expr {2**8}]\\\"\",\n start: 10694,\n end: 10715,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10715,\n end: 10717,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10717,\n end: 10721,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10721,\n end: 10722,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"sqrt(16) = [expr {sqrt(16)}]\\\"\",\n start: 10722,\n end: 10752,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10752,\n end: 10754,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10754,\n end: 10758,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10758,\n end: 10759,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"sin(pi/2) = [expr {sin(3.14159/2)}]\\\"\",\n start: 10759,\n end: 10796,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10796,\n end: 10798,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10798,\n end: 10802,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10802,\n end: 10803,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"cos(0) = [expr {cos(0)}]\\\"\",\n start: 10803,\n end: 10829,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10829,\n end: 10831,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10831,\n end: 10835,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10835,\n end: 10836,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"log(10) = [expr {log(10)}]\\\"\",\n start: 10836,\n end: 10864,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10864,\n end: 10866,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10866,\n end: 10870,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10870,\n end: 10871,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"exp(1) = [expr {exp(1)}]\\\"\",\n start: 10871,\n end: 10897,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10897,\n end: 10899,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10899,\n end: 10903,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10903,\n end: 10904,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"abs(-5) = [expr {abs(-5)}]\\\"\",\n start: 10904,\n end: 10932,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10932,\n end: 10934,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10934,\n end: 10938,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10938,\n end: 10939,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"round(3.7) = [expr {round(3.7)}]\\\"\",\n start: 10939,\n end: 10973,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10973,\n end: 10975,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 10975,\n end: 10979,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 10979,\n end: 10980,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"floor(3.7) = [expr {floor(3.7)}]\\\"\",\n start: 10980,\n end: 11014,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11014,\n end: 11016,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11016,\n end: 11020,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11020,\n end: 11021,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"ceil(3.2) = [expr {ceil(3.2)}]\\\"\",\n start: 11021,\n end: 11053,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11053,\n end: 11055,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11055,\n end: 11057,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Random numbers\\r\",\n start: 11057,\n end: 11074,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11074,\n end: 11075,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11075,\n end: 11079,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11079,\n end: 11080,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Random integer 1-100: [expr {int(rand() * 100) + 1}]\\\"\",\n start: 11080,\n end: 11134,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11134,\n end: 11136,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11136,\n end: 11140,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11140,\n end: 11141,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Random float 0-1: [expr {rand()}]\\\"\",\n start: 11141,\n end: 11176,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11176,\n end: 11178,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11178,\n end: 11180,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Command substitution and variable substitution\\r\",\n start: 11180,\n end: 11229,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11229,\n end: 11230,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 11230,\n end: 11233,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11233,\n end: 11234,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"command\",\n start: 11234,\n end: 11241,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11241,\n end: 11242,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"date\\\"\",\n start: 11242,\n end: 11248,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11248,\n end: 11250,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11250,\n end: 11254,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11254,\n end: 11255,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Command output: [exec date]\\\"\",\n start: 11255,\n end: 11284,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11284,\n end: 11285,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11285,\n end: 11286,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# This might not work on all systems\\r\",\n start: 11286,\n end: 11323,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11323,\n end: 11324,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11324,\n end: 11326,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Variable substitution examples\\r\",\n start: 11326,\n end: 11359,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11359,\n end: 11360,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 11360,\n end: 11363,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11363,\n end: 11364,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"var1\",\n start: 11364,\n end: 11368,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11368,\n end: 11369,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Hello\\\"\",\n start: 11369,\n end: 11376,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11376,\n end: 11378,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 11378,\n end: 11381,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11381,\n end: 11382,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"var2\",\n start: 11382,\n end: 11386,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11386,\n end: 11387,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"World\\\"\",\n start: 11387,\n end: 11394,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11394,\n end: 11396,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11396,\n end: 11400,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11400,\n end: 11401,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"$var1, $var2!\\\"\",\n start: 11401,\n end: 11416,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11416,\n end: 11418,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11418,\n end: 11422,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11422,\n end: 11423,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"${var1}, ${var2}!\\\"\",\n start: 11423,\n end: 11442,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11442,\n end: 11444,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11444,\n end: 11446,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Escape sequences\\r\",\n start: 11446,\n end: 11465,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11465,\n end: 11466,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11466,\n end: 11470,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11470,\n end: 11471,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Tab:\\\\tTabbed text\\\"\",\n start: 11471,\n end: 11490,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11490,\n end: 11492,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11492,\n end: 11496,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11496,\n end: 11497,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Newline:\\\\nNew line\\\"\",\n start: 11497,\n end: 11517,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11517,\n end: 11519,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11519,\n end: 11523,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11523,\n end: 11524,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Quote: \\\\\\\"Hello\\\\\\\"\\\"\",\n start: 11524,\n end: 11542,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11542,\n end: 11544,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 11544,\n end: 11548,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11548,\n end: 11549,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Backslash: \\\\\\\\\\\"\",\n start: 11549,\n end: 11564,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11564,\n end: 11566,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11566,\n end: 11568,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Comments\\r\",\n start: 11568,\n end: 11579,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11579,\n end: 11580,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# This is a single-line comment\\r\",\n start: 11580,\n end: 11612,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11612,\n end: 11613,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11613,\n end: 11615,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Multi-line comment (using if 0)\\r\",\n start: 11615,\n end: 11649,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11649,\n end: 11650,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 11650,\n end: 11652,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11652,\n end: 11653,\n },\n TokenData {\n kind: \"Number\",\n text: \"0\",\n start: 11653,\n end: 11654,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11654,\n end: 11655,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n This is a multi-line comment\\r\\n that spans several lines\\r\\n and won't be executed\\r\\n}\",\n start: 11655,\n end: 11750,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11750,\n end: 11752,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11752,\n end: 11754,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Procedure with default arguments and variable arguments\\r\",\n start: 11754,\n end: 11812,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 11812,\n end: 11813,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 11813,\n end: 11817,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11817,\n end: 11818,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"flexible_proc\",\n start: 11818,\n end: 11831,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11831,\n end: 11832,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{required {optional \\\"default\\\"} args}\",\n start: 11832,\n end: 11868,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11868,\n end: 11869,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n puts \\\"Required: $required\\\"\\r\\n puts \\\"Optional: $optional\\\"\\r\\n puts \\\"Additional args: $args\\\"\\r\\n}\",\n start: 11869,\n end: 11972,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11972,\n end: 11974,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11974,\n end: 11976,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"flexible_proc\",\n start: 11976,\n end: 11989,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 11989,\n end: 11990,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"test\\\"\",\n start: 11990,\n end: 11996,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 11996,\n end: 11998,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"flexible_proc\",\n start: 11998,\n end: 12011,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12011,\n end: 12012,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"test\\\"\",\n start: 12012,\n end: 12018,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12018,\n end: 12019,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"custom\\\"\",\n start: 12019,\n end: 12027,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12027,\n end: 12029,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"flexible_proc\",\n start: 12029,\n end: 12042,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12042,\n end: 12043,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"test\\\"\",\n start: 12043,\n end: 12049,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12049,\n end: 12050,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"custom\\\"\",\n start: 12050,\n end: 12058,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12058,\n end: 12059,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"extra1\\\"\",\n start: 12059,\n end: 12067,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12067,\n end: 12068,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"extra2\\\"\",\n start: 12068,\n end: 12076,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12076,\n end: 12078,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12078,\n end: 12080,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Lambda-like procedures (anonymous procedures)\\r\",\n start: 12080,\n end: 12128,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 12128,\n end: 12129,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 12129,\n end: 12132,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12132,\n end: 12133,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lambda\",\n start: 12133,\n end: 12139,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12139,\n end: 12140,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12140,\n end: 12141,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"list\",\n start: 12141,\n end: 12145,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12145,\n end: 12146,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{x}\",\n start: 12146,\n end: 12149,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12149,\n end: 12150,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{return [expr {$x * 2}]}\",\n start: 12150,\n end: 12174,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12174,\n end: 12175,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12175,\n end: 12177,\n },\n TokenData {\n kind: \"Proc\",\n text: \"proc\",\n start: 12177,\n end: 12181,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12181,\n end: 12182,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"apply_lambda\",\n start: 12182,\n end: 12194,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12194,\n end: 12195,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{lambda_proc arg}\",\n start: 12195,\n end: 12212,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12212,\n end: 12213,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{\\r\\n return [apply $lambda_proc $arg]\\r\\n}\",\n start: 12213,\n end: 12255,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12255,\n end: 12257,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12257,\n end: 12259,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 12259,\n end: 12263,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12263,\n end: 12264,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Lambda result: [apply_lambda $lambda 5]\\\"\",\n start: 12264,\n end: 12305,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12305,\n end: 12307,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12307,\n end: 12309,\n },\n TokenData {\n kind: \"Comment\",\n text: \"# Eval and subst\\r\",\n start: 12309,\n end: 12326,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\n\",\n start: 12326,\n end: 12327,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 12327,\n end: 12330,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12330,\n end: 12331,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"code\",\n start: 12331,\n end: 12335,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12335,\n end: 12336,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"{puts \\\"This code was evaluated\\\"}\",\n start: 12336,\n end: 12368,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12368,\n end: 12370,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"eval\",\n start: 12370,\n end: 12374,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12374,\n end: 12375,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 12375,\n end: 12376,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"code\",\n start: 12376,\n end: 12380,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12380,\n end: 12382,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12382,\n end: 12384,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 12384,\n end: 12387,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12387,\n end: 12388,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"template\",\n start: 12388,\n end: 12396,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12396,\n end: 12397,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Hello, \\\\$name! Today is [clock format [clock seconds] -format %A]\\\"\",\n start: 12397,\n end: 12464,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12464,\n end: 12466,\n },\n TokenData {\n kind: \"Set\",\n text: \"set\",\n start: 12466,\n end: 12469,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12469,\n end: 12470,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"name\",\n start: 12470,\n end: 12474,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12474,\n end: 12475,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"TCL User\\\"\",\n start: 12475,\n end: 12485,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12485,\n end: 12487,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 12487,\n end: 12491,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12491,\n end: 12492,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12492,\n end: 12493,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"subst\",\n start: 12493,\n end: 12498,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12498,\n end: 12499,\n },\n TokenData {\n kind: \"Dollar\",\n text: \"$\",\n start: 12499,\n end: 12500,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"template\",\n start: 12500,\n end: 12508,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12508,\n end: 12509,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12509,\n end: 12511,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 12511,\n end: 12513,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"puts\",\n start: 12513,\n end: 12517,\n },\n TokenData {\n kind: \"Whitespace\",\n text: \" \",\n start: 12517,\n end: 12518,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"TCL lexer test completed successfully!\\\"\",\n start: 12518,\n end: 12558,\n },\n TokenData {\n kind: \"Error\",\n text: \"\",\n start: 12558,\n end: 12558,\n },\n ],\n errors: [],\n}" } [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] lexer::test_tcl_lexer [INFO] [stdout] [INFO] [stdout] test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "651250fa14f96ad4d95bc37d710bc91a6f778aa60630fbbe718e5778e99b195b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "651250fa14f96ad4d95bc37d710bc91a6f778aa60630fbbe718e5778e99b195b", kill_on_drop: false }` [INFO] [stdout] 651250fa14f96ad4d95bc37d710bc91a6f778aa60630fbbe718e5778e99b195b