docs: обновлён файл README.md
This commit is contained in:
150
README.md
150
README.md
@@ -1,117 +1,65 @@
|
|||||||
# tverd-plus-tokenizer
|
# Программное изделие «Ъ» (Проект «Твердь»)
|
||||||
|
## Техническое задание и описание программы
|
||||||
|
|
||||||
***
|
---
|
||||||
## С чего начать?
|
|
||||||
Для того, чтобы облегчить знакомство с сервисом GitFlic и первые шаги в нём, мы подготовили несколько рекомендаций.
|
|
||||||
Уже опытный пользователь? Отредактируйте данный **README** файл по своему усмотрению.
|
|
||||||
Не знаете что добавить в него? Перейдите в раздел `"Что должен содержать README файл"`, в котором описаны ключевые компоненты хорошего README файла.
|
|
||||||
|
|
||||||
## Добавьте свои файлы
|
### 1. Введение и область применения
|
||||||
Если вы решили начать разработку проекта с создания репозитория в нашем сервисе, тогда клонируйте себе данный репозиторий следующим образом:
|
Настоящий документ устанавливает требования к архитектуре, реализации и функционированию программного изделия (ПИ) «Ъ» (компонент «Токенизатор»).
|
||||||
|
|
||||||
|
* **Наименование:** Программный комплекс системного программирования «Ъ».
|
||||||
|
* **Область применения:** Создание детерминированного системного ПО, разработка вычислительных модулей для архитектур семейства «Эльбрус» и x86, требующих сертификации на отсутствие недекларированных возможностей (НДВ).
|
||||||
|
|
||||||
```
|
### 2. Основание для разработки
|
||||||
git clone https://gitflic.ru/project/shishka333/tverd-plus-tokenizer.git
|
Разработка ведется на основании плана инициативной разработки инструментальных средств для языка функционально-процедурной парадигмы Ъ+ (низкоуровневый базис языка Ъ++) и в соответствии с требованиями к безопасной разработке (SDL).
|
||||||
cd tverd-plus-tokenizer
|
|
||||||
**добавьте первые файлы вашего проекта**
|
|
||||||
git add .
|
|
||||||
git commit -m "Первый коммит"
|
|
||||||
git push -u origin master
|
|
||||||
```
|
|
||||||
|
|
||||||
Уже что-то делали в проекте? В таком случае инициализируйте гит-репозиторий в корне проекта и добавьте текущий репозиторий как удалённый репозиторий:
|
### 3. Технические требования
|
||||||
|
|
||||||
```
|
#### 3.1. Требования к функциональным характеристикам
|
||||||
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.2. Требования к входным данным
|
||||||
|
* **Кодировка:** Соответствие стандарту ISO/IEC 10646 (UTF-8).
|
||||||
|
* **Идентификаторы:** Поддержка последовательностей символов кириллического и латинского алфавитов.
|
||||||
|
* **Спецсимволы:** Обязательная префиксация сущностей для однозначной идентификации:
|
||||||
|
* `@` — идентификаторы переменных (объекты данных);
|
||||||
|
* `:` — идентификаторы меток управления (адресация переходов);
|
||||||
|
* `?` — операторы логического ветвления (предикаты).
|
||||||
|
|
||||||
# Что должен содержать README файл
|
#### 3.3. Классификация управляющих конструкций
|
||||||
|
| Тип токена | Символьное обозначение | Функциональное назначение |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **Начало блока** | `Ъ+` | Открытие исполняемого контекста |
|
||||||
|
| **Конец блока** | `Ъ-` | Закрытие исполняемого контекста |
|
||||||
|
| **Оператор конвейера** | `|>` | Передача данных между функциями |
|
||||||
|
| **Оператор записи** | `<<` | Инструкция заполнения буфера данных |
|
||||||
|
|
||||||
|
#### 3.4. Требования к надежности и безопасности
|
||||||
|
1. **Прослеживаемость:** Обеспечение фиксации координат (строка, столбец) каждого токена для реализации сквозного аудита кода.
|
||||||
|
2. **Целостность данных:** Использование механизмов контроля границ и строгой типизации на этапе компиляции (статический анализ средствами языка Rust).
|
||||||
|
3. **Автономность:** Возможность сборки и функционирования компилятора в изолированной программной среде («Air-gap» разработка) без обращения к внешним сетям.
|
||||||
|
|
||||||
Прежде всего, стоит понимать, что `README.md` — это краткая документация. Это первое, что видит человек, который открывает репозиторий. Поэтому здесь важно дать достаточно информации о проекте и рассказать, что он из себя представляет.
|
### 4. Условия эксплуатации и программная совместимость
|
||||||
Ключевая информация, которую должен содержать README файл:
|
* **Язык реализации:** Rust (стандарт ISO/IEC), исключая использование стандартной библиотеки (`no_std`) для минимизации вектора атак и исключения скрытых вызовов ОС.
|
||||||
|
* **Зависимости:** Использование внешних динамических библиотек сторонних разработчиков не допускается.
|
||||||
|
* **Среда функционирования:** POSIX-совместимые операционные системы, а также Bare-metal окружения.
|
||||||
|
|
||||||
## Название и описание
|
### 5. Логическая структура (Алгоритм)
|
||||||
Название проекта должно быть простым и понятным (чаще всего это одно слово).
|
Лексический анализатор функционирует как однопроходный сканер. Игнорирование избыточных данных (комментариев) обеспечивается за счет распознавания парных ограничителей `<[` и `]>`. ПИ должно поддерживать рекурсивную вложенность блоков комментариев без жесткого ограничения уровня вложенности.
|
||||||
Описание должно описывать основные функции проекта, включая его особенности и назначение.
|
|
||||||
Если у вашего проекта есть альтернативные проекты, то в описании можно перечислить ключевые отличия, которые выделяют ваш проект на фоне всех остальных.
|
|
||||||
|
|
||||||
## Установка и настройка
|
---
|
||||||
Также в `README` файле рекомендуется перечислить необходимые инструкции для установки,
|
|
||||||
будь то использование пакетных менеджеров (например, `Homebrew` на MacOS или `apt` на Linux),
|
|
||||||
зависимости, которые могут понадобиться в ходе использования, а также шаги по их настройке.
|
|
||||||
|
|
||||||
## Совместная разработка
|
### 6. Стадии и этапы разработки
|
||||||
Можно добавить информацию о том, как принять участие в разработке вашего проекта, как стать непосредственным участником, правила оформления pull-requests и т.д.
|
|
||||||
|
|
||||||
## Контакты
|
#### 6.1. Разработка фронтенд-части
|
||||||
Ссылки на внешние ресурсы, такие как документация, блог, страница проекта в социальных сетях, сообщество проекта и т.д.
|
- [ ] Реализация модуля синтаксического разбора UTF-8 в режиме `no_std`.
|
||||||
|
- [ ] Описание грамматики языка в форме Бэкуса — Наура (EBNF).
|
||||||
|
- [ ] Разработка тестов для верификации кириллических идентификаторов.
|
||||||
|
|
||||||
## Статус проекта
|
#### 6.2. Промежуточное представление и типизация
|
||||||
В данном разделе рекомендуется указывать, на какой стадии находится проект, активно разрабатывается или находится в стадии застоя.
|
- [ ] Проектирование структур данных абстрактного синтаксического дерева (AST).
|
||||||
Если же проект готов и во всю используется, можно указывать актуальную версию, а также последние изменения, которые были сделаны с момента предыдущего релиза.
|
- [ ] Реализация механизмов статического вывода типов для констант.
|
||||||
|
|
||||||
***
|
#### 6.3. Генерация целевого кода и испытания
|
||||||
|
- [ ] Разработка модуля трансляции в стандарт ISO C99.
|
||||||
# Полезные ссылки
|
- [ ] Формирование интерфейса взаимодействия с целевыми компиляторами (LCC для «Эльбрус» и GCC для x86).
|
||||||
|
- [ ] Проведение приемо-сдаточных испытаний (ПСИ).
|
||||||
***
|
|
||||||
|
|
||||||
## Работа с проектом
|
|
||||||
|
|
||||||
- [ ] [Как создать проект](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)
|
|
||||||
Reference in New Issue
Block a user