diff --git a/lexer/src/states/mod.rs b/lexer/src/states/mod.rs index f661fd0..a9c45a0 100644 --- a/lexer/src/states/mod.rs +++ b/lexer/src/states/mod.rs @@ -7,9 +7,11 @@ use token::Token; mod begin; mod hash; +mod number; mod id; pub use self::begin::Begin; +pub use self::number::BeginNumber; #[derive(Debug)] pub enum StateResult { diff --git a/lexer/src/states/number.rs b/lexer/src/states/number.rs new file mode 100644 index 0000000..2bf4c35 --- /dev/null +++ b/lexer/src/states/number.rs @@ -0,0 +1,45 @@ +/* lexer/src/states/number.rs + * Eryn Wells + */ + +use super::{State, StateResult, Token}; + +#[derive(Debug, Eq, PartialEq)] +pub enum Base { + Bin = 2, + Oct = 8, + Dec = 10, + Hex = 16 +} + +#[derive(Debug)] +pub struct Builder { + base: Base +} + +#[derive(Debug)] +pub struct BeginNumber(Builder); + +impl Builder { + pub fn new() -> Builder { + Builder { base: Base::Dec } + } +} + +impl BeginNumber { + pub fn new() -> BeginNumber { + BeginNumber(Builder::new()) + } +} + +impl State for BeginNumber { + fn lex(&mut self, c: char) -> StateResult { + // TODO: Implement. + StateResult::fail("blah") + } + + fn none(&mut self) -> Result, String> { + // TODO: Implement. + Err("blah".to_string()) + } +} \ No newline at end of file