1 / 22

Syntax Analyzer (Parser) - Dasar

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

Download Presentation

Syntax Analyzer (Parser) - Dasar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Syntax Analyzer (Parser) - Dasar SigitWidiyanto, ST., MMSi., MSc

  2. 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

  3. Syntax Analyzer • Maka Syntax analyserseringdisebutdengan parser. • Pohonsintaks yang dihasilkandigunakanuntuk semantics analyser yang bertugasuntukmenentukan ‘maksud’ dari program sumber. • Misalnya operator penjumlahanmaka semantics analyserakanmengambilaksiapa yang harusdilakukan

  4. Posisi Parser dalamKompilator

  5. 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.

  6. 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.

  7. Hal yang Perludiperhatikandalam CFG • Polaumum CFG : A , A VN,  (VNVT )* • Analisissintaks: Penelusuransebuahkalimat (sentensial) sampaipadasimbolawal grammar. Analisissintaksdapatdilakukanmelaluiderivasiatauparsing. Penelusuranmelaluiparsingmenghasilkanpohonsintaks.

  8. 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

  9. 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

  10. Proses Penurunan (Derivasi) Penurunankiri : S => aAS => aSbAS => aabAS => aaabbaS => aabbaa Penurunankanan : S => aAS => aAa => aSbAa => aSbbaa => aabbaa

  11. Diketahui:S -> aB | bA A -> a | aS |bAA B -> b | bS | aBB Penurunanuntuk string aaabbabbba Berikansolusiuntukderivasidananalisissintaksnya. Latihan Parsing

  12. Misalnya:S -> aB | bA A -> a | aS |bAA B -> b | bS | aBB Penurunanuntuk string aaabbabbba Dalamhaliniperluuntukmelakukanpercobaanpemilihanaturanproduksi yang bisamendapatkansolusi. Solusi

  13. Contoh Parsing Lanj. • Diketahui grammar G = {I  HI HIA, H abc...z, A  012...9} dengan I adalahsimbolawal. • Bagaimanakahanalisasintaksuntukkalimatx23b.

  14. Solusi Diketahui grammar G = {I  HI HIA, H abc...z, A  012...9} denganI adalahsimbolawal. Bagaimanakahanalisasintaksuntukkalimatx23b.

  15. 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

  16. Ambiguitas • Sebuahkalimatadalahambigujikaterdapatlebihdarisatupohonsintaks yang dapatdibentukolehkalimattersebut. • Secaragramatikalkalimatambigudihasilkanolehgrammar ambiguyaitu grammar yang mengandungbeberapaproduksidenganruaskiri yangsamasedangkanduaataulebihruaskanan-nyamempunyaistring terkiri (prefix) yang sama. • Contoh: S  if E then Sif E then S else S, Dimana S : statementdan E : expression,

  17. AmbiguitasLanj. • Grammar ambigudapatdiperbaikidenganmetodafaktorisasikiri (left factorization). Prefix dariproduksi di atasadalahsentensialif E then S sehinggafaktorisasiakanmenghasilkan : S  if E then S T, T else S { : simbolhampa}

  18. Diketahui grammar G = {S  SOSA , O  *+, A  012...9} Kalimat : 2*3+7 mempunyaiduapohonsintaksberikut : Contoh Lain Ambiguity

  19. RekursifKiri(Left Recursion) • Sebuah grammar dikatakanbersifatrekursikirijikauntuksebuahsimbol nonterminal A terdapatderivasi non hampa A  A. Produksiberbentuk A  Adisebutproduksi yang bersifatimmediate left recursion.

  20. RekursifKiri(Left Recursion) • Rekursikiridapatdieliminirdengantransformasiberikut : A AtransformasimenjadiA R, RR • Transformasiinidapatdiperluassehingga : A A1A2... An12...n bertransformasimenjadi : A 1R2R...nR, R1R2R..nR

  21. Contoh • Diketahui : E  E + T T, T  T * F  F, F  (E) I yang jelasmengandungimmediate left recursion untuksimbolEdanT. • Transformasimenghasilkan : E TRE, RE +TRE, TFRT, R *FRT , F  (E)I

  22. Tugas • Diketahui: S Aab, AAcS d

More Related