diff --git a/src/main/java/TP2/Main.java b/src/main/java/TP2/Main.java index fe77088..422f852 100644 --- a/src/main/java/TP2/Main.java +++ b/src/main/java/TP2/Main.java @@ -26,6 +26,8 @@ java -jar build/libs/TP2.jar tests/aLaMain.vsl frament 1 : java -jar build/libs/TP2.jar tests/fragment1/print4.vsl +java -jar build/libs/TP2.jar tests/fragment1/while2.vsl > tests/fragment1/while2.ll +clang tests/fragment1/while2.ll -o tests/fragment1/while2 */ diff --git a/src/main/java/TP2/asd/SymTable.java b/src/main/java/TP2/asd/SymTable.java index 4569445..9dc1ac0 100644 --- a/src/main/java/TP2/asd/SymTable.java +++ b/src/main/java/TP2/asd/SymTable.java @@ -148,7 +148,7 @@ public class SymTable { System.err.println("[VSL compile error] : '" + nomVar+ "' Erreur"); return new Result(this, null); } - String realName = nomVar + id[0]; + String realName = nomVar + "_" + id[0]; top = top.plus(nomVar, new ValueVarMap(type, id[0], false)); id[0]++; SymTable newSym = new SymTable(varMap.minus(0).plus(0, top), functionsMap, id,this.declarationsGlobal); @@ -161,7 +161,7 @@ public class SymTable { if (scope.containsKey(nomVar)) { ValueVarMap value = scope.get(nomVar); String prefix = ""; - String id = ""+value.id; + String id = "_"+value.id; if(value.isParam){ prefix = "param_"; id =""; diff --git a/src/main/java/TP2/asd/toLLVM_Visitor.java b/src/main/java/TP2/asd/toLLVM_Visitor.java index 9a90f71..524636b 100644 --- a/src/main/java/TP2/asd/toLLVM_Visitor.java +++ b/src/main/java/TP2/asd/toLLVM_Visitor.java @@ -340,7 +340,7 @@ public class toLLVM_Visitor implements ProgramVisitor, String labelWhile = "while"+h.getNewIdLabel(); String labelDo = "do"+h.getNewIdLabel(); String labelDone = "done"+h.getNewIdLabel(); - + l.add(new BrLLVMImp(labelWhile)); l.add(new LabelLLVMImp(labelWhile)); InstrAndVal temp = instr.e().accept(this,h); //retourne les instructionz pour obtenir le résultat de l'expression ainsi que la variable contenant le résultat final l.addAll(temp.instrs); //instructions diff --git a/tests/fragment1/while1 b/tests/fragment1/while1 index 3b5dc3f..637ce07 100755 Binary files a/tests/fragment1/while1 and b/tests/fragment1/while1 differ