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