From fa295dde6cc91962c0ed0b1119b3d4f8adfd2495 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov Date: Sun, 4 Jan 2026 12:55:03 -0300 Subject: [PATCH] =?UTF-8?q?refactor:=20replace=20`=E2=80=BC`=20with=20ASCI?= =?UTF-8?q?I=20`!`/`!!`=20for=20nav=20symbols?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/plotnik-lib/src/bytecode/format.rs | 25 +++--- ..._codegen_tests__alternations_captured.snap | 4 +- ...n_tests__alternations_captured_tagged.snap | 4 +- ...gen_tests__alternations_in_quantifier.snap | 6 +- ...__codegen_tests__alternations_labeled.snap | 4 +- ...ts__alternations_no_internal_captures.snap | 6 +- ...en_tests__alternations_null_injection.snap | 4 +- ...ternations_tagged_with_definition_ref.snap | 6 +- ...codegen_tests__alternations_unlabeled.snap | 4 +- ...degen_tests__anchors_between_siblings.snap | 2 +- ...t__codegen_tests__anchors_first_child.snap | 2 +- ...it__codegen_tests__anchors_last_child.snap | 2 +- ...mit__codegen_tests__anchors_no_anchor.snap | 2 +- ...codegen_tests__anchors_with_anonymous.snap | 4 +- ...__emit__codegen_tests__captures_basic.snap | 2 +- ...codegen_tests__captures_deeply_nested.snap | 2 +- ...mit__codegen_tests__captures_multiple.snap | 2 +- ...__codegen_tests__captures_nested_flat.snap | 2 +- ...sts__captures_optional_wrapper_struct.snap | 4 +- ..._codegen_tests__captures_struct_scope.snap | 2 +- ...egen_tests__captures_with_type_custom.snap | 2 +- ...egen_tests__captures_with_type_string.snap | 2 +- ...odegen_tests__captures_wrapper_struct.snap | 4 +- ...tests__comprehensive_multi_definition.snap | 8 +- ...__codegen_tests__definitions_multiple.snap | 4 +- ...gen_tests__definitions_nested_capture.snap | 6 +- ..._codegen_tests__definitions_reference.snap | 6 +- ...it__codegen_tests__definitions_single.snap | 2 +- ...it__codegen_tests__fields_alternation.snap | 6 +- ..._emit__codegen_tests__fields_multiple.snap | 2 +- ...__emit__codegen_tests__fields_negated.snap | 2 +- ...b__emit__codegen_tests__fields_single.snap | 2 +- ..._emit__codegen_tests__nodes_anonymous.snap | 2 +- ...lib__emit__codegen_tests__nodes_error.snap | 2 +- ...b__emit__codegen_tests__nodes_missing.snap | 2 +- ...lib__emit__codegen_tests__nodes_named.snap | 2 +- ...it__codegen_tests__nodes_wildcard_any.snap | 2 +- ...__codegen_tests__nodes_wildcard_named.snap | 2 +- ...__codegen_tests__optional_first_child.snap | 4 +- ...odegen_tests__optional_null_injection.snap | 4 +- ..._tests__quantifiers_first_child_array.snap | 4 +- ...__codegen_tests__quantifiers_optional.snap | 4 +- ...tests__quantifiers_optional_nongreedy.snap | 4 +- ...emit__codegen_tests__quantifiers_plus.snap | 4 +- ...gen_tests__quantifiers_plus_nongreedy.snap | 4 +- ..._tests__quantifiers_repeat_navigation.snap | 4 +- ...s__quantifiers_sequence_in_called_def.snap | 8 +- ...emit__codegen_tests__quantifiers_star.snap | 4 +- ...gen_tests__quantifiers_star_nongreedy.snap | 4 +- ...degen_tests__quantifiers_struct_array.snap | 4 +- ...emit__codegen_tests__recursion_simple.snap | 4 +- ...sts__recursion_with_structured_result.snap | 6 +- ..._emit__codegen_tests__sequences_basic.snap | 2 +- ...odegen_tests__sequences_in_quantifier.snap | 4 +- ...emit__codegen_tests__sequences_nested.snap | 2 +- ...odegen_tests__sequences_with_captures.snap | 2 +- docs/binary-format/07-dump-format.md | 12 +-- docs/binary-format/08-trace-format.md | 86 ++++++++++--------- docs/tree-navigation.md | 2 +- 59 files changed, 164 insertions(+), 155 deletions(-) diff --git a/crates/plotnik-lib/src/bytecode/format.rs b/crates/plotnik-lib/src/bytecode/format.rs index 61fe6005..8f41647a 100644 --- a/crates/plotnik-lib/src/bytecode/format.rs +++ b/crates/plotnik-lib/src/bytecode/format.rs @@ -38,7 +38,7 @@ pub mod cols { #[derive(Clone, Copy, Debug)] pub struct Symbol { /// Left modifier (2 chars): mode indicator or spaces. - /// Examples: " ", " !", " ‼" + /// Examples: " ", " !", "!!" pub left: &'static str, /// Center symbol (1 char): direction or status. /// Examples: "ε", "▽", "▷", "△", "●", "○", "⬥", "▶", "◀" @@ -86,29 +86,29 @@ impl Symbol { /// | --------------- | ------- | ----------------------------------- | /// | Stay | (blank) | No movement, 5 spaces | /// | Stay (epsilon) | ε | Only when no type/field constraints | -/// | StayExact | ‼· | Stay at position, exact match only | +/// | StayExact | !!! | Stay at position, exact match only | /// | Down | ▽ | First child, skip any | /// | DownSkip | !▽ | First child, skip trivia | -/// | DownExact | ‼▽ | First child, exact | +/// | DownExact | !!▽ | First child, exact | /// | Next | ▷ | Next sibling, skip any | /// | NextSkip | !▷ | Next sibling, skip trivia | -/// | NextExact | ‼▷ | Next sibling, exact | +/// | NextExact | !!▷ | Next sibling, exact | /// | Up(n) | △ⁿ | Ascend n levels, skip any | /// | UpSkipTrivia(n) | !△ⁿ | Ascend n, must be last non-trivia | -/// | UpExact(n) | ‼△ⁿ | Ascend n, must be last child | +/// | UpExact(n) | !!△ⁿ | Ascend n, must be last child | pub fn nav_symbol(nav: Nav) -> Symbol { match nav { Nav::Stay => Symbol::EMPTY, - Nav::StayExact => Symbol::new(" ‼", "·", " "), + Nav::StayExact => Symbol::new(" ", "!!!", " "), Nav::Down => Symbol::new(" ", "▽", " "), Nav::DownSkip => Symbol::new(" !", "▽", " "), - Nav::DownExact => Symbol::new(" ‼", "▽", " "), + Nav::DownExact => Symbol::new("!!", "▽", " "), Nav::Next => Symbol::new(" ", "▷", " "), Nav::NextSkip => Symbol::new(" !", "▷", " "), - Nav::NextExact => Symbol::new(" ‼", "▷", " "), + Nav::NextExact => Symbol::new("!!", "▷", " "), Nav::Up(n) => Symbol::new(" ", "△", superscript_suffix(n)), Nav::UpSkipTrivia(n) => Symbol::new(" !", "△", superscript_suffix(n)), - Nav::UpExact(n) => Symbol::new(" ‼", "△", superscript_suffix(n)), + Nav::UpExact(n) => Symbol::new("!!", "△", superscript_suffix(n)), } } @@ -316,14 +316,17 @@ mod tests { fn test_symbol_format() { assert_eq!(Symbol::EMPTY.format(), " "); assert_eq!(Symbol::EPSILON.format(), " ε "); + assert_eq!(nav_symbol(Nav::StayExact).format(), " !!! "); assert_eq!(nav_symbol(Nav::Down).format(), " ▽ "); assert_eq!(nav_symbol(Nav::DownSkip).format(), " !▽ "); - assert_eq!(nav_symbol(Nav::DownExact).format(), " ‼▽ "); + assert_eq!(nav_symbol(Nav::DownExact).format(), "!!▽ "); assert_eq!(nav_symbol(Nav::Next).format(), " ▷ "); + assert_eq!(nav_symbol(Nav::NextSkip).format(), " !▷ "); + assert_eq!(nav_symbol(Nav::NextExact).format(), "!!▷ "); assert_eq!(nav_symbol(Nav::Up(1)).format(), " △ "); assert_eq!(nav_symbol(Nav::Up(2)).format(), " △² "); assert_eq!(nav_symbol(Nav::UpSkipTrivia(1)).format(), " !△ "); - assert_eq!(nav_symbol(Nav::UpExact(1)).format(), " ‼△ "); + assert_eq!(nav_symbol(Nav::UpExact(1)).format(), "!!△ "); } #[test] diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured.snap index 9448230b..6a5d681c 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured.snap @@ -35,5 +35,5 @@ Test: 04 ε 09, 11 06 ▶ 07 ε [EndObj] 06 - 09 ‼· (identifier) [Node Set(M0)] 07 - 11 ‼· (number) [Node Set(M0)] 07 + 09 !!! (identifier) [Node Set(M0)] 07 + 11 !!! (number) [Node Set(M0)] 07 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured_tagged.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured_tagged.snap index 38113d4f..b4a2313e 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured_tagged.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_captured_tagged.snap @@ -47,8 +47,8 @@ Test: 06 ▶ 07 ε [EndObj] 06 09 ε [EndEnum Set(M4)] 07 - 11 ‼· (identifier) [Node Set(M0)] 09 + 11 !!! (identifier) [Node Set(M0)] 09 13 ε [Enum(M2)] 11 15 ε [EndEnum Set(M4)] 07 - 17 ‼· (number) [Node Set(M1)] 15 + 17 !!! (number) [Node Set(M1)] 15 19 ε [Enum(M3)] 17 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_in_quantifier.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_in_quantifier.snap index 720ee1bc..3bbc448a 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_in_quantifier.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_in_quantifier.snap @@ -48,7 +48,7 @@ Test = 01 :: T6 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (object) 05 + 04 !!! (object) 05 05 ε [Arr] 07 07 ε 42, 19 09 ε [EndArr Set(M5)] 11 @@ -59,10 +59,10 @@ Test: 17 ε [EndObj] 16 19 ε [EndArr Set(M5)] 17 21 ε [EndEnum Set(M4)] 12 - 23 ‼· (pair) [Node Set(M0)] 21 + 23 !!! (pair) [Node Set(M0)] 21 25 ε [Enum(M2)] 23 27 ε [EndEnum Set(M4)] 12 - 29 ‼· (shorthand_property_identifier) [Node Set(M1)] 27 + 29 !!! (shorthand_property_identifier) [Node Set(M1)] 27 31 ε [Enum(M3)] 29 33 ε 25, 31 35 ε [Obj] 33 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_labeled.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_labeled.snap index cbc9387c..eadc7d37 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_labeled.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_labeled.snap @@ -45,8 +45,8 @@ Test: 02 ε 09, 15 04 ▶ 05 ε [EndEnum] 04 - 07 ‼· (identifier) [Node Set(M0)] 05 + 07 !!! (identifier) [Node Set(M0)] 05 09 ε [Enum(M2)] 07 11 ε [EndEnum] 04 - 13 ‼· (number) [Node Set(M1)] 11 + 13 !!! (number) [Node Set(M1)] 11 15 ε [Enum(M3)] 13 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_no_internal_captures.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_no_internal_captures.snap index 17784bc1..60bedc69 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_no_internal_captures.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_no_internal_captures.snap @@ -33,10 +33,10 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (program) 05 + 04 !!! (program) 05 05 ε 10, 12 07 ▶ 08 ε [EndObj] 07 - 10 ‼▽ (identifier) [Node Set(M0)] 14 - 12 ‼▽ (number) [Node Set(M0)] 14 + 10 !!▽ (identifier) [Node Set(M0)] 14 + 12 !!▽ (number) [Node Set(M0)] 14 14 △ 08 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_null_injection.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_null_injection.snap index dbab13be..1da1ecff 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_null_injection.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_null_injection.snap @@ -42,7 +42,7 @@ Test: 04 ε 11, 15 06 ▶ 07 ε [EndObj] 06 - 09 ‼· (identifier) [Node Set(M0)] 07 + 09 !!! (identifier) [Node Set(M0)] 07 11 ε [Null Set(M1)] 09 - 13 ‼· (number) [Node Set(M1)] 07 + 13 !!! (number) [Node Set(M1)] 07 15 ε [Null Set(M0)] 13 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_tagged_with_definition_ref.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_tagged_with_definition_ref.snap index b10ce03a..59d7ee12 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_tagged_with_definition_ref.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_tagged_with_definition_ref.snap @@ -47,7 +47,7 @@ Test = 09 :: T4 Inner: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (identifier) [Node Set(M0)] 06 + 04 !!! (identifier) [Node Set(M0)] 06 06 ε [EndObj] 08 08 ▶ @@ -58,8 +58,8 @@ Test: 14 ▶ 15 ε [EndObj] 14 17 ε [EndEnum Set(M4)] 15 - 19 ‼· (Inner) 17 ⯇ + 19 !!! (Inner) 17 ⯇ 20 ε [Enum(M2)] 19 22 ε [EndEnum Set(M4)] 15 - 24 ‼· (number) [Node Set(M1)] 22 + 24 !!! (number) [Node Set(M1)] 22 26 ε [Enum(M3)] 24 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_unlabeled.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_unlabeled.snap index 20294cbd..3aea3a52 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_unlabeled.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__alternations_unlabeled.snap @@ -42,7 +42,7 @@ Test: 04 ε 11, 15 06 ▶ 07 ε [EndObj] 06 - 09 ‼· (identifier) [Node Set(M0)] 07 + 09 !!! (identifier) [Node Set(M0)] 07 11 ε [Null Set(M1)] 09 - 13 ‼· (string) [Node Set(M1)] 07 + 13 !!! (string) [Node Set(M1)] 07 15 ε [Null Set(M0)] 13 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_between_siblings.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_between_siblings.snap index 65800c2c..9d27fbe3 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_between_siblings.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_between_siblings.snap @@ -29,7 +29,7 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 ▽ (a) 4 4 !▷ (b) 5 5 △ 6 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_first_child.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_first_child.snap index d0d373b7..e6d98fc1 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_first_child.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_first_child.snap @@ -28,7 +28,7 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 !▽ (first) 4 4 △ 5 5 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_last_child.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_last_child.snap index 9295464b..71b1a2f1 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_last_child.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_last_child.snap @@ -28,7 +28,7 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 ▽ (last) 4 4 !△ 5 5 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_no_anchor.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_no_anchor.snap index f49fffa9..521ada88 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_no_anchor.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_no_anchor.snap @@ -29,7 +29,7 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 ▽ (a) 4 4 ▷ (b) 5 5 △ 6 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_with_anonymous.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_with_anonymous.snap index c199ba90..b984bca7 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_with_anonymous.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__anchors_with_anonymous.snap @@ -29,8 +29,8 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 ▽ (+) 4 - 4 ‼▷ (next) 5 + 4 !!▷ (next) 5 5 △ 6 6 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_basic.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_basic.snap index 846c2ffc..bed0d294 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_basic.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_basic.snap @@ -31,6 +31,6 @@ Test = 1 :: T1 Test: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (identifier) [Node Set(M0)] 6 + 4 !!! (identifier) [Node Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_deeply_nested.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_deeply_nested.snap index 73313013..61ec13b9 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_deeply_nested.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_deeply_nested.snap @@ -45,7 +45,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (a) [Node Set(M0)] 06 + 04 !!! (a) [Node Set(M0)] 06 06 ▽ (b) [Node Set(M1)] 08 08 ▽ (c) [Node Set(M2)] 10 10 ▽ (d) [Node Set(M3)] 12 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_multiple.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_multiple.snap index 18b15296..afe8f322 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_multiple.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_multiple.snap @@ -39,7 +39,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (binary_expression) 05 + 04 !!! (binary_expression) 05 05 ▽ (identifier) [Node Set(M0)] 07 07 ▷ (number) [Node Set(M1)] 09 09 △ 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_nested_flat.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_nested_flat.snap index 52d70e77..6c77a135 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_nested_flat.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_nested_flat.snap @@ -39,7 +39,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (a) [Node Set(M0)] 06 + 04 !!! (a) [Node Set(M0)] 06 06 ▽ (b) [Node Set(M1)] 08 08 ▽ (c) [Node Set(M2)] 10 10 △ 11 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_optional_wrapper_struct.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_optional_wrapper_struct.snap index 7ad1f6c9..15625c48 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_optional_wrapper_struct.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_optional_wrapper_struct.snap @@ -47,10 +47,10 @@ Test: 09 ε [EndObj] 08 11 ε [EndObj Set(M2)] 09 13 ε [EndObj Set(M1)] 11 - 15 ‼· (identifier) [Node Set(M0)] 13 + 15 !!! (identifier) [Node Set(M0)] 13 17 ε [Obj] 15 19 ε [Null Set(M1)] 11 21 ▷ 24 22 ε 21, 19 24 ε 17, 22 - 26 ‼· 24 + 26 !!! 24 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_struct_scope.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_struct_scope.snap index 7a521b4a..61bc22e2 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_struct_scope.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_struct_scope.snap @@ -40,7 +40,7 @@ Test: 01 ε 02 02 ε [Obj] 04 04 ε [Obj] 06 - 06 ‼· (a) [Node Set(M0)] 08 + 06 !!! (a) [Node Set(M0)] 08 08 ▷ (b) [Node Set(M1)] 10 10 ε [EndObj Set(M2)] 12 12 ε [EndObj] 14 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_custom.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_custom.snap index bc139f08..da6fb6da 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_custom.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_custom.snap @@ -34,6 +34,6 @@ Test = 1 :: T2 Test: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (identifier) [Node Set(M0)] 6 + 4 !!! (identifier) [Node Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_string.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_string.snap index 511807eb..c2b9499d 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_string.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_with_type_string.snap @@ -31,6 +31,6 @@ Test = 1 :: T1 Test: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (identifier) [Text Set(M0)] 6 + 4 !!! (identifier) [Text Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_wrapper_struct.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_wrapper_struct.snap index 31e8f4eb..5bbcf4f0 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_wrapper_struct.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__captures_wrapper_struct.snap @@ -54,13 +54,13 @@ Test: 15 ε [EndArr Set(M3)] 13 17 ε [EndObj Set(M2)] 08 19 ▷ (number) [Node Set(M1)] 17 - 21 ‼· (identifier) [Node Set(M0)] 19 + 21 !!! (identifier) [Node Set(M0)] 19 23 ε [Obj] 21 25 ε [Obj] 23 27 ▷ 30 28 ε 27, 15 30 ε 25, 28 - 32 ‼· 30 + 32 !!! 30 33 ▷ 36 34 ε 33, 15 36 ε 25, 34 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__comprehensive_multi_definition.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__comprehensive_multi_definition.snap index f0dff5ff..08213208 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__comprehensive_multi_definition.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__comprehensive_multi_definition.snap @@ -67,7 +67,7 @@ Ident = 01 :: T02 Ident: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (identifier) [Text Set(M0)] 06 + 04 !!! (identifier) [Text Set(M0)] 06 06 ε [EndObj] 08 08 ▶ @@ -78,7 +78,7 @@ Expression: Assignment: 12 ε 13 13 ε [Obj] 15 - 15 ‼· (assignment_expression) 16 + 15 !!! (assignment_expression) 16 16 ▽ left: (identifier) [Node Set(M6)] 18 18 ▷ right: (Expression) 19 ⯇ 19 ε [Set(M5)] 21 @@ -87,8 +87,8 @@ Assignment: 24 ▶ 25 ▶ 26 ε [EndEnum] 25 - 28 ‼· (number) [Node Set(M1)] 26 + 28 !!! (number) [Node Set(M1)] 26 30 ε [Enum(M3)] 28 32 ε [EndEnum] 25 - 34 ‼· (identifier) [Node Set(M2)] 32 + 34 !!! (identifier) [Node Set(M2)] 32 36 ε [Enum(M4)] 34 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_multiple.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_multiple.snap index 52b674ac..acfe98bc 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_multiple.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_multiple.snap @@ -39,13 +39,13 @@ Foo = 01 :: T1 Foo: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (identifier) [Node Set(M0)] 06 + 04 !!! (identifier) [Node Set(M0)] 06 06 ε [EndObj] 08 08 ▶ Bar: 09 ε 10 10 ε [Obj] 12 - 12 ‼· (string) [Node Set(M1)] 14 + 12 !!! (string) [Node Set(M1)] 14 14 ε [EndObj] 16 16 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_nested_capture.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_nested_capture.snap index 93cc5df6..e199cecb 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_nested_capture.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_nested_capture.snap @@ -45,7 +45,7 @@ Outer = 11 :: T4 Inner: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (call) 05 + 04 !!! (call) 05 05 ▽ (identifier) [Node Set(M0)] 07 07 △ 08 08 ε [EndObj] 10 @@ -54,7 +54,7 @@ Inner: Outer: 11 ε 12 12 ε [Obj] 14 - 14 ‼· (parent) 15 + 14 !!! (parent) 15 15 ε [Arr] 17 17 ε 41, 29 19 ε [EndArr Set(M3)] 21 @@ -65,7 +65,7 @@ Outer: 27 ε [EndObj] 26 29 ε [EndArr Set(M3)] 27 31 ε [Set(M2)] 22 - 33 ‼· (Inner) 31 ⯇ + 33 !!! (Inner) 31 ⯇ 34 ε [Obj] 33 36 ▷ 39 37 ε 36, 29 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_reference.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_reference.snap index 53486938..f4e6b252 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_reference.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_reference.snap @@ -49,14 +49,14 @@ Expression: Root: 06 ε 07 07 ε [Obj] 09 - 09 ‼· (function_declaration) 10 + 09 !!! (function_declaration) 10 10 ▽ name: (identifier) [Node Set(M2)] 12 12 △ 13 13 ε [EndObj] 15 15 ▶ 16 ▶ 17 ε [EndObj] 16 - 19 ‼· (identifier) [Node Set(M0)] 17 + 19 !!! (identifier) [Node Set(M0)] 17 21 ε [Null Set(M1)] 19 - 23 ‼· (number) [Node Set(M1)] 17 + 23 !!! (number) [Node Set(M1)] 17 25 ε [Null Set(M0)] 23 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_single.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_single.snap index c53e39c1..b9aa992b 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_single.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__definitions_single.snap @@ -31,6 +31,6 @@ Foo = 1 :: T1 Foo: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (identifier) [Node Set(M0)] 6 + 4 !!! (identifier) [Node Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_alternation.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_alternation.snap index 158d6676..1cb871c8 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_alternation.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_alternation.snap @@ -41,13 +41,13 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (call_expression) 05 + 04 !!! (call_expression) 05 05 ▽ function: _ 06 06 ε 13, 17 08 ▶ 09 ε [EndObj] 08 - 11 ‼· (identifier) [Node Set(M0)] 19 + 11 !!! (identifier) [Node Set(M0)] 19 13 ε [Null Set(M1)] 11 - 15 ‼· (number) [Node Set(M1)] 19 + 15 !!! (number) [Node Set(M1)] 19 17 ε [Null Set(M0)] 15 19 △ 09 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_multiple.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_multiple.snap index ab841ddd..52187130 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_multiple.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_multiple.snap @@ -39,7 +39,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (binary_expression) 05 + 04 !!! (binary_expression) 05 05 ▽ left: _ [Node Set(M0)] 07 07 ▷ right: _ [Node Set(M1)] 09 09 △ 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_negated.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_negated.snap index 4090b55c..3d3959fa 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_negated.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_negated.snap @@ -33,7 +33,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· -type_parameters (function_declaration) 06 + 04 !!! -type_parameters (function_declaration) 06 06 ▽ name: (identifier) [Node Set(M0)] 08 08 △ 09 09 ε [EndObj] 11 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_single.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_single.snap index 77a26d02..5da09dbb 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_single.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__fields_single.snap @@ -32,7 +32,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (function_declaration) 05 + 04 !!! (function_declaration) 05 05 ▽ name: (identifier) [Node Set(M0)] 07 07 △ 08 08 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_anonymous.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_anonymous.snap index 8580f9fb..d38c9541 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_anonymous.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_anonymous.snap @@ -32,7 +32,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (binary_expression) 05 + 04 !!! (binary_expression) 05 05 ▽ (+) [Node Set(M0)] 07 07 △ 08 08 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_error.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_error.snap index 76cec806..5f7551b3 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_error.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_error.snap @@ -31,6 +31,6 @@ Test = 1 :: T1 Test: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (ERROR) [Node Set(M0)] 6 + 4 !!! (ERROR) [Node Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_missing.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_missing.snap index 986c1262..28d85e67 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_missing.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_missing.snap @@ -31,6 +31,6 @@ Test = 1 :: T1 Test: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (MISSING) [Node Set(M0)] 6 + 4 !!! (MISSING) [Node Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_named.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_named.snap index ac0b74f5..ebe2a889 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_named.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_named.snap @@ -31,6 +31,6 @@ Test = 1 :: T1 Test: 1 ε 2 2 ε [Obj] 4 - 4 ‼· (identifier) [Node Set(M0)] 6 + 4 !!! (identifier) [Node Set(M0)] 6 6 ε [EndObj] 8 8 ▶ diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_any.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_any.snap index ade43594..dc526594 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_any.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_any.snap @@ -31,7 +31,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (pair) 05 + 04 !!! (pair) 05 05 ▽ key: _ [Node Set(M0)] 07 07 △ 08 08 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_named.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_named.snap index 8e1c6bbb..ce0db88e 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_named.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__nodes_wildcard_named.snap @@ -31,7 +31,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (pair) 05 + 04 !!! (pair) 05 05 ▽ key: _ [Node Set(M0)] 07 07 △ 08 08 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_first_child.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_first_child.snap index 54f2a7a8..8026b80b 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_first_child.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_first_child.snap @@ -40,14 +40,14 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (program) 05 + 04 !!! (program) 05 05 ε 23, 14 07 ▶ 08 ε [EndObj] 07 10 ▽ (number) [Node Set(M1)] 24 12 ▷ (number) [Node Set(M1)] 24 14 ε [Null Set(M0)] 10 - 16 ‼· (identifier) [Node Set(M0)] 12 + 16 !!! (identifier) [Node Set(M0)] 12 18 ▷ 21 19 ε 18, 14 21 ε 16, 19 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_null_injection.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_null_injection.snap index e312516c..e578dd1a 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_null_injection.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__optional_null_injection.snap @@ -33,9 +33,9 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (function_declaration) 05 + 04 !!! (function_declaration) 05 05 ε 20, 13 - 07 ‼· (decorator) [Node Set(M0)] 09 + 07 !!! (decorator) [Node Set(M0)] 09 09 △ 11 10 ▶ 11 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_first_child_array.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_first_child_array.snap index 01a96765..4913917b 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_first_child_array.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_first_child_array.snap @@ -40,10 +40,10 @@ Test = 01 :: T2 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (array) 05 + 04 !!! (array) 05 05 ε [Arr] 07 07 ε 29, 22 - 09 ‼· (identifier) [Node Push] 11 + 09 !!! (identifier) [Node Push] 11 11 ε 35, 20 13 ▶ 14 ε [EndObj] 13 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional.snap index e312516c..e578dd1a 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional.snap @@ -33,9 +33,9 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (function_declaration) 05 + 04 !!! (function_declaration) 05 05 ε 20, 13 - 07 ‼· (decorator) [Node Set(M0)] 09 + 07 !!! (decorator) [Node Set(M0)] 09 09 △ 11 10 ▶ 11 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional_nongreedy.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional_nongreedy.snap index b79cf1fc..3c29e256 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional_nongreedy.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_optional_nongreedy.snap @@ -33,9 +33,9 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (function_declaration) 05 + 04 !!! (function_declaration) 05 05 ε 13, 20 - 07 ‼· (decorator) [Node Set(M0)] 09 + 07 !!! (decorator) [Node Set(M0)] 09 09 △ 11 10 ▶ 11 ε [EndObj] 10 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus.snap index 9168ac9e..db8d7b20 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus.snap @@ -33,8 +33,8 @@ Test: 01 ε 02 02 ε [Obj] 04 04 ε [Arr] 06 - 06 ‼· 17 - 07 ‼· (identifier) [Node Push] 09 + 06 !!! 17 + 07 !!! (identifier) [Node Push] 09 09 ε 24, 14 11 ▶ 12 ε [EndObj] 11 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus_nongreedy.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus_nongreedy.snap index bdb5388f..6f10bac5 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus_nongreedy.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_plus_nongreedy.snap @@ -33,8 +33,8 @@ Test: 01 ε 02 02 ε [Obj] 04 04 ε [Arr] 06 - 06 ‼· 17 - 07 ‼· (identifier) [Node Push] 09 + 06 !!! 17 + 07 !!! (identifier) [Node Push] 09 09 ε 14, 24 11 ▶ 12 ε [EndObj] 11 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_repeat_navigation.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_repeat_navigation.snap index 8c2c15f2..08f9c14a 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_repeat_navigation.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_repeat_navigation.snap @@ -33,12 +33,12 @@ Test = 01 :: T2 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (function_declaration) 05 + 04 !!! (function_declaration) 05 05 ε [Arr] 07 07 ε 26, 19 09 ε [EndArr Set(M0)] 11 11 △ 17 - 12 ‼· (decorator) [Node Push] 14 + 12 !!! (decorator) [Node Push] 14 14 ε 32, 09 16 ▶ 17 ε [EndObj] 16 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_sequence_in_called_def.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_sequence_in_called_def.snap index 79a1df56..a03f9285 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_sequence_in_called_def.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_sequence_in_called_def.snap @@ -48,7 +48,7 @@ Test = 16 :: T4 Item: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (identifier) [Node Set(M0)] 06 + 04 !!! (identifier) [Node Set(M0)] 06 06 ε [EndObj] 08 08 ▶ @@ -61,7 +61,7 @@ Collect: Test: 16 ε 17 17 ε [Obj] 19 - 19 ‼· (parent) 20 + 19 !!! (parent) 20 20 ▽ (Collect) 21 ⯇ 21 △ 22 22 ε [EndObj] 24 @@ -72,12 +72,12 @@ Test: 30 ε [EndObj] 29 32 ε [EndArr Set(M3)] 30 34 ε [Set(M2)] 25 - 36 ‼· (Item) 34 ⯇ + 36 !!! (Item) 34 ⯇ 37 ε [Obj] 36 39 ▷ 42 40 ε 39, 32 42 ε 37, 40 - 44 ‼· 42 + 44 !!! 42 45 ▷ 48 46 ε 45, 32 48 ε 37, 46 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star.snap index 61cf060d..16035d13 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star.snap @@ -34,7 +34,7 @@ Test: 02 ε [Obj] 04 04 ε [Arr] 06 06 ε 22, 15 - 08 ‼· (identifier) [Node Push] 10 + 08 !!! (identifier) [Node Push] 10 10 ε 28, 15 12 ▶ 13 ε [EndObj] 12 @@ -42,7 +42,7 @@ Test: 17 ▷ 20 18 ε 17, 15 20 ε 08, 18 - 22 ‼· 20 + 22 !!! 20 23 ▷ 26 24 ε 23, 15 26 ε 08, 24 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star_nongreedy.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star_nongreedy.snap index 07e63470..da0fdddc 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star_nongreedy.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_star_nongreedy.snap @@ -34,7 +34,7 @@ Test: 02 ε [Obj] 04 04 ε [Arr] 06 06 ε 15, 22 - 08 ‼· (identifier) [Node Push] 10 + 08 !!! (identifier) [Node Push] 10 10 ε 15, 28 12 ▶ 13 ε [EndObj] 12 @@ -42,7 +42,7 @@ Test: 17 ▷ 20 18 ε 15, 17 20 ε 18, 08 - 22 ‼· 20 + 22 !!! 20 23 ▷ 26 24 ε 15, 23 26 ε 24, 08 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_struct_array.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_struct_array.snap index 8bff523b..adefc3b2 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_struct_array.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__quantifiers_struct_array.snap @@ -43,7 +43,7 @@ Test = 01 :: T3 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (array) 05 + 04 !!! (array) 05 05 ε [Arr] 07 07 ε 32, 19 09 ε [EndArr Set(M2)] 11 @@ -54,7 +54,7 @@ Test: 17 ε [EndObj] 16 19 ε [EndArr Set(M2)] 17 21 ▷ (number) [Node Set(M1)] 12 - 23 ‼· (identifier) [Node Set(M0)] 21 + 23 !!! (identifier) [Node Set(M0)] 21 25 ε [Obj] 23 27 ▷ 30 28 ε 27, 19 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_simple.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_simple.snap index ec160a34..3133c420 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_simple.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_simple.snap @@ -57,10 +57,10 @@ Expr: 06 △ 14 07 ▶ 08 ε [EndEnum] 07 - 10 ‼· (number) [Text Set(M0)] 08 + 10 !!! (number) [Text Set(M0)] 08 12 ε [Enum(M3)] 10 14 ε [EndEnum] 07 16 ▷ arguments: (Expr) 04 ⯇ 17 ▽ function: (identifier) [Node Set(M1)] 16 - 19 ‼· (call_expression) 17 + 19 !!! (call_expression) 17 20 ε [Enum(M4)] 19 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_with_structured_result.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_with_structured_result.snap index f6acb9ac..3b2f2197 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_with_structured_result.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__recursion_with_structured_result.snap @@ -66,7 +66,7 @@ Expr: Test: 04 ε 05 05 ε [Obj] 07 - 07 ‼· (program) 08 + 07 !!! (program) 08 08 ▽ (Expr) 09 ⯇ 09 ε [Set(M5)] 11 11 △ 12 @@ -76,10 +76,10 @@ Test: 17 △ 25 18 ▶ 19 ε [EndEnum] 18 - 21 ‼· (number) [Text Set(M0)] 19 + 21 !!! (number) [Text Set(M0)] 19 23 ε [Enum(M3)] 21 25 ε [EndEnum] 18 27 ▷ arguments: (Expr) 15 ⯇ 28 ▽ function: (identifier) [Node Set(M1)] 27 - 30 ‼· (call_expression) 28 + 30 !!! (call_expression) 28 31 ε [Enum(M4)] 30 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_basic.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_basic.snap index 202e0ae3..1cc34458 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_basic.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_basic.snap @@ -29,7 +29,7 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 ▽ (a) 4 4 ▷ (b) 5 5 △ 6 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_in_quantifier.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_in_quantifier.snap index 8e259fea..3d797e54 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_in_quantifier.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_in_quantifier.snap @@ -34,7 +34,7 @@ Test = 01 :: T2 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (parent) 05 + 04 !!! (parent) 05 05 ε [Arr] 07 07 ε 27, 19 09 ε [EndArr Set(M0)] 11 @@ -44,7 +44,7 @@ Test: 16 ▶ 17 ε [EndObj] 16 19 ε [EndArr Set(M0)] 17 - 21 ‼· (a) 12 + 21 !!! (a) 12 22 ▷ 25 23 ε 22, 19 25 ε 21, 23 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_nested.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_nested.snap index d32b5e58..9cd04328 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_nested.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_nested.snap @@ -31,7 +31,7 @@ Test = 1 :: T0 Test: 1 ε 2 - 2 ‼· (parent) 3 + 2 !!! (parent) 3 3 ▽ (a) 4 4 ▷ (b) 5 5 ▷ (c) 6 diff --git a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_with_captures.snap b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_with_captures.snap index 16e53e0a..8ff88f3a 100644 --- a/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_with_captures.snap +++ b/crates/plotnik-lib/src/emit/snapshots/plotnik_lib__emit__codegen_tests__sequences_with_captures.snap @@ -37,7 +37,7 @@ Test = 01 :: T1 Test: 01 ε 02 02 ε [Obj] 04 - 04 ‼· (parent) 05 + 04 !!! (parent) 05 05 ▽ (a) [Node Set(M0)] 07 07 ▷ (b) [Node Set(M1)] 09 09 △ 10 diff --git a/docs/binary-format/07-dump-format.md b/docs/binary-format/07-dump-format.md index 354fcd08..7c681066 100644 --- a/docs/binary-format/07-dump-format.md +++ b/docs/binary-format/07-dump-format.md @@ -158,7 +158,7 @@ Each line follows a fixed column layout: ``` - **Center**: Direction (ε, ▽, ▷, △) -- **Left**: Mode modifier (`!` skip trivia, `‼` exact) +- **Left**: Mode modifier (`!` skip trivia, `!!` exact) - **Right**: Level suffix (¹, ², ³... for Up) Examples: @@ -168,7 +168,7 @@ Examples: - ` ▷ ` — next, skip any - ` △ ` — up 1 level (no superscript) - `!▽ ` — down, skip trivia -- `‼▷ ` — next, exact +- `!!▷ ` — next, exact | Instruction | Format | | ---------------- | --------------------------------------------- | @@ -189,17 +189,17 @@ Effects in `[pre]` execute before match attempt; effects in `[post]` execute aft | --------------- | ------- | ----------------------------------- | | Stay | (blank) | No movement, 5 spaces | | Stay (epsilon) | ε | Only when no type/field constraints | -| StayExact | ‼· | No movement, exact match only | +| StayExact | !!! | No movement, exact match only | | Down | ▽ | First child, skip any | | DownSkip | !▽ | First child, skip trivia | -| DownExact | ‼▽ | First child, exact | +| DownExact | !!▽ | First child, exact | | Next | ▷ | Next sibling, skip any | | NextSkip | !▷ | Next sibling, skip trivia | -| NextExact | ‼▷ | Next sibling, exact | +| NextExact | !!▷ | Next sibling, exact | | Up(1) | △ | Ascend 1 level (no superscript) | | Up(n≥2) | △ⁿ | Ascend n levels, skip any | | UpSkipTrivia(n) | !△ⁿ | Ascend n, must be last non-trivia | -| UpExact(n) | ‼△ⁿ | Ascend n, must be last child | +| UpExact(n) | !!△ⁿ | Ascend n, must be last child | **Note**: `ε` only appears when all three conditions are met: Stay nav, no type constraint, no field constraint. A step matching `(identifier)` at current position shows spaces, not `ε`. diff --git a/docs/binary-format/08-trace-format.md b/docs/binary-format/08-trace-format.md index 23a2d666..564ba4da 100644 --- a/docs/binary-format/08-trace-format.md +++ b/docs/binary-format/08-trace-format.md @@ -20,7 +20,7 @@ plotnik trace query.ptk source.js --fuel 10000 | `-v` | all | on match/failure | Developer | | `-vv` | all | on all (incl. nav) | Deep debugging | -**Text budget**: Node text is truncated to ~30 characters with `…` when displayed. +**Text budget**: Node text is truncated to 20 characters with `…` when displayed. --- @@ -54,16 +54,19 @@ Below each instruction, sub-lines show what happened during execution. Each sub- | Symbol | Meaning | | ------- | --------------------------------- | +| (blank) | Navigation: stayed at position | | ` ▽ ` | Navigation: descended to child | | ` ▷ ` | Navigation: moved to sibling | | ` △ ` | Navigation: ascended to parent | | ` ● ` | Match: success | | ` ○ ` | Match: failure | | ` ⬥ ` | Effect: data capture or structure | -| ` ⬦ ` | Effect: suppressed (inside @_) | +| ` ⬦ ` | Effect: suppressed (inside @\_) | | ` ▶ ` | Call: entering definition | | ` ◀ ` | Return: back from definition | +Navigation sub-lines show the node kind we arrived at. Match sub-lines follow, showing success (`●`) or failure (`○`) for type/field checks. + ### Backtrack Line Backtrack is an instruction-level line (not a sub-line) showing checkpoint restoration: @@ -398,6 +401,7 @@ Type check fails at root—no navigation occurs. The CLI exits with code 1. ## Trace 7: Suppressive Capture (`-v`) Suppressive captures (`@_`) match structurally but don't emit effects. The trace shows: + - `⬥ SuppressBegin` / `⬥ SuppressEnd` when entering/exiting suppression - `⬦` for data effects that are suppressed - `⬦ SuppressBegin` / `⬦ SuppressEnd` for nested suppression (already inside another `@_`) @@ -503,25 +507,26 @@ Hidden: ## Sub-Line Reference -| Symbol | Format | Example | -| ------- | ----------------- | --------------------------- | -| ` ▽ ` | `▽ kind` | `▽ identifier` | -| ` ▽ ` | `▽ kind "text"` | `▽ identifier "foo"` | -| ` ▷ ` | `▷ kind` | `▷ return_statement` | -| ` △ ` | `△ kind` | `△ assignment_expression` | -| ` ● ` | `● kind` | `● identifier` | -| ` ● ` | `● kind "text"` | `● identifier "foo"` | -| ` ● ` | `● field:` | `● left:` | -| ` ○ ` | `○ kind` | `○ string` | -| ` ⬥ ` | `⬥ Effect` | `⬥ Node` | -| ` ⬥ ` | `⬥ Set "field"` | `⬥ Set "target"` | -| ` ⬥ ` | `⬥ Enum "var"` | `⬥ Enum "Literal"` | -| ` ⬥ ` | `⬥ SuppressBegin` | `⬥ SuppressBegin` | -| ` ⬥ ` | `⬥ SuppressEnd` | `⬥ SuppressEnd` | -| ` ⬦ ` | `⬦ Effect` | `⬦ Node` (suppressed) | +| Symbol | Format | Example | +| ------- | ------------------- | ---------------------------- | +| (blank) | ` kind` | ` identifier` | +| ` ▽ ` | `▽ kind` | `▽ identifier` | +| ` ▽ ` | `▽ kind "text"` | `▽ identifier "foo"` | +| ` ▷ ` | `▷ kind` | `▷ return_statement` | +| ` △ ` | `△ kind` | `△ assignment_expression` | +| ` ● ` | `● kind` | `● identifier` | +| ` ● ` | `● kind "text"` | `● identifier "foo"` | +| ` ● ` | `● field:` | `● left:` | +| ` ○ ` | `○ kind` | `○ string` | +| ` ⬥ ` | `⬥ Effect` | `⬥ Node` | +| ` ⬥ ` | `⬥ Set "field"` | `⬥ Set "target"` | +| ` ⬥ ` | `⬥ Enum "var"` | `⬥ Enum "Literal"` | +| ` ⬥ ` | `⬥ SuppressBegin` | `⬥ SuppressBegin` | +| ` ⬥ ` | `⬥ SuppressEnd` | `⬥ SuppressEnd` | +| ` ⬦ ` | `⬦ Effect` | `⬦ Node` (suppressed) | | ` ⬦ ` | `⬦ SuppressBegin` | `⬦ SuppressBegin` (nested) | -| ` ▶ ` | `▶ Name` | `▶ Expression` | -| ` ◀ ` | `◀ Name` | `◀ Expression` | +| ` ▶ ` | `▶ Name` | `▶ Expression` | +| ` ◀ ` | `◀ Name` | `◀ Expression` | ### Backtrack (Instruction-Level) @@ -537,35 +542,36 @@ Step number `NN` is the checkpoint we're restoring to. Appears as an instruction | --------------- | ------- | ------------------------------- | | Stay | (space) | No movement | | Stay (epsilon) | ε | No movement, no constraints | +| StayExact | !!! | Stay at position, exact only | | Down | ▽ | First child, skip any | | DownSkip | !▽ | First child, skip trivia | -| DownExact | ‼▽ | First child, exact | +| DownExact | !!▽ | First child, exact | | Next | ▷ | Next sibling, skip any | | NextSkip | !▷ | Next sibling, skip trivia | -| NextExact | ‼▷ | Next sibling, exact | +| NextExact | !!▷ | Next sibling, exact | | Up(1) | △ | Ascend 1 level (no superscript) | | Up(n≥2) | △ⁿ | Ascend n levels | | UpSkipTrivia(n) | !△ⁿ | Ascend n, last non-trivia | -| UpExact(n) | ‼△ⁿ | Ascend n, last child | +| UpExact(n) | !!△ⁿ | Ascend n, last child | ## Effects -| Effect | Description | -| -------------- | -------------------------------- | -| Node | Capture matched node | -| Text | Extract node text as string | -| Set "field" | Assign to struct field | -| Enum "variant" | Start tagged union variant | -| EndEnum | End tagged union variant | -| Arr | Start array | -| Push | Push to array | -| EndArr | End array | -| Obj | Start object | -| EndObj | End object | -| Null | Null value | -| Clear | Clear pending value | -| SuppressBegin | Enter suppression scope (`@_`) | -| SuppressEnd | Exit suppression scope | +| Effect | Description | +| -------------- | ------------------------------ | +| Node | Capture matched node | +| Text | Extract node text as string | +| Set "field" | Assign to struct field | +| Enum "variant" | Start tagged union variant | +| EndEnum | End tagged union variant | +| Arr | Start array | +| Push | Push to array | +| EndArr | End array | +| Obj | Start object | +| EndObj | End object | +| Null | Null value | +| Clear | Clear pending value | +| SuppressBegin | Enter suppression scope (`@_`) | +| SuppressEnd | Exit suppression scope | ## Command Options @@ -579,4 +585,4 @@ Step number `NN` is the checkpoint we're restoring to. Appears as an instruction ## Files - `crates/plotnik-cli/src/commands/trace.rs` — Command implementation -- `crates/plotnik-cli/src/engine/trace.rs` — Tracer trait and PrintTracer +- `crates/plotnik-lib/src/engine/trace.rs` — Tracer trait and PrintTracer diff --git a/docs/tree-navigation.md b/docs/tree-navigation.md index b9d83e10..3788a46e 100644 --- a/docs/tree-navigation.md +++ b/docs/tree-navigation.md @@ -47,7 +47,7 @@ The `Node` API's `next_sibling()` is O(siblings)—unacceptable for repeated bac | Nav | Dump Symbol | Movement | | ----------------- | ----------- | ----------------------------- | | `Stay` | (space) | No movement | -| `StayExact` | `‼·` | No movement, exact match only | +| `StayExact` | `!!!` | No movement, exact match only | | `Down` | `↓*` | First child, skip any | | `DownSkip` | `↓~` | First child, skip trivia only | | `DownExact` | `↓.` | First child, exact |