1
0
Fork 0
forked from AbleOS/ableos
ableOS_v1Change/ableos/src/experiments/absi.rs

109 lines
2.8 KiB
Rust
Raw Normal View History

2022-01-18 06:15:51 -06:00
// TODO improve tokenizer/parser
2021-12-24 13:00:20 -06:00
pub fn colorify(eval: &str) {
let y = eval.split("$");
for z in y {
match z {
"BLACK" => {
set_vga_color(Color::Black, Color::Black);
}
"RED" => {
set_vga_color(Color::Red, Color::Black);
}
"GREEN" => {
set_vga_color(Color::Green, Color::Black);
}
"BLUE" => {
set_vga_color(Color::Blue, Color::Black);
}
"CYAN" => {
set_vga_color(Color::Cyan, Color::Black);
}
"MAGENTA" => {
set_vga_color(Color::Magenta, Color::Black);
}
"BROWN" => {
set_vga_color(Color::Brown, Color::Black);
}
"LIGHTGRAY" => {
set_vga_color(Color::LightGray, Color::Black);
}
"DARKGRAY" => {
set_vga_color(Color::DarkGray, Color::Black);
}
"LIGHTBLUE" => {
set_vga_color(Color::LightBlue, Color::Black);
}
"LIGHTGREEN" => {
set_vga_color(Color::LightGreen, Color::Black);
}
"LIGHTCYAN" => {
set_vga_color(Color::LightCyan, Color::Black);
}
"LIGHTRED" => {
set_vga_color(Color::LightRed, Color::Black);
}
"PINK" => {
set_vga_color(Color::Pink, Color::Black);
}
"YELLOW" => {
set_vga_color(Color::Yellow, Color::Black);
}
"WHITE" => {
set_vga_color(Color::White, Color::Black);
}
"RESET" => {
set_vga_color(Color::White, Color::Black);
}
elk => {
2021-12-28 02:56:29 -06:00
kprint!("{}", elk);
2021-12-24 13:00:20 -06:00
}
}
}
}
2022-02-18 10:04:10 -06:00
2022-02-21 07:17:16 -06:00
use logos::Logos;
#[derive(Logos, Debug, PartialEq)]
pub enum Token {
// Hex(u32),
#[regex(r"\$RED\$")]
Red,
2022-02-18 10:04:10 -06:00
2022-02-21 07:17:16 -06:00
#[regex(r"\$RESET\$")]
Reset,
2022-02-18 10:04:10 -06:00
2022-02-21 07:17:16 -06:00
#[regex("[a-zA-Z!@#$%^&*\">()\n ]+", parse_text, priority = 2)]
Text(String),
#[error]
#[regex(r"[ \t\n\f]+", logos::skip)]
Error,
}
pub fn colorify_2(eval: &str) {
let lexer = Token::lexer(eval);
2022-02-21 07:17:16 -06:00
for token in lexer {
use Token::*;
match token {
Red => {
set_vga_color(Color::Red, Color::Black);
}
Reset => {
set_vga_color(Color::White, Color::Black);
}
Text(text) => {
kprint!("{}", text);
}
err => {
error!("Error parsing {:?}", err);
2022-02-21 07:17:16 -06:00
}
}
}
}
use logos::Lexer;
2022-02-18 10:04:10 -06:00
2022-03-11 14:16:15 -06:00
use crate::kprint;
2022-02-21 07:17:16 -06:00
fn parse_text(lex: &mut Lexer<Token>) -> Option<String> {
let slice = lex.slice();
Some(String::from(slice))
}