From 2cf35406212c8b3c907bc408c9182626af3e53d8 Mon Sep 17 00:00:00 2001 From: shishka333 Date: Fri, 2 Jan 2026 23:27:37 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D1=91=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 150 ++++++++++++++++++------------------------------------ 1 file changed, 49 insertions(+), 101 deletions(-) diff --git a/README.md b/README.md index a252aa4..b6c0125 100644 --- a/README.md +++ b/README.md @@ -1,117 +1,65 @@ -# tverd-plus-tokenizer +# Программное изделие «Ъ» (Проект «Твердь») +## Техническое задание и описание программы -*** -## С чего начать? -Для того, чтобы облегчить знакомство с сервисом GitFlic и первые шаги в нём, мы подготовили несколько рекомендаций. -Уже опытный пользователь? Отредактируйте данный **README** файл по своему усмотрению. -Не знаете что добавить в него? Перейдите в раздел `"Что должен содержать README файл"`, в котором описаны ключевые компоненты хорошего README файла. +--- -## Добавьте свои файлы -Если вы решили начать разработку проекта с создания репозитория в нашем сервисе, тогда клонируйте себе данный репозиторий следующим образом: +### 1. Введение и область применения +Настоящий документ устанавливает требования к архитектуре, реализации и функционированию программного изделия (ПИ) «Ъ» (компонент «Токенизатор»). +* **Наименование:** Программный комплекс системного программирования «Ъ». +* **Область применения:** Создание детерминированного системного ПО, разработка вычислительных модулей для архитектур семейства «Эльбрус» и x86, требующих сертификации на отсутствие недекларированных возможностей (НДВ). -``` -git clone https://gitflic.ru/project/shishka333/tverd-plus-tokenizer.git -cd tverd-plus-tokenizer -**добавьте первые файлы вашего проекта** -git add . -git commit -m "Первый коммит" -git push -u origin master -``` +### 2. Основание для разработки +Разработка ведется на основании плана инициативной разработки инструментальных средств для языка функционально-процедурной парадигмы Ъ+ (низкоуровневый базис языка Ъ++) и в соответствии с требованиями к безопасной разработке (SDL). -Уже что-то делали в проекте? В таком случае инициализируйте гит-репозиторий в корне проекта и добавьте текущий репозиторий как удалённый репозиторий: +### 3. Технические требования -``` -cd existing_folder -git init -git remote add origin https://gitflic.ru/project/shishka333/tverd-plus-tokenizer.git -git clone -**добавьте новые файлы** -git add . -git commit -m "Новый коммит" -git push -u origin master -``` -*** +#### 3.1. Требования к функциональным характеристикам +ПИ должно обеспечивать лексический анализ входных потоков данных и преобразование их в последовательность токенов на основе детерминированного конечного автомата (ДКА). +#### 3.2. Требования к входным данным +* **Кодировка:** Соответствие стандарту ISO/IEC 10646 (UTF-8). +* **Идентификаторы:** Поддержка последовательностей символов кириллического и латинского алфавитов. +* **Спецсимволы:** Обязательная префиксация сущностей для однозначной идентификации: + * `@` — идентификаторы переменных (объекты данных); + * `:` — идентификаторы меток управления (адресация переходов); + * `?` — операторы логического ветвления (предикаты). -# Что должен содержать README файл +#### 3.3. Классификация управляющих конструкций +| Тип токена | Символьное обозначение | Функциональное назначение | +| :--- | :--- | :--- | +| **Начало блока** | `Ъ+` | Открытие исполняемого контекста | +| **Конец блока** | `Ъ-` | Закрытие исполняемого контекста | +| **Оператор конвейера** | `|>` | Передача данных между функциями | +| **Оператор записи** | `<<` | Инструкция заполнения буфера данных | +#### 3.4. Требования к надежности и безопасности +1. **Прослеживаемость:** Обеспечение фиксации координат (строка, столбец) каждого токена для реализации сквозного аудита кода. +2. **Целостность данных:** Использование механизмов контроля границ и строгой типизации на этапе компиляции (статический анализ средствами языка Rust). +3. **Автономность:** Возможность сборки и функционирования компилятора в изолированной программной среде («Air-gap» разработка) без обращения к внешним сетям. -Прежде всего, стоит понимать, что `README.md` — это краткая документация. Это первое, что видит человек, который открывает репозиторий. Поэтому здесь важно дать достаточно информации о проекте и рассказать, что он из себя представляет. -Ключевая информация, которую должен содержать README файл: +### 4. Условия эксплуатации и программная совместимость +* **Язык реализации:** Rust (стандарт ISO/IEC), исключая использование стандартной библиотеки (`no_std`) для минимизации вектора атак и исключения скрытых вызовов ОС. +* **Зависимости:** Использование внешних динамических библиотек сторонних разработчиков не допускается. +* **Среда функционирования:** POSIX-совместимые операционные системы, а также Bare-metal окружения. -## Название и описание -Название проекта должно быть простым и понятным (чаще всего это одно слово). -Описание должно описывать основные функции проекта, включая его особенности и назначение. -Если у вашего проекта есть альтернативные проекты, то в описании можно перечислить ключевые отличия, которые выделяют ваш проект на фоне всех остальных. +### 5. Логическая структура (Алгоритм) +Лексический анализатор функционирует как однопроходный сканер. Игнорирование избыточных данных (комментариев) обеспечивается за счет распознавания парных ограничителей `<[` и `]>`. ПИ должно поддерживать рекурсивную вложенность блоков комментариев без жесткого ограничения уровня вложенности. -## Установка и настройка -Также в `README` файле рекомендуется перечислить необходимые инструкции для установки, -будь то использование пакетных менеджеров (например, `Homebrew` на MacOS или `apt` на Linux), -зависимости, которые могут понадобиться в ходе использования, а также шаги по их настройке. +--- -## Совместная разработка -Можно добавить информацию о том, как принять участие в разработке вашего проекта, как стать непосредственным участником, правила оформления pull-requests и т.д. +### 6. Стадии и этапы разработки -## Контакты -Ссылки на внешние ресурсы, такие как документация, блог, страница проекта в социальных сетях, сообщество проекта и т.д. +#### 6.1. Разработка фронтенд-части +- [ ] Реализация модуля синтаксического разбора UTF-8 в режиме `no_std`. +- [ ] Описание грамматики языка в форме Бэкуса — Наура (EBNF). +- [ ] Разработка тестов для верификации кириллических идентификаторов. -## Статус проекта -В данном разделе рекомендуется указывать, на какой стадии находится проект, активно разрабатывается или находится в стадии застоя. -Если же проект готов и во всю используется, можно указывать актуальную версию, а также последние изменения, которые были сделаны с момента предыдущего релиза. +#### 6.2. Промежуточное представление и типизация +- [ ] Проектирование структур данных абстрактного синтаксического дерева (AST). +- [ ] Реализация механизмов статического вывода типов для констант. -*** - -# Полезные ссылки - -*** - -## Работа с проектом - -- [ ] [Как создать проект](https://docs.gitflic.ru/project/project_create) -- [ ] [Как импортировать проект](https://docs.gitflic.ru/project/import_base) -- [ ] [Запросы на слияние](https://docs.gitflic.ru/project/merge_request) -- [ ] [Зеркалирование проекта](https://docs.gitflic.ru/project/mirror) -- [ ] [Импортировать проект с GitLab](https://docs.gitflic.ru/project/import) - -## Команды -- [ ] [Создание команды](https://docs.gitflic.ru/team/create) -- [ ] [Обзор команды](https://docs.gitflic.ru/team/view) -- [ ] [Настройка команды](https://docs.gitflic.ru/team/settings) - -## Реестр пакетов -- [ ] [Реестр пакетов](https://docs.gitflic.ru/registry/package) -- [ ] [PyPi](https://docs.gitflic.ru/registry/pypi_registry) -- [ ] [Generic](https://docs.gitflic.ru/registry/generic_registry) -- [ ] [Maven](https://docs.gitflic.ru/registry/maven_registry) -- [ ] [Docker](https://docs.gitflic.ru/registry/docker) - -## Компании -- [ ] [Создание компании](https://docs.gitflic.ru/company/create) -- [ ] [Обзор компании](https://docs.gitflic.ru/company/view) -- [ ] [Тарифы и оплата](https://docs.gitflic.ru/company/price) -- [ ] [Запуск агента компании](https://docs.gitflic.ru/company/saas_runner_setup) - -## CI/CD -- [ ] [Что такое GitFlic CI/CD](https://docs.gitflic.ru/cicd/introduction) -- [ ] [Задача (Job)](https://docs.gitflic.ru/cicd/job) -- [ ] [Конвейер (pipeline)](https://docs.gitflic.ru/cicd/pipeline) -- [ ] [Агенты](https://docs.gitflic.ru/cicd/agent) -- [ ] [Справочник для .yaml файла](https://docs.gitflic.ru/cicd/gitflic-ci-yaml) - -## API -- [ ] [Введение в GitFlic API](https://docs.gitflic.ru/api/intro) -- [ ] [Методы для администратора](https://docs.gitflic.ru/api/admin) -- [ ] [Получение access токена](https://docs.gitflic.ru/api/access-token) - - -## Панель администратора -- [ ] [Панель администратора](https://docs.gitflic.ru/admin_panel/intro) -- [ ] [Панель управления](https://docs.gitflic.ru/admin_panel/dashboard) -- [ ] [Настройка LDAP](https://docs.gitflic.ru/admin_panel/ldap) -- [ ] [Ключевые настройки](https://docs.gitflic.ru/admin_panel/settings) - -## Общая информация -- [ ] [Глоссарий](https://docs.gitflic.ru/common/gloss) -- [ ] [Права доступа ролей](https://docs.gitflic.ru/common/manage_roles) -- [ ] [Вебхуки](https://docs.gitflic.ru/common/webhook) \ No newline at end of file +#### 6.3. Генерация целевого кода и испытания +- [ ] Разработка модуля трансляции в стандарт ISO C99. +- [ ] Формирование интерфейса взаимодействия с целевыми компиляторами (LCC для «Эльбрус» и GCC для x86). +- [ ] Проведение приемо-сдаточных испытаний (ПСИ). \ No newline at end of file