phase: 20.49 COMPLETE; 20.50 Flow+String minimal reps; 20.51 selfhost v0/v1 minimal (Option A/B); hv1-inline binop/unop/copy; docs + run_all + CURRENT_TASK -> 21.0
This commit is contained in:
37
tools/selfhost/gen_v1_from_provider.sh
Normal file
37
tools/selfhost/gen_v1_from_provider.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
# gen_v1_from_provider.sh — Generate MIR JSON v1 via provider env.mirbuilder.emit (dev)
|
||||
# Produces a minimal v1 program that returns 42.
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
source "$ROOT/tools/smokes/v2/lib/test_runner.sh" 2>/dev/null || true
|
||||
|
||||
# Build Program(JSON v0) inline (version:0, kind:"Program")
|
||||
prog_json=$(cat <<'JSON'
|
||||
{
|
||||
"version": 0,
|
||||
"kind": "Program",
|
||||
"body": [
|
||||
{ "type": "Return", "expr": { "type": "Int", "value": 42 } }
|
||||
]
|
||||
}
|
||||
JSON
|
||||
)
|
||||
|
||||
code=$(cat <<'HCODE'
|
||||
static box Main { method main(args) {
|
||||
local p = env.get("NYASH_PROGRAM_JSON")
|
||||
// 直接 hostbridge.extern_invoke を呼び出して v1 JSON を取得
|
||||
local out = hostbridge.extern_invoke("env.mirbuilder", "emit", p)
|
||||
print("" + out)
|
||||
return 0
|
||||
} }
|
||||
HCODE
|
||||
)
|
||||
|
||||
# Run via Rust VM (dev flags similar to test_runner)
|
||||
NYASH_PROGRAM_JSON="$prog_json" \
|
||||
NYASH_JSON_SCHEMA_V1=1 \
|
||||
NYASH_USING_AST=1 NYASH_DISABLE_NY_COMPILER=1 HAKO_DISABLE_NY_COMPILER=1 \
|
||||
NYASH_PARSER_STAGE3=1 HAKO_PARSER_STAGE3=1 NYASH_PARSER_ALLOW_SEMICOLON=1 \
|
||||
run_nyash_vm -c "$code" 2>/dev/null | tr -d '\r'
|
||||
Reference in New Issue
Block a user