Что означает "Дублировать верхний элемент в стеке" на языке пробельных символов?
Я пытаюсь реализовать интерпретатор Whitespace для удовольствия, в настоящее время я следую этому руководству, чтобы изучить его синтаксис.
Синтаксис выглядит просто, но я не понимаю, что означает "Дублировать верхний элемент в стеке". Что это значит? это значит получить значение вершины стека и сохранить его в специальном регистре?
1 ответ
Это означает, что нужно взять значение поверх стека, не выталкивая его, и отправить вторую копию точно такой же вещи.
Теперь есть 2 из всего, что было.
Точный способ реализации будет зависеть от того, какие функции доступны для управления вашим стеком. Если у вас есть только push и pop, то вы можете сделать это так:
x = pop();
push(x);
push(x);
Если у вас есть функция top, которая может получить верхний элемент, не выталкивая его, вы можете сделать:
x = top();
push(x);
Или даже:
push(top());
который читается так же хорошо, как псевдокод.:)