monaadilised parserid
play

Monaadilised parserid Sntaksanals ja parserid Parseri lesandeks on: - PowerPoint PPT Presentation

Monaadilised parserid Sntaksanals ja parserid Parseri lesandeks on: kontrollida kas sisendstring on sntaktiliselt korrektne; konstrueerida sisendstringile vastav AST. Parserite soovitavad omadused: BNF lhedane esitus;


  1. Monaadilised parserid Süntaksanalüüs ja parserid Parseri ülesandeks on: – kontrollida kas sisendstring on süntaktiliselt korrektne; – konstrueerida sisendstringile vastav AST. Parserite soovitavad omadused: – BNF lähedane esitus; – parserite konstrueerimine olemasolevatest parseritest; – mittedetermineeritud grammatikate kasutamine; – kontekstist sõltuvate keelte äratundmine.

  2. Monaadilised parserid Parserite tüüp newtype P❛rs❡r ❛ ❂ P ✭ ❙tr✐♥❣ ✦ ❬✭ ❛ ❀ ❙tr✐♥❣ ✮❪✮ r✉♥P ✿✿ P❛rs❡r ❛ ✦ ❙tr✐♥❣ ✦ ❬✭ ❛ ❀ ❙tr✐♥❣ ✮❪ r✉♥P ✭ P ♣ ✮ ❂ ♣ Parserite monaad instance ▼♦♥❛❞ P❛rs❡r where r❡t✉r♥ ❛ ❂ P ✩ ✕ ❝s ✦ ❬✭ ❛ ❀ ❝s ✮❪ ♣ ❃ ❃ ❂ ❢ ❂ P ✩ ✕ ❝s ✦ ❝♦♥❝❛t ❬ r✉♥P ✭ ❢ ❛ ✮ ❝s ✵ ❥ ✭ ❛ ❀ ❝s ✵ ✮ ✥ r✉♥P ♣ ❝s ❪

  3. Monaadilised parserid Primitiivparserid instance ▼♦♥❛❞P❧✉s P❛rs❡r where ❂ P ✩ ✕ ❝s ✦ ❬ ❪ ♠③❡r♦ ♠♣❧✉s ♣ q ❂ P ✩ ✕ ❝s ✦ r✉♥P ♣ ❝s ✰ ✰ r✉♥P q ❝s ✭ ❁ ❥ ❃ ✮ ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❛ ✦ P❛rs❡r ❛ ♣ ❁ ❥ ❃ q ❂ ♣ ❵ ♠♣❧✉s ❵ q ✿✿ P❛rs❡r ❈❤❛r ✐t❡♠ ✐t❡♠ ❂ P ✩ ✕ ❝s ✦ ❬✭ ❤❡❛❞ ❝s ❀ t❛✐❧ ❝s ✮ ❥ ♥♦t ✭ ♥✉❧❧ ❝s ✮❪

  4. Monaadilised parserid Elementaarparserid ✿✿ ✭ ❈❤❛r ✦ ❇♦♦❧ ✮ ✦ P❛rs❡r ❈❤❛r s❛t ❂ do ❢ ❝ ✥ ✐t❡♠ ❀ if ♣ ❝ then r❡t✉r♥ ❝ else ♠③❡r♦ ❣ s❛t ♣ ✿✿ ❈❤❛r ✦ P❛rs❡r ❈❤❛r ❝❤❛r ❝❤❛r ❝ ❂ s❛t ✭ ❝ ✑ ✮ Näide data ❚r❡❡ ❂ ◆✐❧ ❥ ❇✐♥ ❚r❡❡ ❚r❡❡ ♣❛r❡♥s ✿✿ P❛rs❡r ❚r❡❡ ♣❛r❡♥s ❂ do ❝❤❛r ’(’ t✶ ✥ ♣❛r❡♥s ❝❤❛r ’)’ t✷ ✥ ♣❛r❡♥s r❡t✉r♥ ✭ ❇✐♥ t✶ t✷ ✮ ❁ ❥ ❃ r❡t✉r♥ ◆✐❧

  5. Monaadilised parserid Iteratsioon ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❬ ❛ ❪ ♠❛♥② ♠❛♥② ♣ ❂ ♠❛♥②✶ ♣ ❁ ❥ ❃ r❡t✉r♥ ❬ ❪ ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❬ ❛ ❪ ♠❛♥②✶ ♠❛♥②✶ ♣ ❂ do ❢ ❛ ✥ ♣ ❀ ❛s ✥ ♠❛♥② ♣ ❀ r❡t✉r♥ ✭ ❛ ✿ ❛s ✮ ❣

  6. Lihtsaid parsereid Võtmesõnad ✿✿ ❙tr✐♥❣ ✦ P❛rs❡r ❙tr✐♥❣ str✐♥❣ str✐♥❣ "" ❂ r❡t✉r♥ "" str✐♥❣ ✭ ❝ ✿ ❝s ✮ ❂ do ❢ ❝❤❛r ❝ ❀ str✐♥❣ ❝s ❀ r❡t✉r♥ ✭ ❝ ✿ ❝s ✮ ❣ Identifikaatorid ✐❞❡♥t✐☞❡r ✿✿ P❛rs❡r ❙tr✐♥❣ ✐❞❡♥t✐☞❡r ❂ do ❝ ✥ ❧♦✇❡r ❝s ✥ ♠❛♥② ❛❧♣❤❛♥✉♠ r❡t✉r♥ ✭ ❝ ✿ ❝s ✮

  7. Lihtsaid parsereid Naturaalarvud ♥❛t✉r❛❧ ✿✿ P❛rs❡r ■♥t ♥❛t✉r❛❧ ❂ do ❞s ✥ ♠❛♥②✶ ❞✐❣✐t r❡t✉r♥ ✭ ❢♦❧❞❧✶ ✭ ✕ ❛ ❜ ✦ ✶✵ ✄ ❛ ✰ ❜ ✮ ❞s ✮ ❞✐❣✐t ✿✿ P❛rs❡r ■♥t ❂ do ❝ ✥ s❛t ✐s❉✐❣✐t ❞✐❣✐t r❡t✉r♥ ✭ ♦r❞ ❝ � ♦r❞ ’0’ ✮ Täisarvud ✐♥t❡❣❡r ✿✿ P❛rs❡r ■♥t ✐♥t❡❣❡r ❂ do ❢ ❝❤❛r ’-’ ❀ ♥ ✥ ♥❛t✉r❛❧ ❀ r❡t✉r♥ ✭ � ♥ ✮ ❣ ❁ ❥ ❃ ♥❛t✉r❛❧

  8. Lihtsaid parsereid Reaalarvud ✌♦❛t✐♥❣ ✿✿ P❛rs❡r ❉♦✉❜❧❡ ✌♦❛t✐♥❣ ❂ do ✐ ✥ ✐♥t❡❣❡r ❢ ✥ ❢r❛❝t✐♦♥ ❁ ❥ ❃ r❡t✉r♥ ✵ r❡t✉r♥ ✭ ❢r♦♠■♥t❡❣r❛❧ ✐ ✰ ❢ ✮ ❢r❛❝t✐♦♥ ✿✿ P❛rs❡r ❉♦✉❜❧❡ ❢r❛❝t✐♦♥ ❂ do ❝❤❛r ’.’ ❞s ✥ ♠❛♥②✶ ❞✐❣✐t r❡t✉r♥ ✭ ❢♦❧❞r ♦♣ ✵ ❞s ✮ where ❞ ❵ ♦♣ ❵ ① ❂ ✭ ① ✰ ❢r♦♠■♥t❡❣r❛❧ ❞ ✮ ❂ ✶✵

  9. Lihtsaid parsereid Tühisümbolid ✿✿ P❛rs❡r ❙tr✐♥❣ s♣❛❝❡ s♣❛❝❡ ❂ ♠❛♥② ✭ s❛t ✐s❙♣❛❝❡ ✮ ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❛ t♦❦❡♥ t♦❦❡♥ ♣ ❂ do ❢ ❛ ✥ ♣ ❀ s♣❛❝❡ ❀ r❡t✉r♥ ❛ ❣ ❦❡②❝ ❝ ❂ t♦❦❡♥ ✭ ❝❤❛r ❝ ✮ ❦❡②✇ ❝s ❂ t♦❦❡♥ ✭ str✐♥❣ ❝s ✮ ❂ t♦❦❡♥ ✐❞❡♥t✐☞❡r ✐❞❡♥t ♥❛t ❂ t♦❦❡♥ ♥❛t✉r❛❧ ❂ t♦❦❡♥ ✐♥t❡❣❡r ✐♥t ✌♦❛t ❂ t♦❦❡♥ ✌♦❛t✐♥❣

  10. Parserite transformaatorid Sulud ♣❛❝❦ ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❜ ✦ P❛rs❡r ❝ ✦ P❛rs❡r ❜ ♣❛❝❦ s✶ ♣ s✷ ❂ do ❢ s✶ ❀ ① ✥ ♣ ❀ s✷ ❀ r❡t✉r♥ ① ❣ Näide ♣❛r❡♥ ♣ ❂ ♣❛❝❦ ✭ ❦❡②❝ ’(’ ✮ ♣ ✭ ❦❡②❝ ’)’ ✮ ❜r❛❝❦ ♣ ❂ ♣❛❝❦ ✭ ❦❡②❝ ’[’ ✮ ♣ ✭ ❦❡②❝ ’]’ ✮ ❜❧♦❝❦ ♣ ❂ ♣❛❝❦ ✭ ❦❡②✇ "begin" ✮ ♣ ✭ ❦❡②✇ "end" ✮

  11. Parserite transformaatorid Eraldajaga jadad s❡♣❜② ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❜ ✦ P❛rs❡r ❬ ❛ ❪ ♣ ❵ s❡♣❜② ❵ s❡♣ ❂ ✭ ♣ ❵ s❡♣❜②✶ ❵ s❡♣ ✮ ❁ ❥ ❃ r❡t✉r♥ ❬ ❪ s❡♣❜②✶ ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ❜ ✦ P❛rs❡r ❬ ❛ ❪ ♣ ❵ s❡♣❜②✶ ❵ s❡♣ ❂ do ❛ ✥ ♣ ❛s ✥ ♠❛♥② ✭ s❡♣ ❃ ❃ ♣ ✮ r❡t✉r♥ ✭ ❛ ✿ ❛s ✮ Näide ❝♦♠♠❛▲✐st ♣ ❂ s❡♣❜② ♣ ✭ ❦❡②✇ "," ✮ ❂ s❡♣❜② ♣ ✭ ❦❡②✇ ";" ✮ s❡♠✐❝▲✐st ♣

  12. Aritmeetilised avaldised Grammatika ❡①♣r ❂ ✐♥t ❥ ❡①♣r ✰ ❡①♣r ❥ ❡①♣r � ❡①♣r ❥ ❡①♣r ✄ ❡①♣r ❥ ❡①♣r ❂ ❡①♣r ❥ ❡①♣r ^ ❡①♣r ❥ ✭ ❡①♣r ✮ Abstraktne süntaksipuu data ❊①♣r ❂ ❈♦♥ ■♥t ❥ ❊①♣r ✿✰✿ ❊①♣r ❥ ❊①♣r ✿ � ✿ ❊①♣r ❥ ❊①♣r ✿ ✄ ✿ ❊①♣r ❥ ❊①♣r ✿ ❂ ✿ ❊①♣r ❥ ❊①♣r ✿ ^ ✿ ❊①♣r

  13. Aritmeetilised avaldised Parser ver. 0 ❡①♣r✵ ❂ do ❢ ❡✵ ✥ ❡①♣r✵ ❀ ❦❡②❝ ’+’ ❀ ❡✶ ✥ ❡①♣r✵ ❀ r❡t✉r♥ ✭ ❡✵ ✿✰✿ ❡✶ ✮ ❣ ❁ ❥ ❃ do ❢ ❡✵ ✥ ❡①♣r✵ ❀ ❦❡②❝ ’-’ ❀ ❡✶ ✥ ❡①♣r✵ ❀ r❡t✉r♥ ✭ ❡✵ ✿ � ✿ ❡✶ ✮ ❣ ❁ ❥ ❃ ✿✿✿ ❁ ❥ ❃ do ❢ ❡✵ ✥ ❡①♣r✵ ❀ ❦❡②❝ ’^’ ❀ ❡✶ ✥ ❡①♣r✵ ❀ r❡t✉r♥ ✭ ❡✵ ✿ ^ ✿ ❡✶ ✮ ❣ ❁ ❥ ❃ do ❢ ✐ ✥ ✐♥t ❀ r❡t✉r♥ ✭ ❈♦♥ ✐ ✮ ❣ ❁ ❥ ❃ ♣❛r❡♥ ❡①♣r✵ NB! Ei tööta kuna grammatika on vasakrekursiivne!!

  14. Aritmeetilised avaldised Parser ver. 1 ❡①♣r✶ ❂ do ❛ ✥ ❛t♦♠✶ ♦♣ ✥ ♦♣❡r✶ ✥ ❡①♣r✶ ❡ r❡t✉r♥ ✭ ❛ ❵ ♦♣ ❵ ❡ ✮ ❁ ❥ ❃ ❛t♦♠✶ ♦♣❡r✶ ❂ ✭ ❦❡②❝ ’+’ ❃ ❃ r❡t✉r♥ ✭✿✰✿✮✮ ❁ ❥ ❃ ✭ ❦❡②❝ ’-’ ❃ ❃ r❡t✉r♥ ✭✿ � ✿✮✮ ❁ ❥ ❃ ✭ ❦❡②❝ ’*’ ❃ ❃ r❡t✉r♥ ✭✿ ✄ ✿✮✮ ❁ ❥ ❃ ✭ ❦❡②❝ ’/’ ❃ ❃ r❡t✉r♥ ✭✿ ❂ ✿✮✮ ❁ ❥ ❃ ✭ ❦❡②❝ ’^’ ❃ ❃ r❡t✉r♥ ✭✿ ^ ✿✮✮ ❛t♦♠✶ ❂ do ❢ ✐ ✥ ✐♥t ❀ r❡t✉r♥ ✭ ❈♦♥ ✐ ✮ ❣ ❁ ❥ ❃ ♣❛r❡♥ ❡①♣r✶

  15. Parserite transformaatorid Eraldajaga jadad ❝❤❛✐♥❧ ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ✭ ❛ ✦ ❛ ✦ ❛ ✮ ✦ P❛rs❡r ❛ ❝❤❛✐♥❧ ♣ s ❂ do ✥ ♣ ① ②s ✥ ♠❛♥② ✭ do ❢ ♦♣ ✥ s ❀ ② ✥ ♣ ❀ r❡t✉r♥ ✭ ♦♣ ❀ ② ✮ ❣ ✮ r❡t✉r♥ ✭ ❢♦❧❞❧ ✭ ✕ ❛ ✭ ♦♣ ❀ ② ✮ ✦ ❛ ❵ ♦♣ ❵ ② ✮ ① ②s ✮ ❝❤❛✐♥r ✿✿ P❛rs❡r ❛ ✦ P❛rs❡r ✭ ❛ ✦ ❛ ✦ ❛ ✮ ✦ P❛rs❡r ❛ ❝❤❛✐♥r ♣ s ❂ do ②s ✥ ♠❛♥② ✭ do ❢ ② ✥ ♣ ❀ ♦♣ ✥ s ❀ r❡t✉r♥ ✭ ② ❀ ♦♣ ✮ ❣ ✮ ✥ ♣ ① r❡t✉r♥ ✭ ❢♦❧❞r ✭ ✕ ✭ ② ❀ ♦♣ ✮ ❜ ✦ ② ❵ ♦♣ ❵ ❜ ✮ ① ②s ✮

  16. Aritmeetilised avaldised Parser ver. 2 ❡①♣r✷ ✿✿ P❛rs❡r ❊①♣r ❡①♣r✷ ❂ ❝❤❛✐♥❧ t❡r♠✷ ✭ ✭ ❦❡②❝ ’+’ ❃ ❃ r❡t✉r♥ ✭✿✰✿✮✮ ❁ ❥ ❃ ✭ ❦❡②❝ ’-’ ❃ ❃ r❡t✉r♥ ✭✿ � ✿✮✮✮ t❡r♠✷ ✿✿ P❛rs❡r ❊①♣r t❡r♠✷ ❂ ❝❤❛✐♥❧ ❢❛❝t✷ ✭ ✭ ❦❡②❝ ’*’ ❃ ❃ r❡t✉r♥ ✭✿ ✄ ✿✮✮ ❁ ❥ ❃ ✭ ❦❡②❝ ’/’ ❃ ❃ r❡t✉r♥ ✭✿ ❂ ✿✮✮✮ ❢❛❝t✷ ✿✿ P❛rs❡r ❊①♣r ❂ ❝❤❛✐♥r ❛t♦♠✷ ✭ ❦❡②❝ ’^’ ❃ ❃ r❡t✉r♥ ✭✿ ^ ✿✮✮ ❢❛❝t✷ ❛t♦♠✷ ✿✿ P❛rs❡r ❊①♣r ❛t♦♠✷ ❂ do ❢ ✐ ✥ ✐♥t ❀ r❡t✉r♥ ✭ ❈♦♥ ✐ ✮ ❣ ❁ ❥ ❃ ♣❛r❡♥ ❡①♣r✷

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend