Fix a good portion of the build errors in sibillexer (but not all...)
This commit is contained in:
		
							parent
							
								
									f21148381e
								
							
						
					
					
						commit
						31c68034a8
					
				
					 1 changed files with 18 additions and 20 deletions
				
			
		| 
						 | 
					@ -3,18 +3,13 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use std::collections::HashSet;
 | 
					use std::collections::HashSet;
 | 
				
			||||||
use sibiltypes::{Bool, Char};
 | 
					use sibiltypes::Object;
 | 
				
			||||||
 | 
					use sibiltypes::number::Exact;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use char::Lexable;
 | 
					use char::{FromChar, Lexable};
 | 
				
			||||||
use named_char;
 | 
					use number::{NumberBuilder, Radix, Sign};
 | 
				
			||||||
use number::Exactness;
 | 
					use str::{CharAt, RelativeIndexable};
 | 
				
			||||||
use number::NumberBuilder;
 | 
					use token::{Lex, Token};
 | 
				
			||||||
use number::Radix;
 | 
					 | 
				
			||||||
use number::Sign;
 | 
					 | 
				
			||||||
use str::CharAt;
 | 
					 | 
				
			||||||
use str::RelativeIndexable;
 | 
					 | 
				
			||||||
use token::Lex;
 | 
					 | 
				
			||||||
use token::Token;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
type StateResult = Result<Option<Token>, String>;
 | 
					type StateResult = Result<Option<Token>, String>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +27,7 @@ enum State {
 | 
				
			||||||
    Dot,
 | 
					    Dot,
 | 
				
			||||||
    Hash,
 | 
					    Hash,
 | 
				
			||||||
    Number,
 | 
					    Number,
 | 
				
			||||||
    NumberExactness,
 | 
					    NumberExact,
 | 
				
			||||||
    NumberDecimal,
 | 
					    NumberDecimal,
 | 
				
			||||||
    NumberRadix,
 | 
					    NumberRadix,
 | 
				
			||||||
    NumberSign,
 | 
					    NumberSign,
 | 
				
			||||||
| 
						 | 
					@ -203,7 +198,7 @@ impl Lexer {
 | 
				
			||||||
        self.advance();
 | 
					        self.advance();
 | 
				
			||||||
        let lower_c = c.to_lowercase().collect::<String>();
 | 
					        let lower_c = c.to_lowercase().collect::<String>();
 | 
				
			||||||
        let mut candidates: HashSet<&str> = HashSet::new();
 | 
					        let mut candidates: HashSet<&str> = HashSet::new();
 | 
				
			||||||
        for c in named_char::set().iter() {
 | 
					        for c in names::set().iter() {
 | 
				
			||||||
            if c.starts_with(&lower_c) {
 | 
					            if c.starts_with(&lower_c) {
 | 
				
			||||||
                candidates.insert(c);
 | 
					                candidates.insert(c);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -211,7 +206,7 @@ impl Lexer {
 | 
				
			||||||
        if candidates.len() > 0 {
 | 
					        if candidates.len() > 0 {
 | 
				
			||||||
            self.state = State::NamedChar(candidates, lower_c);
 | 
					            self.state = State::NamedChar(candidates, lower_c);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return self.token_result(Token::Character(Char(c)));
 | 
					            return self.token_result(Token::Character(Object::Char(c)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Ok(None)
 | 
					        Ok(None)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -226,7 +221,8 @@ impl Lexer {
 | 
				
			||||||
        if c.is_identifier_delimiter() || c.is_eof() {
 | 
					        if c.is_identifier_delimiter() || c.is_eof() {
 | 
				
			||||||
            if progress.len() == 1 {
 | 
					            if progress.len() == 1 {
 | 
				
			||||||
                self.retract();
 | 
					                self.retract();
 | 
				
			||||||
                return self.token_result(Token::Character(Char(progress.chars().next().unwrap())));
 | 
					                let token_char = Object::Char(progress.chars().next().unwrap());
 | 
				
			||||||
 | 
					                return self.token_result(Token::Character(token_char));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                return self.generic_error(c);
 | 
					                return self.generic_error(c);
 | 
				
			||||||
| 
						 | 
					@ -243,7 +239,8 @@ impl Lexer {
 | 
				
			||||||
        if candidates.len() == 1 {
 | 
					        if candidates.len() == 1 {
 | 
				
			||||||
            let candidate = *candidates.iter().next().unwrap();
 | 
					            let candidate = *candidates.iter().next().unwrap();
 | 
				
			||||||
            if candidate == &progress {
 | 
					            if candidate == &progress {
 | 
				
			||||||
                self.token_result(Token::Character(named_char::char_named_by(&progress)))
 | 
					                let token_char = Object::from_char_named(&progress);
 | 
				
			||||||
 | 
					                self.token_result(Token::Character(token_char))
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                self.state = State::NamedChar(candidates, progress);
 | 
					                self.state = State::NamedChar(candidates, progress);
 | 
				
			||||||
| 
						 | 
					@ -283,7 +280,8 @@ impl Lexer {
 | 
				
			||||||
    fn state_hash(&mut self, c: char) -> StateResult {
 | 
					    fn state_hash(&mut self, c: char) -> StateResult {
 | 
				
			||||||
        if c.is_boolean_true() || c.is_boolean_false() {
 | 
					        if c.is_boolean_true() || c.is_boolean_false() {
 | 
				
			||||||
            self.advance();
 | 
					            self.advance();
 | 
				
			||||||
            return self.token_result(Token::Boolean(Bool(c.is_boolean_true())));
 | 
					            let token_bool = Object::Bool(c.is_boolean_true());
 | 
				
			||||||
 | 
					            return self.token_result(Token::Boolean(token_bool));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if c.is_left_paren() {
 | 
					        else if c.is_left_paren() {
 | 
				
			||||||
            self.advance();
 | 
					            self.advance();
 | 
				
			||||||
| 
						 | 
					@ -298,9 +296,9 @@ impl Lexer {
 | 
				
			||||||
            self.state = State::NumberRadix;
 | 
					            self.state = State::NumberRadix;
 | 
				
			||||||
            self.advance();
 | 
					            self.advance();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if let Some(exactness) = Exactness::from_char(c) {
 | 
					        else if let Some(exactness) = Exact::from_char(c) {
 | 
				
			||||||
            self.number_builder.exact(exactness);
 | 
					            self.number_builder.exact(exactness);
 | 
				
			||||||
            self.state = State::NumberExactness;
 | 
					            self.state = State::NumberExact;
 | 
				
			||||||
            self.advance();
 | 
					            self.advance();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
| 
						 | 
					@ -492,7 +490,7 @@ impl Iterator for Lexer {
 | 
				
			||||||
                State::Initial => self.state_initial(c),
 | 
					                State::Initial => self.state_initial(c),
 | 
				
			||||||
                State::Number => self.state_number(c),
 | 
					                State::Number => self.state_number(c),
 | 
				
			||||||
                State::NumberDecimal => self.state_number_decimal(c),
 | 
					                State::NumberDecimal => self.state_number_decimal(c),
 | 
				
			||||||
                State::NumberExactness => self.state_number_exactness(c),
 | 
					                State::NumberExact => self.state_number_exactness(c),
 | 
				
			||||||
                State::NumberRadix => self.state_number_radix(c),
 | 
					                State::NumberRadix => self.state_number_radix(c),
 | 
				
			||||||
                State::NumberSign => self.state_number_sign(c),
 | 
					                State::NumberSign => self.state_number_sign(c),
 | 
				
			||||||
                State::Sign => self.state_sign(c),
 | 
					                State::Sign => self.state_sign(c),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue