]]> ]]>
Править | Обсудить | История

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

]]>

Работа программистам