bmstu-iu9 / tiny-refal

Демонстрационный интерпретатор Рефала

Home Page:https://bmstu-iu9.github.io/tiny-refal/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Демонстрационный интерпретатор Рефала

Цель данного проекта — продемонстрировать основные идеи языка программирования Рефал на примере крайне минималистичного подмножества языка. Входной язык крайне ограничен в выразительных средствах, однако, в полной мере демонстрирует основные идеи Рефала.

Рефал — язык программирования, осуществляющий преобразования над строками путём сопоставления с образцом.

Преобразуемые строки называются выражениями. Выражения могут содержать два типа скобок, которые всегда должны быть сбалансированы и правильно вложены:

  • структурные скобки — круглые скобки (...), служат для структурирования данных,
  • скобки конкретизации или скобки активации — угловые скобки <...>, служат для выделения участков выражения, подлежащих дальнейшим преобразованиям.

Скобки конкретизации можно считать скобками вызова функций (и в других, больших реализациях Рефала они для этого и используются), однако в этой реализации как таковых функций нет.

В строках, обрабатываемых данной реализацией, пробелов быть не может — все пробелы, записанные в программе, игнорируются. Также в строках не может быть знака = (используется в синтаксисе языка) и знака # (используется для записи комментариев).

Эта реализация демонстрирует следующие характерные черты языка:

  • выполнение программы по шагам, переписывание поля зрения на каждом шаге,
  • сопоставление с рефальскими образцами общего вида,
  • использование структурных скобок для представления структурированных данных и многоместных и многокоместных функций.

Данная реализация ограничена в возможностях, в частности, здесь нет многого из того, что есть в других, больших и серьёзных реализациях Рефала. В частности, здесь нет и не будет:

  • других типов символов, кроме печатных знаков, да и то их набор ограничен (нет пробельных символов и зарезервированных знаков (, ), <, >, =, #),
  • именованных функций — программа это просто набор предложений,
  • каких-либо встроенных функций, соответственно, нет и ввода-вывода, копилки, арифметики и прочего,
  • скорости — реализация простая и медленная, её цель — продемонстрировать идеи Рефала, а не использоваться для реальных вычислений.

About

Демонстрационный интерпретатор Рефала

https://bmstu-iu9.github.io/tiny-refal/

License:MIT License


Languages

Language:JavaScript 81.7%Language:HTML 12.1%Language:CSS 6.2%