Хочу рассказать о том, как сделать интерпретатор с помощью библиотеки Graph-talk. В качестве примера будет использоваться замечательный язык Brainfuck.
Грамматика языка
Всего в языке имеется 8 команд:
- «>» — переход к следующей ячейке памяти;
- «<» — переход к предыдущей ячейке памяти;
- «+» — увеличить значение в текущей ячейке на 1;
- «-» — уменьшить значение в текущей ячейке на 1;
- «.» — вывести значение текущей ячейки;
- «,» — ввести значение извне в текущую ячейку
- «[» — начало цикла, выполнить содержимое внутри цикла, если в текущей ячейке не 0;
- «]» — конец цикла, вернуться на начало с учетом вложенности.
Собственно, это все. Изначально имеется 30 000 ячеек памяти. «Hello, World!» на этом милейшем языке выглядит так:
++++++++++[>+++++++>++++++++++>+++>+&