[lexer] Laying groundwork for lexing numbers...
This commit is contained in:
parent
7b6259977f
commit
aa4de7d4bd
2 changed files with 47 additions and 0 deletions
|
@ -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 {
|
||||
|
|
45
lexer/src/states/number.rs
Normal file
45
lexer/src/states/number.rs
Normal 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())
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue