320 likes | 756 Views
Konsep Dasar Teknik Kompilasi. Sigit Widiyanto , ST., MMSi ., MSc. Quick Basic. Turbo Pascal. Turbo C++ 4.5. Java Compiler (Command Prompt). Translator. Translator :
E N D
KonsepDasarTeknikKompilasi SigitWidiyanto, ST., MMSi., MSc
Translator Translator : • Adalahsuatu program yang memlikiinputansebuah program yang ditulisdengansatubahasapemrograman (source language) untukditerjemahkankebahasa lain (object language) • Contoh source language: high level language, seperticobol, pascal, fortran • Contoh object language: low-level language ataumesin language.
Assembler *.asm Object code *.exe /*.com Macam-macam Translator • Assembler • Source Code : Bahasa Assembly • Object Code : BahasaMesin
Source Code Compiler Result Macam-macam Translator • Compiler • Source Code : Bahasatingkattinggi • Object Code : Bahasamesinataubahasa assembly • Source Code dan data diprosesberbeda Data Execution Object Code
Interpreter Result Data Macam-macam Translator • Interpreter • Tidakmenghasilkan object code. • Tetapi, hasiltranslasinyadalambentuk internal. • Program indukharusselaluberbedadengan compiler. Source Code
ApaituteknikKompilasi? • Teknik: • Metodeatau Cara • Kompilasi: • Proses mengabungkansertamenterjermahkansesuatu (source program) menjadibentuk lain.
Source Program Compiler OBJECTPROGRAM ERRORMESSAGES Jadiapaitukompilator? • Kompilator (compiler) adalahsebuahprogram yang membacasuatu program yang ditulisdalamsuatubahasasumber(source language) danmenterjemah-kannyakedalamsuatubahasasasaran(target language).
Proses Kompilasi • analisa: program sumberdipecah-pecahdandibentukmenjadibentukantara (inter-mediate representation) • sintesa: membangun program sasaran yang diinginkandaribentukantara
PenganalisaLeksikal • Membacaprogram sumber, karakter demi karakter. Sederetan (satuataulebih) karakterdikelompokkanmenjadisatukesatuanmengacukepadapolakesatuankelompokkarakter(token)yang ditentukandalambahasasumber. • Kelompokkarakter yang membentuksebuah token dinamakanlexemeuntuk token tersebut. Setiap token yang dihasilkandisimpan di dalamtabelsimbol. Sederetankarakter yang tidakmengikutipola token akandilaporkansebagaitoken takdikenal(unidentified token).
ContohPenganalisaLeksikal • Misalnyapola token untukidentifier Iadalah : I = huruf(hurufangka)*. Lexeme ab2c dikenalisebagai token sementara lexeme 2abc atauabCtidakdikenal.
PenganalisaSintaks • Memeriksakesesuaianpoladeretan token denganaturansintaks yang ditentukandalambahasasumber. Sederetan token yang tidakmengikutiaturansintaksakandilaporkansebagaikesalahansintaks(sintax error). • Secaralogikaderetan token yang bersesuaiandengansintakstertentuakandinyatakansebagaipohon parsing (parse tree).
ContohPenganalisaSintaks • Misalnyasintaksuntukekspresiif-then E adalah : E if L then, L IOA, I = huruf(hurufangka)*, O <=><=>=, A 01...9. Ekspresiif a2 < 9 then adalahekspresisesuaisintaks; sementaraekspresiif a2 < 9 do atauif then a2B < 9tidaksesuai. Perhatikanbahwacontohekspresiterakhirjugamengandung token yang tidakdikenal.
PenganalisaSemantik • Memeriksatoken danekspresidaribatasan-batasan yang ditetapkan. Batasan-batasantersebutmisalnya : • Panjangmaksimum token identifier adalah 8 karakter, • Panjangmaksimumekspresitunggaladalah 80 karakter, • Nilaibilanganbulatadalah -32768 s/d 32767, • Operasiaritmatikaharusmelibatkanoperan-operan yang bertipesama.
Pembangkitkodeantara • Membangkitkankodeantara (intermediate code) berdasar-kanpohon parsing. Pohon parse selanjutnyaditerjemahkanolehsuatupenerjemah yang dinamakanpenerjemahberdasarkansintak(syntax-directed translator). Hasilpenerjemahaninibiasanyamerupakanperintahtigaalamat(three-address code) yang merupakanrepresentasi program untuksuatumesinabstrak.
Pembangkitkodeantara • Perintahtigaalamatbisaberbentukquadruples (op, arg1, arg2, result), tripels(op, arg1, arg2). Ekspresidengansatuargumendinyatakandenganmenetapkanarg2 dengan - (strip, dash)
PengoptimalanKode • Melakukanoptimasi (penghematanspace danwaktukomputasi), jikamungkin, terhadapkodeantara.
PembangkitanKode • Membangkitkankodedalambahasa target tertentu (misalnyabahasamesin).
Contoh • Identifier: • Lexeme: • Quadruples: