summaryrefslogtreecommitdiffstats
path: root/src/Compiler/Statement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compiler/Statement.java')
-rw-r--r--src/Compiler/Statement.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/Compiler/Statement.java b/src/Compiler/Statement.java
index a4fbff7..dd3ff04 100644
--- a/src/Compiler/Statement.java
+++ b/src/Compiler/Statement.java
@@ -4,6 +4,73 @@ import java.util.List;
abstract class Statement {
+ static class MainFunction extends Statement{
+ MainFunction(Statement block){
+ this.block = block;
+ }
+
+ final Statement block;
+
+ @Override
+ public String getStatmentType() {
+ return "main";
+ }
+
+ }
+
+ static class Function extends Statement{
+ Function(Token name,Statement block,List<Expression> arguments,List<String> argumentTypes,String returnType){
+ this.block=block;
+ this.arguments=arguments;
+ this.returnType=returnType;
+ this.argumentTypes=argumentTypes;
+ this.name=name;
+ }
+
+ final Statement block;
+ final List<Expression> arguments;
+ final List<String> argumentTypes;
+ final String returnType;
+ final Token name;
+
+ @Override
+ public String getStatmentType() {
+ return "function";
+ }
+ }
+
+ static class FunctionDeclaration extends Statement{
+ FunctionDeclaration(Token name,List<String> argumentTypes,String returnType){
+ this.returnType=returnType;
+ this.argumentTypes=argumentTypes;
+ this.name=name;
+ }
+
+ final List<String> argumentTypes;
+ final String returnType;
+ final Token name;
+
+ @Override
+ public String getStatmentType() {
+ return "functionDec";
+ }
+ }
+
+ static class ReturnStatement extends Statement{
+
+ ReturnStatement(Expression returnValue){
+ this.returnValue=returnValue;
+
+ }
+ final Expression returnValue;
+
+ @Override
+ public String getStatmentType() {
+ return "return";
+ }
+
+ }
+
static class ExpressionStatement extends Statement{
ExpressionStatement(Expression expr){
this.expr = expr;