skylang/src/main.rs

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));
}