Merge branch 'bill/merge-cond-cls' of https://github.com/nyu-compiler-construction/pa3-chocopy-code-generation-mjolnir into sanjar/functions
This commit is contained in:
@@ -434,8 +434,9 @@ public class CodeGenImpl extends CodeGenBase
|
||||
@Override
|
||||
public Register analyze(IfExpr node)
|
||||
{
|
||||
node.condition.dispatch(this);
|
||||
Register result = node.condition.dispatch(this);
|
||||
Label ln = generateLocalLabel();
|
||||
backend.emitBEQZ(result, ln,"Jump to beginning of loop");
|
||||
node.thenExpr.dispatch(this);
|
||||
backend.emitJ(ln, "Jump to end of if expression");
|
||||
backend.emitLocalLabel(elseBlock, "Else part of if expression");
|
||||
@@ -447,8 +448,9 @@ public class CodeGenImpl extends CodeGenBase
|
||||
@Override
|
||||
public Register analyze(IfStmt node)
|
||||
{
|
||||
node.condition.dispatch(this);
|
||||
Register result = node.condition.dispatch(this);
|
||||
Label ln = generateLocalLabel();
|
||||
backend.emitBEQZ(result, ln,"Jump to beginning of loop");
|
||||
for(Stmt s:node.thenBody)
|
||||
s.dispatch(this);
|
||||
backend.emitJ(ln, "Jump to end of if statement");
|
||||
@@ -737,13 +739,13 @@ public class CodeGenImpl extends CodeGenBase
|
||||
{
|
||||
Label startLoop = generateLocalLabel();
|
||||
backend.emitLocalLabel(startLoop, "Beginning of while loop");
|
||||
node.condition.dispatch(this);
|
||||
Register result = node.condition.dispatch(this);
|
||||
Label endLoop = elseBlock;
|
||||
backend.emitBEQZ(result, endLoop,"Jump to beginning of loop");
|
||||
for(Stmt stmt:node.body)
|
||||
stmt.dispatch(this);
|
||||
backend.emitJ(startLoop, "Jump to beginning of loop");
|
||||
backend.emitLocalLabel(endLoop, "End of while loop");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user