@@ -32,33 +32,38 @@ describe("parser", function() {
32
32
} ) ;
33
33
34
34
it ( "symbols can be quoted" , function ( ) {
35
- assert . deepStrictEqual ( parser ( "\"A\ " -> \"a\"." ) , { productions : [ [ "A" , "a" ] ] } ) ;
36
- assert . deepStrictEqual ( parser ( "\"->\ " -> ." ) , { productions : [ [ "->" ] ] } ) ;
35
+ assert . deepStrictEqual ( parser ( `"A " -> "a".` ) , { productions : [ [ "A" , "a" ] ] } ) ;
36
+ assert . deepStrictEqual ( parser ( `"-> " -> .` ) , { productions : [ [ "->" ] ] } ) ;
37
37
} ) ;
38
38
39
39
it ( "quoted symbols can contain escapes" , function ( ) {
40
- assert . deepStrictEqual ( parser ( "\"\\\"\" -> ." ) , { productions : [ [ "\\\"" ] ] } ) ;
41
- assert . deepStrictEqual ( parser ( "\"\\\\\" -> ." ) , { productions : [ [ "\\\\" ] ] } ) ;
42
- assert . deepStrictEqual ( parser ( "\"'\" -> ." ) , { productions : [ [ "'" ] ] } ) ;
43
- assert . deepStrictEqual ( parser ( "'\\'' -> ." ) , { productions : [ [ "\\'" ] ] } ) ;
44
- assert . deepStrictEqual ( parser ( "'\"' -> ." ) , { productions : [ [ "\"" ] ] } ) ;
45
-
46
- assert . deepStrictEqual ( parser ( "\"\\b\" -> ." ) , { productions : [ [ "\\b" ] ] } ) ;
47
- assert . deepStrictEqual ( parser ( "\"\\f\" -> ." ) , { productions : [ [ "\\f" ] ] } ) ;
48
- assert . deepStrictEqual ( parser ( "\"\\n\" -> ." ) , { productions : [ [ "\\n" ] ] } ) ;
49
- assert . deepStrictEqual ( parser ( "\"\\r\" -> ." ) , { productions : [ [ "\\r" ] ] } ) ;
50
- assert . deepStrictEqual ( parser ( "\"\\t\" -> ." ) , { productions : [ [ "\\t" ] ] } ) ;
51
- assert . deepStrictEqual ( parser ( "\"\\v\" -> ." ) , { productions : [ [ "\\v" ] ] } ) ;
52
- assert . deepStrictEqual ( parser ( "\"\\0\" -> ." ) , { productions : [ [ "\\0" ] ] } ) ;
53
-
54
- assert . deepStrictEqual ( parser ( "\"\\xA9\" -> ." ) , { productions : [ [ "\\xA9" ] ] } ) ;
55
- assert . deepStrictEqual ( parser ( "\"\\xa9\" -> ." ) , { productions : [ [ "\\xa9" ] ] } ) ;
56
-
57
- assert . deepStrictEqual ( parser ( "\"\\u00A9\" -> ." ) , { productions : [ [ "\\u00A9" ] ] } ) ;
58
- assert . deepStrictEqual ( parser ( "\"\\u00a9\" -> ." ) , { productions : [ [ "\\u00a9" ] ] } ) ;
59
- assert . deepStrictEqual ( parser ( "\"\\u2665\" -> ." ) , { productions : [ [ "\\u2665" ] ] } ) ;
60
-
61
- assert . deepStrictEqual ( parser ( "\"\\u{1D306}\" -> ." ) , { productions : [ [ "\\u{1D306}" ] ] } ) ;
40
+ assert . deepStrictEqual ( parser ( `"\\"" -> .` ) , { productions : [ [ `\\"` ] ] } ) ;
41
+ assert . deepStrictEqual ( parser ( `"\\'" -> .` ) , { productions : [ [ `\\'` ] ] } ) ;
42
+ assert . deepStrictEqual ( parser ( `'\\'' -> .` ) , { productions : [ [ `\\'` ] ] } ) ;
43
+ assert . deepStrictEqual ( parser ( `'\\"' -> .` ) , { productions : [ [ `\\"` ] ] } ) ;
44
+ assert . deepStrictEqual ( parser ( `"\\\\" -> .` ) , { productions : [ [ `\\\\` ] ] } ) ;
45
+
46
+ assert . deepStrictEqual ( parser ( `"\\b" -> .` ) , { productions : [ [ `\\b` ] ] } ) ;
47
+ assert . deepStrictEqual ( parser ( `"\\f" -> .` ) , { productions : [ [ `\\f` ] ] } ) ;
48
+ assert . deepStrictEqual ( parser ( `"\\n" -> .` ) , { productions : [ [ `\\n` ] ] } ) ;
49
+ assert . deepStrictEqual ( parser ( `"\\r" -> .` ) , { productions : [ [ `\\r` ] ] } ) ;
50
+ assert . deepStrictEqual ( parser ( `"\\t" -> .` ) , { productions : [ [ `\\t` ] ] } ) ;
51
+ assert . deepStrictEqual ( parser ( `"\\v" -> .` ) , { productions : [ [ `\\v` ] ] } ) ;
52
+ assert . deepStrictEqual ( parser ( `"\\0" -> .` ) , { productions : [ [ `\\0` ] ] } ) ;
53
+
54
+ assert . deepStrictEqual ( parser ( `"\\\n" -> .` ) , { productions : [ [ `\\\n` ] ] } ) ;
55
+
56
+ // COPYRIGHT SIGN
57
+ assert . deepStrictEqual ( parser ( `"\\xA9" -> .` ) , { productions : [ [ `\\xA9` ] ] } ) ;
58
+ assert . deepStrictEqual ( parser ( `"\\xa9" -> .` ) , { productions : [ [ `\\xa9` ] ] } ) ;
59
+ assert . deepStrictEqual ( parser ( `"\\u00A9" -> .` ) , { productions : [ [ `\\u00A9` ] ] } ) ;
60
+ assert . deepStrictEqual ( parser ( `"\\u00a9" -> .` ) , { productions : [ [ `\\u00a9` ] ] } ) ;
61
+
62
+ // BLACK HEART SUIT
63
+ assert . deepStrictEqual ( parser ( `"\\u2665" -> .` ) , { productions : [ [ "\\u2665" ] ] } ) ;
64
+
65
+ // TETRAGRAM FOR CENTRE
66
+ assert . deepStrictEqual ( parser ( `"\\u{1D306}" -> .` ) , { productions : [ [ "\\u{1D306}" ] ] } ) ;
62
67
} ) ;
63
68
64
69
it ( "nonterminals don't need to be capitalized" , function ( ) {
@@ -108,7 +113,7 @@ describe("parser", function() {
108
113
assert . deepStrictEqual ( parser ( "A -> 1 ." ) , { error : new Error ( "Parse error" ) } ) ;
109
114
} ) ;
110
115
111
- it ( "quoted symbols can't contain a newline" , function ( ) {
116
+ it ( "quoted symbols can't contain an unescaped newline" , function ( ) {
112
117
assert . deepStrictEqual ( parser ( "\"A\n\" -> a ." ) , { error : new Error ( "Parse error" ) } ) ;
113
118
} ) ;
114
119
} ) ;
0 commit comments