summaryrefslogtreecommitdiff
path: root/src/main/java/no/eliashaugsbakk/kompilator/parsing/node
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/parsing/node')
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java9
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Identifier.java2
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/Assignment.java2
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/IdentifierDeclaration.java6
4 files changed, 14 insertions, 5 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java
index 3c46ec4..2537d9c 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java
@@ -1,6 +1,7 @@
package no.eliashaugsbakk.kompilator.parsing.node.expression;
import java.util.List;
+import no.eliashaugsbakk.kompilator.parsing.Type;
/**
* Represents a function call statement (e.g., print("Hello, world")).
@@ -13,4 +14,12 @@ public class FunctionCall extends Expression {
this.functionName = functionName;
this.arguments = arguments;
}
+
+ public Type getReturnType() {
+ if (functionName.equals("skriv")) {
+ return new Type("void", false);
+ }
+ // TODO: Look up return type in function table when you add more functions
+ return null;
+ }
}
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Identifier.java b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Identifier.java
index c1f475f..91607f8 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Identifier.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Identifier.java
@@ -4,7 +4,7 @@ package no.eliashaugsbakk.kompilator.parsing.node.expression;
* Resolves to a variable's value
*/
public class Identifier extends Expression {
- final String name;
+ public final String name;
public Identifier(String name) {
this.name = name;
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/Assignment.java b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/Assignment.java
index bca16df..01d207d 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/Assignment.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/Assignment.java
@@ -4,7 +4,7 @@ import no.eliashaugsbakk.kompilator.parsing.node.expression.Expression;
public class Assignment extends Statement {
public final String identifier;
- final Expression expression;
+ public final Expression expression;
public Assignment(String identifier, Expression expression) {
this.identifier = identifier;
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/IdentifierDeclaration.java b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/IdentifierDeclaration.java
index d3c5474..69b0f1b 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/IdentifierDeclaration.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/statement/IdentifierDeclaration.java
@@ -12,14 +12,14 @@ public class IdentifierDeclaration extends Statement {
// identifier initialization: my_var: type [4];
// may be null: my_var: type?;
- public final Expression expression; // may be null: x: int?;
+ public final Expression initializer; // may be null: x: int?;
public final boolean mutable;
- public IdentifierDeclaration(String identifier, Type type, Expression expression, boolean mutable) {
+ public IdentifierDeclaration(String identifier, Type type, Expression initializer, boolean mutable) {
this.identifier = identifier;
this.type = type;
- this.expression = expression;
+ this.initializer = initializer;
this.mutable = mutable;
}
}