Спецификация языка CBAS

Все переменные состоят только из букв и символа подчёркивания и являются глобальными. Такая конструкция, как объявление переменных, в языке CBAS не предусмотрена. Все переменные имеют тип данных, аналогичный int. Транслятор при транслировании исходной программы строит таблицу переменных. Таблица представляет собой пары «имя-значение». При обнаружении идентификатора транслятор просматривает таблицу в поисках такого же имени. Если его там нет, то создаётся новое вхождение в таблицу, и переменной присваивается какое-то начальное значение (например, 0).

Оператор printслужит для вывода информации на экран. Он может печатать как символьные строки, так и значения выражений.

Оператор scanслужит для считывания с клавиатуры значений в переменную. Выполнение программы приостанавливается, пока пользователь не введёт какое-либо число (т.к. все переменные имеют тип данных int).

Цикл for работает следующим образом. Переменной в цикле присваивается начальное значение, которое инкрементируется на единицу при каждой итерации. Выход из цикла происходит, когда переменная цикла БОЛЬШЕ ИЛИ РАВНА значению верхней границы цикла.

Некоторые особенности построения интерпретаторов.

            Как уже упоминалось, интерпретатор оперирует внутренним представлением для лексем. Для преобразования во внутренний формат используется таблица

Основной цикл работы интерпретатора состоит в пошаговом выполнении всех инструкций исходной программы. Все интерпретаторы   выполняют   операции  путем  считывания лексемы программы и выбора необходимой функции для ее выполнения. Например, если очередная лексема – это ключевое слово ‘if’, то запускается функция process_if(). В качестве параметра функция принимает указатель на обрабатываемую часть программы. Это может быть номер строки и символа в файле, какая-либо другая информация. Т.к. язык CBAS подразумевает вложенность конструкций, то каждая функция обработки той или иной лексемы вместе с выполнением специфических для данной лексемы функций должна вызывать общую функцию обработки. Пусть, например, программа состоит исключительно из циклов for и условий if. Тогда интерпретатор условно можно представить в виде следующих функций:

Циклы

В языке   CBAS,   точно  также  как  и  в  C,  допускается вложенность цикла for.  Основной изюминкой  при реализации этого оператора является сохранение информации о каждом  вложенном  цикле  со  ссылкой  на  внешний   цикл.   Для  реализации  этого используется стековая структура,  которая работает следующим образом:  начало цикла,  информация о значении управляющей  переменной  цикла  и  ее конечном значении,  а также место расположения цикла  в  теле  программы  заносятся  в  стек.

Каждый раз,  при достижении ‘}’, соответствующей концу цикла for,  из стека извлекается информация о значении управляющей переменной,  затем ее  значение пересчитывается  и сравнивается с конечным значением цикла.  Если значение управляющей переменной цикла достигло  своего  конечного значения,  выполнение  цикла  прекращается и выполняется оператор программы, следующий за циклом.  В  противном  случае,  в стек  заносится  новая информация, и выполнение цикла начинается с его начала.  Таким  же  образом  обеспечивается  интерпретация  и выполнение вложенных циклов.  В стекоподобной структуре вложенных циклов каждый for должен быть закрыт  соответствующей ‘}’.

Для  реализации  оператора  цикла  for   стек  должен  иметь следующую

Ссылка на основную публикацию
Adblock detector