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

       

Как анализатор обрабатывает переменные


Как было сказано раньше, интерпретатор языка SMALL BASIC распознает переменные с именами только от "A" до "Z". Каждой переменной соответствует элемент массива variables, состоящего из 26 элементов. Этот массив определен в тексте интерпретатора, как показано ниже, и инициализируется нулевыми значениями.

int variables[26]=    /* 26 переменных пользователя, A-Z */

0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0

;

Так как именами переменных являются буквы от "A" до "Z", то индексирование массива variables можно легко осуществить путем вычитания из соответствующих значений имен переменных в коде ASCII кода символа 'A'. Функция find_var(), определяющая значение переменной в зависимости от ее имени, представлена ниже.

/* Определение значения переменной по ее имени*/

int find_var(s)

char *s;

if(!isalpha(*s))

serror(4); /* это не переменная */

return 0;

return variables[toupper(*token)-'A'];

Эта функция допускает использование более длинных имен, но только первая буква имени переменной является значащей.



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