1 / 62

Gramatikas un produkcijas

Gramatikas un produkcijas. Praktiskās valodas ir komplicētākas nekā iespējams definēt ar regulāro izteiksmju palīdzību. Gramatika – likumu kopa, kas ļauj aprakstīt valodas teikumus – noteikt tās A* apakškopas, kurās mēs esam ieinteresēti. Gramatika. Gramatika G={N,T,S,P}

africa
Download Presentation

Gramatikas un produkcijas

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. Gramatikas un produkcijas Praktiskās valodas ir komplicētākas nekā iespējams definēt ar regulāro izteiksmju palīdzību. Gramatika – likumu kopa, kas ļauj aprakstīt valodas teikumus – noteikt tās A* apakškopas, kurās mēs esam ieinteresēti.

  2. Gramatika Gramatika G={N,T,S,P} N – galīga neterminālo simbolu kopa. Netermināļi. T – galīga terminālo simbolu kopa. Termināļi. S – starta simbols (SN). Citur mērķis vai mērķa simbols. P – galīga produkcijas likumu (produkciju) kopa

  3. G={N,T,S,P} N – galīga neterminālo simbolu kopa T – galīga terminālo simbolu kopa S – starta simbols (SN) P – galīga produkcijas likumu (produkciju) kopa Teikums pilnībā sastāv no T simboliem. N apraksta sintakses klases, t.i. komponentes vai koncepcijas, kas tiek lietotas teikumu konstrukciju veidošanā. N un T apvienojums ir valodas vārdnīca V. V=NT N un T šķēlumam jābūt tukšai kopai. NT= Gramatika Alfabēts = visi termināļi, kas parādās produkcijās = ?

  4. Produkcijas (BNF pieraksts) Likumi, kas nosaka, kā veidot dotās valodas teikumus. Likumi, kas nosaka, kā viens teikums var tikt pārveidota par citu. Sauc arī par sintakses vienādojumiem. kreisā puse ::= definīcija Mēdz rakstīt arī kreisā puse  definīcija “definē kā”vai “producē”

  5. Korekti produkciju pieraksti kreisā_puse (NT)+ definīcija (NT)* Kreisajā pusē jābūt vismaz vienam neterminālajam simbolam: kreisā_puse N   Ja vairākas produkcijas, lietosim saīsināto pierakstu kreisā puse ::= definīcija1 kreisā puse ::= definīcija2 kreisā puse ::= definīcija1 | definīcija2

  6. Piemērs Neterminālos simbolus mēdz likt <> iekavās. Piemēram: <teikums>, <naturāls skaitlis> Gramatika, kas apraksta naturālus skaitļus trijnieku skaitīšanas sistēmā. N = {<cipars>,<skaitlis>} T = {0, 1, 2} S = <skaitlis> P = { <cipars> ::= 0|1|2 <skaitlis> ::= <cipars> <skaitlis> ::= <skaitlis><cipars> }

  7. Gramatiku saīsināts pieraksts Uzskaita tikai produkcijas, pie kam pirmā ir tā produkcija, kas atbilst starta simbolam. Gramatika, kas apraksta naturālus skaitļus trijnieku skaitīšanas sistēmā. N = {<cipars>,<skaitlis>} T = {0, 1, 2} S = <skaitlis> P = { <cipars> ::= 0|1|2 <skaitlis> ::= <cipars> <skaitlis> ::= <skaitlis><cipars> } <skaitlis> ::= <cipars> | <skaitlis><cipars> <cipars> ::= 0|1|2

  8. Cita tradicionāla vienošanās • Lielie burti – netermināļi • Mazie burti – termināļi S ::= 0|1|SS

  9. Piemērs • Gramatika :

  10. Piemērs Vienkārši nepaplašināti teikumi latviski (apakškopa). N = {<teikums>, <lietvārds>, <darbības vārds>} T = {Suns, Kaķis, Govs, rej, ņaud, mauj, . } S = <teikums> P = {<teikums> ::= <lietvārds><darbības vārds>. <lietvārds> ::= Suns|Kaķis|Govs <darbības vārds> ::= rej|ņaud|mauj } Govs rej. Zirgs mauj.  Suns rej  

  11. Sentenciālās formas • Apraksta ceļu kā no sākuma simbola tikt līdz teikumam, kurā ir tikai terminālie simboli. •  un  ir divi teikumi, kas sastāv no 0 vai vairāk netermināļiem un/vai termināļiem. • ,V = (NT)* • Ja  var iegūt no  pielietojot vienu gramatikas G produkciju, tad saka, ka  tieši producē  (vai  ir tieši atvasināms no  ) •   Piemēram: =aBc, =acCc, ir produkcija B ::= cC, tad    .

  12. Sentenciālās formas (turp.) Ja  var iegūt no  pielietojot n (n≥1) gramatikas G produkcijas, tad saka, ka  producē  netriviālā veidā (vai  ir atvasināms no  netriviālā veidā)  +  Tātad, ja eksistē virkne 0, 1, 2, …, k (k≥1), kur = 0, j-1  j (1≤j≤k), k =, tad  +  . Ja  var iegūt no  pielietojot n (n≥0) gramatikas G produkcijas (iepriekšējais+triviālais =), tad saka, ka  producē  (vai  ir atvasināms no )  *  Sentenciālā forma ir starta simbols un jebkura virkne, kas no tā atvasināta: : S* Formāli valodu L(G), ko producē gramatika G, definē: L(G)={w|wT*; S*w}

  13. Piemērs Gramatika G: teikums(sentence) sentenciālāsformas

  14. Tā vietā lai rakstītu: • Var rakstīt:

  15. Gramatika Vai taisnība, ka:

  16. Gramatika Vai taisnība, ka:

  17. Gramatiku veidi Gramatiku sauc par rekursīvu, ja tā pieļauj atvasināšanas formā A+1A2 , kur AN, 1,2V* Kreisi rekursīva, ja A+A un labēji rekursīva, ja A+A Gramatiku sauc par pašiekļaujošu (self-embedding), ja tā pieļauj atvasināšanas formā A+1A2 , kur AN, 1,2V* un (1T)(2T) Gramatiku sauc par bezkonteksta (context free), ja visas tās produkcijas ir bezkonteksta. Visas produkcijas ir formā A::=ξ , kur AN, ξ(NT)*

  18. Gramatiku veidi (turp.) Ja kāda no gramatikas produkcijām ir formā A ::= ξ, tad gramatika nav bezkonteksta, jo A drīkst aizvietot ar ξ tikai  un  kontekstā.

  19. Lineāras gramatikas • Gramatikas ar tieši vienu netermināli kreisajā un ne vairāk kā vienu netermināli produkcijas labajā pusē. • Piemēri:

  20. Nelineāra gramatika GramatikaG: Kādu valodu saturīgi apraksta šī gramatika? skaits virknē

  21. Cita lineāra gramatika • Gramatika G : Kādu valodu saturīgi apraksta šī gramatika?

  22. Uzrakstīt gramatiku, kas apraksta sekojošu valodu:

  23. Uzrakstīt gramatiku, kas apraksta sekojošu valodu:

  24. Uzrakstīt gramatiku, kas apraksta sekojošu valodu: Vai pareizi?

  25. Uzrakstīt gramatiku, kas apraksta sekojošu valodu (turp.):

  26. Labēji-lineāras gramatikas vai • Visas produkcijas ir formā: • Piemērs: termināļuvirkne

  27. Kreisi-lineāras gramatikas vai • Visas produkcijas ir formā: • Piemērs: termināļuvirkne

  28. Regulāras gramatikas

  29. Regulāras gramatikas • Regulāra gramatikair katra • labēji- vai kreisi-lineāra gramatika • Piemēri:

  30. Teorēma: • Regulāras gramatikas ģenerēregulāras valodas. Secinājums: Dotai regulārai gramatikai jāvar uzrakstīt atbilstošo regulāro izteiksmi.

  31. Atbilstošā regulārā izteiksme? (ab)*a

  32. Atbilstošā regulārā izteiksme? aab(ab)*

  33. Regulāras gramatikas ģenerēregulāras valodas • Jāpierāda: • Valoda, ko ģenerē regulāra gramatika,ir regulāra • Katrai regulārai valodai var konstruēt regulāru gramatiku

  34. Valoda, ko ģenerē regulāra gramatika, ir regulāra Ņem labēji lineāru gramatiku G un konstruē atbilstošu GNA M tā, lai L(G)=L(M)

  35. Gramatika G ir labēji-lineāra:

  36. Konstruē GNA Mtā, ka katrstā stāvoklis atbilst gramatikasneterminālim: speciāls beigu stāvoklis

  37. Pievieno šķautnes atbilstoši katrai produkcijai:

  38. GramatikaG GNAM

  39. Vispārīgā veidā • Labēji-lineārai gramatikai G • ir netermināļi N0, N1, …, Nk • un produkcijasNi::=a1a2…amNj vai Ni::=a1a2…am

  40. Konstruēsimtādu GNAM , ka katrsneterminālisNiatbilststāvoklim: speciāls beigustāvoklis

  41. Katrai produkcijai Ni::=a1a2…amNj • pievieno pārejas un papildus stāvokļus ……

  42. Katrai produkcijai Ni::=a1a2…am • pievieno pārejas un papildus stāvokļus ………

  43. Iegūtais GNAM : Tātad:

  44. Otrā virzienā: Katrai regulārai valodai L var konstruēt regulāru gramatiku G Pierādījuma ideja: • Tā kā valoda L ir regulāra, eksistētāds GNA M, ka L=L(M). • No M konstruētādu regulāru gramatiku G, ka L(M)=L(G).

  45. Piemērs:

More Related