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