<<< BACK NEXT >>>

СТРУКТУРА ПРОГРАММ

   Одной из ключевых проблем при разработке языка являлся вопрос выбора теоретического носителя программы. Здесь учитывались такие содержательные требования как мобильность (транспортируемость) программ и программных модулей в среде распределенных вычислений, возможность модифицируемости программ. С целью разрешения данных свойств была выбрана категория блока – логической идентифицируемой единицей, объединяющей данные: как наборы команд, так и собственно наборы данных.
   Атомарной единицей всякой программы на языке CAPER является команда. Программой называется упорядоченная совокупность команд и подпрограмм, где каждая подпрограмма - также совокупность команд и подпрограмм. Данное определение не вполне точно и будет уточнено далее по мере описания основных конструкций языка. В CAPER принят термин "блок" для обозначения как набора команд, так и наборов различных данных.
   Итак, каждый блок может иметь входящие подблоки. Блоки бывают нескольких
типов: COMMAND, IMAGE, DATA, ARRAY, TEXT. Первый из них - блок исполняемых
команд, остальные типы предназначены для представления данных различного типа и будут описаны ниже.
   Исполнение программ языка CAPER начинается с явно указываемого начального
списка команд. Такой список является стартовым и безусловно образует корневой блок с именем MAIN. Имя MAIN назначается компилятором языка. Любая последовательность команд может быть стартовой. Прагматика этого свойства будет рассмотрена ниже.
   Мы намеренно дали сначала содержательное описание структуры программы,ибо здесь возможны различные математические модели таких объектов (в [1,2]
основной конструкцией является комплект - аналог мультимножества). В данной реализации в качестве "несущей" конструкции для программ и данных взяты массивы.
   В этой связи уточним: программой является массив, элементами которого являются исполнимые команды или подмассивы, которые в свою очередь сами являются
массивами, содержащими команды или подмассивы, и т.д. (разворотом индукции).

Всякий массив команд обладает логическим именем и набором атрибутов. Именно поэтому по аналогии с блочным конструированием вся совокупность названа блоком.
ЗНАКОВАЯ СИСТЕМА И ИДЕНТИФИКАТОРЫ

Знаковой системой CAPER является система знаков в стандарте ASCII. Соответственно, исходный текст программы CAPER должен быть подготовлен любым редактором, обеспечивающим такую кодировку.
   Все идентификаторы (буквенно-цифровые последовательности, начинающиеся с буквы, причем к буквам по традиции относится и знак подчеркивания '_') ограничиваются 15-ью знаками. Это техническое ограничение, которое может быть изменено. Оно вовсе не означает, что вы не можете использовать идентификаторы большей длины - разрешается сколь угодно длинное написание, однако синтаксический анализатор компилятора CAPER проигнорирует все, что превышает 15 знаков. Тут необходим контроль со стороны программиста, ибо внешне разные идентификаторы, совпадающие в первых 15-ти знаках, вызовут, в частности, ошибку дублирования имен при определении переменной или блока.
   В новой версии CAPER, как и раньше, нет чувствительности к регистру букв.

ФИЗИЧЕСКАЯ И ЛОГИЧЕСКАЯ СТРОКА ИСХОДНОГО ТЕКСТА

В исходном тексте программы различаются логические и физические строки.
   Физическая строка - строка текстового редактора, ограниченная знаком конца
строки - шестнадцатеричный код 0x0A (десятеричное 10);  логическая строка -
строка команды, которая может располагаться на нескольких физических строках посредством знака: => - знак продолжения логической строки, последний на физической строке, принимаемый к анализу, т.е. все знаки, расположенные после "=>" на физической строке, игнорируются.
   В свою очередь, физическая строка может быть разбита на несколько логических посредством знака ";" (точка с запятой) - разделитель логических строк на одной физической.
   Обычны средства комментирования:

  *        - указатель логической строки комментария.
  /*...*/  - скобки комментария - действует для физических строк:
             от строки, начинающейся с '/*' - в начале комментария,
             до строки, начинающейся с '*/' - в конце комментария.
  //       - комментарий в строке после записи команды.

   Кроме того возможно косвенное комментирование: после сочетания  знаков  ; *   (точка с запятой и звездочка), или же после знака продолжения строки  "=>".
   Знак '*' в начале логической строки - комментарий

* комментарий
  var1 := var2 * var3 +  =>    комментарий
          var4 * var5

  var1 +=  var2  ; *   еще один комментарий

   Весь спектр комментирования будет продемонстрирован в приводимых далее
примерах.

<<< BACK NEXT >>>