
Добавил:
Yanus
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:c_compile(флор_курса) / table
.c//символьная таблица
struct TableContents
{
char nameword[40];
int token;
};
struct TableContents TableN[MAX_TABLE];
char LexWords[MAX_STR];
int LastChar = -1;
int LastEntry = 0;
int LineStr=1;
char LexBuf[128];
int poisk(char s[]) {
int tab;
for(tab=LastEntry;tab>0;tab--)
if(strcmp(TableN[tab].nameword,s) == 0)
return tab;
return 0;
}
int dobavit(char s[],int t) {
int Len;
Len=strlen(s);
if(LastEntry+1>=MAX_TABLE)
yyerror("symbol table full");
if(LastEntry + Len + 1>=MAX_STR)
yyerror("lexemes array full");
LastEntry++;
TableN[LastEntry].token = t;
strcpy(TableN[LastEntry].nameword, s);
return LastEntry;
}
char *poiskslova(int t) {
int tab;
for(tab=LastEntry;tab>0;tab--)
if(tab == t)
return TableN[tab].nameword;
return 0;
}