Gramatikas un produkcijas

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

description

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} - PowerPoint PPT Presentation

Transcript of Gramatikas un produkcijas

Page 1: 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.

Page 2: Gramatikas un produkcijas

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 (SN). Citur mērķis vai mērķa simbols.P – galīga produkcijas likumu (produkciju) kopa

Page 3: Gramatikas un produkcijas

GramatikaG={N,T,S,P}N – galīga neterminālo simbolu kopaT – galīga terminālo simbolu kopaS – starta simbols (SN)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=NT

N un T šķēlumam jābūt tukšai kopai. NT=

Alfabēts = visi termināļi, kas parādās produkcijās= ?

Page 4: Gramatikas un produkcijas

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

Produkcijas (BNF pieraksts)

“definē kā”vai

“producē”

Page 5: Gramatikas un produkcijas

kreisā_puse (NT)+

definīcija (NT)*

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

Korekti produkciju pieraksti

kreisā puse ::= definīcija1 | definīcija2

Page 6: Gramatikas un produkcijas

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> }

Page 7: Gramatikas un produkcijas

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

Page 8: Gramatikas un produkcijas

Cita tradicionāla vienošanās

Lielie burti – netermināļiMazie burti – termināļi

S ::= 0|1|SS

Page 9: Gramatikas un produkcijas

Gramatika :

Piemērs

S

aSbSG

PSTNG ,,,

}{SN },{ baT

},{ SaSbSP

Page 10: Gramatikas un produkcijas

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

Page 11: Gramatikas un produkcijas

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 = (NT)*

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 .

Page 12: Gramatikas un produkcijas

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|wT*; S*w}

Page 13: Gramatikas un produkcijas

Gramatika G:

Piemērs

aaabbbaaaSbbbaaSbbaSbS

sentenciālās formasteikums(sentence)

S

aSbS

Page 14: Gramatikas un produkcijas

Tā vietā lai rakstītu:

Var rakstīt:

aaabbbS *

aaabbbaaaSbbbaaSbbaSbS

Page 15: Gramatikas un produkcijas

S

aSbS

*S

Gramatika

Vai taisnība, ka:

abS *

aabbbS *

ababS *

aaaSbbbS *

Page 16: Gramatikas un produkcijas

A

aAbA

AbS

bS *

Gramatika

Vai taisnība, ka:

abS *

aabbbS *

aabS *

aS *

Page 17: Gramatikas un produkcijas

Gramatiku veidi

Gramatiku sauc par rekursīvu, ja tā pieļauj atvasināšanas formā A+1A2 , kur AN, 1,2V*

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+1A2 , kur AN,

1,2V* un (1T)(2T)

Gramatiku sauc par bezkonteksta (context free), ja visas tās produkcijas ir bezkonteksta. Visas produkcijas ir formā A::=ξ , kur AN, ξ(NT)*

Page 18: Gramatikas un produkcijas

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

Page 19: Gramatikas un produkcijas

Lineāras gramatikas

Gramatikas ar tieši vienu netermināli kreisajā un ne vairāk kā vienu netermināli produkcijas labajā pusē.

Piemēri:

A

aAbA

AbS

S

aSbS

Page 20: Gramatikas un produkcijas

Nelineāra gramatika

bSaS

aSbS

S

SSS

