$$OUT=-
$$START!
I. Синтаксис операторов |
I. Syntax |
I. 1. Форматирование операторов |
I. 1. Formatting statements |
I. 1. a. Один оператор - одна строка |
I. 1. a. Continue statement lines |
Простые операторы
не требуют завершения специальным знаком (таким, как '
Знак '
Например: |
Statements need not any finalization symbol (like ' Symbol ';' is used to finish a block of statements.
E.g.: |
Строка не может быть длиннее 80 символов (не учитывая комментарии до конца строки и пробельные символы в конце строки). Символ табуляции считается за один символ. Оператор может быть записан в нескольких строках, но строка считается продолжающейся на следующую только если:
|
A line of a code should not exceed 80 characters (without ending comments and spaces and tabulations). Statement can be continued in several lines only in following cases:
|
| Другой способ запомнить правило переноса: строка считается продолжающейся на следующую только если
|
Another way to remember the rule is that a statement is continued only if:
|
I. 1. b. Блочные операторы |
I. 1. b. Block statements |
| Блочные
операторы создают вложенный уровень операторов. Блок вложенных операторов завершается символом ';'. Функции и другие блоки уровня класса завершаются символом '.' (точка). А именно: заголовок класса, список импорта, определение типа перечисления, определение блока констант. Строка не может завершаться двумя и более подряд одинаковыми символами завершения ';' или '.'. Но сочетание '; .' для завершения последней блочной конструкции в функции и самой функции допускается. Если завершения требуют более двух блоков операторов, то у символ завершения для внешнего блока будет находиться на отдельной строке. Например: |
Block statements always are starting in a new line. Nesting statements block is ended with the symbol ';'. Functions and other blocks of a class level are ending with a symbol '.'. Such blocks are: a class header, an import list, enumeration declaration, constants definition block. (Though it is allowed to use ';' for an import list, too). The last line in a nested block can not be ended with two same ending symbols ';' or '.'. But it is allowed to end nesting block with its upper leveled function by two symbols '; .' at the end of the last line in the function. So, if it is required to finish two nesting blocks, then the ending symbol of the external block will be placed in a separate line of code. E.g.:
|
FOR i IN [1 TO 100] : ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ |
| Имеется только одно ключевое слово для условного
оператора ( Все прочие операторы являются простыми:
|
There is only a single
keyword for a conditional statement ( All other statements are simple: |
| Компилятор требует помечать
маркером
|
A compiler requires to mark with a
modifier
|
I. 1. c. Комментарии |
I. 1. c. Comments |
|
|
I. 1. d. Регистрозависимость для идентификаторов |
I. 1. d. Case sensitivity for keywords, types and other identifiers |
|
|
Имена типов образуют особое пространство имен, не пересекающееся с прочими именами (переменных, констант, функций, процедур, модулей). |
Type names create a name space not intersecting other names at all. |
|
It is desired to be written CAPITALIZED. |
|
|
Например, A и a - это разные переменные (или константы). Имена Публичных полей, функций, параметров функций начинаются с Прописной буквы. Члены класса, имена которых начинаются со строчной буквы, локальны в классе (но доступны в его наследниках). Локальные переменные функций рекомендуется именовать со строчной буквы, параметры функции - с прописной.
|
So, A and a are different variables (or constants). Names of Public fields, functions, variables, types are always starting from a capital letter. All other names are local in a module. (This does not concern local variables which are always local in its functions and can be written from any case).
|
I. 1. e. Именование |
I. 1. e. Naming |
| При декларации переменной, функции, типа данных сущности может быть дано два имени - краткое и полное. Сначала записывается краткое имя, затем, через символ '|' - остальная часть имени. При этом:
|
While declaring a variable, a function, a data type, those things can have two names - a short and a long. The first the short name is written, then, if present, a long name is following separated by the symbol '|'. So there are following rules:
|
I. 1. f. Модификаторы |
I. 1. f. Modifiers |
Многие декларации языка (заголовок модуля, оператор, декларация переменной или типа данных) могут иметь модификаторы.
Например, в заголовке класса: |
Many language declarations (module header, statement, variable of data type declaration) can have modifiers.
|
|
Модификаторы не воздействуют на основную семантику кода. Они лишь помогают компилятору в обеспечении большей надежности, и иногда помогают оптимизировать результирующий код. Если в готовой программе, не содержащей ошибок, убрать все модификаторы (полагая, что в языке они не требуются), это не изменит результат работы программы (но может повлиять на размер кода и скорость работы в сторону увеличения или уменьшения). |
Modifiers do not affect main code semantics. These just help to compiler to provide more security and sometimes help to optimize resulting code. If to remove all modifiers in a ready program (and suppose that a language do not require it), this do not change a result of the program (but can take an effect of changing its size / working speed, either increasing or decreasing it). |
I. 2. Оператор присваивания |
I. 2. Assignment |
I. 2. a. Простой оператор присваивания |
I. 2. a. Simple assignment statement |
где |
where |
||
Для сравнения на равенство двух операндов используется си-подобный оператор
|
To compare for equality of two operands a "C"-like operator |
I. 2. b. Операторы присваивания в комбинации с арифметической, логической или поразрядной логической операцией |
I. 2. b. Assignment in combination with arithmetic, logic or bitwise operation |
Дополнительные операции
|
Additional operations
|
I. 2. c. Операторы отправки данных |
I. 2. c. Data sending operations |
Операция <<
используется для добавления строки к строке,
элемента к массиву
и вывода текста в текущий главный поток вывода.
|
Operation << is used to
append a string to a string or to append an item to an array, or to
output text to a current output console.
|
Аналогичная операция >> используется как
замена вызова функции read для операнда слева
(а так же для добавления нового объекта в массив объектов, см. в разделе,
посвященном классам и объектам).
|
A similar operation
|
I. 2. d. Операторы повторного присваивания и отправки данных |
I. 2. d. Repeating assignment and sending data operators |
| Если оператор начинается с символа
Для такого повторного присваивания (или отправки данных):
|
If a statement is starting from a
symbol For such repeating assignment statement (or data sending statement):
|
I. 2. e. Операторы инкремента и декремента |
I. 2. e. Increment and decrement |
| Операторы
|
Operators
|
I. 3. Выражения |
I. 3. Expressions |
|
|
I. 3. a. Операторы проверки наличия |
I. 3. a. Checking conains of an item |
| Операторы
В случае конструируемого массива, список значений должен содержать только константы. В этом случае, когда тип проверяемого значения - строка, не допускается конструировать массив из единственного элемента. Либо справа должна быть строка, а не массив. Операция IN/!IN не применима к паре вещественное число - вещественный массив (так же как запрещено сравнение на равенство значений типа REAL).
|
Operators
In case of a constructed array, all its items must be constant expressions. And in case when the left value is a string, it is not allowed to construct an array from a single string value. Either a string should be to the right of IN / !IN ( the case 2). Operations IN / !IN are not applicable to REAL numbers (still it is not allowed to compare REAL values for equality/inequality). |
I. 4. Прочие простые операторы |
I. 4. Other simple statements |
|
|
|
|
I. 5. Условный оператор CASE |
I. 5. Conditional statement CASE |
Оператор По исполнении любой ветви всегда происходит выход из всего оператора
|
A BREAK statement is not used to finish a branch. After
any branch execution entire
|
| Классический пример - решение квадратного уравнения в области вещественных чисел: | Classic example - solving a square equation for real numbers: |
|
Особый вариант оператора CASE ?
- без условия вообще, может использоваться для последовательного
перебора вариантов, вычисляющихся последовательно, до первого выражения
в квадратных скобках, получившего значение TRUE.
После чего либо выполняется соответствующая ветвь, либо, если
истинное условие не обнаружено, то срабатывает блок
ELSE (при его наличии).Синтаксически такой
вариант оператора |
Especial version of the CASE ?
statement - with a condition in the header but with sequential
calculation of conditions in square brackets until either the first one
is found with value TRUE (in such case a correspondent
branch is executed only), or until the ELSE part (or the
end of the CASE statement) is found.In such case symbols
' |
FUNCTION Square_eq2|uation( |
I. 6. Операторы цикла FOR |
I. 6. FOR loop statements |
Оператор цикла
|
A loop statement
|
|
|
|
Для организации неконтролируемого бесконечного цикла используется
блочный оператор
|
To create an unguided infinitive loop, a special block
statement is used:
|
I. 7. Блок операторов PUSH |
I. 7. PUSH statements block |
Предназначен для гарантированного сохранения некоторой переменной или поля с одновременным присваиванием ему нового значения на время выполнения блока, с последующим гарантированным восстановлением значения этой переменной или поля по окончании исполнения блока.
Восстанавливающие действия гарантируются в том числе:
Синтаксис:
или
|
A
Restoring is always guaranteed:
Syntax:
or:
|
|||
|
|
|||
|
В операторе Например: |
A special method with modifier Such method2 should not have parameters, and it can not be called
directly (as well as opening method, having the |
|||
|
||||
I. 8. Блок операторов DEBUG |
I. 8. DEBUG statements block |
| Предназначен для временной инъекции кода, который требуется только для целей отладки. Внутри этого блока не ведётся подсчёт и контроль уровней вложенности блоков. Компилятор всегда выдаёт предупреждение о наличии таких блоков с тем, чтобы программист не забыл удалить их из кода (или закомментировать) по окончании отладки. Внутри отладочных блоков могут быть декларированы локальные переменные, но использовать их можно только опять же внутри отладочных блоков (хотя и не обязательно только в том блоке, в котором они декларируются).
|
A DEBUG block is intended for a temporary code injection which is required for debug purposes. In such blocks, levels of nesting blocks are not controlled. A compiler is always warning about such blocks not removed from a code. Such blocks should be removed when debugging is finished. In DEBUG blocks it is possible to declare local variables as usual. But it is not allowed to use such variables out of DEBUG blocks (though it is allowed to use it in another DEBUG block in the same function).
|
| Если для правильной компиляции блоков
|
If there required additional
classes to compile |
I. 9. Оператор LIKE |
I. 9. LIKE statement |
| Предназначен для вставки ранее написанного кода без изменений в новой позиции. Вставляемый код должен быть расположен между двумя блочными комментариями (на одном уровне вложенности). Метка первого блочного комментария (в совокупности с именем функции) используется для указания того, какой именно блок кода следует повторить. Имеются правила:
|
The
|
|||
|
|
An example: | |||
|
||||
| Пожалуйста, помните:
Поэтому не злоупотребляйте использованием |
Please remember:
So do not overuse the |
I. 10. Оператор REVERT |
I. 10. REVERT statement |
| Предназначен для вставки ранее написанного кода в новой позиции с переворачиванием направлений присваивания. Переворачиваемый код должен быть расположен между двумя блочными комментариями (на одном уровне вложенности). Метка первого блочного комментария (в совокупности с именем функции) используется для указания того, какой именно блок кода следует повторить. Имеются правила:
|
The
|
| Пример: | An example: |
|
$$STOP!!