mxmlextrema_as3parser/parser/
reserved_word.rs

1use crate::ns::*;
2
3/// ActionScript reserved word validation.
4pub struct As3ReservedWord;
5
6impl As3ReservedWord {
7    /// Checks if an *IdentifierName* is a reserved word.
8    pub fn test(name: &str) -> bool {
9        As3ReservedWord::token(name).is_some()
10    }
11
12    /// Attempts to convert an *IdentifierName* into a reserved word token.
13    pub fn token(name: &str) -> Option<Token> {
14        match name.len() {
15            1 => None,
16            2 => {
17                match name {
18                    "as" => Some(Token::As),
19                    "do" => Some(Token::Do),
20                    "if" => Some(Token::If),
21                    "in" => Some(Token::In),
22                    "is" => Some(Token::Is),
23                    _ => None,
24                }
25            },
26            3 => {
27                match name {
28                    "for" => Some(Token::For),
29                    "new" => Some(Token::New),
30                    "not" => Some(Token::Not),
31                    "try" => Some(Token::Try),
32                    "use" => Some(Token::Use),
33                    "var" => Some(Token::Var),
34                    _ => None,
35                }
36            },
37            4 => {
38                match name {
39                    "case" => Some(Token::Case),
40                    "else" => Some(Token::Else),
41                    "null" => Some(Token::Null),
42                    "this" => Some(Token::This),
43                    "true" => Some(Token::True),
44                    "void" => Some(Token::Void),
45                    "with" => Some(Token::With),
46                    _ => None,
47                }
48            },
49            5 => {
50                match name {
51                    "await" => Some(Token::Await),
52                    "break" => Some(Token::Break),
53                    "catch" => Some(Token::Catch),
54                    "class" => Some(Token::Class),
55                    "const" => Some(Token::Const),
56                    "false" => Some(Token::False),
57                    "super" => Some(Token::Super),
58                    "throw" => Some(Token::Throw),
59                    "while" => Some(Token::While),
60                    "yield" => Some(Token::Yield),
61                    _ => None,
62                }
63            },
64            6 => {
65                match name {
66                    "delete" => Some(Token::Delete),
67                    "import" => Some(Token::Import),
68                    "public" => Some(Token::Public),
69                    "return" => Some(Token::Return),
70                    "switch" => Some(Token::Switch),
71                    "typeof" => Some(Token::Typeof),
72                    _ => None,
73                }
74            },
75            7 => {
76                match name {
77                    "default" => Some(Token::Default),
78                    "extends" => Some(Token::Extends),
79                    "finally" => Some(Token::Finally),
80                    "package" => Some(Token::Package),
81                    "private" => Some(Token::Private),
82                    _ => None,
83                }
84            },
85            8 => {
86                match name {
87                    "continue" => Some(Token::Continue),
88                    "function" => Some(Token::Function),
89                    "internal" => Some(Token::Internal),
90                    _ => None,
91                }
92            },
93            9 => {
94                match name {
95                    "interface" => Some(Token::Interface),
96                    "protected" => Some(Token::Protected),
97                    _ => None,
98                }
99            },
100            10 => {
101                match name {
102                    "implements" => Some(Token::Implements),
103                    "instanceof" => Some(Token::Instanceof),
104                    _ => None,
105                }
106            },
107            _ => None,
108        }
109    }
110}