mirror of https://github.com/boa-dev/boa.git
4 changed files with 174 additions and 0 deletions
@ -0,0 +1,151 @@ |
|||||||
|
use std::fmt::{Display, Formatter}; |
||||||
|
use std::str::FromStr; |
||||||
|
use syntax::ast::keyword::Keyword::*; |
||||||
|
|
||||||
|
#[derive(Clone, PartialEq)] |
||||||
|
/// A Javascript Keyword
|
||||||
|
pub enum Keyword { |
||||||
|
/// The `break` keyword
|
||||||
|
KBreak, |
||||||
|
/// The `case` keyword
|
||||||
|
KCase, |
||||||
|
/// The `catch` keyword
|
||||||
|
KCatch, |
||||||
|
/// The `class` keyword, which is reserved for future use
|
||||||
|
KClass, |
||||||
|
/// The `continue` keyword
|
||||||
|
KContinue, |
||||||
|
/// The `debugger` keyword
|
||||||
|
KDebugger, |
||||||
|
/// The `default` keyword
|
||||||
|
KDefault, |
||||||
|
/// The `delete` keyword
|
||||||
|
KDelete, |
||||||
|
/// The `do` keyword
|
||||||
|
KDo, |
||||||
|
/// The `else` keyword
|
||||||
|
KElse, |
||||||
|
/// The `enum` keyword
|
||||||
|
KEnum, |
||||||
|
/// The `extends` keyword
|
||||||
|
KExtends, |
||||||
|
/// The `finally` keyword
|
||||||
|
KFinally, |
||||||
|
/// The `for` keyword
|
||||||
|
KFor, |
||||||
|
/// The `function` keyword
|
||||||
|
KFunction, |
||||||
|
/// The `if` keyword
|
||||||
|
KIf, |
||||||
|
/// The `in` keyword
|
||||||
|
KIn, |
||||||
|
/// The `instanceof` keyword
|
||||||
|
KInstanceOf, |
||||||
|
/// The `import` keyword
|
||||||
|
KImport, |
||||||
|
/// The `new` keyword
|
||||||
|
KNew, |
||||||
|
/// The `return` keyword
|
||||||
|
KReturn, |
||||||
|
/// The `super` keyword
|
||||||
|
KSuper, |
||||||
|
/// The `switch` keyword
|
||||||
|
KSwitch, |
||||||
|
/// The `this` keyword
|
||||||
|
KThis, |
||||||
|
/// The `throw` keyword
|
||||||
|
KThrow, |
||||||
|
/// The `try` keyword
|
||||||
|
KTry, |
||||||
|
/// The `typeof` keyword
|
||||||
|
KTypeOf, |
||||||
|
/// The `var` keyword
|
||||||
|
KVar, |
||||||
|
/// The `void` keyword
|
||||||
|
KVoid, |
||||||
|
/// The `while` keyword
|
||||||
|
KWhile, |
||||||
|
/// The `with` keyword
|
||||||
|
KWith, |
||||||
|
} |
||||||
|
|
||||||
|
impl FromStr for Keyword { |
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> { |
||||||
|
match s { |
||||||
|
"break" => Ok(KBreak), |
||||||
|
"case" => Ok(KCase), |
||||||
|
"catch" => Ok(KCatch), |
||||||
|
"class" => Ok(KClass), |
||||||
|
"continue" => Ok(KContinue), |
||||||
|
"debugger" => Ok(KDebugger), |
||||||
|
"default" => Ok(KDefault), |
||||||
|
"delete" => Ok(KDelete), |
||||||
|
"do" => Ok(KDo), |
||||||
|
"else" => Ok(KElse), |
||||||
|
"enum" => Ok(KEnum), |
||||||
|
"extends" => Ok(KExtends), |
||||||
|
"finally" => Ok(KFinally), |
||||||
|
"for" => Ok(KFor), |
||||||
|
"function" => Ok(KFunction), |
||||||
|
"if" => Ok(KIf), |
||||||
|
"in" => Ok(KIn), |
||||||
|
"instanceof" => Ok(KInstanceOf), |
||||||
|
"import" => Ok(KImport), |
||||||
|
"new" => Ok(KNew), |
||||||
|
"return" => Ok(KReturn), |
||||||
|
"super" => Ok(KSuper), |
||||||
|
"switch" => Ok(KSwitch), |
||||||
|
"this" => Ok(KThis), |
||||||
|
"throw" => Ok(KThrow), |
||||||
|
"try" => Ok(KTry), |
||||||
|
"typeof" => Ok(KTypeOf), |
||||||
|
"var" => Ok(KVar), |
||||||
|
"void" => Ok(KVoid), |
||||||
|
"while" => Ok(KWhile), |
||||||
|
"with" => Ok(KWith), |
||||||
|
_ => Err("Oh dear!"), |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
impl Display for Keyword { |
||||||
|
fn fmt(&self, f: &mut Formatter) -> Result<String, String> { |
||||||
|
write!( |
||||||
|
f, |
||||||
|
"{}", |
||||||
|
match *self { |
||||||
|
KBreak => "break", |
||||||
|
KCase => "case", |
||||||
|
KCatch => "catch", |
||||||
|
KClass => "class", |
||||||
|
KContinue => "continue", |
||||||
|
KDebugger => "debugger", |
||||||
|
KDefault => "default", |
||||||
|
KDelete => "delete", |
||||||
|
KDo => "do", |
||||||
|
KElse => "else", |
||||||
|
KEnum => "enum", |
||||||
|
KExtends => "extends", |
||||||
|
KFinally => "finally", |
||||||
|
KFor => "for", |
||||||
|
KFunction => "function", |
||||||
|
KIf => "if", |
||||||
|
KIn => "in", |
||||||
|
KInstanceOf => "instanceof", |
||||||
|
KImport => "import", |
||||||
|
KNew => "new", |
||||||
|
KReturn => "return", |
||||||
|
KSuper => "super", |
||||||
|
KSwitch => "switch", |
||||||
|
KThis => "this", |
||||||
|
KThrow => "throw", |
||||||
|
KTry => "try", |
||||||
|
KTypeOf => "typeof", |
||||||
|
KVar => "var", |
||||||
|
KVoid => "void", |
||||||
|
KWhile => "while", |
||||||
|
KWith => "with", |
||||||
|
_ => Err("ahgh"), |
||||||
|
} |
||||||
|
) |
||||||
|
} |
||||||
|
} |
@ -1 +1,3 @@ |
|||||||
|
pub mod keyword; |
||||||
|
pub mod pos; |
||||||
pub mod token; |
pub mod token; |
||||||
|
@ -0,0 +1,18 @@ |
|||||||
|
#[derive(Clone, PartialEq)] |
||||||
|
// A position in Javascript source code
|
||||||
|
pub struct Position { |
||||||
|
// Column number
|
||||||
|
pub column_number: u64, |
||||||
|
// Line number
|
||||||
|
pub line_number: u64, |
||||||
|
} |
||||||
|
|
||||||
|
impl Position { |
||||||
|
// Create a new position
|
||||||
|
pub fn new(line_number: u64, column_number: u64) -> Position { |
||||||
|
Position { |
||||||
|
line_number: line_number, |
||||||
|
column_number: column_number, |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue