aboutsummaryrefslogtreecommitdiff
path: root/driver/parser_test.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2022-05-13 22:40:50 +0900
committerRyo Nihei <nihei.dev@gmail.com>2022-05-15 20:42:28 +0900
commit15ea142b25927d6f103ee6ddde4fe8a5e2324831 (patch)
tree8c83fc31ac7d5712374ee82681bea87e071c97fd /driver/parser_test.go
parentStop handling panic to print a stack trace (diff)
downloadurubu-15ea142b25927d6f103ee6ddde4fe8a5e2324831.tar.gz
urubu-15ea142b25927d6f103ee6ddde4fe8a5e2324831.tar.xz
Prohibit using escape sequences in string literals
Diffstat (limited to 'driver/parser_test.go')
-rw-r--r--driver/parser_test.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/driver/parser_test.go b/driver/parser_test.go
index 60dd3f4..dc1c141 100644
--- a/driver/parser_test.go
+++ b/driver/parser_test.go
@@ -114,6 +114,30 @@ id: "[A-Za-z_][0-9A-Za-z_]*";
),
),
},
+ // Fragments (\f{}), code point expressions (\u{}), and character property expressions (\p{}) are
+ // not allowed in string literals.
+ {
+ specSrc: `
+#name test;
+
+s
+ : a b c
+ ;
+
+a
+ : '\f{foo}';
+b
+ : '\u{0000}';
+c
+ : '\p{gc=Letter}';
+`,
+ src: `\f{foo}\u{0000}\p{gc=Letter}`,
+ cst: nonTermNode("s",
+ termNode("a", `\f{foo}`),
+ termNode("b", `\u{0000}`),
+ termNode("c", `\p{gc=Letter}`),
+ ),
+ },
// The driver can reduce productions that have the empty alternative and can generate a CST (and AST) node.
{
specSrc: `