summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmanuele Grasso <96300448+L0P0P@users.noreply.github.com>2024-07-06 09:47:25 +0200
committerGitHub <noreply@github.com>2024-07-06 09:47:25 +0200
commitf0692ff5f9e39cbd1c203e9d5abebf55a3d0f6fc (patch)
tree36518af3f04a751ba5bb8158c3f005cfa3e8c7c3
parent8aa8b5834953cab15c0687608f4fafea2e6c61be (diff)
Fixed the print of the ast and some warnings (#19)
Co-authored-by: Santo Cariotti <santo@dcariotti.me>
-rw-r--r--progs/test.py20
-rw-r--r--src/ast/nodes/ArglistNode.java2
-rw-r--r--src/ast/nodes/AssignmentNode.java2
-rw-r--r--src/ast/nodes/AtomNode.java2
-rw-r--r--src/ast/nodes/AugassignNode.java2
-rw-r--r--src/ast/nodes/BlockNode.java2
-rw-r--r--src/ast/nodes/CompForNode.java2
-rw-r--r--src/ast/nodes/CompIterNode.java2
-rw-r--r--src/ast/nodes/CompNode.java2
-rw-r--r--src/ast/nodes/CompoundNode.java2
-rw-r--r--src/ast/nodes/DottedNameNode.java2
-rw-r--r--src/ast/nodes/ExprNode.java23
-rw-r--r--src/ast/nodes/ForStmtNode.java2
-rw-r--r--src/ast/nodes/FuncdefNode.java4
-rw-r--r--src/ast/nodes/IfNode.java2
-rw-r--r--src/ast/nodes/ImportNode.java2
-rw-r--r--src/ast/nodes/ParamdefNode.java2
-rw-r--r--src/ast/nodes/ParamlistNode.java2
-rw-r--r--src/ast/nodes/ReturnStmtNode.java2
-rw-r--r--src/ast/nodes/RootNode.java4
-rw-r--r--src/ast/nodes/SimpleStmtNode.java2
-rw-r--r--src/ast/nodes/SimpleStmtsNode.java2
-rw-r--r--src/ast/nodes/TrailerNode.java2
-rw-r--r--src/ast/nodes/WhileStmtNode.java2
-rw-r--r--src/semanticanalysis/Share.java2
-rw-r--r--src/semanticanalysis/SymbolTable.java4
26 files changed, 43 insertions, 54 deletions
diff --git a/progs/test.py b/progs/test.py
index 718885d..4ccfb1a 100644
--- a/progs/test.py
+++ b/progs/test.py
@@ -1,17 +1,3 @@
-import math
-from re import f4, r3
-
-from abs import *
-
-
-def find_first_duplicate(nums, x):
- num_set = set()
- no_duplicate = -1
-
- for i in range(len(nums)):
- if nums[i] in num_set:
- return nums[i]
- else:
- num_set.add(nums[i])
-
- return no_duplicate
+m = 1
+for i in range(10):
+ m = m + 1
diff --git a/src/ast/nodes/ArglistNode.java b/src/ast/nodes/ArglistNode.java
index 425e4c6..a0ea25b 100644
--- a/src/ast/nodes/ArglistNode.java
+++ b/src/ast/nodes/ArglistNode.java
@@ -19,7 +19,7 @@ public class ArglistNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
for (var arg : arguments) {
if (arg instanceof ExprNode) {
diff --git a/src/ast/nodes/AssignmentNode.java b/src/ast/nodes/AssignmentNode.java
index 558e392..c4a44dc 100644
--- a/src/ast/nodes/AssignmentNode.java
+++ b/src/ast/nodes/AssignmentNode.java
@@ -22,7 +22,7 @@ public class AssignmentNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
// errors.addAll(lhr.checkSemantics(ST, _nesting));
errors.addAll(assign.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/AtomNode.java b/src/ast/nodes/AtomNode.java
index 47a15d7..37d4d79 100644
--- a/src/ast/nodes/AtomNode.java
+++ b/src/ast/nodes/AtomNode.java
@@ -30,7 +30,7 @@ public class AtomNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- var errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (val != null) {
if ((this.typeCheck() instanceof AtomType) && ST.nslookup(this.getId()) < 0) {
diff --git a/src/ast/nodes/AugassignNode.java b/src/ast/nodes/AugassignNode.java
index 7ced63e..aef60cc 100644
--- a/src/ast/nodes/AugassignNode.java
+++ b/src/ast/nodes/AugassignNode.java
@@ -21,7 +21,7 @@ public class AugassignNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- return new ArrayList();
+ return new ArrayList<>();
}
// FIXME: use the right type
diff --git a/src/ast/nodes/BlockNode.java b/src/ast/nodes/BlockNode.java
index d9a151d..732e89b 100644
--- a/src/ast/nodes/BlockNode.java
+++ b/src/ast/nodes/BlockNode.java
@@ -16,7 +16,7 @@ public class BlockNode extends RootNode {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
// Check semantics for each child
for (Node child : childs) {
diff --git a/src/ast/nodes/CompForNode.java b/src/ast/nodes/CompForNode.java
index b7c6924..405a400 100644
--- a/src/ast/nodes/CompForNode.java
+++ b/src/ast/nodes/CompForNode.java
@@ -23,7 +23,7 @@ public class CompForNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
errors.addAll(exprlist.checkSemantics(ST, _nesting));
errors.addAll(single_expr.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/CompIterNode.java b/src/ast/nodes/CompIterNode.java
index 8de9f2f..1cc8a9b 100644
--- a/src/ast/nodes/CompIterNode.java
+++ b/src/ast/nodes/CompIterNode.java
@@ -19,7 +19,7 @@ public class CompIterNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (comp_for != null) {
errors.addAll(comp_for.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/CompNode.java b/src/ast/nodes/CompNode.java
index 22906df..b6e0191 100644
--- a/src/ast/nodes/CompNode.java
+++ b/src/ast/nodes/CompNode.java
@@ -20,7 +20,7 @@ public class CompNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- return new ArrayList();
+ return new ArrayList<>();
}
// TODO: it should be boolean, right?
diff --git a/src/ast/nodes/CompoundNode.java b/src/ast/nodes/CompoundNode.java
index 845f05e..2655f35 100644
--- a/src/ast/nodes/CompoundNode.java
+++ b/src/ast/nodes/CompoundNode.java
@@ -24,7 +24,7 @@ public class CompoundNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (ifNode != null) {
errors.addAll(ifNode.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/DottedNameNode.java b/src/ast/nodes/DottedNameNode.java
index 23f14c1..2698b1c 100644
--- a/src/ast/nodes/DottedNameNode.java
+++ b/src/ast/nodes/DottedNameNode.java
@@ -20,7 +20,7 @@ public class DottedNameNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
for (int i = 0; i < names.size(); ++i) {
ST.insert(names.get(i).toString(), this.typeCheck(), _nesting, null);
diff --git a/src/ast/nodes/ExprNode.java b/src/ast/nodes/ExprNode.java
index 873d537..693176a 100644
--- a/src/ast/nodes/ExprNode.java
+++ b/src/ast/nodes/ExprNode.java
@@ -52,7 +52,7 @@ public class ExprNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
// check if the atom is a function
if (atom != null && !trailers.isEmpty()) {
@@ -130,19 +130,22 @@ public class ExprNode implements Node {
if (atom != null) {
str += atom.toPrint(prefix);
}
-
if (compOp != null) {
str += compOp.toPrint(prefix);
}
-
- for (var expr : exprs) {
- str = expr.toPrint(prefix);
- }
-
- for (var trailer : trailers) {
- str = trailer.toPrint(prefix);
+
+ if (exprs != null) {
+ for (var expr : exprs) {
+ str += expr.toPrint(prefix);
+ }
}
-
+
+ if (trailers != null) {
+ for (var trailer : trailers) {
+ str += trailer.toPrint(prefix);
+ }
+ }
+
if (op != null) {
str += prefix + "Op(" + op + ")\n";
}
diff --git a/src/ast/nodes/ForStmtNode.java b/src/ast/nodes/ForStmtNode.java
index 74c6ffc..50574f0 100644
--- a/src/ast/nodes/ForStmtNode.java
+++ b/src/ast/nodes/ForStmtNode.java
@@ -34,7 +34,7 @@ public class ForStmtNode implements Node {
*/
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
// Save every atom in the expression's list, except the last one
var l = (ExprListNode) exprList;
diff --git a/src/ast/nodes/FuncdefNode.java b/src/ast/nodes/FuncdefNode.java
index c4f5846..91231cc 100644
--- a/src/ast/nodes/FuncdefNode.java
+++ b/src/ast/nodes/FuncdefNode.java
@@ -26,14 +26,14 @@ public class FuncdefNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
int paramNumber = ((ParamlistNode) paramlist).getParamNumber();
Type returnType = this.block.typeCheck();
FunctionType ft = new FunctionType(paramNumber, returnType);
ST.insert(this.name.toString(), ft, _nesting, "");
- HashMap<String, STentry> HM = new HashMap();
+ HashMap<String, STentry> HM = new HashMap<>();
ST.add(HM);
diff --git a/src/ast/nodes/IfNode.java b/src/ast/nodes/IfNode.java
index b0e1ddb..223dffb 100644
--- a/src/ast/nodes/IfNode.java
+++ b/src/ast/nodes/IfNode.java
@@ -22,7 +22,7 @@ public class IfNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
errors.addAll(guard.checkSemantics(ST, _nesting));
errors.addAll(thenbranch.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/ImportNode.java b/src/ast/nodes/ImportNode.java
index 7e95ee3..f26c0d0 100644
--- a/src/ast/nodes/ImportNode.java
+++ b/src/ast/nodes/ImportNode.java
@@ -27,7 +27,7 @@ public class ImportNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (isFrom) {
for (int i = 0; i < names.size(); ++i) {
diff --git a/src/ast/nodes/ParamdefNode.java b/src/ast/nodes/ParamdefNode.java
index 6cdb2d0..e5694fa 100644
--- a/src/ast/nodes/ParamdefNode.java
+++ b/src/ast/nodes/ParamdefNode.java
@@ -17,7 +17,7 @@ public class ParamdefNode extends AtomNode {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- var errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
String paramName = this.getId();
if (!ST.top_lookup(paramName)) {
diff --git a/src/ast/nodes/ParamlistNode.java b/src/ast/nodes/ParamlistNode.java
index cf75d08..e8c9a42 100644
--- a/src/ast/nodes/ParamlistNode.java
+++ b/src/ast/nodes/ParamlistNode.java
@@ -18,7 +18,7 @@ public class ParamlistNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
for (var param : params) {
errors.addAll(param.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/ReturnStmtNode.java b/src/ast/nodes/ReturnStmtNode.java
index 8e34813..bb49ded 100644
--- a/src/ast/nodes/ReturnStmtNode.java
+++ b/src/ast/nodes/ReturnStmtNode.java
@@ -18,7 +18,7 @@ public class ReturnStmtNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (this.exprList != null) {
errors.addAll(this.exprList.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/RootNode.java b/src/ast/nodes/RootNode.java
index 5bbce8c..26778f4 100644
--- a/src/ast/nodes/RootNode.java
+++ b/src/ast/nodes/RootNode.java
@@ -20,10 +20,10 @@ public class RootNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
// Create a new HashMap for the current scope
- HashMap<String, STentry> HM = new HashMap();
+ HashMap<String, STentry> HM = new HashMap<>();
// Add the HashMap to the SymbolTable
ST.add(HM);
diff --git a/src/ast/nodes/SimpleStmtNode.java b/src/ast/nodes/SimpleStmtNode.java
index b2bc880..fbeeb1b 100644
--- a/src/ast/nodes/SimpleStmtNode.java
+++ b/src/ast/nodes/SimpleStmtNode.java
@@ -24,7 +24,7 @@ public class SimpleStmtNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (assignment != null) {
errors.addAll(assignment.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/SimpleStmtsNode.java b/src/ast/nodes/SimpleStmtsNode.java
index ae1044b..5377c5d 100644
--- a/src/ast/nodes/SimpleStmtsNode.java
+++ b/src/ast/nodes/SimpleStmtsNode.java
@@ -18,7 +18,7 @@ public class SimpleStmtsNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
for (Node stmt : stmts) {
errors.addAll(stmt.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/TrailerNode.java b/src/ast/nodes/TrailerNode.java
index aaa72f3..d8301b8 100644
--- a/src/ast/nodes/TrailerNode.java
+++ b/src/ast/nodes/TrailerNode.java
@@ -29,7 +29,7 @@ public class TrailerNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
if (arglist != null) {
errors.addAll(arglist.checkSemantics(ST, _nesting));
diff --git a/src/ast/nodes/WhileStmtNode.java b/src/ast/nodes/WhileStmtNode.java
index 1db01ea..352cbc0 100644
--- a/src/ast/nodes/WhileStmtNode.java
+++ b/src/ast/nodes/WhileStmtNode.java
@@ -20,7 +20,7 @@ public class WhileStmtNode implements Node {
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList();
+ ArrayList<SemanticError> errors = new ArrayList<>();
errors.addAll(expr.checkSemantics(ST, _nesting));
errors.addAll(block.checkSemantics(ST, _nesting));
diff --git a/src/semanticanalysis/Share.java b/src/semanticanalysis/Share.java
index 7542cf7..a05c4c5 100644
--- a/src/semanticanalysis/Share.java
+++ b/src/semanticanalysis/Share.java
@@ -10,7 +10,7 @@ public class Share {
* generic because it's used a custom contains function.
*/
public static ArrayList<SemanticError> removeDuplicates(ArrayList<SemanticError> list) {
- ArrayList<SemanticError> newList = new ArrayList();
+ ArrayList<SemanticError> newList = new ArrayList<>();
for (SemanticError element : list) {
if (!customContains(newList, element)) {
diff --git a/src/semanticanalysis/SymbolTable.java b/src/semanticanalysis/SymbolTable.java
index b620af7..50309a5 100644
--- a/src/semanticanalysis/SymbolTable.java
+++ b/src/semanticanalysis/SymbolTable.java
@@ -15,8 +15,8 @@ public class SymbolTable {
private final ArrayList<Integer> offset;
public SymbolTable() {
- this.symbolTable = new ArrayList();
- this.offset = new ArrayList();
+ this.symbolTable = new ArrayList<>();
+ this.offset = new ArrayList<>();
}
/**