operatorЗадайте новый символ оператора
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
operator(symb,f, <Prefix | Postfix | Binary | Nary, prio>, <Global>) operator(symb, Delete, <Global>)
operator(symb, f, T, prio) задает новый символ оператора symb из типа T с приоритетом prio. Функциональный f выполняет выражения с помощью нового оператора.
operator(symb, Delete) удаляет определение символа оператора symb.
operator используется, чтобы задать новые пользовательские символы оператора или удалить их.
Учитывая символ оператора "++", Скажем, с оценкой функционального f, следующие выражения создаются синтаксическим анализатором, в зависимости от типа оператора:
Prefix:
Вход ++x результаты в f(x).
Postfix:
Вход x++ результаты в f(x).
Binary:
Вход x ++ y ++ z результаты в f(f(x, y), z).
Nary:
Вход x ++ y ++ z результаты в f(x, y, z).
Там может существовать символы оператора, которые являются префиксами других символов оператора. Сканер читает как можно больше символов и выбирает самый длинный символ оператора соответствия. См. Пример 3.
Не возможно задать два оператора с тем же символом. Таким образом, нельзя задать унарный ++ и бинарный ++ одновременно.
Следующие ограничения существуют для строки символа оператора symb:
Это не может быть более длинно, чем 32 символа.
Это не может запуститься с пробела.
Это не может запуститься с \ (обратная косая черта) символ.
Таким образом, строки " @" и "/" не позволены. Обратите внимание на то, что в настоящее время operator не проверяет эти ограничения.
Могут быть переопределены встроенные операторы.
Не возможно задать - фиксируют операторы как |x | или или другие типы с 3 не операторов.
Новый символ оператора также используется, если файлы читаются за одним исключением: если файл читается с функциональным read использование опции Plain, новый оператор не учтен. (Эта опция используется, если файлы библиотеки MuPAD® читаются, потому что в противном случае пользовательские операторы могли изменить значение исходного кода неконтролируемым способом.)
Если оператор задан при чтении файла с опцией Plain, определение будет использоваться в остатке от файла и затем удаляться автоматически. Если оператор задан с опцией Global, это поведение изменяется, и оператор не будет активен при чтении файла, но будет существовать на интерактивном уровне вместо этого.
Новый символ оператора symb известен синтаксическим анализатором и может использоваться, чтобы ввести выражения. Новый символ оператора не будет использоваться при чтении файлов с помощью функционального read с опцией Plain.
Функциональный f соответствие новому оператору будет всегда преобразовываться в function environment содержа дополнительную программу вывода для оператора выход, если это уже не содержало программу вывода.
В этом примере показано, как задать символ оператора для операции сдвига разряда (как на языке C):
bitshiftleft := (a, b) -> a * 2^b:
operator("<<", bitshiftleft, Binary, 950):После этого вызова, символ << может использоваться, чтобы ввести выражения:
2 << 1, x << y
![]()
operator("<<", Delete):Идентификаторы могут использоваться в качестве символов оператора:
operator("x", _vector_product, Binary, 1000):PRETTYPRINT := FALSE: print(Plain, a x b x c)
(a x b) x c
PRETTYPRINT := TRUE:
operator("x", Delete):Этот пример показывает, что сканер пытается совпадать с самым длинным символом оператора:
operator("~", F, Prefix, 1000):
operator("~>", F1, Prefix, 1000):
operator("~~>", F2, Prefix, 1000):print(Plain, ~~ x, ~~> x, ~ ~> x, ~~~> x)
~ ~ x, ~~> x, ~ ~> x, ~ ~~> x
operator("~", Delete):
operator("~>", Delete):
operator("~~>", Delete):
|
Символ оператора: символьная строка. |
|
Функция, оценивающая выражения с помощью оператора. |
|
Приоритет оператора: целое число между 1 и 1999. Значение по умолчанию 1300. |
|
Оператор рассматривается как унарный оператор с префиксной нотацией. Учитывая символ оператора |
|
Оператор рассматривается как унарный оператор с постфиксным обозначением. Учитывая символ оператора |
|
Оператор рассматривается как неассоциативный бинарный оператор с инфиксной нотацией. Учитывая символ оператора |
|
Оператор рассматривается как ассоциативный оператор не с инфиксной нотацией. Учитывая символ оператора |
|
Оператор с символом |
|
При определении оператора в библиотеке или коде пакета (технически: в файле, который читается с опцией |
Пустой объект типа DOM_NULL.
Когда сканер читает новую лексему, он сначала отбрасывает любой пробел и символы обратной косой черты. Затем это пытается совпадать с пользовательскими символами оператора. Самый длинный пользовательский символ оператора, совпадающий с отсканированными символами, сделан следующей лексемой. Если никакой пользовательский символ оператора не соответствует, это сканирует для встроенных лексем.
Синтаксический анализатор использует и рекурсивное убывание и парсинг приоритета оператора. Встроенные и пользовательские операторы анализируются с помощью приоритета оператора.