declare works with list
This commit is contained in:
5
src/main/java/TP2/Error/TypeChecking.java
Normal file
5
src/main/java/TP2/Error/TypeChecking.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package TP2.Error;
|
||||
|
||||
public class TypeChecking {
|
||||
|
||||
}
|
||||
@@ -59,6 +59,7 @@ public interface Interface{
|
||||
public interface ExprVisitor<H,S> {
|
||||
public S visitConst(ConstImp e,H h);
|
||||
public S visitBinOp(BinopExpressionImp e, H h);
|
||||
//public S visitVal(ValImp e,H h);
|
||||
}
|
||||
|
||||
public interface Type{
|
||||
|
||||
@@ -169,8 +169,7 @@ public class Program{
|
||||
|
||||
@Override
|
||||
public String prettyprinter(String indent) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'prettyprinter'");
|
||||
return t+ " :=" + e.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -184,7 +183,7 @@ public class Program{
|
||||
}
|
||||
}
|
||||
|
||||
public static record DeclarationImp(Type t, String s) implements Instruction{
|
||||
public static record DeclarationImp(Type t, ArrayList<String> s) implements Instruction{
|
||||
|
||||
@Override
|
||||
public <H, S> S accept(InstrVisitor<H, S> v, H h) {
|
||||
@@ -193,17 +192,21 @@ public class Program{
|
||||
|
||||
@Override
|
||||
public String prettyprinter(String indent) {
|
||||
return "declare "+t.toString()+s;
|
||||
String str = indent + "declare "+t.prettyprinter() + " ";
|
||||
for(int i = 0; i<s.size();i++){
|
||||
str += s.get(i) + ", ";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<InstructionLLVM> toLLVM() {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'toLLVM'");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Type
|
||||
public static record Type_voidImp() implements Type{
|
||||
public String prettyprinter() {
|
||||
return "VOID";
|
||||
@@ -264,9 +267,7 @@ public class Program{
|
||||
}
|
||||
@Override
|
||||
public Integer visitAssign(AssignImp e, Map<String, Integer> h) {
|
||||
//h.put(e.t(), e.e());
|
||||
//TODO
|
||||
return 1;
|
||||
return e.accept(this, h);
|
||||
}
|
||||
@Override
|
||||
public Integer visitDeclaration(DeclarationImp e, Map<String, Integer> h) {
|
||||
|
||||
@@ -46,6 +46,15 @@ public class SymTable {
|
||||
return false;
|
||||
}
|
||||
|
||||
public Type getvar_Type(String s){
|
||||
for(int i= stackMap.size()-1; i>=0; i--){
|
||||
if(stackMap.get(i).containsKey(s)){
|
||||
return stackMap.get(i).get(s);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String print_all(){
|
||||
StringBuilder str = new StringBuilder();
|
||||
for(int i= stackMap.size()-1; i>=0; i--){
|
||||
|
||||
Reference in New Issue
Block a user