From 8596bea1ee4682c0de6faf77934aadb1f1deb8c8 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Fri, 31 Oct 2025 19:16:05 +0900 Subject: [PATCH] =?UTF-8?q?tools(hako-check):=20add=20lightweight=20script?= =?UTF-8?q?=20checker=20(parse=E2=86=92MIR=20verify)=20+=20README;=20uses?= =?UTF-8?q?=20nyash=20--backend=20mir=20--verify?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/hako-check/README.md | 22 ++++++++++++++++++++++ tools/hako-check/hako-check.sh | 26 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 tools/hako-check/README.md create mode 100644 tools/hako-check/hako-check.sh diff --git a/tools/hako-check/README.md b/tools/hako-check/README.md new file mode 100644 index 00000000..c3459a03 --- /dev/null +++ b/tools/hako-check/README.md @@ -0,0 +1,22 @@ +Hakorune Script Checker (MVP) + +Purpose +- Quickly validate Hakorune source files by parsing → MIR build → MIR verify without executing. +- Useful while Python/llvmlite migration is in-flight to keep scripts healthy. + +Usage +- Build nyash: + - cargo build --release +- Run checker: + - tools/hako-check/hako-check.sh path/to/file.hako + +Behavior +- Runs: nyash --backend mir --verify +- Exit codes: + - 0: OK + - 2+: Parse/MIR verify failure (nyash returns non‑zero; checker forwards) + +Notes +- This MVP only checks a single file and depends on the Rust parser. +- Extend with flags (parser selection, JSON emit) as migration progresses. + diff --git a/tools/hako-check/hako-check.sh b/tools/hako-check/hako-check.sh new file mode 100644 index 00000000..9aa38b39 --- /dev/null +++ b/tools/hako-check/hako-check.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -lt 1 ]]; then + echo "usage: tools/hako-check/hako-check.sh " >&2 + exit 1 +fi + +ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)" +BIN="$ROOT_DIR/target/release/nyash" +FILE="$1" + +if [[ ! -x "$BIN" ]]; then + echo "[info] building nyash (release) ..." >&2 + cargo build --release -q +fi + +if [[ ! -f "$FILE" ]]; then + echo "error: file not found: $FILE" >&2 + exit 2 +fi + +# Parse → MIR build → verify (no execute) +"$BIN" --backend mir --verify "$FILE" +echo "OK: $FILE" +