С для профессиональных программистов

       

Основной цикл работы анализатора


Все интерпретаторы выполняют операции путем считывания лексемы программы и выбора необходимой функции для ее выполнения. Основной цикл работы для интерпретатора языка SMALL BASIC выглядит следующим образом.

do

token_type = get_token();

/* Проверка на соответствие оператору языка */

if (token_type == VARIABLE)

putback(); /* возврат переменной во входной поток */

assignment(); /* длжен быть оператор присваивания */

else /* это команда */

switch(tok)

case PRINT:

print();

break;

case GOTO:

exec_if();

break;

case FOR:



exec_for();

break;

case NEXT:

next();

break;

case INPUT:

input();

break;

case GOSUB:

gosub();

break;

case RETURN:

greturn();

break;

case END:

exit(0);

 while (tok != FINISHED);

Сначала лексема считывается из программы. Для удобства анализа каждая лексема располагается на отдельной строке. Если лексема является переменной, то, следуя синтаксису языка, за ней должен следовать оператор присваивания (SMALL BASIC не поддерживает старомодную команду LET). В противном случае, лексема считается командой и с помощью оператора case в зависимости от значения tok происходит выбор соответствующей

команды. Посмотрите, как работает каждая из них.



Содержание раздела