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