# План развития проекта (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. Качественные метрики * Полное соответствие грамматике языка Ъ+ * Корректная обработка всех допустимых конструкций * Четкие и информативные сообщения об ошибках --- ### Примечания * План развития может корректироваться в зависимости от требований проекта и выявленных в процессе разработки особенностей. * Все изменения в плане должны быть согласованы и задокументированы. * Приоритеты могут пересматриваться в зависимости от критичности задач и требований безопасности.