[lexer] Laying groundwork for lexing numbers...

This commit is contained in:
Eryn Wells 2018-09-01 22:25:40 -07:00
parent 7b6259977f
commit aa4de7d4bd
2 changed files with 47 additions and 0 deletions

View file

@ -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 {

View file

@ -0,0 +1,45 @@
/* lexer/src/states/number.rs
* Eryn Wells <eryn@erynwells.me>
*/
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<Option<Token>, String> {
// TODO: Implement.
Err("blah".to_string())
}
}