Реферат: Интерпретатор 2
t = fgetc(Open);// Считать в t символ из ранее открытого файла
if (t == ' ' || t == '\t'); /* Отбрасываем разделители-пробелы */
else if (t == '\n')// Если символ перевода строки, то
lineno++;// Увеличить счетчик линий
else if (isdigit(t)) /* t - цифра */
{
ungetc(t, Open);// Вернуть t во входной поток
fscanf(Open,"%lf",&tokenval);// Занести занчение числа (1 или > символов) в tokenval
return NUM;// Вернуть идентификатор числа
}
else if (isalpha(t)) /* t - буква */
{
int p, b = 0;
while (isalnum(t)) /* Пока t - букваилицифра */
{
lexbuf[b++] = t;// Добавить в буффер t
t=fgetc(Open);// Считать очередной символ
if (b >= BSIZE)// если превышен рзмер буффера
error("compiler error");// Вызов процедуры выхода с сообщением об ошибке
}
lexbuf[b] = EOS;// Добавить в буффер признак завершения последовательности символов (слова)
if (t != EOF)// Если t - не признак конца файла, то
ungetc(t, Open);// Вернуть t
p = lookup(lexbuf);// p = положение считанного слова в таблце символов
if (p == 0)// Если слово встретилось впервые
p = insert(lexbuf, ID);// Добавить в таблицу символов новую переменную
tokenval = p;
return symtable[p].token;// Вернуть соответствующий считанному слову идентификатор
}