Gramatika G:

)}()(:{)( wnwnwGL ba

skaits virknēa w

Kādu valodu saturīgi apraksta šī gramatika?

Page 21: Gramatikas un produkcijas

Cita lineāra gramatika

Gramatika G :

AbB

aBA

AS

|

}0:{)( nbaGL nnKādu valodu saturīgi apraksta šī gramatika?

Page 22: Gramatikas un produkcijas

|| bSbaSaS

}},{:{)( *bawwwGL R

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

Page 23: Gramatikas un produkcijas

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

1|0

|

V

VVVSS

},3||,}1,0{:{)( * NnnwwwGL

SSV

VVD

DDS

1|0

1|0

|1|0

Page 24: Gramatikas un produkcijas

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

|| baX

XabXS

},},{:{)( * wabbawwGL

|| bPaPP

bPY

PaX

XYS

Vai pareizi?

Page 25: Gramatikas un produkcijas

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

},},{:{)( * wabbawwGL

||

||

bAaAA

abAbSaSS

Page 26: Gramatikas un produkcijas

Labēji-lineāras gramatikasVisas produkcijas ir formā:

Piemērs:

xBA

xAvai

aS

abSS

termināļu

virkne

Page 27: Gramatikas un produkcijas

Kreisi-lineāras gramatikas

Visas produkcijas ir formā:

Piemērs:

BxA

aB

BAabA

AabS

|

xAvai

termināļuvirkne

Page 28: Gramatikas un produkcijas

Regulāras gramatikas

Page 29: Gramatikas un produkcijas

Regulāras gramatikas

Regulāra gramatika ir katra labēji- vai kreisi-lineāra gramatika

Piemēri:

aS

abSS

aB

BAabA

AabS

|

1G 2G

Page 30: Gramatikas un produkcijas

Teorēma:

Regulāras gramatikas ģenerē regulāras valodas.

Secinājums:

Dotai regulārai gramatikai jāvar uzrakstīt atbilstošoregulāro izteiksmi.

Page 31: Gramatikas un produkcijas

aS

abSS

Atbilstošā regulārā izteiksme?

(ab)*a

Page 32: Gramatikas un produkcijas

Atbilstošā regulārā izteiksme?

aB

BAabA

AabS

|

aab(ab)*

Page 33: Gramatikas un produkcijas

Regulāras gramatikas ģenerē regulāras valodas

Jāpierāda:

1. Valoda, ko ģenerē regulāra gramatika,ir regulāra

2. Katrai regulārai valodai var konstruēt regulāru gramatiku

Page 34: Gramatikas un produkcijas

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)

Page 35: Gramatikas un produkcijas

Gramatika G ir labēji-lineāra:

abBB

BaaA

BaAS

|

|

Page 36: Gramatikas un produkcijas

Konstruē GNA M tā, ka katrs tā stāvoklis atbilst gramatikas neterminālim:

abBB

BaaA

BaAS

|

|

SFN

A

B

speciālsbeigu stāvoklis

Page 37: Gramatikas un produkcijas

Pievieno šķautnes atbilstoši katrai produkcijai:

SFN

A

B

a

aAS

Page 38: Gramatikas un produkcijas

SFN

A

B

a

BaAS |

Page 39: Gramatikas un produkcijas

SFN

A

B

a

BaaA

BaAS

|

a

a

Page 40: Gramatikas un produkcijas

SFN

A

B

a

bBB

BaaA

BaAS

|

a

a

b

Page 41: Gramatikas un produkcijas

SFN

A

B

a

abBB

BaaA

BaAS

|

|

a

a

b

a

Page 42: Gramatikas un produkcijas

aaabaaaabBaaaBaAS

SFN

A

B

a

a

a

b

a

Page 43: Gramatikas un produkcijas

SFN

A

B

a

a

a

b

a

abBB

BaaA

BaAS

|

|

Gramatika GGNA M

abaaaab

GLML

*|*

)()(

Page 44: Gramatikas un produkcijas

Vispārīgā veidā

Labēji-lineārai gramatikai Gir netermināļi N0, N1, …, Nk

un produkcijas Ni::=a1a2…amNj vai Ni::=a1a2…am

Page 45: Gramatikas un produkcijas

Konstruēsim tādu GNA M , ka katrs neterminālis Ni atbilst stāvoklim:

0N

FN

1N

2N

3N

4Nspeciālsbeigustāvoklis

Page 46: Gramatikas un produkcijas

Katrai produkcijai Ni::=a1a2…amNj

pievieno pārejas un papildus stāvokļus

iN jN……1a 2a ma

Page 47: Gramatikas un produkcijas

Katrai produkcijai Ni::=a1a2…am

pievieno pārejas un papildus stāvokļus

iN FN………

1a 2a ma

Page 48: Gramatikas un produkcijas

Iegūtais GNA M :

0N

FN

1N

2N

3N

4N

1a

3a

3a

4a

8a

2a 4a

5a

9a5a

9a

)()( MLGL Tātad:

Page 49: Gramatikas un produkcijas

Pierādījuma ideja:

Otrā virzienā:Katrai regulārai valodai L var konstruēt regulāru gramatiku G

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

Page 50: Gramatikas un produkcijas

Piemērs:

a

b

a

b*)*(* abbababL

)(MLL

M

1q 2q

3q

0q

Page 51: Gramatikas un produkcijas

Pārveido M uz labēji-lineāru gramatiku

10 aqq

a

b

a

b

M0q 1q 2q

3q

Page 52: Gramatikas un produkcijas

21

11

10

aqq

bqq

aqq

a

b

a

b

M0q 1q 2q

3q

Page 53: Gramatikas un produkcijas

32

21

11

10

bqq

aqq

bqq

aqq

a

b

a

b

M0q 1q 2q

3q

Page 54: Gramatikas un produkcijas

a

b

a

b

M0q 1q 2q

3q

3

13

32

21

11

10

q

qq

bqq

aqq

bqq

aqq

G

LMLGL )()(

Page 55: Gramatikas un produkcijas

Vispārīgi:

Katrai pārejai:aq p

pievieno produkciju:

apq

neterminālis terminālis neterminālis

Page 56: Gramatikas un produkcijas

fqKatram beigu stāvoklim

pievieno produkciju: fq

Page 57: Gramatikas un produkcijas

Tā kā G ir labēji-lineāra gramatika, G ir arī regulāra gramatika, kurai

LMLGL )()(

Page 58: Gramatikas un produkcijas

Kā rīkoties kreisi-lineāras gramatikas gadījumā?

Pieņemsim, ka G ir kreisi-lineāra gramatika.

Pierādīsim, ka L(G) ir regulāra.

Pierādījuma ideja: Konstruēsim labēji-lineāru gramatiku G’

kurai L(G)=L(G’)R

Page 59: Gramatikas un produkcijas

Tā kā G ir kreisi-lineāra gramatika, tās produkcijas ir sekojoša veida:

kaaBaA 21

kaaaA 21

Page 60: Gramatikas un produkcijas

konstruējam labēji-lineāru gramatiku G’

kreisilineāraG

kaaBaA 21

BaaaA k 12

BvA

BvA R

labējilineāraG’

Page 61: Gramatikas un produkcijas

konstruējam labēji-lineāru gramatiku G’

kreisilineāraG

kaaaA 21

12aaaA k

vA

RvA

labējilineāraG’

Page 62: Gramatikas un produkcijas

Ir viegli parādīt, ka L(G)=L(G’)R

Tā kā G’ ir labēji-lineāra, iegūstam:

)(GL RGL )( )(GL

regulāravaloda

regulāravaloda

regulāravaloda