diff options
author | Iru Cai <mytbk920423@gmail.com> | 2014-10-25 18:06:09 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2014-10-25 18:07:33 +0800 |
commit | badbe373b9e6a56c8b9dbb8252dbdf5556064565 (patch) | |
tree | 84f7cc77ae2888bc3295a4f728ba9d9b05ad1419 /src/minijava | |
parent | bb5323b5d697bf88e08b167e48a5733cd68002f5 (diff) | |
download | minijava-badbe373b9e6a56c8b9dbb8252dbdf5556064565.tar.xz |
add main_class in MClasses, and set main class when building symtab
Diffstat (limited to 'src/minijava')
-rw-r--r-- | src/minijava/symboltable/MClasses.java | 1 | ||||
-rw-r--r-- | src/minijava/visitor/BuildSymbolTableVisitor.java | 3 |
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, |