Skip to content

ml65/interpreter

Repository files navigation

Интерпретатор

Проект представляет собой интерпретатор простого функционального языка программирования, реализованный на 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

Установка

composer install

Тестирование

./vendor/bin/phpunit

Примеры использования

./bin/interpreter <program_file> <params>

cat <program_file> | ./bin/interpreter <params>

где

program_file - файл программы на функциональном языке,

params - параметры командной строки

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published