From a822a4ab6930e5cea2e42e303482125ad0296549 Mon Sep 17 00:00:00 2001 From: Apoorva Ranade Date: Sun, 2 May 2021 11:19:50 +0530 Subject: [PATCH] UnaryExpr Analyze fixed --- src/main/java/chocopy/pa3/CodeGenImpl.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/chocopy/pa3/CodeGenImpl.java b/src/main/java/chocopy/pa3/CodeGenImpl.java index e46e3de..eddcee9 100644 --- a/src/main/java/chocopy/pa3/CodeGenImpl.java +++ b/src/main/java/chocopy/pa3/CodeGenImpl.java @@ -358,12 +358,19 @@ public class CodeGenImpl extends CodeGenBase @Override public Register analyze(UnaryExpr node) { - node.operand.dispatch(this); - if(node.operator.equals("-")) - { + if(node.operator.equals("-") && node.getInferredType().equals(Type.INT_TYPE)) + { + node.operand.dispatch(this); backend.emitLI(Register.T0, -1, "Set value of Register T0 to -1"); backend.emitMUL(Register.A0, Register.A0, Register.T0, "Multiply by -1"); } + else if(node.operator.equals("not") && node.getInferredType().equals(Type.BOOL_TYPE)) + { + node.operand.dispatch(this); + backend.emitSEQZ(Register.T0, Register.A0, "Not operation on Register A0"); + } + else + return null; return Register.A0; }