Документация
Docs/ru/reference/text-format/syntax.md
Синтаксис текстового пакета
Сгенерированный справочник. Не редактируйте его напрямую. Обновите
BuildTools/TextFormatInterface.json, затем выполнитеpython BuildTools/docs_text_format.py --write.
| Индекс | Синтаксис | Языки | Текст прототипов | Runtime | Проверка | Канонический JSON | Руководство |
Исходный текстовый файл задаёт коллекцию своим именем. Каждая разобранная логическая запись задаёт Key1, Key2 и Text:
{Welcome}{}{Welcome to the wasteland.}
{QuestName}{Short}{A difficult choice}
{LongMessage}{}{First line
Second line}
Исходный .fotxt не задаёт Key3. Используйте поля $Text прототипа, когда принадлежащему прототипу ключу нужны одновременно Key2 и Key3.
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
text-format.syntax.entry |
Форма исходной записи | Разобранная запись .fotxt содержит Key1, Key2 и Text в трёх полях, ограниченных фигурными скобками; коллекцию задаёт сегмент имени файла текстового пакета. | LoadFromString получает коллекцию отдельно и создаёт TextPackKey из двух заданных полей ключа. | Source/Common/TextPack.cpp |
text-format.syntax.key-tuple |
Идентичность структурированного ключа | Идентичность TextPackKey состоит из Collection, Key1, Key2 и Key3, каждое из которых представлено обёрткой хешированной строки. | Исходные записи .fotxt оставляют Key3 пустым, а поля $Text прототипов могут заполнять Key2 и Key3. | Source/Common/TextPack.h |
text-format.syntax.multiline-text |
Многострочное значение | Только третье поле может продолжаться на физических строках; объединённые строки сохраняют переводы строк до первой закрывающей фигурной скобки. | Первые два вызова ExtractBraceToken запрещают многострочный ввод, а третий разрешает его. | Source/Common/TextPack.cpp |
text-format.syntax.comment-boundary |
Нет грамматики комментариев | Парсер пропускает физическую строку только тогда, когда не может найти первую открывающую фигурную скобку; соглашения о комментариях являются политикой проекта, а текст комментария не должен содержать разбираемые поля в фигурных скобках. | В LoadFromString нет ветки токенов комментария, и разбор начинается с первой открывающей фигурной скобки в любом месте строки. | Source/Common/TextPack.cpp |
text-format.syntax.empty-fields |
Обязательные и необязательные поля | Collection и Key1 не могут быть пустыми; Key2 и Text могут быть пустыми. | После извлечения всех трёх полей парсер отклоняет только пустую коллекцию или первый ключ. | Source/Common/TextPack.cpp |
text-format.syntax.variants |
Варианты повторяющегося ключа | Несколько записей могут использовать один полный TextPackKey и оставаться соседними упорядоченными вариантами в отсортированном backing vector. | Количество вариантов и выбор по индексу используют один binary-search range; нормализация языков не выравнивает количество дубликатов, а read paths никогда не исправляют разделяемое состояние. | Source/Common/TextPack.h, Source/Tests/Test_TextPack.cpp |
text-format.syntax.no-closing-brace-escape |
Граница закрывающей скобки | Первая закрывающая фигурная скобка завершает каждое поле; в исходном формате нет escape-последовательности для литеральной закрывающей скобки внутри Text. | ExtractBraceToken напрямую ищет следующую закрывающую скобку и не декодирует escape-последовательности. | Source/Common/TextPack.cpp |