Browse Source

Add x86 generator scaffolding

github-actions
Garrit Franke 3 years ago
parent
commit
9301d21824
  1. 7
      src/generator/mod.rs
  2. 10
      src/generator/x86.rs
  3. 8
      src/main.rs
  4. 2
      src/parser/mod.rs

7
src/generator/mod.rs

@ -0,0 +1,7 @@
use crate::parser::node_type::Program;
pub mod x86;
pub trait Generator {
fn generate(prog: Program) -> String;
}

10
src/generator/x86.rs

@ -0,0 +1,10 @@
use crate::generator::Generator;
use crate::parser::node_type::Program;
pub struct X86Generator;
impl Generator for X86Generator {
fn generate(prog: Program) -> String {
return prog.func.into_iter().map(|f| format!("{:#?}", f)).collect();
}
}

8
src/main.rs

@ -1,6 +1,8 @@
use crate::generator::Generator;
use std::fs::File;
use std::io::Read;
mod generator;
mod lexer;
mod parser;
mod util;
@ -15,6 +17,10 @@ fn main() -> std::io::Result<()> {
let program = parser::parse(tokens, Some(contents));
println!("{:#?}", program);
match program {
Ok(p) => println!("{}", generator::x86::X86Generator::generate(p)),
Err(e) => panic!(e),
}
Ok(())
}

2
src/parser/mod.rs

@ -5,7 +5,7 @@ use crate::util::string_util::highlight_position_in_file;
use std::iter::Peekable;
use std::vec::IntoIter;
mod node_type;
pub mod node_type;
#[cfg(test)]
mod tests;

Loading…
Cancel
Save