summaryrefslogtreecommitdiff
path: root/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression')
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Expression.java17
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java16
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/StringLiteral.java12
3 files changed, 45 insertions, 0 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Expression.java b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Expression.java
new file mode 100644
index 0000000..6ca58b2
--- /dev/null
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Expression.java
@@ -0,0 +1,17 @@
+package no.eliashaugsbakk.kompilator.parsing.node.expression;
+
+import no.eliashaugsbakk.kompilator.parsing.node.ASTNode;
+
+/**
+ * Base class for all expression nodes.
+ * An expression is a piece of code that evaluates to a value.
+ * Expressions cannot stand alone as statements; they must be used within statements.
+ * <p>
+ * Examples:
+ * - "Hello" (string literal expression)
+ * - 42 (number literal expression)
+ * - x + 5 (binary operation expression)
+ * - myFunction() (function call expression)
+ */
+public abstract class Expression extends ASTNode {
+}
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
new file mode 100644
index 0000000..3c46ec4
--- /dev/null
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java
@@ -0,0 +1,16 @@
+package no.eliashaugsbakk.kompilator.parsing.node.expression;
+
+import java.util.List;
+
+/**
+ * Represents a function call statement (e.g., print("Hello, world")).
+ */
+public class FunctionCall extends Expression {
+ public String functionName;
+ public List<Expression> arguments;
+
+ public FunctionCall(String functionName, List<Expression> arguments) {
+ this.functionName = functionName;
+ this.arguments = arguments;
+ }
+}
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/StringLiteral.java b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/StringLiteral.java
new file mode 100644
index 0000000..67ce405
--- /dev/null
+++ b/src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/StringLiteral.java
@@ -0,0 +1,12 @@
+package no.eliashaugsbakk.kompilator.parsing.node.expression;
+
+/**
+ * Represents a string literal expression (e.g., "Hello, World").
+ */
+public class StringLiteral extends Expression {
+ public final String value;
+
+ public StringLiteral(String value) {
+ this.value = value;
+ }
+}