#define eq(a, b) (Strcmp(a, b) == 0) struct wordent { Char *word; struct wordent *prev; struct wordent *next; }; /* * struktura zmiennych * * aliasy i zmienne sa przechowywane w drzewie AVT */ EXTERN struct varent { Char **vec; /* tablica slow ktore sa wartoscia */ Char *v_name; /* nazwa zmiennej/aliasu */ int v_flags; /* flagi */ struct varent *v_link[3]; /* galezie nizej sa dokladnie zdefiniowane */ int v_bal; /* jak "ciezkie" jest drezwo */ } shvhed, aliases; /*drzewo zmiennych/aliasow */ #define v_left v_link[0] /*bardziej intuicyjne potrakowanie galezi*/ #define v_right v_link[1] #define v_parent v_link[2] #define adrof(v) adrof1(v, &shvhed) /*znajdujemy zmienna v wsrod zmiennych*/ #define varval(v) value1(v, &shvhed) /*zwraca wartosc zmiennej */ /* * The following are for interfacing redo substitution in * aliases to the lexical routines. */ /* * Historia komend * * Kazda lista historii zawiera rozszerzona liste slow * numer zdarzenia i jak latwo zauwazyc jest zorganizowana w kolejke */ EXTERN struct Hist { struct wordent Hlex; int Hnum; int Href; time_t Htime; Char *histline; struct Hist *Hnext; } Histlist;