summaryrefslogtreecommitdiffstats
path: root/src/Compiler/Translator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compiler/Translator.java')
-rw-r--r--src/Compiler/Translator.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/Compiler/Translator.java b/src/Compiler/Translator.java
index b62df63..5848389 100644
--- a/src/Compiler/Translator.java
+++ b/src/Compiler/Translator.java
@@ -43,6 +43,9 @@ public class Translator{
case "print":
evalPrintStatement((PrintStatement)statement);
break;
+ case "ifStmt":
+ evalIfStatement((IfStatement)statement);
+ break;
}
}
private void evalExpressionStatement(ExpressionStatement stmt){
@@ -58,6 +61,22 @@ public class Translator{
CCode.add("printf(\"%d\","+evaluateExpression(print.expr)+");");
}
+ private void evalIfStatement(IfStatement ifstatement){
+
+ CCode.add("if("+evaluateExpression(ifstatement.condition)+"){");
+ for(Statement s:ifstatement.statements) {
+ evaluateStatement(s);
+ }
+ if(ifstatement.elseStatements.size()>0){
+ CCode.add("}");
+ CCode.add("else {");
+ for(Statement s:ifstatement.elseStatements) {
+ evaluateStatement(s);
+ }
+ }
+ CCode.add("}");
+ }
+
private String evaluateExpression(Expression expression){
switch(expression.getExpressionType()){
case "binary":