Редактор ограничений

Синтаксис операторов ограничений

Синтаксис операторов ограничений - это подмножество Синтаксиса инструментов LN. Операторы ограничений могут быть составлены при помощи следующих инструкций.

Арифметические операторы:

  • * (умножение)
  • / (деление)
  • + (сложение)
  • - (вычитание)
  • \ (остаток после деления)
  • & (связь алфавитно-цифровых массивов)

Логические операторы:

  • or (или)
  • and (и)
  • not (не)

Операторы отношения:

  • = (равно)
  • > (больше)
  • >= (больше или равно)
  • <> (не равно)
  • < (меньше)
  • <= (меньше или равно)
Операторы доменов

A равно {a1,a2,a3-a4,..} означает: (A=a1 or A=a2 or A >= a3 и A <= a4 и т.д.).

Синтаксис операторов доменов заключается в использовании аббревиатур для логических операторов с учетом домена переменной.

Приоритет операторов

Арифметические операторы имеют более высокий приоритет, чем операторы связи.

Операторы связи имеют более высокий приоритет, чем логические операторы.

Последовательность приоритетов для арифметических операторов: * / \ + -

Последовательность приоритетов для логических операторов: not, and, or

Круглые скобки ('()') используются для изменения последовательности приоритетов для арифметических и логических операторов.

Пример

3 + 4 * 5 = 23

(3 + 4) * 5 = 35

Булевы операторы

Булевы операторы принимают значение истинный-ложный (1 или 0). Они применяются в ограничениях, в особенности в операторах с использованием условий.

Пример

If not e then ' означает:

если e = ложный, то '

или если e = 0, то '

Конструкции if-then-else

В ограничениях могут быть использованы длинные конструкции типа if-then-else. Разрешена вложенность операторов.

Пример

Пример If выражение 1

then выражение 2

else выражение 3

endif

Конструкция if-then-else всегда оканчивается оператором endif. Оператор else не является обязательным. Операторы if, else и endif всегда начинаются с новой строки. Выражения условий могут быть записаны в несколько строк. Ограничение подтверждения можно задать без операторов if-then-else; это ограничение должно начинаться так: c:.

Ограничения могут сопровождаться комментариями, отделенными символом |. В процессе конфигурации можно сгенерировать сообщения при помощи переменных сообщений (до 80x25 строк текста).

Переменные ограничений

В операторах ограничений могут быть использованы как глобальные, так и локальные переменные. Глобальные переменные - это свойства продукта и пользовательские переменные ограничений, определенные как глобальные. Локальными являются предопределенные переменные конфигуратора продукта, такие, как input, display, length, width и т.д. Глобальные переменные сохраняют свои значения в течение всего процесса конфигурации, если только это значение не изменяют.

Переменные ограничений имеют следующие типы:

  • string (буквенно-цифровая) (например: string machine global)
  • long (Целые числа) (Например: long i)
  • double (дробные) (например: double j)

Пользовательские переменные ограничений должны всегда находиться в верхней части ограничений. Все локальные переменные инициализируются до выполнения ограничений: буквенно-цифровые переменные очищаются, численные получают нулевые значения. Глобальные переменные input и validating инициализируются значением "истинный" (true).

Использование переменных ограничений

Свойства продукта в операторах ограничений задаются при помощи открывающихся и закрывающихся квадратных скобок ([......]). Прочие переменные напрямую используются в операторах. Буквенно-цифровые переменные (строковые ряды) помечаются в соответствии с записью: startposition[;length]).

Пример

[color] = "красный"

Проверка правильности = true

Значения переменных могут быть буквенно-цифровыми или числовыми. Буквенно-цифровые записываются в кавычках ("...."). Численные значения вводятся напрямую. Десятичным разделителем служит точка ('.').

Пример

механизм(1;2) = "A5"

volume = 28,673

Константы true/false используются в булевых операторах.

Арифметические функции
  • round(X,Y,Z): округленное значение X; Y - число десятых долей, Z - метод округления (0 = в меньшую сторону, 1 = нормальный, 2 = в большую сторону)
  • val(A) : численное значение строки A (val("8.7") = 8.7)
  • abs(X) : расчет абсолютного значения X (abs(-10.3) = 10.3)
  • int(X) : расчет целой части X (int(11.6) = 11)
  • pow(X,Y) : raises X до the power of Y (pow(10.2) = 100)
  • sqrt(X) : квадратный корень из X (sqrt(16) = 4)
  • min(X,Y) : выбор наименьшего значения из X и Y (min(6,10) = 6)
  • max(X,Y) : выбор наибольшего значения из X и Y (max(6,10) = 10)
  • pi : константа со значением PI (3.1415926...)
Тригометрические функции.
  • sin(X), cos(X), tan(X) : синус, косинус или тангенс X (радиальн.)
  • asin(X), acos(X), atan(X): арксинус, арккосинус или арктангенс
  • X hsin(X), hcos(X), htan(X): гиперболический синус, косинус или тангенс X
Логарифмические функции
  • exp(X) : возведение e в степень Х
  • log(X) : натуральный логарифм X по основанию e
  • log10(X): логарифм X по основанию 10
Строковые функции
  • edit(X,Y) : форматирование численного значения X в соответствии с форматом Y (edit(10.3,"ZZZ9V.99") = " 10.30"
  • str(X) : помещение численного значения в строку (str(10.3) = "10.3")
  • len(X) : определение длины строки X (len("abc") = 3)
  • strip(X) :удаление пробела после последнего символа (strip("A ") "A")
  • pos(X,Y) : : позиция Y в строке X слева
  • rpos(X,Y) : позиция Y в строке X справа
Функции даты
  • date() : число дней от дня 0 до текущей даты
  • date(y,m,d): число дней от даты 0 до введенной даты
Пример

date(1995,06,01) = 728445