Parser improvements: - Added expression statement fallback in parse_statement() for flexible syntax - Fixed ternary operator to use PeekExpr instead of If AST (better lowering) - Added peek_token() check to avoid ?/?: operator conflicts LLVM Python improvements: - Added optional ESC_JSON_FIX environment flag for string concatenation - Improved PHI generation with better default handling - Enhanced substring tracking for esc_json pattern Documentation updates: - Updated language guide with peek expression examples - Added box theory diagrams to Phase 15 planning - Clarified peek vs when syntax differences These changes enable cleaner parser implementation for self-hosting, especially for handling digit conversion with peek expressions instead of 19-line if-else chains. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Self‑Hosting Apps (Ny‑only)
Purpose
- Keep self‑hosting Ny scripts isolated from general
apps/noise. - Enable fast inner loop without touching Rust unless necessary.
Conventions
- Entry scripts live under this folder; prefer minimal dependencies.
- Use
--using-path apps/selfhost:appswhen resolving modules. - Prefer VM (
--backend vm) for speed and stability.
Quickstart
- Run minimal sample:
make dev(usesapps/selfhost-minimal/main.nyash) - Watch changes:
make dev-watch - Run parser Ny project:
./tools/dev_selfhost_loop.sh --std -v --backend vm -- apps/selfhost/ny-parser-nyash/main.nyash
Guidelines
- Keep files small and composable; avoid cross‑project coupling.
- If moving an existing
apps/*item here, update docs/scripts accordingly. - For namespace usage, pass
--using-path apps/selfhost:apps.