summaryrefslogtreecommitdiff
path: root/src/minijava/symboltable/MClasses.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/minijava/symboltable/MClasses.java')
-rw-r--r--src/minijava/symboltable/MClasses.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/minijava/symboltable/MClasses.java b/src/minijava/symboltable/MClasses.java
new file mode 100644
index 0000000..a4d066f
--- /dev/null
+++ b/src/minijava/symboltable/MClasses.java
@@ -0,0 +1,31 @@
+/**
+ * 所有声明的类的列表
+ */
+package minijava.symboltable;
+
+import java.util.Vector;
+
+public class MClasses extends MType {
+ public Vector<MClass> mj_classes = new Vector<MClass>(); // 用于存放类
+
+ // 在表中插入类
+ public String InsertClass(MClass v_class) {
+ String class_name = v_class.getName();
+ if (Repeated(class_name)) // 如已经定义过该类,返回错误信息
+ return "Class double declaration " + "\"" + class_name + "\"";
+ mj_classes.addElement(v_class);
+ return null;
+ }
+
+ // 判定是否定义同名的类
+ public boolean Repeated(String class_name) {
+ int sz = mj_classes.size();
+ for (int i = 0; i < sz; i++) {
+ String c_name = ((MClass) mj_classes.elementAt(i)).getName();
+ if (c_name.equals(class_name))
+ return true;
+ }
+ return false;
+ }
+}
+