<Скалярный тип> ::= {Long ½ Real ½ Integer ½ Color ½ Logic ½ String ½ PRealArray ½ PIntegerArray ½ PLongArray ½ PLogicArray ½ PString ½ Visual ½ Pointer ½ FuncType}
<Тип массива> ::= { RealArray ½ IntegerArray ½ LongArray ½ LogicArray}
<Константа типа Тип> – константа имеющая тип Тип.
Список синтаксических конструкций для формальных аргументов:
<Список формальных аргументов> ::= <Формальный аргумент> [; <Список формальных аргументов>]
<Формальный аргумент> ::= <Список имен аргументов> : <Скалярный тип>
<Список имен аргументов> ::= <Имя аргумента> [,<Список имен аргументов>]
<Имя аргумента> ::= <Идентификатор>
<Аргумент типа Тип> – одно из следующих понятий:
имя аргумента, который при описании формальных аргументов имел тип Тип
имя элемента аргумента-массива, если элементы массива имеют тип Тип
результат приведения произвольного аргумента или элемента аргумента-массива к типу Тип.
Синтаксические конструкции описания переменных:
<Описание переменных> ::= Var <Список описаний однотипных переменных>
<Список описаний однотипных переменных> ::= <Тип переменной> <Список переменных>; [<Список описаний однотипных переменных>]
<Список переменных> ::= <Имя переменной> [, <Список переменных>]
<Имя переменной> ::= <Идентификатор>
<Тип переменной> ::= {<Скалярный тип> ½ <Тип массива>[<Целочисленное константное выражение>]}
<Переменная типа Тип> – одно из следующих понятий:
имя переменной, которая при описании переменных имела тип Тип
имя элемента массива, если элементы массива имеют тип Тип
результат приведения произвольной переменной или элемента массива к типу Тип.
Синтаксические конструкции описания статических переменных
Статические переменные, как правило, служат для описания параметров компонентов нейрокомпьютера. Использование в именах переменных только символов латинского алфавита и цифр делает идентификаторы универсальными, но неудобными для всех пользователей, кроме англо-говорящих. Для удобства всех остальных пользователей в описании статических переменных предусмотрена возможность использовать дополнительные имена для статических переменных. Однако эти имена служат только для построения интерфейса и не могут быть использованы в описании тела соответствующего компонента. Кроме того, статической переменной можно при описании задать значение по умолчанию.
<Описание статических переменных> ::= Static <Список описаний статических переменных>
<Список описаний статических переменных> ::= <Описание статической переменной>; [<Список описаний статических переменных>]
<Описание статической переменной> ::= <Тип переменной> <Имя переменной> [Name <Имя статической переменной>] [Default <Значение по умолчанию>]
<Имя статической переменной> ::= <Строковая константа>
<Значение по умолчанию> ::= <Константное выражение типа <Тип переменной>>
Синтаксические конструкции описания функций
<Описание функций> ::= <Описание функции> [<Описание функций>]
<Описание функции> ::= <Заголовок функции> <Описание переменных> <Описание меток> <Тело функции>
<Заголовок функции> ::= Function <Имя функции>[(<Список формальных аргументов>)] : <Скалярный тип>;
<Описание меток> ::= Label <Список меток>;
<Список меток> ::= <Имя метки> [, <Список меток>]
<Имя метки> ::= <Идентификатор>
<Тело функции> ::= Begin <Составной оператор> End;
<Составной оператор> ::= [<Имя метки>:] <Оператор> [; <Составной оператор>]
<Оператор> ::= {<Оператор присваивания> ½ <Оператор ветвления> ½ <Оператор цикла> ½ <Оператор перехода> ½ <Операторные скобки>}
<Оператор присваивания> ::= <Допустимое имя переменной> = <Выражение>
<Оператор ветвления> ::= If <Логическое выражение> Then <Оператор> [Else <Оператор>]
<Оператор цикла> ::= { <Цикл For> ½ <Цикл While> }
<Цикл For> ::= For <Имя переменной> = <Целочисленное выражение> To <Целочисленное выражение> [By <Целочисленное выражение>] Do <Оператор>
<Цикл While> ::= While <Логическое выражение> Do <Оператор>
<Оператор перехода> ::= GoTo <Имя метки>
<Операторные скобки> ::= Begin <Составной оператор> End
<Функция типа Тип> – функция, возвращающая величину типа Тип.
<Допустимое имя переменной> – допустимой переменной являются все переменные, описанные в данной функции или в данном процедурном блоке, глобальные переменные данного компонента. Для возвращения значения функции, в левой части оператора присваивания должно стоять имя функции.
Синтаксические конструкции описания выражений:
<Выражение> ::= { <Выражение типа Long> ½ <Выражение типа Real> ½ <Выражение типа Integer> ½ <Выражение типа Color> ½ <Выражение типа Logic> ½ <Выражение типа String> ½ <Выражение типа Pointer>}
<Целочисленное выражение> ::= { <Выражение типа Long> ½ <Выражение типа Integer>}
<Выражение типа Тип> ::= [<Префиксная операция типа Тип>] <Операнд типа Тип> [<Операция типа Тип> <Операнд типа Тип>]
<Операция типа Long> ::= {+ ½ – ½ * ½ Div ½ Mod ½ And ½ Or ½ Xor}
<Операция типа Real>::= {+ ½ – ½ * ½ / ½ RMod }
<Операция типа Integer> ::= {+ ½ – ½ * ½ Div ½ Mod ½ And ½ Or ½ Xor}
<Операция типа Color> ::= {COr ½ CAnd ½ CXor}
<Операция типа Logic> ::= {And ½ Or ½ Xor}
<Операция типа String> ::= +
<Префиксная операция типа Long> ::= { – ½ Not }
<Префиксная операция типа Real>::= –
<Префиксная операция типа Integer> ::= { – ½ Not }
<Префиксная операция типа Color> ::= CNot
<Префиксная операция типа Logic> ::= Not
<Операнд типа Logic> ::= ::= {<Результат сравнения> ½ <Выражение типа Logic> ½ (<Выражение типа Logic>) ½ <Константа типа Logic> ½ <Переменная типа Logic> ½ <Аргумент типа Logic> ½ <Вызов функции типа Logic>}
<Результат сравнения типов Long, Integer, Real> ::= (<Выражение типа Long, Integer, Real> {> ½ < ½ >= ½ <= ½ = ½ <>} <Выражение типа Long, Integer, Real> )
<Результат сравнения типа Color> ::= (<Выражение типа Color> {CEqual ½ CIn ½ CInclude ½ CExclude ½ CIntersect} <Выражение типа Color> )
<Результат сравнения типа String> ::= (<Выражение типа String> {= ½ <>} <Выражение типа String> )
<Операнд типа Тип> ::= {<Выражение типа Тип> ½ (<Выражение типа Тип>) ½ <Константа типа Тип> ½ <Переменная типа Тип> ½ <Аргумент типа Тип> ½ <Вызов функции типа Тип>}
<Вызов функции типа Тип> ::= <Имя функции типа Тип> [(<Список фактических аргументов>)]
<Список фактических аргументов> ::= <Выражение> [,<Список фактических аргументов>]
<Константное выражение типа Тип> – <Выражение типа Тип> в операндах которого не могут фигурировать переменные и функции, описанные пользователем.
<Числовое выражение> ::= { <Выражение типа Long> ½ <Выражение типа Real> ½ <Выражение типа Integer>}
Синтаксические конструкции задания значений статическим переменным
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76