From b26ff57f4e25690815dc6d08e39889cacd8ddf97 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 7 May 2025 17:41:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compiler/ir/builder/StatementBuilder.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java b/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java index 29cc767..b257fd2 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java @@ -19,18 +19,22 @@ public class StatementBuilder { this.exprBuilder = new ExpressionBuilder(ctx); } - /** 入口:根据不同语句类型分发 */ + /** + * 入口:根据不同语句类型分发 + */ public void build(StatementNode stmt) { - if (stmt instanceof ExpressionStatementNode es) { - exprBuilder.build(es.expression()); + if (stmt instanceof ExpressionStatementNode(org.jcnc.snow.compiler.parser.ast.base.ExpressionNode expression)) { + exprBuilder.build(expression); return; } - if (stmt instanceof AssignmentNode an) { - IRVirtualRegister vr = exprBuilder.build(an.value()); - if (ctx.getScope().lookup(an.variable()) == null) { - ctx.getScope().declare(an.variable(), vr); + if (stmt instanceof AssignmentNode( + String variable, org.jcnc.snow.compiler.parser.ast.base.ExpressionNode value + )) { + IRVirtualRegister vr = exprBuilder.build(value); + if (ctx.getScope().lookup(variable) == null) { + ctx.getScope().declare(variable, vr); } else { - ctx.getScope().put(an.variable(), vr); + ctx.getScope().put(variable, vr); } return; }