Теория языков программирования и методы трансляции. Копейкин М.В - 22 стр.

UptoLike

Возврат индекса свободного места в массиве меток для размещения
очередной ссылки-метки. При этом выполняется проверка на
дублирование меток код: -2 и переполнение массива меток код: -1.
get_next_label(s)
char *s;
{ register int t;
for (t=0; t<NUM_LAB; ++t)
{
if (label_table[t].name[0]==0) return t;
if (!strcmp(label_table[t].name,s)) return -2;
}
return -1;
}
Ограничение на размер массива определяется параметром
NUM_LAB, размер при необходимости можно изменить.
void exec_goto()
{ char *loc;
get_token();
loc=find_label(token);
if (loc=='\0')
serror(7);
else prog=loc;
}
Поиск неопознанной
метки выполняется find_label(s). Если метка не
найдена, возвращается ноль, при обнаружении - указатель на место на
место хранения метки .
char *find_label(s)
char *s;
{ register int t;
for (t=0; t<NUM_LAB; ++t)
if (!strcmp(label_table[t].name,s)) return label_table[t].p;
return '\0';
}
2.2.6. Условный оператор
Условный оператор реализован в соответствии с требованиями
стандарта языка Бейсик.