mirror of
https://github.com/Noratrieb/ub.git
synced 2026-01-14 16:45:05 +01:00
ast (am baum)
This commit is contained in:
parent
c43fa694b8
commit
234f03dc1a
9 changed files with 457 additions and 0 deletions
58
ub_parser/src/lexer.rs
Normal file
58
ub_parser/src/lexer.rs
Normal 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)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue