summaryrefslogtreecommitdiff
path: root/src/ast/nodes/TrailerNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/nodes/TrailerNode.java')
-rw-r--r--src/ast/nodes/TrailerNode.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/ast/nodes/TrailerNode.java b/src/ast/nodes/TrailerNode.java
index b0a0ee7..aaa72f3 100644
--- a/src/ast/nodes/TrailerNode.java
+++ b/src/ast/nodes/TrailerNode.java
@@ -11,22 +11,25 @@ import org.antlr.v4.runtime.tree.TerminalNode;
* Node for the `trailer` statement of the grammar.
*/
public class TrailerNode implements Node {
- private Node arglist;
- private ArrayList<Node> exprs;
- private TerminalNode methodCall;
- private boolean isEmpty;
- public TrailerNode(Node arglist, ArrayList<Node> exprs, TerminalNode methodCall) {
+ private final Node arglist;
+ private final ArrayList<Node> exprs;
+ private final TerminalNode methodCall;
+ private final boolean isParenthesis;
+ private final boolean isEmpty;
+
+ public TrailerNode(Node arglist, ArrayList<Node> exprs, TerminalNode methodCall, boolean isParenthesis) {
this.arglist = arglist;
this.exprs = exprs;
this.methodCall = methodCall;
+ this.isParenthesis = isParenthesis;
- this.isEmpty = (this.arglist == null && this.exprs.size() == 0 && this.methodCall == null);
+ this.isEmpty = (this.arglist == null && this.exprs.isEmpty() && this.methodCall == null);
}
@Override
public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) {
- ArrayList<SemanticError> errors = new ArrayList<SemanticError>();
+ ArrayList<SemanticError> errors = new ArrayList();
if (arglist != null) {
errors.addAll(arglist.checkSemantics(ST, _nesting));
@@ -39,6 +42,18 @@ public class TrailerNode implements Node {
return errors;
}
+ public int getArgumentNumber() {
+ if (arglist == null) {
+ return 0;
+ }
+
+ return ((ArglistNode) arglist).getArgumentNumber();
+ }
+
+ public boolean isParenthesis() {
+ return this.isParenthesis;
+ }
+
@Override
public Type typeCheck() {
return new VoidType();