Clang je frontend kompilátoru v rámci projektu LLVM. Jeho úkolem je vzít zdrojový kód (např. v C++) a přeložit jej do mezikódu LLVM IR. Od svého vzniku v roce 2007 (za podpory společnosti Apple) se stal standardem pro vývoj na macOS a iOS a je silnou alternativou k GCC v prostředí Linux.
Clang způsobil revoluci v tom, jak kompilátory mluví s programátorem. Zatímco starší verze GCC vypisovaly strohé a kryptické chyby, Clang:
Clang je navržen tak, aby byl rychlý:
Clang tvoří první část kompilace (Frontend):
1. **Lexikální analýza (Lexer):** Rozbije text kódu na tokeny (klíčová slova, operátory). 2. **Syntaktická analýza (Parser):** Sestaví z tokenů abstraktní syntaktický strom (**AST**). 3. **Sémantická analýza:** Ověří, zda kód dává smysl (např. zda sčítáte kompatibilní typy). 4. **Generování kódu:** Převede AST do mezikódu [[LLVM]] IR.
Díky své modulární architektuře umožnil Clang vznik ekosystému pomocných nástrojů:
Clang byl navržen jako „drop-in replacement“ (přímá náhrada) za GCC. To znamená, že:
-Wall, -O2, -g).CC=clang).| Vlastnost | Clang | GCC |
|---|---|---|
| Diagnostika | Excelentní, barvy, návrhy oprav. | Dobrá (výrazně se zlepšila po nástupu Clangu). |
| Rozšiřitelnost | Velmi snadná (přes knihovny). | Obtížná (monolitický design). |
| Podpora C++ | Často implementuje nové standardy dříve. | Tradiční lídr v podpoře standardů. |
| Optimalizace | Špičková (díky LLVM). | V některých specifických případech stále vede. |
—
Zajímavost: Clang dokáže analyzovat kód i bez toho, aby jej úplně zkompiloval. Proto jsou v editorech červené vlnovky pod chybami tak rychlé – na pozadí běží „ořezaná“ verze Clangu.