📚 Phase 15 - セルフホスティング戦略の明確化とEXE-first実装
## 主な変更点 ### 🎯 戦略の転換と明確化 - PyVMを開発ツールとして位置づけ(本番経路ではない) - EXE-first戦略を明確に優先(build_compiler_exe.sh実装済み) - Phase順序の整理: 15.2(LLVM)→15.3(コンパイラ)→15.4(VM) ### 🚀 セルフホスティング基盤の実装 - apps/selfhost-compiler/にNyashコンパイラMVP実装 - compiler.nyash: メインエントリー(位置引数対応) - boxes/: parser_box, emitter_box, debug_box分離 - tools/build_compiler_exe.sh: ネイティブEXEビルド+dist配布 - Python MVPパーサーStage-2完成(local/if/loop/call/method/new) ### 📝 ドキュメント整備 - Phase 15 README/ROADMAP更新(Self-Hosting優先明記) - docs/guides/exe-first-wsl.md: WSLクイックスタート追加 - docs/private/papers/: 論文G~L、爆速事件簿41事例収録 ### 🔧 技術的改善 - JSON v0 Bridge: If/Loop PHI生成実装(ChatGPT協力) - PyVM/llvmliteパリティ検証スイート追加 - using/namespace機能(gated実装、Phase 15では非解決) ## 次のステップ 1. パーサー無限ループ修正(未実装関数の実装) 2. EXEビルドとセルフホスティング実証 3. c0→c1→c1'ブートストラップループ確立 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
38
docs/reference/language/EBNF.md
Normal file
38
docs/reference/language/EBNF.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Nyash Grammar (Stage‑2 EBNF)
|
||||
|
||||
Status: Fixed for Phase 15 Stage‑2. Parser implementations (Rust/Python/Nyash selfhost) should conform to this subset.
|
||||
|
||||
program := stmt* EOF
|
||||
|
||||
stmt := 'return' expr
|
||||
| 'local' IDENT '=' expr
|
||||
| 'if' expr block ('else' block)?
|
||||
| 'loop' '('? expr ')' ? block
|
||||
| expr ; expression statement
|
||||
|
||||
block := '{' stmt* '}'
|
||||
|
||||
expr := logic
|
||||
logic := compare (('&&' | '||') compare)*
|
||||
compare := sum (( '==' | '!=' | '<' | '>' | '<=' | '>=' ) sum)?
|
||||
sum := term (('+' | '-') term)*
|
||||
term := unary (('*' | '/') unary)*
|
||||
unary := '-' unary | factor
|
||||
|
||||
factor := INT
|
||||
| STRING
|
||||
| IDENT call_tail*
|
||||
| '(' expr ')'
|
||||
| 'new' IDENT '(' args? ')'
|
||||
|
||||
call_tail := '.' IDENT '(' args? ')' ; method
|
||||
| '(' args? ')' ; function call
|
||||
|
||||
args := expr (',' expr)*
|
||||
|
||||
Notes
|
||||
- ASI: Newline is the primary statement separator. Do not insert a semicolon between a closed block and a following 'else'.
|
||||
- Short-circuit: '&&' and '||' must not evaluate the RHS when not needed.
|
||||
- Unary minus has higher precedence than '*' and '/'.
|
||||
- IDENT names consist of [A-Za-z_][A-Za-z0-9_]*
|
||||
|
||||
Reference in New Issue
Block a user