forked from AbleOS/ableos_userland
63 lines
1.2 KiB
Rust
63 lines
1.2 KiB
Rust
use logos::Logos;
|
|
|
|
#[derive(Logos, Debug, PartialEq)]
|
|
#[logos(skip r"[ \t\n\f]+")] // Ignore this regex pattern between tokens
|
|
enum Token {
|
|
#[token("{")]
|
|
LeftBrace,
|
|
|
|
#[token("}")]
|
|
RightBrace,
|
|
|
|
#[token("(")]
|
|
LeftParen,
|
|
|
|
#[token(")")]
|
|
RightParen,
|
|
|
|
#[token(";")]
|
|
Semicolon,
|
|
|
|
#[token(":")]
|
|
Colon,
|
|
|
|
#[token("<")]
|
|
LeftArrow,
|
|
|
|
#[token(">")]
|
|
RightArrow,
|
|
|
|
#[token(",")]
|
|
Comma,
|
|
|
|
#[token("=")]
|
|
Equals,
|
|
|
|
#[regex(r#"[A-z]+"#, |lex| lex.slice().parse().ok())]
|
|
Literal(String),
|
|
|
|
#[regex("use [a-zA-Z/]+;", |lex| lex.slice().parse().ok())]
|
|
Component(String),
|
|
|
|
#[regex("U[0-9]+", |lex| lex.slice().parse().ok())]
|
|
UnsignedType(String),
|
|
|
|
#[regex("I[0-9]+", |lex| lex.slice().parse().ok())]
|
|
SignedType(String),
|
|
|
|
#[regex(r"//[ a-zA-Z!-+]+", |lex| lex.slice().parse().ok())]
|
|
Comment(String),
|
|
}
|
|
|
|
fn main() {
|
|
let mut lex = Token::lexer(include_str!("../../../programs/aidl/assets/vfs.idl"));
|
|
|
|
for token in lex {
|
|
// let ok_token = token.ok();
|
|
// if ok_token.is_some() {
|
|
// println!("{:?}", ok_token.unwrap());
|
|
// }
|
|
println!("{:?}", token);
|
|
}
|
|
}
|