hey it can calculate 4 again xP
This commit is contained in:
parent
8a44d045ae
commit
fb563addf4
2 changed files with 28 additions and 9 deletions
|
|
@ -21,16 +21,9 @@ pub fn parser<'src>() -> impl Parser<'src, &'src [Token<'src>], Expression<'src>
|
|||
let eq = just(Token::Equals);
|
||||
|
||||
let expr = recursive(|expr| {
|
||||
let atom = {
|
||||
let parenthesized = expr
|
||||
.clone()
|
||||
.delimited_by(just(Token::ParenBegin), just(Token::ParenEnd));
|
||||
let atom = select! {
|
||||
Token::Float(x) => Expression::Float(x),
|
||||
|
||||
let integer = select! {
|
||||
Token::Integer(n) => Expression::Integer(n),
|
||||
};
|
||||
|
||||
parenthesized.or(integer)
|
||||
};
|
||||
|
||||
let unary = just(Token::Substract)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
use std::fmt;
|
||||
|
||||
use logos::{Lexer, Logos};
|
||||
|
||||
#[derive(Logos, Debug, Clone, PartialEq)]
|
||||
|
|
@ -56,3 +58,27 @@ pub enum Token<'src> {
|
|||
#[token("else")]
|
||||
Keyword(&'src str),
|
||||
}
|
||||
|
||||
|
||||
impl fmt::Display for Token<'_> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
Token::Float(s) => write!(f, "{s}"),
|
||||
Token::Add => write!(f, "+"),
|
||||
Token::Bool(_) => write!(f, "+"),
|
||||
Token::Substract => write!(f, "-"),
|
||||
Token::Multiply => write!(f, "*"),
|
||||
Token::Divide => write!(f, "/"),
|
||||
Token::Equals => write!(f, "="),
|
||||
Token::Colon => write!(f, ":"),
|
||||
Token::ParenBegin => write!(f, "("),
|
||||
Token::ParenEnd => write!(f, ")"),
|
||||
Token::BraceBegin => write!(f, "{{"),
|
||||
Token::BraceEnd => write!(f, "}}"),
|
||||
Token::Integer(s) => write!(f, "{s}"),
|
||||
Token::Ident(s) => write!(f, "{s}"),
|
||||
Token::String(s) => write!(f, "{s}"),
|
||||
Token::Keyword(s) => write!(f, "{s}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue