Fix Type
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
Bruder John 2024-05-31 11:27:02 +02:00
parent de5c2a5002
commit 8a5f307947
7 changed files with 17 additions and 15 deletions

2
.idea/misc.xml generated
View File

@ -40,7 +40,7 @@
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="openjdk-22" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="openjdk-22" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -1,24 +1,25 @@
package ast.literal;
import ast.expression.ExpressionNode;
import ast.type.TypeNode;
import semantic.SemanticVisitor;
import typechecker.TypeCheckResult;
public class LiteralNode implements ExpressionNode {
public String value;
private String type;
private TypeNode type;
public LiteralNode(String value, String type) {
public LiteralNode(String value, TypeNode type) {
this.value = value;
this.type = type;
}
public String getType() {
public TypeNode getType() {
return type;
}
public void setType(String type) {
public void setType(TypeNode type) {
this.type = type;
}

View File

@ -230,22 +230,22 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
@Override
public ASTNode visitLiteral(SimpleJavaParser.LiteralContext ctx) {
String type;
TypeNode type;
String value;
if(ctx.INTEGERLITERAL() != null) {
type = "int";
type = new BaseTypeNode(EnumTypeNode.INT);
value = ctx.INTEGERLITERAL().getText();
return new LiteralNode(type, value);
return new LiteralNode(value, type);
} else if(ctx.booleanLiteral() != null) {
type= "boolean";
type= new BaseTypeNode(EnumTypeNode.BOOLEAN);
BooleanLiteralNode booleanNode = (BooleanLiteralNode) visitBooleanLiteral(ctx.booleanLiteral());
value = booleanNode.getValue();
return new LiteralNode(type, value);
return new LiteralNode(value, type);
} else if(ctx.charLiteral() != null) {
type= "char";
type= new BaseTypeNode(EnumTypeNode.CHAR);
CharLiteralNode charNode = (CharLiteralNode) visitCharLiteral(ctx.charLiteral());
value = charNode.getValue();
return new LiteralNode(type, value);
return new LiteralNode(value, type);
}
return null;
}

View File

@ -146,9 +146,6 @@ public class SemanticAnalyzer implements SemanticVisitor {
@Override
public TypeCheckResult analyze(AssignmentStatementNode assignmentStatementNode) {
boolean valid = true;
BinaryExpressionNode binaryExpressionNode = assignmentStatementNode.expression;
var result = binaryExpressionNode.accept(this);
valid = valid && result.isValid();
return new TypeCheckResult(valid, null);
}

View File

@ -4,6 +4,10 @@ public class Example {
public static int testMethod(char x){
a = 12;
a = x;
}
}