Numlex Документация
Справочник синтаксиса
Сообщить о проблеме

Язык листа

Как устроен и как вычисляется лист: обозначения, формы строк, имена, строгие и тихие строки и команда 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 — см. теги, подытоги и статистику.

Куда двигаться дальше

Нашли ошибку в документации? Сообщите о ней на GitHub