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

207 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План развития проекта (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. Качественные метрики
* Полное соответствие грамматике языка Ъ+
* Корректная обработка всех допустимых конструкций
* Четкие и информативные сообщения об ошибках
---
### Примечания
* План развития может корректироваться в зависимости от требований проекта и выявленных в процессе разработки особенностей.
* Все изменения в плане должны быть согласованы и задокументированы.
* Приоритеты могут пересматриваться в зависимости от критичности задач и требований безопасности.