[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 begin;
|
||||||
mod hash;
|
mod hash;
|
||||||
|
mod number;
|
||||||
mod id;
|
mod id;
|
||||||
|
|
||||||
pub use self::begin::Begin;
|
pub use self::begin::Begin;
|
||||||
|
pub use self::number::BeginNumber;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum StateResult {
|
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