Базовый синтаксис
Перенесено из репозитория формата — docs/spec/SPECIFICATION_RU.md, SYNX 3.7.4. Правки вносятся там.
2.1 Ключ-значение
Всё, что идёт после первого пробела — это значение. Кавычки не нужны.
имя Иван
возраст 25
фраза Я люблю программировать и пить кофе!Эквивалент в JSON:
{
"имя": "Иван",
"возраст": 25,
"фраза": "Я люблю программировать и пить кофе!"
}Правила для ключей:
- Без пробелов (используйте
_илиcamelCase) - Не могут начинаться с
-,#,//,! - Могут содержать буквы любого алфавита, цифры,
_,-(внутри)
2.2 Автоопределение типов
Парсер автоматически определяет типы:
строка Hello World
целое 42
дробное 3.14
правда true
ложь false
пусто nullРезультат:
{
"строка": "Hello World",
"целое": 42,
"дробное": 3.14,
"правда": true,
"ложь": false,
"пусто": null
}Принудительное приведение типа (если нужно число как строку):
zip_code(string) 90210
id(int) 007Поддерживаемые касты: (int), (float), (bool), (string)
2.3 Вложенность (объекты)
Отступ 2 пробела создаёт вложенный объект. Ключ без значения — это группа (папка).
сервер
хост 0.0.0.0
порт 8080
ssl
включён true
сертификат /etc/ssl/cert.pemРезультат:
{
"сервер": {
"хост": "0.0.0.0",
"порт": 8080,
"ssl": {
"включён": true,
"сертификат": "/etc/ssl/cert.pem"
}
}
}⚠️ Используйте пробелы, а не TAB. Стандарт — 2 пробела на уровень.
2.4 Списки
Символ - (дефис + пробел) создаёт элемент списка. Элементы без имён — просто порядковый набор.
инвентарь
- Меч
- Щит
- Зелье здоровьяРезультат:
{
"инвентарь": ["Меч", "Щит", "Зелье здоровья"]
}Список объектов (каждый элемент — мини-анкета):
гараж
- марка BMW
цвет чёрный
год 2023
- марка Audi
цвет белый
год 2021Результат:
{
"гараж": [
{ "марка": "BMW", "цвет": "чёрный", "год": 2023 },
{ "марка": "Audi", "цвет": "белый", "год": 2021 }
]
}2.5 Многострочный текст (блоки)
Символ | после ключа начинает блок текста. Всё, что идёт ниже с отступом — часть этого текста.
описание |
Это длинное описание,
которое занимает несколько строк.
Каждая строка склеивается через перенос.Результат:
{
"описание": "Это длинное описание,\nкоторое занимает несколько строк.\nКаждая строка склеивается через перенос."
}Принудительный перенос строки внутри одной строки: /n
баннер Добро пожаловать!/nУдачной игры!Результат:
Добро пожаловать!
Удачной игры!2.6 Комментарии
Поддерживаются два стиля комментариев:
# Это комментарий (стиль Python/YAML)
// Это тоже комментарий (стиль JS/C++)
имя Иван # Инлайн-комментарий после значения
порт 8080 // Тоже инлайнКомментарии полностью игнорируются парсером.