Clause
← All dokumentation

Översatt från det engelska originalet · 06042fa · 2026-10-09 · Läs på engelska

Preprocessor

Inbyggd C++-omimplementation av OTP:s epp för den fastlåsta maint-29-källkoden. Boost.Parser hanterar teckenregler; delad kompilatormetadata tillhandahåller operatorprioritet. Expanderade token görs aldrig om till källtext.

PreprocessorSession returnerar expanderade former (inklusive implicita -file-attribut), strukturerad diagnostik och oföränderliga ögonblicksbilder av funktioner per form; features() exponerar sessionens slutliga tillstånd för parsern. Detta är ett internt gränssnitt, inte ett publikt stegformat. DirectiveReader är det äldre API:t för enbart syntax.

Beteende som stöds

Kompatibilitetspolicyer

Gränser och diagnostik

Standardvärden (konfigurerbara via PreprocessorLimits): 256 expansionsnivåer och 1 000 000 producerade token per form, inkluderingsdjup 64, uttrycksnästling 256, samt fasta gränser på 4 194 240 bitar för heltal (OTP:s gräns på 64-bitarsvärdar) och 1 000 000 bitar för bitstring-värden. Uttömning är en resursdiagnostik, aldrig ett tyst falskt villkor.

Diagnostik bär en stabil kategori, allvarlighetsgrad, fysiska intervall, valfria logiska koordinater och relaterade intervall för makron/inkluderingar. Varningar får inget att misslyckas; fel låser fast misslyckandet medan återhämtningen fortsätter vid nästa formgräns.

Tester

Goldens för token (semantic/*.erl.tokens) registrerar epp:s tokensorter, avkodade värden (flyttal som binary64-bitar) och diagnostikens ordning; formuleringen behöver inte vara densamma som i OTP. Lokala fragment semantic/headers/*.hrl ersätter tidigare kopierade OTP-headerfiler. preprocessor_workflow täcker verkliga inkluderingsträd, alternativens ordning, miljö, Latin-1 och villkorsfall via CLI:n.