ast (am baum)

This commit is contained in:
nora 2022-03-21 12:38:35 +01:00
parent c43fa694b8
commit 234f03dc1a
9 changed files with 457 additions and 0 deletions

58
ub_parser/src/lexer.rs Normal file
View file

@ -0,0 +1,58 @@
use logos::Logos;
#[derive(Logos, Debug, PartialEq)]
pub enum Token {
// punctuation
#[token("{")]
BraceO,
#[token("}")]
BraceC,
#[token("[")]
BracketO,
#[token("]")]
BracketC,
#[token("(")]
ParenO,
#[token(")")]
ParenC,
#[token(".")]
Dot,
#[token("=")]
Eq,
#[token("==")]
EqEq,
#[token("!")]
Bang,
#[token("!=")]
BangEq,
#[token(">")]
Greater,
#[token("<")]
Less,
#[token(">=")]
GreaterEq,
#[token("<=")]
LessEq,
#[token("*")]
Asterisk,
#[token("/")]
Slash,
#[token("+")]
Plus,
#[token("-")]
Minus,
// keywords
#[token("struct")]
Struct,
#[token("fn")]
Fn,
#[error]
#[regex(r"[ \t\n\r\f]+")]
Error,
}
pub fn lex(code: &str) -> logos::Lexer<'_, Token> {
Token::lexer(code)
}