diff --git a/draft-marchan-kdl2.md b/draft-marchan-kdl2.md index 008b9a5..25acffa 100644 --- a/draft-marchan-kdl2.md +++ b/draft-marchan-kdl2.md @@ -983,10 +983,13 @@ string-character := [^\\"] - disallowed-literal-code-points ws-escape := '\\' (unicode-space | newline)+ hex-digit := [0-9a-fA-F] -hex-unicode := hex-digit{1, 6} - surrogates -surrogates := [dD][8-9a-fA-F]hex-digit{2} -// U+D800-DFFF: D 8 00 -// D F FF +hex-unicode := hex-digit{1, 6} - surrogate - above-max-scalar // Unicode Scalar Value in hex₁₆, leading 0s allowed within length ≤ 6 +surrogate := [0]{0, 2} [dD] [8-9a-fA-F] hex-digit{2} +// U+D800-DFFF: D 8 00 +// D F FF +above-max-scalar = [2-9a-fA-F] hex-digit{5} | [1] [1-9a-fA-F] hex-digit{4} +// >U+10FFFF: >1 _____ 1 >0 ____ + raw-string := '#' raw-string-quotes '#' | '#' raw-string '#' raw-string-quotes := diff --git a/tests/test_cases/input/unicode_escaped_above_max_fail.kdl b/tests/test_cases/input/unicode_escaped_above_max_fail.kdl new file mode 100644 index 0000000..5db8765 --- /dev/null +++ b/tests/test_cases/input/unicode_escaped_above_max_fail.kdl @@ -0,0 +1 @@ +no "Higher than max Unicode Scalar Value \u{10FFFF} \u{11FFFF}" diff --git a/tests/test_cases/input/unicode_escaped_too_long_lead0_fail.kdl b/tests/test_cases/input/unicode_escaped_too_long_lead0_fail.kdl new file mode 100644 index 0000000..4ee3b99 --- /dev/null +++ b/tests/test_cases/input/unicode_escaped_too_long_lead0_fail.kdl @@ -0,0 +1 @@ +no "Even with leading 0s Unicode Scalar Value escapes must ≤6: \u{0012345}"