Tugas Analisis Program

Nama            : Muhammad khatami

NIM             : 202131060

Kelompok    : 2

Kelas            : A


Potongan Program:

#include <iostream>

 

int main() {

    int arr[5] = {1, 2, 3, 4, 5};

 

    for (int i = 0; i < 5; i++) {

        std::cout << "Element " << i << ": " << arr[i] << std::endl;

    }

 

    return 0;

}


 Analisis leksikal:

Ananlisis Leksikal (lexical analysis) atau juga disebut dengan scanning adalah
proses yang dilakukan dalam kompilasi sebuah program untuk mengubah urutan
karakter yang dimasukkan oleh pengguna menjadi token-token yang memiliki
makna dalam bahasa pemrograman yang digunakan. Analisis leksikal merupakan
bagian dari proses kompilasi yang bertujuan untuk mengidentifikasi dan
mengklasifikasikan setiap kata dalam program menjadi token atau simbol yang
mewakili makna tertentu.


Token-token yang ada dalam kode sumber ini adalah:

#include

<iostream>

int

main

(

)

{

int

arr

[

5

]

=

{

1

,

2

,

3

,

4

,

5

}

;

for

(

int

i

=

0

;

i

<

5

;

i++

)

{

std

::

cout

<<

"Element"

<<

i

<<

": "

<<

arr

[

i

]

<<

std

::

endl

;

}

return

0

;

Analisis sintaks:


Dalam analisis sintaks, kita memeriksa struktur dan urutan token untuk memastikan bahwa kode tersebut membentuk pernyataan yang valid dalam bahasa pemrograman.

Analisis sintaks dari kode tersebut adalah sebagai berikut:

Pernyataan global: #include <iostream>

Fungsi utama: int main() { ... }

Deklarasi array: int 

arr[5] = {1, 2, 3, 4, 5};

Perulangan for:

Inisialisasi: int i = 0

Kondisi: i < 5

Pernyataan iterasi: i++

Blok perulangan: { ... }

Pernyataan output: std::cout << ... << std::endl;

Pernyataan return: return 0;


Analisi Automata

Automata theory adalah sebuah cabang dalam teori komputasi yang  mempelajari tentang mesin abstrak yang dapat menerima masukan dan  menghasilkan keluaran. Otomata adalah model matematis yang digunakan  untuk memodelkan sistem yang dapat melakukan pemrosesan informasi  secara otomatis.



Pohon urai:

  1. Tokenisasi: Tahap pertama dalam teknik kompilasi adalah analisis leksikal yang  mengubah sumber program menjadi serangkaian token. Setiap token kemudian diberikan  label dan diurutkan sesuai dengan aturan sintaksis bahasa pemrograman yang digunakan.
  2. Parsing: Tahap selanjutnya adalah analisis sintaksis yang melakukan parsing pada  urutan token. Parsing dilakukan dengan memeriksa apakah urutan token yang ditemukan memenuhi aturan sintaksis bahasa pemrograman yang digunakan. Jika urutan token  tersebut valid, maka parser akan membangun pohon urai.
  1. Membangun pohon urai: Pohon urai dibangun dari token-token yang valid dan memenuhi  aturan sintaksis. Pohon urai dibangun dengan menggunakan aturan sintaksis pada Bahasa pemrograman yang digunakan. Pohon urai memiliki akar yang mewakili program utama dan  cabang-cabang yang merepresentasikan struktur sintaksis dari program.

  1. Verifikasi sintaksis: Setelah pohon urai dibangun, tahap selanjutnya adalah memeriksa  kebenaran sintaksis dari program. Hal ini dilakukan dengan memeriksa struktur sintaksis dari pohon urai apakah sesuai dengan aturan sintaksis bahasa pemrograman  yang digunakan.


class Node:

def _init_(self, data):  self.left = None  self.right = None  self.data = data

def PrintTree(self):  print(self.data)

root = Node(10)  root.PrintTree()


Pohon urai adalah representasi visual dari struktur kode yang menunjukkan hierarki dan hubungan antara elemen-elemen.

Berikut adalah pohon urai untuk contoh kode tersebut:


       main()

         |

         |

    +----+-----+

    |          |

 int arr[5]  for(...)

               |

          +----+-----+

          |          |

         i=0   i<5  i++

                     |

               +-----+-----+

               |           |

Komentar