Compare commits

...

2 Commits

View File

@ -1,5 +1,3 @@
use std::fmt::Display;
use crate::{ use crate::{
ast::Expr, ast::Expr,
token::{LiteralType, Token, TokenType}, token::{LiteralType, Token, TokenType},
@ -26,7 +24,14 @@ impl Parser<'_> {
} }
fn expression(&mut self) -> Result<Expr, ParseError> { fn expression(&mut self) -> Result<Expr, ParseError> {
self.equality() self.comma()
}
// Challenge #1. We're writing comma before equality, because it has the lowest precedence
// comma -> equality ((,) equality)* ; // expression grammar
fn comma(&mut self) -> Result<Expr, ParseError> {
use TokenType::*;
self.left_association_binary(&[Comma], Parser::equality)
} }
fn equality(&mut self) -> Result<Expr, ParseError> { fn equality(&mut self) -> Result<Expr, ParseError> {