число
|
Значение числа помещается в стек. Число — непрерывная цепочка цифр 0-9 или букв A-F (шестнадцатеричные цифры). В начале её может стоять знак подчеркивания _ для ввода отрицательного числа. Число может содержать десятичную точку. Последовательность цифр может быть даже пустой, если "число" содержит хотя бы знак подчеркивания или десятичную точку (странные представления нуля).
|
+ - / * % ^ ~
|
Верхние два числа стека складываются (+ ), вычитаются (- ), умножаются (* ), делятся (/ ), берётся остаток (% ), выполняется возведение в степень (^ ) или совершается деление с остатком (~ ).
^ : oба операнда извлекаются из стека, выполняется возведение в степень, результат помещается обратно в стек. Дробная часть показателя степени игнорируется.
~ : oба операнда извлекаются из стека, второй делится на первый, результат и остаток деления помещается в стек (операция SdSn lnld/ LnLd% дает такой же результат).
|
sx, Sx
|
Извлекается вершина стека и помещается в регистр с именем x , где x — любой символ ASCII. Если конструкция имеет вид Sx , то x рассматривается как стек, в который и помещается извлечённое значение.
|
lx, Lx
|
Значение, хранящееся в регистре x , помещается в стек. Регистр x не изменяется. Изначально все регистры инициализируются нулём. Если конструкция имеет вид Lx , то x рассматривается как стек, его вершина извлекается и помещается в главный стек.
|
d
|
Вершина стека удваивается.
|
p
|
Выводится вершина стека (без удаления из стека).
|
P
|
Если вершина стека цепочка символов, она печатается и удаляется из стека. Если вершина стека явлается числом, то оно печатается как последовательность байтов и удаляется из стека.
|
f
|
Выводятся все элементы стека (без удаления). Удобно для отладки программы.
|
q
|
Завершает работу программы. При выполнении цепочки символов уровень рекурсии уменьшается на два.
|
Q
|
Завершает работу программы. Вершина стека извлекается и уровень рекурсии уменьшается на полученное значение.
|
x
|
Вершина стека трактуется как цепочка символов, содержащая dc-команды, и выполняется.
|
X
|
Вершина стека заменяется количеством цифр в её дробной части.
|
[..]
|
Цепочка символов, заключённая в скобки, помещается в вершину стека.
|
=x
|
Два верхних элемента стека извлекаются и сравниваются. Если они удовлетворяют указанному условию, то содержимое регистра x рассматривается как команда dc и выполняется. Можно использовать также знаки сравнения как < и > и их отрицания !< и !> .
|
v
|
Верхний элемент стека заменяется квадратным корнем из него. Если он имел дробную часть, то она учитывается; в противном случае точность вычислений зависит от команды k .
|
!
|
Остаток строки интерпретируется как команда shell’а.
|
c
|
Очистка стека.
|
i
|
Вершина стека извлекается и используется как основание системы счисления при вводе. Команда I помещает используемое при вводе основание системы счисления в вершину стека.
|
o
|
Вершина стека извлекается и используется как основание системы счисления при выводе. Команда O помещает используемое при выводе основание системы счисления в вершину стека.
|
k
|
Извлекается вершина стека; она используется для задания точности вычислений: количества знаков в дробной части при выводе и при выполнении умножения, деления, возведения в степень и извлечения корней.
|
z
|
В стек помещается количество его элементов.
|
Z
|
Число в вершине стека заменяется его длиной (без учёта десятичной точки, знака минус и ведущих нулей, даже если они за десятичной точкой).
|
?
|
Со стандартного ввода вводится одна строка и исполняется.
|
;:
|
Используются dc для операций с массивами.
|