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).
Двоичный файл:
Вход x ++ y ++ z приводит к f(f(x, y), z).
Nary:
Вход x ++ y ++ z приводит к f(x, y, z).
Там может существовать символы оператора, которые являются префиксами других символов оператора. Сканер читает как можно больше символов и выбирает самый длинный символ оператора соответствия. Cf. Пример 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.
Когда сканер читает новую лексему, он сначала отбрасывает любой пробел и символы наклонной черты влево. Затем это пытается совпадать с пользовательскими символами оператора. Самый длинный пользовательский символ оператора, совпадающий с отсканированными символами, сделан следующей лексемой. Если никакой пользовательский символ оператора не соответствует, это сканирует для встроенных лексем.
Синтаксический анализатор использует и рекурсивное убывание и парсинг приоритета оператора. Встроенные и пользовательские операторы анализируются с помощью приоритета оператора.