Vysvětlení modelu sady .NET Compiler Platform SDK

Kompilátory zpracovávají kód, který píšete podle strukturovaných pravidel, která se často liší od toho, jak lidé čtou a rozumí kódu. Základní znalosti modelu používaného kompilátory jsou nezbytné k pochopení rozhraní API, která používáte při vytváření nástrojů založených na Roslynu.

Funkční oblasti kanálu kompilátoru

Sada .NET Compiler Platform SDK zveřejňuje analýzu kódu kompilátoru jazyka C# a Visual Basic pro vás jako příjemce tím, že poskytuje vrstvu rozhraní API, která zrcadlí tradiční kanál kompilátoru.

steps of the compiler pipeline processing source code to object code

Každá fáze tohoto kanálu je samostatná komponenta. Nejprve fáze analýzy tokenizuje a parsuje zdrojový text do syntaxe, která následuje za gramatikou jazyka. Za druhé fáze deklarace analyzuje zdrojová a importovaná metadata a vytvoří pojmenované symboly. Dále fáze vazby odpovídá identifikátorům v kódu se symboly. Nakonec fáze generování generuje sestavení se všemi informacemi vytvořenými kompilátorem.

compiler pipeline api provides access to each step that is part of the compiler pipeline

Sada .NET Compiler Platform SDK, která odpovídá každé z těchto fází, zveřejňuje objektový model, který umožňuje přístup k informacím v této fázi. Fáze analýzy zveřejňuje strom syntaxe, fáze deklarace zveřejňuje hierarchickou tabulku symbolů, fáze vazby zveřejňuje výsledek sémantické analýzy kompilátoru a fáze generování je rozhraní API, které vytváří kódy bajtů IL.

the language services available from the compiler api at each step of the compiler pipeline

Každý kompilátor kombinuje tyto komponenty dohromady jako jeden ucelený celek.

Tato rozhraní API jsou stejná jako v sadě Visual Studio. Například funkce osnovy a formátování kódu používají stromy syntaxe, Prohlížeč objektů a navigační funkce používají tabulku symbolů, refaktoringy a Přejít k definici používají sémantický model a funkce Upravit a Pokračovat používají všechny tyto funkce, včetně rozhraní API pro generování.

Vrstvy rozhraní API

Sada SDK kompilátoru .NET se skládá z několika vrstev rozhraní API: rozhraní API kompilátoru, diagnostická rozhraní API, skriptovací rozhraní API a rozhraní API pracovních prostorů.

Rozhraní API kompilátoru

Vrstva kompilátoru obsahuje objektové modely, které odpovídají informacím vystaveným v každé fázi kanálu kompilátoru, a to jak syntaktické, tak sémantické. Vrstva kompilátoru také obsahuje neměnný snímek jednoho vyvolání kompilátoru, včetně odkazů na sestavení, možností kompilátoru a souborů zdrojového kódu. Existují dvě odlišná rozhraní API, která představují jazyk C# a jazyk Visual Basic. Tato dvě rozhraní API jsou podobná tvaru, ale jsou přizpůsobená pro vysokou věrnost jednotlivým jazykům. Tato vrstva nemá žádné závislosti na komponentách sady Visual Studio.

Diagnostická rozhraní API

V rámci analýzy může kompilátor vytvořit sadu diagnostiky, která pokrývá vše od syntaxe, sémantické a konkrétní chyby přiřazení k různým upozorněním a informační diagnostice. Vrstva rozhraní API kompilátoru zveřejňuje diagnostiku prostřednictvím rozšiřitelného rozhraní API, které umožňuje připojení uživatelsky definovaných analyzátorů k procesu kompilace. Umožňuje vytváření diagnostiky definované uživatelem, jako jsou nástroje, jako je StyleCop, společně s diagnostikou definovanou kompilátorem. Vytváření diagnostiky tímto způsobem má výhodu integrace přirozeně s nástroji, jako je MSBuild a Visual Studio, které závisí na diagnostice pro prostředí, jako je zastavení sestavení založeného na zásadách a zobrazování živých vlnovek v editoru a navrhování oprav kódu.

Skriptovací rozhraní API

Rozhraní API pro hostování a skriptování jsou založená na vrstvě kompilátoru. Pomocí skriptovacích rozhraní API můžete spouštět fragmenty kódu a shromažďovat kontext spuštění modulu runtime. Interaktivní REPL jazyka C# (smyčka Read-Evaluate-Print) používá tato rozhraní API. RePL umožňuje používat jazyk C# jako skriptovací jazyk a interaktivně spouštět kód při psaní.

Rozhraní API pracovních prostorů

Vrstva Pracovní prostory obsahuje rozhraní API pracovního prostoru, což je výchozí bod pro analýzu kódu a refaktoring pro celá řešení. Pomůže vám uspořádat všechny informace o projektech v řešení do jediného objektového modelu a nabízí přímý přístup k modelům objektů vrstvy kompilátoru, aniž byste museli analyzovat soubory, konfigurovat možnosti nebo spravovat závislosti mezi projekty.

Kromě toho vrstva Pracovních prostorů zobrazí sadu rozhraní API používaná při implementaci nástrojů pro analýzu kódu a refaktoringu, které fungují v hostitelském prostředí, jako je integrované vývojové prostředí sady Visual Studio. Mezi příklady patří rozhraní API pro vyhledání všech odkazů, formátování a generování kódu.

Tato vrstva nemá žádné závislosti na komponentách sady Visual Studio.