Skip to content

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

License

Notifications You must be signed in to change notification settings

AlexNov03/tiny-refal

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

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

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

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

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

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

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

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

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

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 53.7%
  • HTML 39.9%
  • CSS 6.4%