Syntax Analyzer (Parser) - Dasar
Syntax Analyzer (Parser) - Dasar
– Presedence Parser
Parsing digolongkan menjadi:
• Top-Down
Penelusuran dari root ke leaf atau
dari simbol awal ke simbol terminal
metode ini meliputi:
• Backtrack/backup : Brute Force
• No backtrack : Recursive Descent
Parser
Ambiguitas
• Sebuah kalimat adalah ambigu jika terdapat lebih dari
satu pohon sintaks yang dapat dibentuk oleh kalimat
tersebut.
• Secara gramatikal kalimat ambigu dihasilkan oleh
grammar ambigu yaitu grammar yang mengandung
beberapa produksi dengan ruas kiri yang sama
sedangkan dua atau lebih ruas kanan-nya mempunyai
string terkiri (prefix) yang sama.
• Contoh :
S if E then Sif E then S else S,
Dimana S : statement dan E : expression,
Ambiguitas Lanj.
• Grammar ambigu dapat diperbaiki dengan
metoda faktorisasi kiri (left factorization).
Prefix dari produksi di atas adalah sentensial if
E then S sehingga faktorisasi akan
menghasilkan :
S if E then S T, T else S
{ : simbol hampa}
Contoh Lain Ambiguity
• Diketahui grammar G = {S SOSA , O *+,
A 012...9}
Kalimat : 2*3+7 mempunyai dua pohon sintaks berikut :
S S
S O S S O S
A * S O S S O S + A
2 A + A A * A 7
3 7 2 3
Rekursif Kiri (Left Recursion)
• Sebuah grammar dikatakan bersifat rekursi kiri
jika untuk sebuah simbol nonterminal A
terdapat derivasi non hampa A A.
Produksi berbentuk A A disebut produksi
yang bersifat immediate left recursion.
Rekursif Kiri (Left Recursion)
• Rekursi kiri dapat dieliminir dengan
transformasi berikut :
A A transformasi menjadi A R, R R
• Transformasi ini dapat diperluas sehingga :
A A 1A2 ... An 1 2... n
bertransformasi menjadi :
A 1R2R...n R, R 1 R2 R..n R
Contoh
• Diketahui :
E E + T T, T T * F F, F (E) I
yang jelas mengandung immediate left
recursion untuk simbol E dan T.
• Transformasi menghasilkan :
E TRE, RE +TRE , T FRT, R *FRT ,
F (E) I
Tugas
• Diketahui : S Aab, A AcS d