Abstract:
Perangkat lunak dibangun dengan menulis kode sumber dalam satu bahasa pemrograman dan
melakukan kompilasi kode sumber tersebut menjadi program yang dapat dieksekusi. Banyak
bahasa pemrograman yang bermunculan untuk menjawab kebutuhan spesifik dalam pembuatan
program. Abstract Syntax Tree dan Control Flow Graph dapat membantu memahami bahasa
pemrograman yang ada.
Abstract Syntax Tree, atau AST, merepresentasikan struktur sintaks dari sebuah kode program.
Di dalam AST, tata cara penulisan kode program dapat diabaikan dan mengurangi
language barrier antarbahasa pemrograman. Control Flow Graph, atau CFG, merepresentasikan
alur eksekusi kode program. Kedua struktur data tersebut dapat dibangun dengan mengimplementasikan
dua proses dari sebuah compiler, yaitu analisis leksikal dan analisis sintaksis.
Dalam penelitian ini, dibangun sebuah perangkat lunak yang mampu membangun AST dan
CFG dari kode sumber yang ditulis dalam bahasa pemrograman Javascript (ECMAScript2015).
Perangkat lunak terdiri dari tiga komponen, yaitu komponen antarmuka, komponen tokenizer
untuk melakukan analisis leksikal, dan komponen parser untuk melakukan analisis sintaksis;
ketiganya dibangun dengan bahasa pemrograman Javascript dan Typescript menggunakan
Node.js dan Vue.js. Hasil AST yang dibangun divisualisasikan dalam dua bentuk yaitu dalam
notasi JSON dan dalam gambar visualisasi struktur data pohon, dan hasil CFG yang dibangun
akan divisualisasikan dalam gambar struktur data graf berarah.
Pengujian dilakukan untuk memastikan perangkat lunak membangun AST dan CFG dari kode
program Javascript. Unit test dilakukan menggunakan 69 kasus pengujian untuk memastikan
bahwa parser membangun AST yang benar untuk setiap sintaks, 10 kasus pengujian untuk
memastikan CFG yang dibangun adalah benar, dan 3 kasus pengujian untuk memastikan
visualisasi AST sesuai dengan struktur data AST yang dihasilkan. Berdasarkan hasil pengujian,
parser mampu membangun AST dan menampilkan visualisasi yang benar, tetapi parser belum
bisa menghasilkan CFG yang sempurna dalam beberapa kasus pengujian. Dengan pengujian yang
mengukur performa, didapatkan bahwa faktor banyaknya baris kode program dan kompleksitas
kode program mempengaruhi waktu eksekusi program. Semakin banyak baris kode program dan
semakin kompleks kode program, maka semakin lama waktu yang dibutuhkan untuk melakukan
parsing.