first commit

This commit is contained in:
LunarAkai 2025-08-05 16:20:01 +02:00
commit d974798fcb
6 changed files with 184 additions and 0 deletions

33
src/lexer.rs Normal file
View file

@ -0,0 +1,33 @@
use logos::{Lexer, Logos};
#[derive(Logos, Debug, Clone, PartialEq)]
#[logos(skip r"[ \t\r\n\f]+")] // Skips whitespace
enum Token<'source> {
#[token("false", |_| false)]
#[token("true", |_| true)]
Bool(bool),
#[token("+")]
Add,
#[token("-")]
Substract,
#[token("*")]
Multiply,
#[token("/")]
Divide,
#[regex(r"[_a-zA-Z][_0-9a-zA-Z]*")]
Ident(&'source str),
#[regex(r#""([^"\\\x00-\x1F]|\\(["\\bnfrt/]|u[a-fA-F0-9]{4}))*""#, |lex| lex.slice().to_owned())]
String(String),
}
fn float<'a>(lex: &mut Lexer<'a, Token<'a>>) -> Result<f64, ()> {
lex.slice().parse().map_err(|_| ())
}

16
src/lib.rs Normal file
View file

@ -0,0 +1,16 @@
mod lexer;
pub fn add(left: u64, right: u64) -> u64 {
left + right
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}