00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef TYPE_CHECK_H
00028 #define TYPE_CHECK_H
00029 
00030 #include "symboldef.h"
00031 
00032 typex *roottype(typex *tp);
00033 typex *tc_var(parsex *var);
00034 typex *tc_atomic(parsex *at_expr);
00035 typex *tc_send(parsex *send_expr);
00036 typex *tc_func_call(parsex *func_call);
00037 typex *tc_block(parsex *block_expr);
00038 typex *tc_blockt(parsex *blockt_expr);
00039 typex *tc_if (parsex *if_expr, bool break_ok, bool return_ok, bool reply_ok);
00040 typex *tc_for (parsex *for_expr, bool return_ok, bool reply_ok);
00041 typex *tc_while (parsex *while_expr, bool return_ok, bool reply_ok);
00042 void tc_labels(parsex *labels, typex *sw_type, bool *with_default);
00043 typex *tc_choices(parsex *choices, typex *sw_type, bool *with_default,
00044                   bool return_ok, bool reply_ok);
00045 typex *tc_switch (parsex *sw_expr, bool return_ok, bool reply_ok);
00046 typex *tc_expr(parsex *expr, bool break_ok, bool return_ok, bool reply_ok);
00047 void tc_var_inits(symboltable *variables);
00048 void tc_func_meth(symboltable *func_meths);
00049 void type_check(symboltable *classes, symboltable *functions,
00050                 symboltable *variables);
00051 
00052 #endif // TYPE_CHECK_H