73 lines
7.2 KiB
Markdown
73 lines
7.2 KiB
Markdown
# Программное изделие «Ъ» (Проект «Твердь»)
|
||
## Техническое задание и описание программы
|
||
|
||
---
|
||
|
||
### 1. Введение и область применения
|
||
Настоящий документ устанавливает требования к архитектуре, реализации и функционированию программного изделия (ПИ) «Ъ» (компонент «Токенизатор»).
|
||
|
||
* **Наименование:** Программный комплекс системного программирования «Ъ».
|
||
* **Область применения:** Создание детерминированного системного ПО, разработка вычислительных модулей для архитектур семейства «Эльбрус» и x86, требующих сертификации на отсутствие недекларированных возможностей (НДВ).
|
||
|
||
### 2. Основание для разработки
|
||
Разработка ведется на основании плана инициативной разработки инструментальных средств для языка функционально-процедурной парадигмы Ъ+ (низкоуровневый базис языка Ъ++) и в соответствии с требованиями к безопасной разработке (SDL).
|
||
|
||
### 3. Технические требования
|
||
|
||
#### 3.1. Требования к функциональным характеристикам
|
||
ПИ должно обеспечивать лексический анализ входных потоков данных и преобразование их в последовательность токенов на основе детерминированного конечного автомата (ДКА).
|
||
|
||
#### 3.2. Требования к входным данным
|
||
* **Кодировка:** Соответствие стандарту ISO/IEC 10646 (UTF-8).
|
||
* **Идентификаторы:** Поддержка последовательностей символов кириллического и латинского алфавитов.
|
||
* **Спецсимволы:** Обязательная префиксация сущностей для однозначной идентификации:
|
||
* `@` — идентификаторы переменных (объекты данных);
|
||
* `:` — идентификаторы меток управления (адресация переходов);
|
||
* `?` — операторы логического ветвления (предикаты).
|
||
|
||
#### 3.3. Классификация управляющих конструкций
|
||
| Тип токена | Символьное обозначение | Функциональное назначение |
|
||
| :--- | :--- | :--- |
|
||
| **Начало блока** | `Ъ+` | Открытие исполняемого контекста |
|
||
| **Конец блока** | `Ъ-` | Закрытие исполняемого контекста |
|
||
| **Оператор конвейера** | `|>` | Передача данных между функциями |
|
||
| **Оператор записи** | `<<` | Инструкция заполнения буфера данных |
|
||
|
||
#### 3.4. Требования к надежности и безопасности
|
||
1. **Прослеживаемость:** Обеспечение фиксации координат (строка, столбец) каждого токена для реализации сквозного аудита кода.
|
||
2. **Целостность данных:** Использование механизмов контроля границ и строгой типизации на этапе компиляции (статический анализ средствами языка Rust).
|
||
3. **Автономность:** Возможность сборки и функционирования компилятора в изолированной программной среде («Air-gap» разработка) без обращения к внешним сетям.
|
||
|
||
### 4. Условия эксплуатации и программная совместимость
|
||
* **Язык реализации:** Rust (стандарт ISO/IEC), исключая использование стандартной библиотеки (`no_std`) для минимизации вектора атак и исключения скрытых вызовов ОС.
|
||
* **Зависимости:** Использование внешних динамических библиотек сторонних разработчиков не допускается.
|
||
* **Среда функционирования:** POSIX-совместимые операционные системы, а также Bare-metal окружения.
|
||
|
||
### 5. Логическая структура (Алгоритм)
|
||
Лексический анализатор функционирует как однопроходный сканер. Игнорирование избыточных данных (комментариев) обеспечивается за счет распознавания парных ограничителей `<[` и `]>`. ПИ должно поддерживать рекурсивную вложенность блоков комментариев без жесткого ограничения уровня вложенности.
|
||
|
||
---
|
||
|
||
### 6. Стадии и этапы разработки
|
||
|
||
#### 6.1. Разработка фронтенд-части
|
||
- [ ] Реализация модуля синтаксического разбора UTF-8 в режиме `no_std`.
|
||
- [ ] Описание грамматики языка в форме Бэкуса — Наура (EBNF).
|
||
- [ ] Разработка тестов для верификации кириллических идентификаторов.
|
||
|
||
#### 6.2. Промежуточное представление и типизация
|
||
- [ ] Проектирование структур данных абстрактного синтаксического дерева (AST).
|
||
- [ ] Реализация механизмов статического вывода типов для констант.
|
||
|
||
#### 6.3. Генерация целевого кода и испытания
|
||
- [ ] Реализация модуля генерации LLVM IR для высокопроизводительных систем (x86/ARM).
|
||
- [ ] Разработка бэкенда для интеграции с компилятором LCC (архитектура «Эльбрус») через промежуточное представление.
|
||
- [ ] Обеспечение сквозной передачи отладочных символов (DWARF) для обоих бэкендов.
|
||
|
||
### 7. Приложения
|
||
|
||
Дополнительные сведения о проекте доступны в следующих документах:
|
||
- [Участники разработки](docs/CONTRIBUTORS.md)
|
||
- [План развития (Roadmap)](docs/ROADMAP.md)
|
||
- [Грамматика языка](docs/grammar.md)
|