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 (β).
Bahasan Lanjut : Parse-Tree