From bdf9816bda1fc89afbc4dcb18c2ef89ccff6b4ff Mon Sep 17 00:00:00 2001 From: me Date: Fri, 26 Dec 2025 00:32:46 +0200 Subject: [PATCH] separate ayin-game and ayin interpreter --- Cargo.toml | 6 +++++- Makefile | 6 +++--- programs/map.ayin | 16 ++++++++++++++++ src/ayin.rs | 15 +++++++++++++++ src/{main.rs => game.rs} | 0 src/lib.rs | 1 - 6 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 programs/map.ayin create mode 100644 src/ayin.rs rename src/{main.rs => game.rs} (100%) diff --git a/Cargo.toml b/Cargo.toml index 145abf9..a55035a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,9 +12,13 @@ default-run = "ayin" name = "ayin" path = "src/lib.rs" +[[bin]] +name = "ayin-game" +path = "src/game.rs" + [[bin]] name = "ayin" -path = "src/main.rs" +path = "src/ayin.rs" [[bench]] name = "benchmark" diff --git a/Makefile b/Makefile index 18218d8..9b5b6e8 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ test: .PHONY: run run: - cargo run -- games/there-she-is.ayin + cargo run --bin ayin-game -- games/there-she-is.ayin .PHONY: review review: @@ -20,7 +20,7 @@ review: .PHONY: wasm wasm: - cargo build --target wasm32-unknown-unknown --release - cp target/wasm32-unknown-unknown/release/ayin.wasm html/ + cargo build --bin ayin-game --target wasm32-unknown-unknown --release + cp target/wasm32-unknown-unknown/release/ayin-game.wasm html/ cp -r assets/ html/ (cd html/ && wget https://not-fl3.github.io/miniquad-samples/mq_js_bundle.js -O mq_js_bundle.js) diff --git a/programs/map.ayin b/programs/map.ayin new file mode 100644 index 0000000..cf42950 --- /dev/null +++ b/programs/map.ayin @@ -0,0 +1,16 @@ +let map = fn(f,array) { + let mut index = 0 + loop { + if index >= array.len { + break + } + array.index = f(array.index) + index = index + 1 + } + array +} + +let main = fn() { + map(fn (x) { x + 1 }, [1,2,3]) +} + diff --git a/src/ayin.rs b/src/ayin.rs new file mode 100644 index 0000000..c830449 --- /dev/null +++ b/src/ayin.rs @@ -0,0 +1,15 @@ +fn main() { + match read_file() { + Err(err) => println!("Error: {err:#?}"), + Ok(txt) => match ayin::run_main(&txt) { + Err(err) => println!("Error: {err:#?}"), + Ok(e) => println!("{e:#?}"), + }, + } +} + +fn read_file() -> std::io::Result { + let args: Vec = std::env::args().collect(); + let file = args[1].clone(); + std::fs::read_to_string(file) +} diff --git a/src/main.rs b/src/game.rs similarity index 100% rename from src/main.rs rename to src/game.rs diff --git a/src/lib.rs b/src/lib.rs index 475db5e..dcceda7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -141,7 +141,6 @@ let main = fn() { #[test] fn direction() { let program = " - let main = fn() { let state = setup() update(state)