Реферат: Интерпретатор 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;// Вернуть соответствующий считанному слову идентификатор

}

К-во Просмотров: 1032
Бесплатно скачать Реферат: Интерпретатор 2