public static void read_type_def(SimpleNode declarations, Symbol_table symbol_table, Type_table type_table) {
        try {
            int component_num = declarations.jjtGetNumChildren();
            for (int i = 0; i < component_num; i++) {
                SimpleNode type_declaration = (SimpleNode) declarations.jjtGetChild(i).jjtGetChild(0);
                if (type_declaration.toString().equals("Type_and_class_declaration")) {
                    String type_name = type_declaration.jjtGetFirstToken().next.toString();
                    int type_array_num = Integer.parseInt(type_declaration.jjtGetFirstToken().next.next.next.next.next.toString());
                    String type_reference = type_declaration.jjtGetFirstToken().next.next.next.next.next.next.toString();

                    if (!check_repeat_symbol(symbol_table, type_name)) {
                        throw new Exception("type " + type_name + " declaration name repeat");
                    }
                    if (!check_type_exist(type_table, type_reference)) {
                        throw new Exception("type " + type_reference + " reference not exist");
                    }

                    symbol_table.symbol_name.add(type_name);
                    symbol_table.symbol_type.add(Symbol_table.Symbol_type.TYPE_NAME);
                    type_table.type_name.add(type_name);
                    type_table.type_rederence.add(type_reference);
                    type_table.type_array_num.add(type_array_num);
                }
            }
        } catch (Exception e){
            System.out.println("Analyse Exception:");
            System.out.println(e.getMessage());
        }
    }