fix(parser): allow negative numbers
made adding a minus sign before a group/primary expression implicitly multiply by -1
This commit is contained in:
1 file changed
+11
@@ -1,3 +1,5 @@
|
||||
use rust_decimal::dec;
|
||||
|
||||
use crate::math::{
|
||||
lexer::Token,
|
||||
types::{Expression, Operator},
|
||||
@@ -126,6 +128,15 @@ impl Parser {
|
||||
self.position += 1;
|
||||
Expression::Number(num)
|
||||
}
|
||||
Token::Operator(Operator::Subtract) => {
|
||||
self.position += 1;
|
||||
let right = self.parse_group();
|
||||
Expression::Operation(
|
||||
Operator::Multiply,
|
||||
Box::new(Expression::Number(dec!(-1))),
|
||||
Box::new(right),
|
||||
)
|
||||
}
|
||||
Token::Identifier(identifier) => {
|
||||
let is_function =
|
||||
matches!(self.tokens.get(self.position + 1), Some(Token::OpenParen));
|
||||
|
||||
Reference in new issue
Block a user