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>
Nyash Test Programs
このディレクトリには、CI/CDやデバッグ用のテストプログラムが含まれています。
実用的なアプリケーションは親ディレクトリ(apps/)にあります。
テストプログラム一覧
LLVMバックエンドテスト
- ny-llvm-smoke/ - ArrayBox基本操作テスト
- ny-array-llvm-ret/ - ArrayBox戻り値テスト
- ny-echo-lite/ - 最小echo実装(I/Oテスト)
- ny-map-llvm-smoke/ - MapBoxプラグインテスト
- ny-vinvoke-smoke/ - 可変長引数(5引数)テスト
- ny-vinvoke-llvm-ret/ - 可変長引数戻り値テスト
- ny-vinvoke-llvm-ret-size/ - 固定長引数(size())テスト
実行方法
これらのテストは主に tools/llvm_smoke.sh から実行されます:
# 環境変数でテストを有効化
NYASH_LLVM_MAP_SMOKE=1 ./tools/llvm_smoke.sh
NYASH_LLVM_VINVOKE_RET_SMOKE=1 ./tools/llvm_smoke.sh
注意事項
- これらは最小限の機能テストであり、実用的なアプリケーションではありません
- CIでの自動テストを前提に設計されています
- エラー時の切り分けが容易になるよう、各テストは単一の機能に焦点を当てています