Составители:
Рубрика:
Функция scan_labels() просматривает текст и размещает метки в
таблице.
void scan_labels()
{ int addr,i;
char *temp;
label_init();
temp=prog;
get_token();
if (token_type==NUMBER)
{ strcpy(label_table[0].name,token);
label_table[0].p=prog;
}
find_eol();
do
{ get_token();
if (token_type==NUMBER)
{ addr=get_next_label(token);
if (addr==-1 || addr==-2)
{ (addr==-1) ?serror(5):serror(6);
}
strcpy(label_table[addr].name,token);
label_table[addr].p=prog;
}
if (tok!=EOL) find_eol();
} while(tok!=FINISHED);
prog=temp;
}
/* инициализация массива меток */
void label_init()
{
register int i;
for (t=0; t<NUM_LAB; ++t) lable_table[t].name[0]='\0';
}
/* Поиск начала следующей строки*/
void find_eol()
{ while(*prog!='\n' && *prog!='\0') ++prog;
if (*prog) prog++;
}
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »