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

Перекладено з англійського оригіналу · 1e3a39c8-dirty · 2026-10-26 · Читати англійською

Препроцесор

Нативна реімплементація на C++ модуля OTP epp для зафіксованих джерел 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. Вичерпання є діагностикою ресурсів, а не мовчазною хибною умовою.

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

Тести

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