diff options
Diffstat (limited to 'src/ast/parser.rs')
| -rw-r--r-- | src/ast/parser.rs | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/src/ast/parser.rs b/src/ast/parser.rs index bc29f94..85be68c 100644 --- a/src/ast/parser.rs +++ b/src/ast/parser.rs @@ -1,5 +1,5 @@ use super::{Expr, Stmt}; -use crate::lexer::{Literal, Token, TokenType}; +use crate::lexer::{Token, TokenType}; pub struct AstParser<'a> { tokens: Vec<Token<'a>>, @@ -11,19 +11,10 @@ impl<'a> AstParser<'a> { pub fn new(tokens: Vec<Token<'a>>) -> Self { Self { tokens, index: 0 } } - - fn previous(&self) -> Option<&Token> { - self.tokens.get(self.index - 1) - } - fn peek(&self) -> &Token { &self.tokens[self.index] } - fn peek_nth(&self, nth: usize) -> Option<&Token> { - self.tokens.get(self.index + nth) - } - fn advance(&mut self) -> Option<&Token> { if self.eof() { return None; @@ -50,16 +41,6 @@ impl<'a> AstParser<'a> { self.advance_if(|it| it.tt == *next) } - fn advance_seq(&mut self, seq: &[TokenType]) -> bool { - for token in seq { - if !self.advance_if_eq(token) { - return false; - } - } - - true - } - fn consume(&mut self, next: TokenType, error: &str) { if std::mem::discriminant(&self.peek().tt) != std::mem::discriminant(&next) { panic!("{error}"); @@ -309,6 +290,7 @@ macro_rules! binary_expr { } #[rustfmt::skip] +#[allow(unused_parens)] impl<'a> AstParser<'a> { // Binary expressions in order of precedence from lowest to highest. binary_expr!(logical_or , logical_and , (TokenType::PipePipe)); @@ -385,9 +367,6 @@ mod tests { #[test] fn basic_expression_c() { - let lexer = Lexer::new("9 > 6 && 5 + 7 == 32 || \"apple\" != \"banana\""); - let tokens = lexer.collect_vec(); - // TODO: } } |
