From 43909b350b9084ed33f121a15c5770224cbdc79f Mon Sep 17 00:00:00 2001 From: AidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com> Date: Sat, 4 Dec 2021 05:24:43 +0000 Subject: Added basic function support --- src/Compiler/Translator.java | 78 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 76 insertions(+), 2 deletions(-) (limited to 'src/Compiler/Translator.java') diff --git a/src/Compiler/Translator.java b/src/Compiler/Translator.java index a79242d..e0bff23 100644 --- a/src/Compiler/Translator.java +++ b/src/Compiler/Translator.java @@ -16,15 +16,14 @@ public class Translator{ public List compileToC(List statements, boolean printC){ CCode.add("#include "); CCode.add("#include "); - CCode.add("int main(){"); try{ for (Statement statement: statements){ evaluateStatement(statement); + CCode.add(""); } } catch (Error e){ } - CCode.add("}"); if (printC) { for(String t:CCode){ @@ -37,6 +36,15 @@ public class Translator{ private void evaluateStatement(Statement statement){ switch(statement.getStatmentType()){ + case "main": + evalMainFunction((MainFunction)statement); + break; + case "function": + evalFunction((Function)statement); + break; + case "functionDec": + evalFunctionDeclaration((FunctionDeclaration)statement); + break; case "exprStmt": evalExpressionStatement((ExpressionStatement)statement); break; @@ -64,8 +72,57 @@ public class Translator{ case "dowhileStmt": evalDoWhileStatement((DoWhileStatement)statement); break; + case "return": + evalReturnStatement((ReturnStatement)statement); + break; } } + + private void evalMainFunction(MainFunction stmt){ + CCode.add("int main(){"); + evaluateStatement(stmt.block); + CCode.add("}"); + } + + private void evalFunction(Function stmt){ + + String functionString = stmt.returnType+" "+stmt.name.text+"("; + boolean first=true; + for(int i=0;i