summaryrefslogtreecommitdiff
path: root/src/minijava/symboltable/MClasses.java
blob: 2df2ba84ccfdee9b4d1111ce8b218ffbbb59f9dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 * 所有声明的类的列表
 */
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;
	}
	
	// 调试输出: 打印所有的类的信息
	public void printClasses(int spaces) {
		for (int i=0; i<mj_classes.size(); i++) {
			mj_classes.elementAt(i).printClass(spaces);
		}
	}
}