Clause
← Gesamte Dokumentation

Übersetzt aus dem englischen Original · 06042fa · 2026-10-09 · Auf Englisch lesen

Präprozessor

Native C++-Neuimplementierung von OTPs epp für die festgelegte maint-29-Quelle. Boost.Parser behandelt die Zeichenregeln; gemeinsame Compiler-Metadaten liefern die Operatorrangfolge. Expandierte Tokens werden nie in Quelltext zurückverwandelt.

PreprocessorSession liefert expandierte Formen (einschließlich impliziter -file-Attribute), strukturierte Diagnosen und unveränderliche Feature-Snapshots pro Form; features() stellt dem Parser den endgültigen Sitzungszustand bereit. Dies ist eine interne Schnittstelle, kein öffentliches Stufenformat. DirectiveReader ist die ältere, rein syntaktische API.

Unterstütztes Verhalten

Kompatibilitätsrichtlinien

Grenzen und Diagnosen

Standards (konfigurierbar über PreprocessorLimits): 256 Expansionsebenen und 1.000.000 erzeugte Tokens pro Form, Include-Tiefe 64, Ausdrucksverschachtelung 256, dazu feste Grenzen von 4.194.240 Bit für Ganzzahlen (die Grenze von OTP auf 64-Bit-Hosts) und 1.000.000 Bit für Bitstring-Werte. Erschöpfung ist eine Ressourcendiagnose, nie eine stillschweigend falsche Bedingung.

Diagnosen enthalten eine stabile Kategorie, einen Schweregrad, physische Bereiche, optionale logische Koordinaten und zugehörige Makro-/Include-Bereiche. Warnungen führen nicht zum Fehlschlag; Fehler halten den Fehlschlag fest, während die Wiederherstellung an der nächsten Formgrenze fortfährt.

Tests

Token-Goldens (semantic/*.erl.tokens) halten Token-Arten von epp, dekodierte Werte (Gleitkommazahlen als binary64-Bits) und die Reihenfolge der Diagnosen fest; der Wortlaut muss nicht mit OTP übereinstimmen. Lokale Fragmente semantic/headers/*.hrl ersetzen früher kopierte OTP-Header. preprocessor_workflow deckt echte Include-Bäume, Optionsreihenfolge, Umgebung, Latin-1 und Bedingungsfälle über die CLI ab.