feat: 列表推导式 [for x in arr: expr] — parser+sema+codegen
AST(29): +AST_LIST_COMP, parser 解析 [for var in expr: body] sema: 创建子作用域注册循环变量, codegen: for 循环绑定+填充结果数组 已知限制: 仅支持 2 元素及以下数组 (大数组 alloca 对齐问题待修) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -109,6 +109,14 @@ AstNode* ast_make_defer_stmt(void* alloc, AstNode* body, SourceLoc loc) {
|
||||
return n;
|
||||
}
|
||||
|
||||
AstNode* ast_make_list_comp(void* alloc, const char* var, AstNode* arr, AstNode* map, SourceLoc loc) {
|
||||
NEW(alloc, AST_LIST_COMP);
|
||||
n->as.list_comp.var_name = var;
|
||||
n->as.list_comp.array = arr;
|
||||
n->as.list_comp.map_expr = map;
|
||||
return n;
|
||||
}
|
||||
|
||||
AstNode* ast_make_binary(void* alloc, BinaryOp op, AstNode* left, AstNode* right, SourceLoc loc) {
|
||||
NEW(alloc, AST_BINARY_EXPR);
|
||||
n->as.binary.op = op; n->as.binary.left = left; n->as.binary.right = right;
|
||||
|
||||
Reference in New Issue
Block a user