From 162d793ab1008683878164400cf6da2f1f674a3c Mon Sep 17 00:00:00 2001 From: Vu Tuan Minh Date: Fri, 11 Apr 2025 13:56:02 +0200 Subject: [PATCH] if --- src/main/java/TP2/asd/toLLVM_Visitor.java | 20 +++++++++++++++---- .../TP2/llvm/PrettyprinterLLVM_Visitor.java | 5 +++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/TP2/asd/toLLVM_Visitor.java b/src/main/java/TP2/asd/toLLVM_Visitor.java index f38f522..ebcbaf2 100644 --- a/src/main/java/TP2/asd/toLLVM_Visitor.java +++ b/src/main/java/TP2/asd/toLLVM_Visitor.java @@ -143,8 +143,20 @@ public class toLLVM_Visitor implements ProgramVisitor @Override public ArrayList visitIfThen(IfThenImp instr, SymTable h) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'visitIfThen'"); + ArrayList l = new ArrayList<>(); + String labelIf= "if"+h.getNewIdLabel(); + String labelThen= "then"+h.getNewIdLabel(); + String labelEnd= "end"+h.getNewIdLabel(); + + l.add(new LabelLLVMImp(labelIf)); + //TODO + + //Je t'attends Tibo + l.add(new LabelLLVMImp(labelThen)); + //TODO + + l.add(new LabelLLVMImp(labelEnd)); + return l; } @Override @@ -157,8 +169,8 @@ public class toLLVM_Visitor implements ProgramVisitor public ArrayList visitWhile(WhileImp instr, SymTable h) { ArrayList l = new ArrayList<>(); - String labelWhile = "while"+h.getNewIdLabel(); - String labelDo = "do"+h.getNewIdLabel(); + String labelWhile = "while"+h.getNewIdLabel()+":"; + String labelDo = "do"+h.getNewIdLabel()+":"; String labelDone = "done"+h.getNewIdLabel(); l.add(new LabelLLVMImp(labelWhile)); diff --git a/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java b/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java index 98eb2e4..93bc6ed 100644 --- a/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java +++ b/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java @@ -151,4 +151,9 @@ TypeLLVMVisitor public String visitVoidLLVM(VoidLLVMImpl e, String h) { return "void"; } + + @Override + public String visitLabelLLVM(LabelLLVMImp instr, String h) { + return ""; + } }