summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com>2021-12-06 00:27:16 +0000
committerAidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com>2021-12-06 00:27:16 +0000
commitd45507823215cb3e56ac4af181093fad999644aa (patch)
tree8c27cd33facb1e724a6d849d030155395c777c9d
parentccd18b48a653f6a339345e7be50cb1c4bb13b7de (diff)
downloadesotericFORTRAN-d45507823215cb3e56ac4af181093fad999644aa.tar.gz
esotericFORTRAN-d45507823215cb3e56ac4af181093fad999644aa.zip
Fixed real value bug
-rw-r--r--src/Compiler/Parser.java10
-rw-r--r--src/Compiler/Translator.java12
2 files changed, 12 insertions, 10 deletions
diff --git a/src/Compiler/Parser.java b/src/Compiler/Parser.java
index 9f5e68d..7d46063 100644
--- a/src/Compiler/Parser.java
+++ b/src/Compiler/Parser.java
@@ -69,7 +69,7 @@ public class Parser {
if(matchAndAdvance(TokenType.INT)){
returntype="int";
} else if (matchAndAdvance(TokenType.REAL)){
- returntype="real";
+ returntype="double";
}else{
throw error(getCurrentToken(), "Expected function return type");
}
@@ -90,7 +90,7 @@ public class Parser {
if(matchAndAdvance(TokenType.INT)){
types.add("int");
} else if (matchAndAdvance(TokenType.REAL)){
- types.add("float");
+ types.add("double");
} else if (matchAndAdvance(TokenType.STRING)){
types.add("char*");
}
@@ -170,7 +170,7 @@ public class Parser {
//Check for array declaration
if(matchAndAdvance(TokenType.DIMENSION)){
- return arrayDeclaration("real");
+ return arrayDeclaration("double");
}
matchOrError(TokenType.DEFINE, ":: Required for variable definition");
matchOrError(TokenType.IDENTIFIER,"Expected variable name.");
@@ -180,8 +180,8 @@ public class Parser {
if(definedVars.containsKey(varName.text)){
throw error(varName, "Cannot define multiple variables with the same name");
}else{
- definedVars.put(varName.text,"real");
- return new Statement.VariableDeclaration(varName,"real");
+ definedVars.put(varName.text,"double");
+ return new Statement.VariableDeclaration(varName,"double");
}
//Check if the variable is a string
diff --git a/src/Compiler/Translator.java b/src/Compiler/Translator.java
index e6eda23..6f5f050 100644
--- a/src/Compiler/Translator.java
+++ b/src/Compiler/Translator.java
@@ -182,7 +182,9 @@ public class Translator{
*/
private void evalExpressionStatement(ExpressionStatement stmt){
String value = evaluateExpression(stmt.expr);
- CCode.add(value+";");
+ if(value!=""){
+ CCode.add(value+";");
+ }
}
/**
@@ -210,8 +212,8 @@ public class Translator{
//Write correct data type
if(vardec.type.equals("int")){
CCode.add("int "+vardec.name.text+";");
- } else if(vardec.type.equals("real")){
- CCode.add("float "+vardec.name.text+";");
+ } else if(vardec.type.equals("double")){
+ CCode.add("double "+vardec.name.text+";");
}
}
@@ -227,8 +229,8 @@ public class Translator{
String arrayString = "";
if(arraydec.type.equals("int")){
arrayString+="int ";
- } else if(arraydec.type.equals("real")){
- arrayString+="real ";
+ } else if(arraydec.type.equals("double")){
+ arrayString+="double ";
}
arrayString+=arraydec.name.text;