From 291bc96079d6a11e497290ddcb535ca3101a8230 Mon Sep 17 00:00:00 2001 From: trochas Date: Mon, 28 Apr 2025 18:14:31 +0200 Subject: [PATCH] print et read presque fini ! --- src/main/java/TP2/asd/SymTable.java | 7 ++++--- src/main/java/TP2/asd/toLLVM_Visitor.java | 8 ++++---- src/main/java/TP2/llvm/Interface.java | 2 +- src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java | 9 +++++---- src/main/java/TP2/llvm/ProgramLLVM.java | 6 +++--- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/TP2/asd/SymTable.java b/src/main/java/TP2/asd/SymTable.java index 9411331..0b77654 100644 --- a/src/main/java/TP2/asd/SymTable.java +++ b/src/main/java/TP2/asd/SymTable.java @@ -12,7 +12,7 @@ public class SymTable { private PStack> varMap; private PMap functionsMap; - private int[] id ; //id partagé entre toute les symTable, [0] : idVar, [1] : id Label, [2] : global + private int[] id ; //id partagé entre toute les symTable, [0] : idVar, [1] : idLabel, [2] : idGlobalVar private ArrayList declarationsGlobal; public SymTable(){ @@ -20,8 +20,9 @@ public class SymTable { this.varMap= ConsPStack.singleton(HashTreePMap.empty()); this.functionsMap = HashTreePMap.empty(); this.declarationsGlobal = new ArrayList<>(); - this.id[0] = 1; - this.id[1] = 1; + this.id[0] = 1; //idVar + this.id[1] = 1; //idLaber + this.id[2] = 1; //idGlobalVar } public SymTable(PStack> varMap, PMap functionsMap, int[] id,ArrayList declarationsGlobal){ this.varMap= varMap; diff --git a/src/main/java/TP2/asd/toLLVM_Visitor.java b/src/main/java/TP2/asd/toLLVM_Visitor.java index b820f08..bbcbff5 100644 --- a/src/main/java/TP2/asd/toLLVM_Visitor.java +++ b/src/main/java/TP2/asd/toLLVM_Visitor.java @@ -160,8 +160,8 @@ public class toLLVM_Visitor implements ProgramVisitor, ArrayList params = new ArrayList<>(); String name = h.getGlobalDeclName(); - DeclarGlobalLLVMImp globalDecl = new DeclarGlobalLLVMImp(name); - VarLLVMImp varGlobal = new VarLLVMImp(new StringLLVMImp(),name,true); + VarLLVMImp varGlobal = new VarLLVMImp(new CharLLVMImp(true),name,true); + DeclarGlobalLLVMImp globalDecl = new DeclarGlobalLLVMImp(varGlobal,new CharLLVMImp(false),0); //TODO h.addGlobalDecl(globalDecl); params.add(varGlobal); @@ -180,8 +180,8 @@ public class toLLVM_Visitor implements ProgramVisitor, ArrayList params = new ArrayList<>(); String name = h.getGlobalDeclName(); - DeclarGlobalLLVMImp globalDecl = new DeclarGlobalLLVMImp(name); - VarLLVMImp varGlobal = new VarLLVMImp(new StringLLVMImp(),name,true); + VarLLVMImp varGlobal = new VarLLVMImp(new CharLLVMImp(true),name,true); + DeclarGlobalLLVMImp globalDecl = new DeclarGlobalLLVMImp(varGlobal,new CharLLVMImp(false),0);//TODO h.addGlobalDecl(globalDecl); params.add(varGlobal); diff --git a/src/main/java/TP2/llvm/Interface.java b/src/main/java/TP2/llvm/Interface.java index 61d5d0c..45f13e7 100644 --- a/src/main/java/TP2/llvm/Interface.java +++ b/src/main/java/TP2/llvm/Interface.java @@ -72,7 +72,7 @@ public interface Interface { public S visitIntLLVM(IntLLVMImp e,H h); public S visitVoidLLVM(VoidLLVMImp e, H h); public S visitBooleanLLVM(BooleanLLVMImp e, H h); - public S visitStringLLVM(StringLLVMImp e, H h); + public S visitCharLLVM(CharLLVMImp e, H h); } } diff --git a/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java b/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java index 80d9ea0..61ba0ec 100644 --- a/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java +++ b/src/main/java/TP2/llvm/PrettyprinterLLVM_Visitor.java @@ -152,8 +152,8 @@ TypeLLVMVisitor @Override public String visitDeclarGlobalLLVM(DeclarGlobalLLVMImp instr, String h) { - String str = "@."+instr.name() + " = global"; - str += "[" + "x"+ "]"; + String str = "@."+instr.var().nom() + " = global"; + str += " [" + instr.type().accept(this, h)+ "x"+ instr.size()+ "] "; str+= "c\"\"\n"; return str; @@ -205,8 +205,9 @@ TypeLLVMVisitor } @Override - public String visitStringLLVM(StringLLVMImp e, String h) { - return "i8*"; + public String visitCharLLVM(CharLLVMImp e, String h) { + if(e.isString()) return "i8*"; + else return "i8"; } diff --git a/src/main/java/TP2/llvm/ProgramLLVM.java b/src/main/java/TP2/llvm/ProgramLLVM.java index e01271a..82d0a37 100644 --- a/src/main/java/TP2/llvm/ProgramLLVM.java +++ b/src/main/java/TP2/llvm/ProgramLLVM.java @@ -96,7 +96,7 @@ public class ProgramLLVM { } } - public static record DeclarGlobalLLVMImp(String name) implements InstructionLLVM{ + public static record DeclarGlobalLLVMImp(VarLLVMImp var,TypeLLVM type, int size) implements InstructionLLVM{ @Override public S accept(InstructionLLVMVisitor v, H h) { @@ -218,10 +218,10 @@ public class ProgramLLVM { } } - public static record StringLLVMImp() implements TypeLLVM{ + public static record CharLLVMImp(Boolean isString) implements TypeLLVM{ @Override public S accept(TypeLLVMVisitor v, H h) { - return v.visitStringLLVM(this, h); + return v.visitCharLLVM(this, h); } } }