use crate::ast::Expression;
use crate::scanner::token::Token;
pub struct Parser {
tokens: Vec<Token>,
}
impl From<Vec<Token>> for Parser {
fn from(tokens: Vec<Token>) -> Self {
Parser { tokens }
}
}
impl Parser {
pub fn parse(&mut self) -> Result<Expression, Vec<ParserError>> {
todo!()
}
pub fn next_or_eof(&mut self) -> Token {
self.tokens.pop().unwrap_or(Token::Eof)
}
pub fn peek(&self) -> &Token {
self.tokens.last().unwrap_or(&Token::Eof)
}
}
#[derive(Debug, Clone)]
pub enum ParserError {
UnmatchedBrace,
UnexpectedToken(Token),
}