grammar(P0): add peek expression, continue statement, and field type annotations acceptance; add sample apps and interpreter path\n\n- tokenizer: add keywords (peek, continue), tokens (=> as FatArrow, :: as DoubleColon), keep >> as Arrow\n- parser: implement peek as expression (literal patterns only, else required), add continue; accept field 'name: Type' (discard type P0)\n- interpreter: evaluate PeekExpr; add Continue control flow handling\n- apps: add peek-demo, loop-continue-demo, adjust field-decl demo; use ConsoleBox instead of env.console for interpreter backend\n- docs: CURRENT_TASK updated earlier for Phase 12.7 P0\n\nNOTE: peek arms currently single-expression (no block expr yet); VM/MIR path does not lower PeekExpr yet; use --backend interpreter for demos

This commit is contained in:
Moe Charm
2025-09-03 15:26:15 +09:00
parent ceb22b6c18
commit 6d79d7d3ac
20 changed files with 1581 additions and 4 deletions

View File

@ -40,6 +40,9 @@ impl NyashParser {
TokenType::BREAK => {
self.parse_break()
},
TokenType::CONTINUE => {
self.parse_continue()
},
TokenType::RETURN => {
self.parse_return()
},
@ -204,6 +207,12 @@ impl NyashParser {
self.advance(); // consume 'break'
Ok(ASTNode::Break { span: Span::unknown() })
}
/// continue文をパース
pub(super) fn parse_continue(&mut self) -> Result<ASTNode, ParseError> {
self.advance(); // consume 'continue'
Ok(ASTNode::Continue { span: Span::unknown() })
}
/// return文をパース
pub(super) fn parse_return(&mut self) -> Result<ASTNode, ParseError> {