summaryrefslogtreecommitdiff
path: root/Homework/cs5300/compiler/submit/ast/VarDeclaration.java
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
commit6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 (patch)
treeed97e39ec77c5231ffd2c394493e68d00ddac5a4 /Homework/cs5300/compiler/submit/ast/VarDeclaration.java
downloadmisc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.tar.gz
misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.zip
Diffstat (limited to 'Homework/cs5300/compiler/submit/ast/VarDeclaration.java')
-rw-r--r--Homework/cs5300/compiler/submit/ast/VarDeclaration.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/Homework/cs5300/compiler/submit/ast/VarDeclaration.java b/Homework/cs5300/compiler/submit/ast/VarDeclaration.java
new file mode 100644
index 0000000..9006619
--- /dev/null
+++ b/Homework/cs5300/compiler/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 implements Declaration, Node {
+
+ private final VarType type;
+ private final List<String> ids;
+ private final List<Integer> arraySizes;
+ private final boolean isStatic;
+
+ public VarDeclaration(VarType type, List<String> ids, List<Integer> 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");
+ }
+
+}