3 typedef enum { FATHER,PREFIX,CLASS_S,PROCESS_S,COROUTINE_S,VARIABLE_S,SIGNAL_S,
4 CONSTANT_S,FUNCTION_S,PROCEDURE_S,BLOCK_S,HANDLERS_S } type;
6 typedef enum { CLOSE,HIDDEN,TAKEN,NORMAL } spec;
8 typedef enum { INTEGER,REAL,BOOLEAN,CHARACTER,STRING,FILE,SEMAPHORE,POINTER } var_type;
10 typedef enum { ALL,NOT_HIDDEN } visible;
12 typedef enum { SHARED,NOT_SHARED } sharing;
26 class packet {public : };
38 entry(String,type,int,spec,packet*);
46 find_result(int l,entry* e) { level=l;found=e;}
55 list_elem(entry* e) { info_ptr=e; };
62 void add_elem(entry*);
64 entry* find_virt(String);
66 list() { end_ptr=NULL; };
75 spec_elem(String e,spec_elem* n) { info=e;next=n; };
84 bool present( String );
86 spec_list() { end_ptr=NULL; };
97 pref_list_elem(entry* e,sharing sh,pref_list_elem* c)
110 pref_list_elem* end_ptr;
111 void add_pref(entry*,sharing);
112 pref_list() {end_ptr=NULL;};
123 list* formal_param_list;
130 void add_spec(spec,String);
131 void add_virt(entry*);
132 void add_form_param(entry*);
135 struct find_result* local_find(String,visible);
140 class c_class : public packet
145 bool virt; // or shared
150 class f_father : public packet
156 f_father(node* ff,int ll) { father_ptr=ff;level=ll; };
164 entry* inherit(String,sharing sh = NOT_SHARED);
165 entry* insert(String,type,packet*);
167 struct find_result* find_in_module(node*,String,bool,visible vis = ALL);
169 struct find_result* find(String);
170 symboltable() {root=last=new node(MAIN_LEVEL);};
173 class v_variable : public packet
180 class s_signal : public c_class {};
182 class h_handler : public c_class {};
184 class c_coroutine : public c_class { };
186 class p_process : public c_class {};
188 class b_block : public c_class {};
190 class p_procedure : public c_class { public: } ;
192 class f_function : public c_class {
198 class c_constant : public packet
201 int ptr; //here will be link to constant value