Clause
← Уся документація

Перекладено з англійського оригіналу · 06042fa · 2026-10-09 · Читати англійською

Препроцесор

Нативна реімплементація OTP epp мовою C++ для зафіксованого вихідного коду maint-29. Boost.Parser обробляє правила символів; спільні метадані компілятора задають пріоритет операторів. Розгорнуті токени ніколи не перетворюються назад на вихідний текст.

PreprocessorSession повертає розгорнуті форми (зокрема неявні атрибути -file), структуровану діагностику та незмінні знімки можливостей для кожної форми; features() надає парсеру остаточний стан сесії. Це внутрішній інтерфейс, а не публічний формат етапу. DirectiveReader — старіший API лише для синтаксису.

Підтримувана поведінка

Політики сумісності

Обмеження та діагностика

Значення за замовчуванням (налаштовуються через PreprocessorLimits): 256 рівнів розгортання і 1 000 000 створених токенів на форму, глибина включень 64, вкладеність виразів 256, а також фіксовані межі 4 194 240 біт для цілих чисел (межа OTP на 64-бітних хостах) і 1 000 000 біт для значень bitstring. Вичерпання — це діагностика ресурсів, а не мовчазна хибна умова.

Діагностика містить стабільну категорію, рівень серйозності, фізичні діапазони, необов'язкові логічні координати та пов'язані діапазони макросів/включень. Попередження не спричиняють невдачі; помилки фіксують стан невдачі, а відновлення продовжується з межі наступної форми.

Тести

Еталонні файли токенів (semantic/*.erl.tokens) фіксують типи токенів epp, декодовані значення (числа з рухомою комою як біти binary64) і порядок діагностики; формулювання не мусять збігатися з OTP. Локальні фрагменти semantic/headers/*.hrl замінюють колись скопійовані заголовки OTP. preprocessor_workflow охоплює через CLI справжні дерева включень, порядок параметрів, середовище, Latin-1 і випадки умов.