summaryrefslogtreecommitdiffstats
path: root/src/Compiler/Expression.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compiler/Expression.java')
-rw-r--r--src/Compiler/Expression.java31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/Compiler/Expression.java b/src/Compiler/Expression.java
index 2789462..056019a 100644
--- a/src/Compiler/Expression.java
+++ b/src/Compiler/Expression.java
@@ -2,7 +2,12 @@ package Compiler;
import java.util.List;
+//Class for possible expressions in the language
abstract class Expression {
+
+ /**
+ * Class for representing a binary expression, with two values between an operator
+ */
static class Binary extends Expression{
final Expression left;
@@ -22,6 +27,9 @@ abstract class Expression {
}
+ /**
+ * Class for representing a singlular expression, with one value and one operator
+ */
static class Singular extends Expression{
final Expression right;
@@ -39,6 +47,9 @@ abstract class Expression {
}
+ /**
+ * Class for representing a literal value
+ */
static class Literal extends Expression{
final Token value;
final String type;
@@ -56,6 +67,9 @@ abstract class Expression {
}
+ /**
+ * Class for representing an expression between brackets
+ */
static class BracketedExpression extends Expression{
final Expression expr;
@@ -66,11 +80,12 @@ abstract class Expression {
@Override
public String getExpressionType() {
return "bracket";
- }
-
-
+ }
}
+ /**
+ * Class for represening an assignment expression
+ */
static class AssignmentExpression extends Expression{
final Expression variable;
final Expression value;
@@ -87,6 +102,9 @@ abstract class Expression {
}
}
+ /**
+ * Class for representing a single variable
+ */
static class Variable extends Expression{
Variable(Token name){
@@ -101,6 +119,9 @@ abstract class Expression {
}
+ /**
+ * Class for representing an array variable
+ */
static class ArrayVariable extends Expression{
ArrayVariable(Token name,List<Expression> positions){
this.name=name;
@@ -115,6 +136,9 @@ abstract class Expression {
final List<Expression> positions;
}
+ /**
+ * Class for representing a function call
+ */
static class FunctionCall extends Expression{
FunctionCall(Token name, List<Token> arguments){
this.arguments=arguments;
@@ -130,5 +154,6 @@ abstract class Expression {
}
+ //Abstract method for getting an expression type
public abstract String getExpressionType();
}