diff --git a/.idea/misc.xml b/.idea/misc.xml index 4e21abf..459a2c6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -40,7 +40,7 @@ - + \ No newline at end of file diff --git a/src/main/java/ast/literal/LiteralNode.java b/src/main/java/ast/literal/LiteralNode.java index 66dbc74..b3cb896 100644 --- a/src/main/java/ast/literal/LiteralNode.java +++ b/src/main/java/ast/literal/LiteralNode.java @@ -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; } diff --git a/src/main/java/classFileOutput/Example.class b/src/main/java/classFileOutput/Example.class index 522ae9e..e34760a 100644 Binary files a/src/main/java/classFileOutput/Example.class and b/src/main/java/classFileOutput/Example.class differ diff --git a/src/main/java/classFileOutput/Test.class b/src/main/java/classFileOutput/Test.class index 8ba4c23..98f2799 100644 Binary files a/src/main/java/classFileOutput/Test.class and b/src/main/java/classFileOutput/Test.class differ diff --git a/src/main/java/parser/ASTBuilder.java b/src/main/java/parser/ASTBuilder.java index 446b7eb..7e7422d 100644 --- a/src/main/java/parser/ASTBuilder.java +++ b/src/main/java/parser/ASTBuilder.java @@ -230,22 +230,22 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { @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; } diff --git a/src/main/java/semantic/SemanticAnalyzer.java b/src/main/java/semantic/SemanticAnalyzer.java index 9ccfe98..253a7b7 100644 --- a/src/main/java/semantic/SemanticAnalyzer.java +++ b/src/main/java/semantic/SemanticAnalyzer.java @@ -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); } diff --git a/src/main/resources/CompilerInput.java b/src/main/resources/CompilerInput.java index 1cbe5ca..0f8297b 100644 --- a/src/main/resources/CompilerInput.java +++ b/src/main/resources/CompilerInput.java @@ -4,6 +4,10 @@ public class Example { public static int testMethod(char x){ + a = 12; + + a = x; + } }