260 likes | 417 Views
Syntax Analyzer (Parser) - Dasar. Sigit Widiyanto , ST., MMSi ., MSc. Syntax Analyzer. Pengelompokan token-token kedalam class syntax ( bentuk syntax), seperti procedure, statement dan expression Grammar : sekumpulan aturan-aturan , untuk mendefinisikan bahasa sumber
E N D
Syntax Analyzer (Parser) - Dasar SigitWidiyanto, ST., MMSi., MSc
Syntax Analyzer • Pengelompokan token-token kedalam class syntax (bentuk syntax), sepertiprocedure, statement dan expression • Grammar : sekumpulanaturan-aturan, untukmendefinisikanbahasasumber • Grammar dipakaioleh syntax analyseruntukmenentukanstrukturdari program sumber • Proses pen-deteksian-nya (pengenalan token) disebutdengan parsing
Syntax Analyzer • Maka Syntax analyserseringdisebutdengan parser. • Pohonsintaks yang dihasilkandigunakanuntuk semantics analyser yang bertugasuntukmenentukan ‘maksud’ dari program sumber. • Misalnya operator penjumlahanmaka semantics analyserakanmengambilaksiapa yang harusdilakukan
Ketentuandalam Parser • Deretan token : dihasilkanolehPenganalisaLeksikal (Scanner) • Pohon parse : suatupohondimanaakarnya (root) adalahsimbolawal grammar (starting symbol), setiap node dalam (inner node) adalahsimbol nonterminal, dandaunnya (leaf) dibacadarikirikekananadalahderetan token masukan. Pohon parse inidibentukberdasarkanaturan grammar yang ditetapkanuntukparser. • Kesalahansintaks : terjadijikapoladeretan token tidakmemenuhiketentuanpola yang telahditentukan grammar untukparser.
Hal yang Penting!!! • Scanner: Regular Grammar (RG) • Parser: Grammar Context Free (CFG). • Bagi RG (scanner) sebuah token (kecualireserve word) adalahsebuahkalimatdimanasetiapkarakterpembentuk token tersebutadalahsimbol terminal. • Sebaliknyabagi CFG (parser) sebuah token adalahsebuahsimbol terminal dimanasederetantertentu token akanmembentuksebuahkalimat.
Hal yang Perludiperhatikandalam CFG • Polaumum CFG : A , A VN, (VNVT )* • Analisissintaks: Penelusuransebuahkalimat (sentensial) sampaipadasimbolawal grammar. Analisissintaksdapatdilakukanmelaluiderivasiatauparsing. Penelusuranmelaluiparsingmenghasilkanpohonsintaks.
Pohonsintaks/ Pohonpenurunan (syntax tree/ parse tree) begunauntukmenggambarkanbagaimanamemperolehsuatustring dengancaramenurunkansimbol-simbol variable menjadisimbol-simbol terminal. Misalnya: S AB A aA | a B bB | B Penurunanuntukmenhasilkan string aabbb Syntax tree
Parsing atau Proses Penurunan Parsing dapatdilakukandengancara : • Penurunanterkiri (leftmost derivation) : simbol variable yang paling kiriditurunkan (tuntas) dahulu • Penurunanterkanan (rightmost derivation): variable yang paling kananditurunkan (tuntas) dahulu • Misalkanterdapatingindihasilkan string aabbaadari Context free language: S a AS | a, A SbA | ba
Proses Penurunan (Derivasi) Penurunankiri : S => aAS => aSbAS => aabAS => aaabbaS => aabbaa Penurunankanan : S => aAS => aAa => aSbAa => aSbbaa => aabbaa
Diketahui:S -> aB | bA A -> a | aS |bAA B -> b | bS | aBB Penurunanuntuk string aaabbabbba Berikansolusiuntukderivasidananalisissintaksnya. Latihan Parsing
Misalnya:S -> aB | bA A -> a | aS |bAA B -> b | bS | aBB Penurunanuntuk string aaabbabbba Dalamhaliniperluuntukmelakukanpercobaanpemilihanaturanproduksi yang bisamendapatkansolusi. Solusi
Contoh Parsing Lanj. • Diketahui grammar G = {I HI HIA, H abc...z, A 012...9} dengan I adalahsimbolawal. • Bagaimanakahanalisasintaksuntukkalimatx23b.
Solusi Diketahui grammar G = {I HI HIA, H abc...z, A 012...9} denganI adalahsimbolawal. Bagaimanakahanalisasintaksuntukkalimatx23b.
Metode Parsing Perlumemperhatikan 3 hal: • WaktuEksekusi • PenangananKesalahan • PenangananKode Parsing digolongkanmenjadi: • Top-Down Penelusurandariroot ke leaf ataudarisimbolawalkesimbol terminal metodeinimeliputi: • Backtrack/backup : Brute Force • No backtrack : Recursive Descent Parser • Bottom-Up Metodeinimelakukanpenelusurandarileaf keroot • LR(k) • Presedence Parser
Ambiguitas • Sebuahkalimatadalahambigujikaterdapatlebihdarisatupohonsintaks yang dapatdibentukolehkalimattersebut. • Secaragramatikalkalimatambigudihasilkanolehgrammar ambiguyaitu grammar yang mengandungbeberapaproduksidenganruaskiri yangsamasedangkanduaataulebihruaskanan-nyamempunyaistring terkiri (prefix) yang sama. • Contoh: S if E then Sif E then S else S, Dimana S : statementdan E : expression,
AmbiguitasLanj. • Grammar ambigudapatdiperbaikidenganmetodafaktorisasikiri (left factorization). Prefix dariproduksi di atasadalahsentensialif E then S sehinggafaktorisasiakanmenghasilkan : S if E then S T, T else S { : simbolhampa}
Diketahui grammar G = {S SOSA , O *+, A 012...9} Kalimat : 2*3+7 mempunyaiduapohonsintaksberikut : Contoh Lain Ambiguity
RekursifKiri(Left Recursion) • Sebuah grammar dikatakanbersifatrekursikirijikauntuksebuahsimbol nonterminal A terdapatderivasi non hampa A A. Produksiberbentuk A Adisebutproduksi yang bersifatimmediate left recursion.
RekursifKiri(Left Recursion) • Rekursikiridapatdieliminirdengantransformasiberikut : A AtransformasimenjadiA R, RR • Transformasiinidapatdiperluassehingga : A A1A2... An12...n bertransformasimenjadi : A 1R2R...nR, R1R2R..nR
Contoh • Diketahui : E E + T T, T T * F F, F (E) I yang jelasmengandungimmediate left recursion untuksimbolEdanT. • Transformasimenghasilkan : E TRE, RE +TRE, TFRT, R *FRT , F (E)I
Tugas • Diketahui: S Aab, AAcS d