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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
use crate::ns::*;
/// ActionScript reserved word validation.
pub struct As3ReservedWord;
impl As3ReservedWord {
/// Checks if an *IdentifierName* is a reserved word.
pub fn test(name: &str) -> bool {
As3ReservedWord::token(name).is_some()
}
/// Attempts to convert an *IdentifierName* into a reserved word token.
pub fn token(name: &str) -> Option<Token> {
match name.len() {
1 => None,
2 => {
match name {
"as" => Some(Token::As),
"do" => Some(Token::Do),
"if" => Some(Token::If),
"in" => Some(Token::In),
"is" => Some(Token::Is),
_ => None,
}
},
3 => {
match name {
"for" => Some(Token::For),
"new" => Some(Token::New),
"not" => Some(Token::Not),
"try" => Some(Token::Try),
"use" => Some(Token::Use),
"var" => Some(Token::Var),
_ => None,
}
},
4 => {
match name {
"case" => Some(Token::Case),
"else" => Some(Token::Else),
"null" => Some(Token::Null),
"this" => Some(Token::This),
"true" => Some(Token::True),
"void" => Some(Token::Void),
"with" => Some(Token::With),
_ => None,
}
},
5 => {
match name {
"await" => Some(Token::Await),
"break" => Some(Token::Break),
"catch" => Some(Token::Catch),
"class" => Some(Token::Class),
"const" => Some(Token::Const),
"false" => Some(Token::False),
"super" => Some(Token::Super),
"throw" => Some(Token::Throw),
"while" => Some(Token::While),
"yield" => Some(Token::Yield),
_ => None,
}
},
6 => {
match name {
"delete" => Some(Token::Delete),
"import" => Some(Token::Import),
"public" => Some(Token::Public),
"return" => Some(Token::Return),
"switch" => Some(Token::Switch),
"typeof" => Some(Token::Typeof),
_ => None,
}
},
7 => {
match name {
"default" => Some(Token::Default),
"extends" => Some(Token::Extends),
"finally" => Some(Token::Finally),
"package" => Some(Token::Package),
"private" => Some(Token::Private),
_ => None,
}
},
8 => {
match name {
"continue" => Some(Token::Continue),
"function" => Some(Token::Function),
"internal" => Some(Token::Internal),
_ => None,
}
},
9 => {
match name {
"interface" => Some(Token::Interface),
"protected" => Some(Token::Protected),
_ => None,
}
},
10 => {
match name {
"implements" => Some(Token::Implements),
"instanceof" => Some(Token::Instanceof),
_ => None,
}
},
_ => None,
}
}
}