Проект представляет собой интерпретатор простого функционального языка программирования, реализованный на PHP 8.1+.
src/
├── Interfaces/ # Интерфейсы
├── Lexer/ # Лексический анализатор
├── Parser/ # Синтаксический анализатор
├── Interpreter/ # Интерпретатор
└── Functions/ # Встроенные функции
Лексический анализатор преобразует входную строку в последовательность токенов.
IDENTIFIER- идентификаторыNUMBER- числовые значенияSTRING- строковые литералыCONSTANT- константы (true, false, null)- Специальные символы:
(,),,
Пример использования:
$lexer = new Lexer('add(1, 2)');
$tokens = $lexer->tokenize();Каждый токен содержит:
- Тип токена (
getType()) - Значение токена (
getValue()) - Метод сравнения с другими токенами (
equals()) - Строковое представление (
__toString())
- PHP 8.1 или выше
- Composer
composer install./vendor/bin/phpunit./bin/interpreter <program_file> <params>
cat <program_file> | ./bin/interpreter <params>
где
program_file - файл программы на функциональном языке,
params - параметры командной строки