diff --git a/src/main/java/ast/FieldNode.java b/src/main/java/ast/FieldNode.java index 0f17f69..948701f 100644 --- a/src/main/java/ast/FieldNode.java +++ b/src/main/java/ast/FieldNode.java @@ -1,8 +1,8 @@ package ast; public class FieldNode extends MemberNode { - TypeNode type; - String name; + public TypeNode type; + public String name; public FieldNode(TypeNode type, String name){ this.type = type; diff --git a/src/main/java/ast/MethodNode.java b/src/main/java/ast/MethodNode.java index 1db789c..daa970c 100644 --- a/src/main/java/ast/MethodNode.java +++ b/src/main/java/ast/MethodNode.java @@ -9,9 +9,13 @@ public class MethodNode extends MemberNode{ public ParameterListNode parameters; - public MethodNode(TypeNode visibility, String name, ParameterListNode parameters){ + public List statements = new ArrayList<>(); + + public MethodNode(TypeNode visibility, String name, ParameterListNode parameters, + List statements){ this.visibility = visibility; this.name = name; this.parameters = parameters; + this.statements = statements; } } diff --git a/src/main/java/ast/ParameterListNode.java b/src/main/java/ast/ParameterListNode.java index 6096b69..c86014b 100644 --- a/src/main/java/ast/ParameterListNode.java +++ b/src/main/java/ast/ParameterListNode.java @@ -3,10 +3,10 @@ package ast; import java.util.ArrayList; import java.util.List; -public class ParameterListNode { +public class ParameterListNode extends ASTNode { List parameters = new ArrayList<>(); - public ParameterListNode(){ - parameters + public ParameterListNode(List parameters){ + this.parameters = parameters; } } diff --git a/src/main/java/ast/ParameterNode.java b/src/main/java/ast/ParameterNode.java deleted file mode 100644 index fc2d84a..0000000 --- a/src/main/java/ast/ParameterNode.java +++ /dev/null @@ -1,11 +0,0 @@ -package ast; - -public class ParameterNode extends ASTNode { - public TypeNode type; - public String identifier; - - public ParameterNode(TypeNode type, String identifier) { - this.type = type; - this.identifier = identifier; - } -} \ No newline at end of file diff --git a/src/main/java/ast/ProgramNode.java b/src/main/java/ast/ProgramNode.java index 1fed1c0..1fcc193 100644 --- a/src/main/java/ast/ProgramNode.java +++ b/src/main/java/ast/ProgramNode.java @@ -1,9 +1,12 @@ -public class ParameterNode extends ASTNode { - public TypeNode type; - public String identifier; +package ast; - public ParameterNode(TypeNode type, String identifier) { - this.type = type; - this.identifier = identifier; +import java.util.ArrayList; +import java.util.List; + +public class ProgramNode extends ASTNode { + public List classes = new ArrayList<>(); + + public void addClass(ClassNode classNode) { + classes.add(classNode); } } \ No newline at end of file diff --git a/src/main/java/bytecode/ByteCodeGenerator.java b/src/main/java/bytecode/ByteCodeGenerator.java index d2bcedd..0846386 100644 --- a/src/main/java/bytecode/ByteCodeGenerator.java +++ b/src/main/java/bytecode/ByteCodeGenerator.java @@ -1,8 +1,6 @@ package bytecode; -import java.io.FileOutputStream; -import java.io.IOException; - +import ast.ProgramNode; import ast.ClassNode; public class ByteCodeGenerator { diff --git a/src/main/java/parser/ASTBuilder.java b/src/main/java/parser/ASTBuilder.java index f659299..6519cc1 100644 --- a/src/main/java/parser/ASTBuilder.java +++ b/src/main/java/parser/ASTBuilder.java @@ -39,23 +39,17 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { public ASTNode visitMethodDeclaration(SimpleJavaParser.MethodDeclarationContext ctx) { TypeNode returnType = (TypeNode) visit(ctx.type()); String methodName = ctx.IDENTIFIER().getText(); - ParameterListNode = (ParameterListNode) visit(ctx.parameterList()); - List parameters = new ArrayList<>(); - for (SimpleJavaParser.ParameterContext parameter : ctx.parameterList()) { - parameters.add(parameter); - } - MethodNode method = new MethodNode(returnType, methodName); - - for (SimpleJavaParser.ParameterContext paramCtx : ctx.parameterList().parameter()) { - method.parameters.add((ParameterNode) visit(paramCtx)); - } - + ParameterListNode parameterListNode = (ParameterListNode) visit(ctx.parameterList()); + List statements = new ArrayList<>(); for (SimpleJavaParser.StatementContext stmtCtx : ctx.statement()) { - method.statements.add((StatementNode) visit(stmtCtx)); + statements.add((StatementNode) visit(stmtCtx)); } + MethodNode method = new MethodNode(returnType, methodName, parameterListNode, statements); + return method; } + @Override public ASTNode visitType(SimpleJavaParser.TypeContext ctx) { return new TypeNode(ctx.getText()); @@ -78,7 +72,7 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { for (SimpleJavaParser.ParameterContext paramCtx : ctx.parameter()) { parameters.add((ParameterNode) visitParameter(paramCtx)); } - return new ParameterListNode(parameters); // Assuming you want to keep a dedicated node for the list + return new ParameterListNode(parameters); } @Override