Язык листа
Как устроен и как вычисляется лист: обозначения, формы строк, имена, строгие и тихие строки и команда total.
Лист Numlex — это стопка логических строк. Вы вводите обычную строку текста блокнота, и проверенный результат появляется в столбце ответов рядом.
Эта страница — формальная отправная точка языка листа: обозначения, используемые во всём
справочнике, все формы, которые может принимать строка, правила имён и присваиваний,
разница между строгими строками и тихой прозой и встроенная команда total.
Обозначения
В справочнике используются несколько плейсхолдеров:
| Плейсхолдер | Значение |
|---|---|
<expr> | любое арифметическое выражение |
<value> | числовое значение |
<unit> | единица измерения или выражение над единицами |
<place> | свободное текстовое имя места (до 100 символов) |
<Answer Token> | вставленный токен ответа (маркер U+FFFC) |
Слова синтаксиса — английские. Там, где это указано, они не зависят от регистра
(OF работает как of, Per Day — как per day). Язык интерфейса и региональный
формат чисел — независимые настройки: локализация никогда не меняет сам синтаксис.
Одна строка — один результат
Каждая логическая строка даёт один результат в правом столбце. Строки вычисляются сверху вниз, и имя, объявленное в одной строке, видно строкам ниже.
Формы строк
| Форма | Пример | Поведение |
|---|---|---|
| Пустая строка | Нет результата. | |
| Заголовок | # Payroll sheet | Визуальный заголовок; в расчёте пропускается. |
| Комментарий | // week total | Пропускаемая строка заголовка/комментария: результата нет, в расчёт не входит (не присваивание и не «имя листа»). |
| Подпись | Total: | Строка, оканчивающаяся двоеточием, — подпись-разделитель; вычисляется как пропуск. |
| Именованное значение | base pay = 4500 | <name> = <expr>: имя — 1–6 ASCII-слов (или одно токен-слово), ≤ 40 символов, первое слово начинается с буквы, операторов в имени нет. Значение изменяемо — более поздняя строка <name> = <expr> перезаписывает его для строк ниже. |
| Встроенная сумма | total | Команда (без учёта регистра), суммирующая подходящие строки текущей секции — см. команду total. |
| Числовое выражение | 12 + 30 × 2 | См. операторы и логику. |
| Проценты и деньги | 15% of 490, $24 per day | См. проценты и деньги и ставки. |
| Единицы | 10 km to m, 90 km per 3 day | См. единицы и количества. |
| Целочисленные базы | 0x1F, 255 as hex | См. числа и системы счисления. |
| Даты | May 5 + 3 weeks | См. даты. |
| Сеть | weather in London, distance between … | См. живые данные и географию. |
| Обычный текст | bought cable | Тихо: результата нет. Единственный legacy-откат — в числовых строках неизвестные латинские слова вычёркиваются (5 apples + 3 → 8). Проза без чисел и слова других алфавитов никогда не вычисляются. |
Строгие строки и тихая проза
Большинству строк позволено быть обычным текстом: если Numlex не может прочитать вычисление, строка просто остаётся тихой. Три вида строк, напротив, строгие — их форма полностью забирает строку, и неудачный разбор становится ошибкой, а не откатом:
- Денежные строки. Строка, содержащая маркер валюты (
$,€,100 USD…), обязана полностью разобраться как денежное выражение; иначе это скрытая ошибка, и ничего не угадывается. - Строки, похожие на дату.
May 5 + 43(без слова длительности) — ошибка, никогда не «сводится» к обычным числам. - Строки, похожие на вызов. Строка формы вызова функции (
name() строгая: неизвестная функция — ошибка, а не группа в скобках.
Всё остальное остаётся тихим — включая обычную прозу, которая никогда не помечается.
Имена и присваивания
- Объявляйте значение через
name = expression; дальше имя обозначает это значение во всех строках ниже. - Имена — 1–6 ASCII-слов, не более 40 символов, первое слово начинается с буквы, внутри нет операторов.
- Присваивания изменяемы: повторная запись того же имени перезаписывает его начиная с этого места вниз.
- Денежные значения тоже можно именовать — объявите
lunch = $45и позже напишите2 people × lunch(см. деньги и ставки). - Имена листа отделены от констант в настройках; механизм констант описан в пользовательских единицах и константах.
Команда total
Точная команда — строка, целиком равная total (регистр не важен). Она вычисляет сумму
подходящих результатов текущей секции — с начала листа или от ближайшей предыдущей
команды total, заголовка # или точного разделителя ---.
- Строки
totalне пересчитывают друг друга: ранее вычисленный total не входит в следующую сумму. Обычная же ссылка на строку-сумму — обычная строка, и она входит. - Подходящие: конечные скалярные числа — включая процентный и множительный виды отображения, именованные скаляры и точные целые (точны при |v| ≤ 2^53).
- Не подходящие: деньги, количества с единицами, логические значения, даты, ошибки, пустые/подписные строки и производные агрегатные строки.
- Затенение: активное именованное значение или константа с именем
totalотключает команду — строка становится обычным именованным значением. - Строка
total— сумма секции внутри листа. Она отличается от нижней панели Total в приложении, которая суммирует весь лист независимо от секций, и от командsubtotal/grand total— см. теги, подытоги и статистику.
Куда двигаться дальше
- Числа и системы счисления — литералы, компактные суффиксы, точные целочисленные базы.
- Операторы и логика — приоритет, логические значения, точная целочисленная арифметика.
- Встроенные функции — все 27 функций.
- Теги, подытоги и статистика — теги, разделители, подытоги, общие итоги и агрегаты.
- Даты и время — время-зависимые строки.
- Естественные расчёты — практическое руководство по повседневным строкам.