mirror of
https://github.com/imjasonh/nescript
synced 2026-07-09 09:18:01 +00:00
M2: Add function/array parsing, IR data structures and lowering
Parser extensions: - Function declarations with params and return types (fun, inline fun) - Array type syntax (u8[16]), array literal expressions ([1, 2, 3]) - fast/slow variable placement hints - Functions stored in Program AST IR module (new): - IrProgram, IrFunction, IrBasicBlock, IrOp, IrTerminator types - AST-to-IR lowering pass with: - Expression lowering to virtual temps - Control flow (if/else, while, loop) to basic blocks with branches - Break/continue via loop context stack - Short-circuit logical and/or - Button reads, draw sprites, wait_frame - Constants inlined as LoadImm - State handlers lowered as separate IR functions Tests: 6 new parser tests, 11 new IR lowering tests (153 total) https://claude.ai/code/session_01W6eQFStA66EuMKHUFo2rx3
This commit is contained in:
parent
fd5a940c89
commit
664ccc05db
8 changed files with 1295 additions and 22 deletions
|
|
@ -395,7 +395,7 @@ impl CodeGen {
|
|||
self.emit(LDA, AM::ZeroPage(self.input_addr));
|
||||
self.emit(AND, AM::Immediate(mask));
|
||||
}
|
||||
Expr::Call(_, _, _) | Expr::ArrayIndex(_, _, _) => {
|
||||
Expr::Call(_, _, _) | Expr::ArrayIndex(_, _, _) | Expr::ArrayLiteral(_, _) => {
|
||||
// TODO: implement for later milestones
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue