Grocery List
- Дата создания:
- август 2009
- Парадигма:
- Типизация:
- Реализации и версии (свернуть все | развернуть все):
Grocery List — эзотерический язык программирования, в котором все программы выглядят как списки покупок для супермаркета. Каждый пункт списка выполняет определенное действие в зависимости от его первой буквы.
Основная структура данных языка — стек целых чисел. Все действия производятся над этим стеком. Программа — список состоит из заголовка, отделенного пустой строкой, в котором указывается название магазина. Каждый пункт списка пишется с новой строки.
Команды языка
S<n>
обозначает n
-ый элемент от вершины стека. Элементы стека, использующиеся как аргументы для команд, удаляются из стека.
-
a
(add) — добавить в стекS0+S1
. -
b
(bring) — перенести нижний элемент стека наверх. -
c
(copy) — скопировать верхний элемент стека. -
d
(divide) — добавить в стекS0/S1
. -
e
(end loop) — конец цикла. -
f
(flip) — поменять местамиS0
иS1
. -
g
(greater than) — добавить в стек 1, еслиS0>S1
, и 0 иначе. -
h
— выполнить командуa+S0%26
. -
i
(input) — прочитать символ из стандартного ввода и добавить его ASCII-код в стек. -
j
(jump) — перепрыгнуть вперед наS0
строк. -
k
(kill) — удалить все элементы из стека. -
l
(loop) — начало цикла: цикл повторяется до тех пор, пока верхний элемент стека не станет нулевым, или пока стек не опустеет. -
m
(multiply) — добавить в стекS0*S1
. -
n
(number) — добавить в стек количество символов в этом пункте списка (включая пробелы). -
o
(output) — вывести на печатьS0
как число. -
p
(print) — вывести на печатьS0
как символ. -
q
— отсутствие операции. -
r
(remainder) — добавить в стекS0 mod S1
. -
s
(subtract) — добавить в стекS0-S1
. -
t
(terminate) — прекратить выполнение программы. -
u
(unbring) — перенести верхний элемент стека вниз. -
v
(value) — добавить в стек ASCII-код первого символа следующей строки (не выполнять следующую строку). -
w
— добавить в стек 100. -
x
— удалить верхний элемент стека. -
y
— удалитьS<количество символов в этой команде>
. -
z
(zero) — добавить в стек 1, еслиS0=0
, и 0 иначе.
Примеры:
Hello, World!:
Пример для версий Progopedia Grocery ListИспользуются команды v
(добавить ASCII следующего символа), n
(добавить длину текущей команды), c
(скопировать верхний элемент — дли символов o и l), p
(вывести символ на печать) и w
(добавить 100); остальные пункты списка пропускаются, т.к. их первые символы используются командой v
.
Hello, World! supermarket
Vanilla Ice Cream
Honey & Mint Ice Cream
pizza, mushroom and salami
vinegar
eggs, 10
pie with any berries, see what kinds there are
vegetable frozen mix
lamb leg
chicken if no lamb
cod
plaice if no cod
pork steak if you want it
veggie soup
onions
carrots
peas
no more mustard, please! got plenty of it!!!
pair of socks
noodles, I think, with meat, ok?
pasta
Venetian cake
Wax Polish
potato
pumpkin juice
violet onion
rice
popcorn
pudding
watermelon
poultry
Nescafe to take to the office x10
pumpkin
Комментарии
]]>blog comments powered by Disqus
]]>