From 6bdf1fc6c1b7afe18ffcae05f8fb11eca0f51258 Mon Sep 17 00:00:00 2001
From: Santo Cariotti <santo@dcariotti.me>
Date: Tue, 25 Jun 2024 11:33:41 +0200
Subject: wip

---
 src/semanticanalysis/SymbolTable.java | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

(limited to 'src/semanticanalysis/SymbolTable.java')

diff --git a/src/semanticanalysis/SymbolTable.java b/src/semanticanalysis/SymbolTable.java
index f2876db..8193d5e 100644
--- a/src/semanticanalysis/SymbolTable.java
+++ b/src/semanticanalysis/SymbolTable.java
@@ -40,8 +40,8 @@ public class SymbolTable {
             HashMap<String, STentry> H = this.symbolTable.get(n);
             T = H.get(id);
             if (T != null) {
-                found = true; 
-            }else {
+                found = true;
+            } else {
                 n = n - 1;
             }
         }
@@ -60,8 +60,8 @@ public class SymbolTable {
         while ((n >= 0) && !found) {
             HashMap<String, STentry> H = this.symbolTable.get(n);
             if (H.get(id) != null) {
-                found = true; 
-            }else {
+                found = true;
+            } else {
                 n = n - 1;
             }
         }
@@ -125,6 +125,7 @@ public class SymbolTable {
 
         // We always increment the offset by 1 otherwise we need ad-hoc bytecode
         // operations
+        // FIXME: wtf is that?
         if (type.getClass().equals((new BoolType()).getClass())) {
             offs = offs + 1;
         } else if (type.getClass().equals((new IntType()).getClass())) {
-- 
cgit v1.2.3-18-g5258


From b12c01732860f9727626829e0b25a273de5fe5c7 Mon Sep 17 00:00:00 2001
From: geno <gabriele.genovese2@studio.unibo.it>
Date: Tue, 25 Jun 2024 16:04:07 +0200
Subject: check semantic of defined and undefined variables implemented do not
 check for built-in function works on the example

---
 src/semanticanalysis/SymbolTable.java | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

(limited to 'src/semanticanalysis/SymbolTable.java')

diff --git a/src/semanticanalysis/SymbolTable.java b/src/semanticanalysis/SymbolTable.java
index 8193d5e..617b48a 100644
--- a/src/semanticanalysis/SymbolTable.java
+++ b/src/semanticanalysis/SymbolTable.java
@@ -126,15 +126,18 @@ public class SymbolTable {
         // We always increment the offset by 1 otherwise we need ad-hoc bytecode
         // operations
         // FIXME: wtf is that?
-        if (type.getClass().equals((new BoolType()).getClass())) {
-            offs = offs + 1;
-        } else if (type.getClass().equals((new IntType()).getClass())) {
-            offs = offs + 1;
-        } else {
-            offs = offs + 1;
-        }
+        // if (type.getClass().equals((new BoolType()).getClass())) {
+        //     offs = offs + 1;
+        // } else if (type.getClass().equals((new IntType()).getClass())) {
+        //     offs = offs + 1;
+        // } else {
+        //     offs = offs + 1;
+        // }
+        offs = offs + 1;
 
         this.offset.add(offs);
+
+        // System.out.println("Insert " + id + " of type " + type.toString() + " with nesting " + String.valueOf(_nesting));
     }
 
     /**
-- 
cgit v1.2.3-18-g5258


From 9e6c17cb44bc165e315ec039a0e09183716d2037 Mon Sep 17 00:00:00 2001
From: L0P0P <grassoemanuele@live.com>
Date: Wed, 26 Jun 2024 11:44:58 +0200
Subject: Semantic check for function declaration and function invocation

---
 src/semanticanalysis/SymbolTable.java | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

(limited to 'src/semanticanalysis/SymbolTable.java')

diff --git a/src/semanticanalysis/SymbolTable.java b/src/semanticanalysis/SymbolTable.java
index 617b48a..6756ec4 100644
--- a/src/semanticanalysis/SymbolTable.java
+++ b/src/semanticanalysis/SymbolTable.java
@@ -153,4 +153,19 @@ public class SymbolTable {
         this.offset.add(offs);
     }
 
+    @Override
+    public String toString() {
+        // Print the symbol table
+        String str = "";
+        for (int i = 0; i < this.symbolTable.size(); i++) {
+            str += "Level " + i + "\n";
+            HashMap<String, STentry> H = this.symbolTable.get(i);
+            for (String key : H.keySet()) {
+                STentry T = H.get(key);
+                str += key + " -> " + T.toString() + "\n";
+            }
+        }
+        return str;
+    }
+
 }
-- 
cgit v1.2.3-18-g5258


From 3c4229fc9e0ec6da9a7f60b57b9e93c49d1b6b6c Mon Sep 17 00:00:00 2001
From: L0P0P <grassoemanuele@live.com>
Date: Thu, 27 Jun 2024 12:02:35 +0200
Subject: Fixed a lot of problems from all the progs we need to parse

---
 src/semanticanalysis/SymbolTable.java | 1 -
 1 file changed, 1 deletion(-)

(limited to 'src/semanticanalysis/SymbolTable.java')

diff --git a/src/semanticanalysis/SymbolTable.java b/src/semanticanalysis/SymbolTable.java
index 6756ec4..db9649c 100644
--- a/src/semanticanalysis/SymbolTable.java
+++ b/src/semanticanalysis/SymbolTable.java
@@ -137,7 +137,6 @@ public class SymbolTable {
 
         this.offset.add(offs);
 
-        // System.out.println("Insert " + id + " of type " + type.toString() + " with nesting " + String.valueOf(_nesting));
     }
 
     /**
-- 
cgit v1.2.3-18-g5258


From afff6a80cd58f7787efa1398f7c8cbdce8989323 Mon Sep 17 00:00:00 2001
From: geno <gabriele.genovese2@studio.unibo.it>
Date: Sun, 30 Jun 2024 13:36:37 +0200
Subject: fixed warnings, better formatting, final added where possible

---
 src/semanticanalysis/SymbolTable.java | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

(limited to 'src/semanticanalysis/SymbolTable.java')

diff --git a/src/semanticanalysis/SymbolTable.java b/src/semanticanalysis/SymbolTable.java
index db9649c..b620af7 100644
--- a/src/semanticanalysis/SymbolTable.java
+++ b/src/semanticanalysis/SymbolTable.java
@@ -1,8 +1,8 @@
 package semanticanalysis;
 
+import ast.types.*;
 import java.util.ArrayList;
 import java.util.HashMap;
-import ast.types.*;
 
 /**
  * Class representing a symbol table. It's a list of hash table symbol table. We
@@ -11,12 +11,12 @@ import ast.types.*;
  */
 public class SymbolTable {
 
-    private ArrayList<HashMap<String, STentry>> symbolTable;
-    private ArrayList<Integer> offset;
+    private final ArrayList<HashMap<String, STentry>> symbolTable;
+    private final ArrayList<Integer> offset;
 
     public SymbolTable() {
-        this.symbolTable = new ArrayList<HashMap<String, STentry>>();
-        this.offset = new ArrayList<Integer>();
+        this.symbolTable = new ArrayList();
+        this.offset = new ArrayList();
     }
 
     /**
@@ -96,7 +96,7 @@ public class SymbolTable {
      */
     public boolean top_lookup(String id) {
         int n = symbolTable.size() - 1;
-        STentry T = null;
+        STentry T;
         HashMap<String, STentry> H = symbolTable.get(n);
         T = H.get(id);
         return (T != null);
@@ -125,14 +125,6 @@ public class SymbolTable {
 
         // We always increment the offset by 1 otherwise we need ad-hoc bytecode
         // operations
-        // FIXME: wtf is that?
-        // if (type.getClass().equals((new BoolType()).getClass())) {
-        //     offs = offs + 1;
-        // } else if (type.getClass().equals((new IntType()).getClass())) {
-        //     offs = offs + 1;
-        // } else {
-        //     offs = offs + 1;
-        // }
         offs = offs + 1;
 
         this.offset.add(offs);
-- 
cgit v1.2.3-18-g5258