From 1ef6f0e6b9083748e5b91743f15f10f09c6b8432 Mon Sep 17 00:00:00 2001 From: Elias Haugsbakk Date: Fri, 18 Sep 2026 23:10:31 +0200 Subject: Implement parser creating AST --- .../kompilator/parsing/node/expression/Expression.java | 17 +++++++++++++++++ .../parsing/node/expression/FunctionCall.java | 16 ++++++++++++++++ .../parsing/node/expression/StringLiteral.java | 12 ++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/Expression.java create mode 100644 src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/FunctionCall.java create mode 100644 src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression/StringLiteral.java (limited to 'src/main/java/no/eliashaugsbakk/kompilator/parsing/node/expression') 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. + *

+ * 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 arguments; + + public FunctionCall(String functionName, List 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; + } +} -- cgit v1.2.3