From 23918bd55d13fb1e6d895a60db4f991e25887e8a Mon Sep 17 00:00:00 2001 From: Thomas Jollans Date: Tue, 17 Dec 2024 18:47:54 +0100 Subject: [PATCH] Make line-space a superset of node-space (#440) * Allow escline everywhere * escline tests --- SPEC.md | 4 ++-- tests/test_cases/expected_kdl/escline_after_semicolon.kdl | 2 ++ tests/test_cases/expected_kdl/escline_empty_line.kdl | 1 + tests/test_cases/expected_kdl/escline_in_child_block.kdl | 4 ++++ tests/test_cases/expected_kdl/escline_node_type.kdl | 1 + tests/test_cases/expected_kdl/escline_slashdash.kdl | 1 + tests/test_cases/input/escline_after_semicolon.kdl | 2 ++ tests/test_cases/input/escline_empty_line.kdl | 3 +++ tests/test_cases/input/escline_in_child_block.kdl | 5 +++++ tests/test_cases/input/escline_node_type.kdl | 2 ++ tests/test_cases/input/escline_slashdash.kdl | 4 ++++ 11 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 tests/test_cases/expected_kdl/escline_after_semicolon.kdl create mode 100644 tests/test_cases/expected_kdl/escline_empty_line.kdl create mode 100644 tests/test_cases/expected_kdl/escline_in_child_block.kdl create mode 100644 tests/test_cases/expected_kdl/escline_node_type.kdl create mode 100644 tests/test_cases/expected_kdl/escline_slashdash.kdl create mode 100644 tests/test_cases/input/escline_after_semicolon.kdl create mode 100644 tests/test_cases/input/escline_empty_line.kdl create mode 100644 tests/test_cases/input/escline_in_child_block.kdl create mode 100644 tests/test_cases/input/escline_node_type.kdl create mode 100644 tests/test_cases/input/escline_slashdash.kdl diff --git a/SPEC.md b/SPEC.md index 324b99b..0020aea 100644 --- a/SPEC.md +++ b/SPEC.md @@ -910,14 +910,14 @@ unicode-space := See Table (All White_Space unicode characters which are not `ne single-line-comment := '//' ^newline* (newline | eof) multi-line-comment := '/*' commented-block commented-block := '*/' | (multi-line-comment | '*' | '/' | [^*/]+) commented-block -slashdash := '/-' (node-space | line-space)* +slashdash := '/-' line-space* // Whitespace ws := unicode-space | multi-line-comment escline := '\\' ws* (single-line-comment | newline | eof) newline := See Table (All Newline White_Space) // Whitespace where newlines are allowed. -line-space := newline | ws | single-line-comment +line-space := node-space | newline | single-line-comment // Whitespace within nodes, where newline-ish things must be esclined. node-space := ws* escline ws* | ws+ ``` diff --git a/tests/test_cases/expected_kdl/escline_after_semicolon.kdl b/tests/test_cases/expected_kdl/escline_after_semicolon.kdl new file mode 100644 index 0000000..3e545b1 --- /dev/null +++ b/tests/test_cases/expected_kdl/escline_after_semicolon.kdl @@ -0,0 +1,2 @@ +node +node diff --git a/tests/test_cases/expected_kdl/escline_empty_line.kdl b/tests/test_cases/expected_kdl/escline_empty_line.kdl new file mode 100644 index 0000000..64f5a0a --- /dev/null +++ b/tests/test_cases/expected_kdl/escline_empty_line.kdl @@ -0,0 +1 @@ +node diff --git a/tests/test_cases/expected_kdl/escline_in_child_block.kdl b/tests/test_cases/expected_kdl/escline_in_child_block.kdl new file mode 100644 index 0000000..9b05e30 --- /dev/null +++ b/tests/test_cases/expected_kdl/escline_in_child_block.kdl @@ -0,0 +1,4 @@ +parent { + child + child +} diff --git a/tests/test_cases/expected_kdl/escline_node_type.kdl b/tests/test_cases/expected_kdl/escline_node_type.kdl new file mode 100644 index 0000000..c790643 --- /dev/null +++ b/tests/test_cases/expected_kdl/escline_node_type.kdl @@ -0,0 +1 @@ +(type)node diff --git a/tests/test_cases/expected_kdl/escline_slashdash.kdl b/tests/test_cases/expected_kdl/escline_slashdash.kdl new file mode 100644 index 0000000..64f5a0a --- /dev/null +++ b/tests/test_cases/expected_kdl/escline_slashdash.kdl @@ -0,0 +1 @@ +node diff --git a/tests/test_cases/input/escline_after_semicolon.kdl b/tests/test_cases/input/escline_after_semicolon.kdl new file mode 100644 index 0000000..59a4ab8 --- /dev/null +++ b/tests/test_cases/input/escline_after_semicolon.kdl @@ -0,0 +1,2 @@ +node; \ +node diff --git a/tests/test_cases/input/escline_empty_line.kdl b/tests/test_cases/input/escline_empty_line.kdl new file mode 100644 index 0000000..1777a83 --- /dev/null +++ b/tests/test_cases/input/escline_empty_line.kdl @@ -0,0 +1,3 @@ +\ + +node diff --git a/tests/test_cases/input/escline_in_child_block.kdl b/tests/test_cases/input/escline_in_child_block.kdl new file mode 100644 index 0000000..dfbe682 --- /dev/null +++ b/tests/test_cases/input/escline_in_child_block.kdl @@ -0,0 +1,5 @@ +parent { + child + \ // comment + child +} diff --git a/tests/test_cases/input/escline_node_type.kdl b/tests/test_cases/input/escline_node_type.kdl new file mode 100644 index 0000000..fb22096 --- /dev/null +++ b/tests/test_cases/input/escline_node_type.kdl @@ -0,0 +1,2 @@ +\ +(type)node diff --git a/tests/test_cases/input/escline_slashdash.kdl b/tests/test_cases/input/escline_slashdash.kdl new file mode 100644 index 0000000..8cb0956 --- /dev/null +++ b/tests/test_cases/input/escline_slashdash.kdl @@ -0,0 +1,4 @@ +node +\ +/- +node