sandwich

A funny programming language written in Rust
git clone https://tilde.team/~karx/sandwich.git
Log | Files | Refs | README | LICENSE

commit dc4efa3aa6dedf9121791366c02b6b6941a53612
parent 6bebbac9cd22d3f16fce0cc27ba89cc74490eb0c
Author: Yash <nerdstep710@gmail.com>
Date:   Wed,  3 Feb 2021 15:48:11 -0600

Implement program class

Diffstat:
Minp.txt | 2+-
Msrc/main.rs | 37+++++++++++++++++++++++++++++++++++--
2 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/inp.txt b/inp.txt @@ -1 +1 @@ -Test file +Test file diff --git a/src/main.rs b/src/main.rs @@ -1,5 +1,37 @@ use std::fs; use std::env; +use std::fmt; + +struct Program { + data: Vec<String>, + pc: u32 +} + +impl Program { + fn from_string(program: String) -> Program { + let mut op_list: Vec<String> = Vec::new(); + + for opcode in program.split(" ").collect::<Vec<&str>>() { + let mut new_op = opcode.to_owned(); + new_op = new_op.replace("\n", ""); + + if new_op.len() != 0 { + op_list.push(new_op.to_owned()); + } + } + return Program{ data: op_list, pc: 0 }; + } + + fn run(&self) { + println!("{}", self); + } +} + +impl fmt::Display for Program { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Program ({:?})", self.data) + } +} fn main() { @@ -9,7 +41,8 @@ fn main() { } let filename = &args[1]; - + let contents = fs::read_to_string(filename).expect("Something went wrong reading the file"); - println!("{}", contents); + let prog = Program::from_string(contents); + prog.run(); }