From 5f28f80c4e25a56cd444914c2f0b3da5e7fdb088 Mon Sep 17 00:00:00 2001 From: Lizzy Hunt Date: Mon, 10 Apr 2023 09:17:11 -0600 Subject: Initial commit - building --- submit/ast/VarDeclaration.java | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 submit/ast/VarDeclaration.java (limited to 'submit/ast/VarDeclaration.java') diff --git a/submit/ast/VarDeclaration.java b/submit/ast/VarDeclaration.java new file mode 100644 index 0000000..d2a5264 --- /dev/null +++ b/submit/ast/VarDeclaration.java @@ -0,0 +1,47 @@ +/* + * Code formatter project + * CS 4481 + */ +package submit.ast; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author edwajohn + */ +public class VarDeclaration extends AbstractNode implements Declaration { + + private final VarType type; + private final List ids; + private final List arraySizes; + private final boolean isStatic; + + public VarDeclaration(VarType type, List ids, List arraySizes, boolean isStatic) { + this.type = type; + this.ids = new ArrayList<>(ids); + this.arraySizes = arraySizes; + this.isStatic = isStatic; + } + + public void toCminus(StringBuilder builder, final String prefix) { + builder.append(prefix); + if (isStatic) { + builder.append("static "); + } + builder.append(type).append(" "); + for (int i = 0; i < ids.size(); ++i) { + final String id = ids.get(i); + final int arraySize = arraySizes.get(i); + if (arraySize >= 0) { + builder.append(id).append("[").append(arraySize).append("]").append(", "); + } else { + builder.append(id).append(", "); + } + } + builder.delete(builder.length() - 2, builder.length()); + builder.append(";\n"); + } + +} -- cgit v1.2.3-70-g09d2