КОМАНДЫ КОМПИЛЯТОРА |
Набор команд компилятора - это команды, обычно называемые командами
препроцессора. Однако, т.к. в CAPER такой набор довольно узок и они
обрабатываются непосредственно компилятором, а не выделенным препроцессором, #macro <определяемое> <определитель> <определяемое> - строка до первого пробела; Примеры: #macro Constant_HEX_TEN 0x0A'B . . .
Следующие две команды определяют стиль подготовки объектных модулей - фрагментирование программы по критическим секциям (фрагментам, ибо в CAPER - это не всегда процедурная единица или структурная единица). Выше уже описывался механизм работы виртуального процессора и машины CAPER в целом. Так вот, критическим фрагментом здесь называется последовательность команд CAPER, в ходе выполнения которых блокируется механизм переключения параллельных процессов, и, в специальных случаях, блокируется вызов событийных механизмов. #flow [ <шаг> ] <шаг> - число, определяющее количество команд - длину критического фрагмента. В случае отсутствия <шаг> компилятор сам устанавливает значение по умолчанию - 1. #flow и #endflow фактически являются логическими скобками выделения критического фрагмента. Примеры: block BLOCK_NAME( fVar1, fVar2) #flow 3 block BLOCK_NAME2 block BLOCK_NAME3(fVar1, fVar2,fVar3) #endflow Отметим, что для принудительного срабатывания отключенных механизмов
событий и переключателя процессов внутри критического фрагмента может использоваться команда PASS. Ее подробное описание смотрите ниже. #include <путь и имя файла> трактуется традиционно: указываемый файл будет вставлен в исходный текст программы, откомпилирован и выгружен из оперативной памяти. #avoid и #noavoid - логические скобки, позволяющие обходить фрагмент программы, заключенный между данными скобками, при последовательном выполнении команд. Пример: var := 10 #avoid var += var2 Инструкции var := 5 не будет выполнена при последовательном прохождении по коду:
следом за var2 := 100 будет исполнено var += var2 |