68 lines
1.8 KiB
Rust
68 lines
1.8 KiB
Rust
#![allow(warnings)]
|
|
|
|
pub mod lex;
|
|
pub mod codegen;
|
|
use crate::codegen::fasm::*;
|
|
use crate::lex::tok::*;
|
|
use crate::parse::ast::*;
|
|
use crate::parse::parse::*;
|
|
use logos::Logos;
|
|
|
|
pub mod parse;
|
|
|
|
macro_rules! arrow {
|
|
($spaces:expr) => {
|
|
println!("{}↓", $spaces);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
// let fc = fasm_codegen!(
|
|
// vec![
|
|
// Expr::VarDefinition(VarDefinition {name: "goren", value: Value::Number(10)}),
|
|
// Expr::MathExpr(Math {
|
|
// left: &Value::Var(VarReference { name: "goren"}),
|
|
// right: &Value::Number(17),
|
|
// operator: MathOperator::OP_MULT
|
|
// }
|
|
// ),
|
|
// Expr::FunDefinition(FunDefinition {
|
|
// name: "adder", contents: vec![
|
|
// Expr::MathExpr(
|
|
// Math {
|
|
// left: &Value::Param(ParamReference {param_number: 0}),
|
|
// right: &Value::Param(ParamReference {param_number: 1}),
|
|
// operator: MathOperator::OP_ADD
|
|
// }
|
|
// )
|
|
// ]
|
|
// }),
|
|
|
|
// Expr::FunCall(
|
|
// FunCall {
|
|
// name: "adder",
|
|
// params: vec![Value::Var(VarReference {name: "goren"}), Value::Number(6)]
|
|
// }
|
|
// ),
|
|
|
|
// Expr::Breakpoint
|
|
// ]
|
|
// );
|
|
|
|
|
|
// println!("{}", fc);
|
|
let parsed = "30 * 60";
|
|
|
|
let mut lexer = Token::lexer(parsed);
|
|
|
|
println!("\"{}\"", parsed);
|
|
arrow!(" ");
|
|
println!("{:?}", lex_str(parsed));
|
|
arrow!(" ");
|
|
let parsed = parse_math(lexer);
|
|
println!("{:?}", parsed);
|
|
arrow!(" ");
|
|
println!("{}", fasm_codegen!(&vec![parsed.unwrap()]));
|
|
}
|
|
|