Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kompiler memproses kode yang Anda tulis mengikuti aturan terstruktur yang sering berbeda dari cara manusia membaca dan memahami kode. Pemahaman dasar tentang model yang digunakan oleh kompilator sangat penting untuk memahami API yang Anda gunakan saat membangun alat berbasis Roslyn.
Area fungsi alur kompilator
.NET Compiler Platform SDK memaparkan analisis kode pengkompilasi C# dan Visual Basic kepada Anda sebagai konsumen dengan menyediakan lapisan API yang mencerminkan alur kompilator tradisional.
Setiap fase alur ini adalah komponen terpisah. Dalam fase pertama, teks sumber dipecah menjadi token dan diuraikan ke dalam sintaks yang mengikuti tata bahasa. Kedua, fase deklarasi menganalisis sumber dan metadata yang diimpor untuk membentuk simbol bernama. Selanjutnya, tahap pemetaan mencocokkan pengidentifikasi dalam kode ke simbol. Akhirnya, fase emisi mengeluarkan kode rakitan dengan semua informasi yang dibangun oleh kompilator.
Sesuai dengan masing-masing fase tersebut, .NET Compiler Platform SDK mengekspos model objek yang memungkinkan akses ke informasi pada fase tersebut. Fase penguraian mengekspos pohon sintaksis, fase deklarasi mengekspos tabel simbol hierarkis, fase pengikatan mengekspos hasil analisis semantik kompilator, dan fase pancaran adalah API yang menghasilkan kode byte IL.
Setiap pengompilasi menggabungkan komponen-komponen ini bersama-sama sebagai satu utuh end-to-end.
API ini adalah API yang sama yang digunakan oleh Visual Studio. Misalnya, fitur kerangka dan pemformatan kode menggunakan pohon sintaksis, Browser Objek, dan fitur navigasi menggunakan tabel simbol, pemfaktoran ulang, dan Buka Definisi menggunakan model semantik, dan Edit dan Lanjutkan menggunakan semua ini, termasuk API Keluarkan.
Lapisan API
SDK kompilator .NET terdiri dari beberapa lapisan API: API kompilator, API diagnostik, API skrip, dan API ruang kerja.
API Kompilator
Lapisan kompilator berisi model objek yang sesuai dengan informasi yang diekspos pada setiap fase alur kompilator, baik syntactic maupun semantik. Lapisan kompilator juga berisi rekam jepret yang tidak dapat diubah dari satu pemanggilan kompilator, termasuk referensi perakitan, opsi pengkompilasi, dan file kode sumber. Ada dua API berbeda yang mewakili bahasa C# dan bahasa Visual Basic. Kedua API memiliki bentuk yang mirip tetapi disesuaikan untuk keakuratan tinggi untuk setiap bahasa individu. Lapisan ini tidak memiliki dependensi pada komponen Visual Studio.
API Diagnostik
Sebagai bagian dari analisisnya, pengkompilasi dapat menghasilkan serangkaian diagnostik yang mencakup semuanya mulai dari kesalahan sintaks, semantik, dan penugasan pasti hingga berbagai peringatan dan diagnostik informasi. Lapisan COMpiler API mengekspos diagnostik melalui API yang dapat diperluas yang memungkinkan penganalisis yang ditentukan pengguna untuk dicolokkan ke dalam proses kompilasi. Ini memungkinkan diagnostik yang ditentukan pengguna, seperti yang diproduksi oleh alat seperti StyleCop, untuk diproduksi bersama diagnostik yang ditentukan pengkompiler. Memproduksi diagnostik dengan cara ini bermanfaat karena dapat terintegrasi secara alami dengan alat seperti MSBuild dan Visual Studio. Alat-alat ini bergantung pada diagnostik untuk memberikan pengalaman seperti menghentikan build berdasarkan kebijakan, menampilkan garis bergelombang langsung di editor, dan menyarankan perbaikan kode.
API Pembuatan Skrip
API hosting dan scripting dibangun di atas lapisan kompilator. Anda dapat menggunakan API pembuatan skrip untuk menjalankan cuplikan kode dan mengakumulasi konteks eksekusi runtime. REPL interaktif C# (Read-Evaluate-Print Loop) menggunakan API ini. REPL memungkinkan Anda menggunakan C# sebagai bahasa skrip, menjalankan kode secara interaktif saat Anda menulisnya.
API Ruang-ruang Kerja
Lapisan Ruang Kerja berisi API Ruang Kerja, yang merupakan titik awal untuk melakukan analisis kode dan pemfaktoran ulang seluruh solusi. Ini membantu Anda dalam mengatur semua informasi tentang proyek dalam solusi ke dalam model objek tunggal, menawarkan Anda akses langsung ke model objek lapisan kompilator tanpa perlu mengurai file, mengonfigurasi opsi, atau mengelola dependensi proyek-ke-proyek.
Selain itu, lapisan Ruang Kerja menampilkan sekumpulan API yang digunakan saat menerapkan analisis kode dan alat refaktor yang berfungsi dalam lingkungan host seperti Visual Studio IDE. Contohnya termasuk API Temukan Semua Referensi, Pemformatan, dan Pembuatan Kode.
Lapisan ini tidak memiliki dependensi pada komponen Visual Studio.