Kompilator: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
DamenaKo (bicara | kontrib)
menambahkan informasi tentang kompilator single-pass dan multi-pass; definisinya dan perbandingannya
Tag: kemungkinan perlu pemeriksaan terjemahan VisualEditor
DamenaKo (bicara | kontrib)
Menambahkan tahap pengoptimalan dalam analisis semantik dan penghasilan kode target
Tag: kemungkinan menambah konten tanpa referensi atau referensi keliru VisualEditor
Baris 27:
{{Main|Parsing}}
 
Analisis sintaks atau ''parsing'' adalah fase di mana ''kompilator'' menganalisis ''token-token'' yang dihasilkan dalam proses analisis leksikal dan mengelompokkan mereka menjadi suatu [[pohon uraian]] berdasarkan struktur bahasa asal.<ref name=":0" />
 
=== Analisis semantik ===
{{Main|Analisis semantik}}
Analisis semantik adalah fase atau proses yang menggunakan pohon uraian yanghasil dihasilkan dalamdari analisis sintaks tadi untuk memastikan konsistensi semantik dari program, dan juga mengoptimalkan struktur dari program. Proses ini juga mengumpulkan dan menganalisis informasi mengenai [[tipe data]] dari [[Variabel (ilmu komputer)|variabel-variabel]] yang ada di dalam program. Informasi tentang tipe data ini disimpan dalam [[Symbol Table|tabel simbol]] atau langsung di dalam pohon uraian ''parsing,'' yang nanti akan dimanfaatkan dalam penghasilan kode ''target''. <ref name=":1">{{Cite book|last=Aho|first=Alfred V.|last2=Sethi|first2=Ravi|last3=Ullman|first3=Jeffrey D.|date=2002|title=Compilers: principles, techniques, and tools|location=Reading, Mass.|publisher=Addison-Wesley|isbn=978-0-201-10088-4|edition=Reprinted, with corr., [36. Druck]|series=Addison-Wesley series in computer science}}</ref>
 
=== Penghasilan kode target ===
{{Main|Code generation}}
 
Pada fase ini, kompilator menggunakan semua informasi mengenai kode asal yang telah dikumpulkan dalam fase-fase sebelumnya, untuk menghasilkan kode target<ref name=":1" />. Kode target dapat berupa [[Intermediate representation|representasi perantara]], yang nanti dapat diproses oleh komponen lain (seperti assembler, LLVM, Java, dsb.), atau bisa jadi langsung berupa kode mesin. Dalam proses ini, kompilator juga melakukan pengoptimalan kode ''target'' agar kinerja program menjadi lebih baik.<ref name="cbe" />
 
== Kompilator ''single pass'' dan kompilator ''multi-pass'' ==