diff options
Diffstat (limited to 'src/minijava/typecheck/Main.java')
-rw-r--r-- | src/minijava/typecheck/Main.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/minijava/typecheck/Main.java b/src/minijava/typecheck/Main.java new file mode 100644 index 0000000..35ac860 --- /dev/null +++ b/src/minijava/typecheck/Main.java @@ -0,0 +1,42 @@ +/** + * 用于类型检查的主函数入口 + */ +package minijava.typecheck; + +import minijava.MiniJavaParser; +import minijava.ParseException; +import minijava.TokenMgrError; +import minijava.symboltable.MClasses; +import minijava.symboltable.MType; +import minijava.syntaxtree.Node; +import minijava.visitor.BuildSymbolTableVisitor; + +public class Main { + + public static void main(String[] args) { + + try { + new MiniJavaParser(System.in); + Node root = MiniJavaParser.Goal(); + + // 初始化符号表中最大的类 + MType my_classes = new MClasses(); + + // 遍历抽象语法树,建立符号表,检查是否重复定义 + root.accept(new BuildSymbolTableVisitor(), my_classes); + + // 打印错误信息 + PrintError.printAll(); + } catch (TokenMgrError e) { + + // Handle Lexical Errors + e.printStackTrace(); + } catch (ParseException e) { + + // Handle Grammar Errors + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } +}
\ No newline at end of file |