Proses dalam melakukan penerjemah pada sebuah perangkat lunak dari bahasa yang satu ke dalam bahasa lainnya memang sering menjadi kepentingan dalam dunia industri. Melakukan konversi terhadap kode tersebut memang tidak bisa dikatakan mudah untuk dilakukan terutama jika sangat kompleks dan berukuran besar. Seperti pada tipe data dalam pascal dan C ini keduanya memiliki kesamaan, yaitu sama-sama berparadigma prosedural, waktu pertama muncul yang hampir bersamaan, penerus seri bahasa ALGOL dll.
Agar bisa mendapatkan berbagai aturan penerjemahan dari bahasa C ke bahasa pemrograman Pascal harus menyamakan grammar C++ dan Pascal. Aspek yang biasanya harus ditinjau adalah tipe, variabel, deklarasi variabel, konstanta, struktur program, ekspresi, statement, dll. C++ ini sebenarnya memiliki sifat case sensitive sedangkan Pascal tidak, inilah yang akan memungkinkan penerjemahan untuk nama suatu objek C++ ke pascal bisa menimbulkan error.
Lex and Yacc
Program Lex ini memiliki fungsi yang dapat menghasilkan scanner, nantinya input yang akan diterima berupa spesifikasi token dari bahasa tipe data C++. Keuntungan dalam membuat scanner dan parser memakai kakas otomatis Lex and Yacc adalah lebih hemat waktu, tenaga, meminimalisir error dan lebih mempermudah dalam menangani error.
Code Generator
Code generator ini merupakan subsistem yang memiliki beberapa komponen, yaitu sekumpulan struktur data dan subrutin yang dipakai secara intensif dalam menerjemahkan kode dan menulis hasil terjemahan ke dalam keluaran. Struktur data yang paling penting nantinya dibagi menjadi dua, yaitu AST dan tabel simbol.
Tabel simbol mempunyai fungsi untuk melakukan penyimpanan seluruh referensi objek pada kode sumber ke dalam memori. Tabel simbol yang akan diimplementasikan pada tugas akhirnya tersebut berupa tabel simbol yang berbasis fungsi hash.
Program C2P
C2P ini merupakan prototipe dalam pemrograman translator yang akan menerjemahkan berkas yang berisi kode sumber pada pemrograman dalam bahasa C++ ke tipe data dalam Pascal. Program C2P akan memakai keseluruhan komponen dari pemrograman translator ya g sudah disebutkan diatas.
C2P akan menangani preprocessing dengan menggunakan program eksternal berupa GNU CPP. Pemanggilan program eksternal ini akan dilakukan dengan memakai antar muka sistem UNIX, seperti Fork( ). Agar bisa menerjemahkan struktur bahasa pemrograman Pascal secara utuh, C2P akan memecah proses ke dalam beberapa tahap.
Pada masing-masing tahap akan melakukan interaksi dengan tahapan yang sebelumnya melalui temporary file. Tetapi tidak semua aspek dalam bahasa C++ akan diterjemahkan. Misalnya seperti fitur kompleks pointer to pointer dan pointer to function tidak akan diterjemahkan.
Kemiripan antara C++ dan tipe data dalam Pascal memang memungkinkan kode C diterjemahkan ke dalam Pascal secara fully translation, dengan memanfaatkan fitur kompilator Pascal modern. Sebenarnya permasalahan paling sulit itu terdapat pada proses translasi ketika program harus melakukan generate nama yang baru untuk digunakan sebagai simbol yang mengalami konflik.
Tag : Bahasa Pemrograman Pascal, Bahasa C++, Bahasa Pascal, Translator Kode Pemrograman