Мой язык программирования не имеет массивов, списков, указателей, eval и переменных переменных. Все это имеет:
Обычные переменные, подобные тем, которые вы знаете по большинству языков программирования: все они имеют точное имя и значение.
Один стек. Предоставляются следующие функции: push (добавить элемент в начало), pop (удалить элемент из top, получить значение) и empty (проверить, пуст ли стек)
Мой язык завершен. (Реализована базовая арифметика, условные переходы и т. Д.) Это означает, что должна быть возможность реализовать какой-то список или массив, верно?
Но я понятия не имею, как ...
Чего я хочу добиться: создать функцию, которая может извлекать и / или изменять элемент x стека.
Я мог бы легко добавить эту функцию в реализацию моего языка, в интерпретатор, но я хочу сделать это на моем языке программирования.
- «Решение» один (Доступ к элементу x, считая с вершины стека)
Создать цикл. Снимите элемент с вершины стека x
раз. Последний извлеченный элемент - это номер элемента x
. Я получаю разрушенный стек.
Сделайте то же самое, что и выше, но сохраните все извлеченные значения в стеке секунд . Затем вы можете переместить все элементы обратно после того, как вы закончите. Но вы знаете, что? У меня нет второго стека!