Files
tverd-plus-tokenizer/docs/ROADMAP.md

12 KiB
Raw Blame History

План развития проекта (Roadmap)

Настоящий документ определяет направления развития программного изделия (ПИ) «Ъ» (компонент «Токенизатор») в рамках Проекта «Твердь».


1. Текущая стадия разработки

Проект находится на стадии разработки базовой архитектуры и структуры токенизатора. Реализованы:

  • Структура проекта и модульная организация кода
  • Определения типов токенов и грамматики языка
  • Заглушки основных компонентов для последующей реализации
  • Формальное описание грамматики языка Ъ+ в форме EBNF

2. Краткосрочные цели (Этап 1: Лексический анализ)

2.1. Разработка фронтенд-части

Срок: Текущий этап разработки

Задачи:

  • Реализация модуля синтаксического разбора UTF-8 в режиме no_std

    • Полная реализация функции decode_utf8 в модуле utf8.rs
    • Реализация итератора Utf8Chars для последовательного декодирования
    • Тестирование на различных UTF-8 последовательностях (включая кириллицу)
  • Реализация обработки комментариев

    • Полная реализация модуля comment.rs с поддержкой рекурсивной вложенности
    • Обработка парных ограничителей <[ и ]>
    • Тестирование вложенных комментариев различных уровней
  • Реализация детерминированного конечного автомата (ДКА)

    • Полная реализация переходов между состояниями в модуле dfa.rs
    • Обработка всех операторов и конструкций языка
    • Поддержка различения операторов записи (<<) и сдвига (<<<)
  • Реализация основного токенизатора

    • Полная реализация модуля tokenizer.rs
    • Последовательная обработка входного потока данных
    • Корректное отслеживание позиций токенов (строка, столбец)
  • Реализация обработки литералов

    • Поддержка десятичных, шестнадцатеричных и двоичных литералов
    • Обработка типизированных литералов с кириллическими суффиксами (б8, ц8, бр, цр, в32 и т.д.)
    • Поддержка разделителя разрядов (_) в числовых литералах
    • Обработка вещественных литералов
  • Разработка тестов

    • Интеграционные тесты для полного цикла токенизации
    • Тесты для кириллических идентификаторов
    • Тесты для латинских идентификаторов
    • Тесты для всех операторов языка
    • Тесты для вложенных комментариев
    • Тесты для отслеживания позиций

Критерии завершения:

  • Токенизатор успешно обрабатывает все конструкции языка Ъ+ согласно грамматике
  • Все тесты проходят успешно
  • Код соответствует требованиям no_std и безопасности
  • Документация актуальна и полна

3. Среднесрочные цели (Этап 2: Промежуточное представление)

3.1. Промежуточное представление и типизация

Срок: Следующий этап после завершения токенизатора

Задачи:

  • Проектирование структур данных абстрактного синтаксического дерева (AST)

    • Определение узлов для всех конструкций языка
    • Поддержка префиксов идентификаторов (@, :, ?)
    • Представление блоков, условий, циклов, функций
  • Реализация синтаксического анализатора (парсера)

    • Парсинг на основе EBNF грамматики
    • Построение AST из потока токенов
    • Обработка ошибок парсинга с указанием позиций
  • Реализация механизмов статического вывода типов

    • Вывод типов для констант и литералов
    • Проверка типов для выражений
    • Валидация типизированных литералов
  • Разработка системы ошибок

    • Расширение модуля error.rs для синтаксических ошибок
    • Детальные сообщения об ошибках с позициями
    • Классификация ошибок по типам

Критерии завершения:

  • Парсер успешно строит AST для всех корректных программ
  • Вывод типов работает для всех допустимых конструкций
  • Ошибки парсинга четко идентифицируются и документируются

4. Долгосрочные цели (Этап 3: Генерация кода)

4.1. Генерация целевого кода

Срок: После завершения парсера и типизации

Задачи:

  • Реализация модуля генерации LLVM IR

    • Генерация промежуточного представления для высокопроизводительных систем
    • Поддержка архитектур x86 и ARM
    • Оптимизации для конвейерного программирования (|>)
  • Разработка бэкенда для архитектуры «Эльбрус»

    • Интеграция с компилятором LCC
    • Использование промежуточного представления
    • Поддержка предикатного исполнения (оператор ?)
  • Обеспечение отладочной информации

    • Генерация отладочных символов в формате DWARF
    • Сквозная передача позиций из исходного кода в машинный код
    • Поддержка отладки для обоих бэкендов
  • Оптимизации компилятора

    • Оптимизация конвейерных операций
    • Оптимизация предикатного исполнения для «Эльбрус»
    • Статическая оптимизация выражений

Критерии завершения:

  • Компилятор генерирует корректный код для обеих целевых архитектур
  • Отладочная информация корректно передается через весь процесс компиляции
  • Производительность сгенерированного кода соответствует требованиям

5. Дополнительные направления развития

5.1. Расширение функциональности

  • Поддержка дополнительных оптимизаций для конвейерного программирования
  • Расширенные возможности статического анализа
  • Интеграция с инструментами статического анализа безопасности

5.2. Улучшение инструментария

  • Разработка инструментов для разработчиков (форматировщик кода, линтер)
  • Интеграция с системами непрерывной интеграции (CI/CD)
  • Автоматизация тестирования и верификации

5.3. Документация и обучение

  • Расширенная документация для разработчиков
  • Руководства по использованию языка Ъ+
  • Примеры и учебные материалы

6. Приоритеты и ограничения

6.1. Критические требования

  • Безопасность: Все изменения должны сохранять соответствие требованиям безопасной разработки
  • Детерминизм: Обеспечение детерминированного поведения на всех этапах компиляции
  • Сертификация: Поддержание возможности сертификации на отсутствие НДВ

6.2. Технические ограничения

  • Использование только no_std окружения
  • Запрет на внешние динамические библиотеки
  • Поддержка архитектур «Эльбрус» и x86

6.3. Приоритеты разработки

  1. Высокий приоритет: Завершение токенизатора и базового парсера
  2. Средний приоритет: Реализация типизации и базовой генерации кода
  3. Низкий приоритет: Оптимизации и дополнительные инструменты

7. Метрики успеха

7.1. Технические метрики

  • Покрытие тестами: не менее 90% для критичных модулей
  • Отсутствие предупреждений статического анализатора
  • Соответствие требованиям no_std для всех модулей

7.2. Качественные метрики

  • Полное соответствие грамматике языка Ъ+
  • Корректная обработка всех допустимых конструкций
  • Четкие и информативные сообщения об ошибках

Примечания

  • План развития может корректироваться в зависимости от требований проекта и выявленных в процессе разработки особенностей.
  • Все изменения в плане должны быть согласованы и задокументированы.
  • Приоритеты могут пересматриваться в зависимости от критичности задач и требований безопасности.