36 lines
878 B
Rust
36 lines
878 B
Rust
#![allow(warnings)]
|
|
#![feature(unsized_locals)]
|
|
#![feature(arc_unwrap_or_clone)]
|
|
#![feature(associated_type_bounds)]
|
|
pub mod lex;
|
|
pub mod codegen;
|
|
use crate::codegen::fasm::*;
|
|
use crate::lex::tok::*;
|
|
|
|
use crate::parse::parse::*;
|
|
use logos::Logos;
|
|
|
|
pub mod parse;
|
|
|
|
macro_rules! arrow {
|
|
($spaces:expr) => {
|
|
println!("{}↓", $spaces);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let mut args = std::env::args();
|
|
let (_, parsed) = (args.next(), args.next().unwrap());
|
|
let mut lexer = Token::lexer(parsed.as_str());
|
|
println!("\"{}\"", parsed);
|
|
arrow!(" ");
|
|
println!("{:?}", lex_str(parsed.as_str()));
|
|
arrow!(" ");
|
|
let parsed = parse_math(lexer);
|
|
println!("{:?}", parsed);
|
|
arrow!(" ");
|
|
let mut code = FasmCodegen::new();
|
|
println!("{}", code.fasm_codegen(&vec![parsed.unwrap()], true));
|
|
}
|
|
|