Lompat ke konten Lompat ke sidebar Lompat ke footer

Analisis Sintaktik

Sintak adalah susunan kalimat dan aturan-aturan dalam membentuk kalimat disebut Grammar. Penganalisis sintak dalam bidang kompilasi sering disebut sebagai Parser.

Untuk menganalisis kalimat biasanya digunakan bantuan parse-tree.

Contoh: Perhatikan kalimat berikut ini : "The dog gnawed the bone".


Kalimat tersebut disusun dalam bentuk parse-tree berikut ini:

Analisis Sintaktik


Pada node paling atas (root) ditulis sentence (kalimat), karena analisis sintak adalah menganalisis kalimat. Pada contoh diatas kalimatnya dalam bahasa Inggris (bahasa alami), tetapi cara ini juga digunakan untuk bahasa pemrograman (kompiler).

Kalimat ada bermacam-macam susunannya. Kalimat yang dicontohkan di atas terdiri 2 bagian, yaitu <noun-phrase> dan <verb-phrase>.

Cara di atas juga dapat dinyatakan dengan cara sebagai berikut:

<sentence>                <noun phrase> <verb phrase>
<noun phrase>          <article><noun>
<verb phrase>           <verb><noun phrase>
<noun>                       dog.cat.bone.sentence, verb, ...
<article>                    the, a, am
<verb>                   
    contains, gnawed, saw, walks, ...

Cara penulisan di atas disebut sebagai Production rules.

Contoh dalam bahasa pemrograman, perhatikan pernyataan berikut ini a * b + c. Pernyataan ini disusun dalam parse-tree berikut ini:


Dalam bentuk Production rule:

<expression>    ->    <expression> * <expression>
<expression>    ->    <expression> + <expression>
<expression>    ->    a,b,c, ... 

Kata atau simbol nyata pada kalimat tersebut disebut Terminal symbol (Pada contoh di atas; a, b, c, *, +), sedangkan yang berada dalam tanda <> disebut Non-terminal symbol karena masih dapat dipecah lagi menjadi simbol yang nyata.


Definisi Formal dari Grammar

Grammar (G) merupakan fungsi dari (T,N,S,R), masing-masing adalah:

T    :     himpunan terminal symbol     dog,gnawed, a, +, ...
N    :    himpunan non-terminal symbol <sentence>,<expression>, ...
            N dan T adalah himpunan disdjoint (tak bersinggungan)

S    :    simbol awal (starting symbol) yang unik <sentence> S ε N
R    :    himpunan produksi dengan bentuk α  βα dan β adalah kumpulan non-terminal dan terminal symbol.


Produksi adalah setiap kejadian di mana string bagian kiri (α) dapat digantikan oleh string bagian kanan (β).

Context-Free Grammar adalah grammar yang berbentuk α → β di mana α adalah non terminal tunggal.

Lambang-lambang yang digunakan dalam mendefinisikan kalimat menggunakan aturan Chomsky, yaitu non terminal dinyatakan dengan hutuf besar (A, B, C, dst), terminal dinyatakan dengan huruf kecil bagian awal (a,b,c, dst), sederet terminal dinyatakan dengan huruf kecil bagian akhir (w, x,y, dst.), dan campuran antara non terminal dan terminal (sentential form) dinyatakan dengah hutuf latin (α, β, γ, dst.).

Cara lain untuk mendefinisikan kalimat adalah dengan BNF (Backus Naur Form). 

Aturan ini digunakan untuk grammar yang bersifat Context-Free. Simbol-simbol yang digunakan adalah Non terminal ditulis dengan <>, tanda := sama dengan tanda panah, pengulangan dinyatakan dalam tanda {}, tanda [] dinyatakan pilihan (optional) bila ada beberapa produksi dengan bagian kiri yang sama seperti misalnya:

<expression> ::= <expression> + <expression>
<expression> ::= (<expression>)
<expression> ::= i dimana i = identifier = terminal symbol

Dapat ditulis:
<expreesion>::=<expression>+<expression> | <expression>| i

Contoh lain dalam Turbo Pascal. Deklarasi variabel dengan var bila dinyatakan dalam BNF menjadi seperti berikut :

<var-declaration-part> ::= var <var-declaration> {; <var-declaration};

Tanda { } adalah pengulangan atau dikenal dengan Kleene Closure.

Untuk menyatakan integer, ditulis:
<integer-contant> ::= [+|-] <digit>{<digit>}



Bahasan Lanjut : Parse-Tree