1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
if (typeof parseRegExp === 'undefined')
quit();
load(libdir + "regexp_parse.js");
test_mix("[]", all_flags,
NegativeCharacterClass([
["\u0000", "\uFFFF"]
]));
test("[a]", all_flags,
CharacterClass([
["a", "a"]
]));
test("[abc\u3042\u3044\u3046]", all_flags,
CharacterClass([
["a", "a"],
["b", "b"],
["c", "c"],
["\u3042", "\u3042"],
["\u3044", "\u3044"],
["\u3046", "\u3046"],
]));
test("[a-c\u3042-\u3046]", all_flags,
CharacterClass([
["a", "c"],
["\u3042", "\u3046"]
]));
test("[-]", all_flags,
CharacterClass([
["-", "-"]
]));
// raw surrogate pair
test("[X\uD83D\uDC38Y]", unicode_flags,
Disjunction([
CharacterClass([
["X", "X"],
["Y", "Y"],
]),
Atom("\uD83D\uDC38")
]));
test("[X\uD83DY]", unicode_flags,
Disjunction([
CharacterClass([
["X", "X"],
["Y", "Y"]
]),
Alternative([
CharacterClass([
["\uD83D", "\uD83D"]
]),
NegativeLookahead(CharacterClass([["\uDC00", "\uDFFF"]]))
])
]));
test("[X\uDC38Y]", unicode_flags,
Disjunction([
CharacterClass([
["X", "X"],
["Y", "Y"]
]),
Alternative([
Assertion("NOT_AFTER_LEAD_SURROGATE"),
CharacterClass([
["\uDC38", "\uDC38"]
])
])
]));
|