mxmlextrema_as3parser/parser/
reserved_word.rs

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,
        }
    }
}