summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2014-10-25 18:06:09 +0800
committerIru Cai <mytbk920423@gmail.com>2014-10-25 18:07:33 +0800
commitbadbe373b9e6a56c8b9dbb8252dbdf5556064565 (patch)
tree84f7cc77ae2888bc3295a4f728ba9d9b05ad1419
parentbb5323b5d697bf88e08b167e48a5733cd68002f5 (diff)
downloadminijava-badbe373b9e6a56c8b9dbb8252dbdf5556064565.tar.xz
add main_class in MClasses, and set main class when building symtab
-rw-r--r--src/minijava/symboltable/MClasses.java1
-rw-r--r--src/minijava/visitor/BuildSymbolTableVisitor.java3
2 files changed, 4 insertions, 0 deletions
diff --git a/src/minijava/symboltable/MClasses.java b/src/minijava/symboltable/MClasses.java
index 7a8a75b..f535b97 100644
--- a/src/minijava/symboltable/MClasses.java
+++ b/src/minijava/symboltable/MClasses.java
@@ -9,6 +9,7 @@ import minijava.typecheck.PrintError;
public class MClasses extends MType {
public Vector<MClass> mj_classes = new Vector<MClass>(); // 用于存放类
+ public MClass main_class = null;
public MClass findClassByName(String c_name) {
for (int i=0; i<mj_classes.size(); i++) {
diff --git a/src/minijava/visitor/BuildSymbolTableVisitor.java b/src/minijava/visitor/BuildSymbolTableVisitor.java
index 4de3383..5e28b03 100644
--- a/src/minijava/visitor/BuildSymbolTableVisitor.java
+++ b/src/minijava/visitor/BuildSymbolTableVisitor.java
@@ -108,6 +108,9 @@ public class BuildSymbolTableVisitor extends GJDepthFirst<MType, MType> {
error_msg = ((MClasses) argu).InsertClass(m_class);
if (error_msg != null)
PrintError.print(m_class.getLine(), m_class.getColumn(), error_msg);
+
+ // 设置该类为主类
+ ((MClasses)argu).main_class = m_class;
// 往main class中添加main方法
MMethod main_method = new MMethod("main", MIdentifier.voidType,