Presentation laddar. Vänta.

Presentation laddar. Vänta.

Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist

Liknande presentationer


En presentation över ämnet: "Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist"— Presentationens avskrift:

1 Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg Universitet (Institutionen för lingvistik)

2 2Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Dagens föreläsning  Icke-reguljära språk  Kontextfria grammatiker  Terminologi

3 3Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Icke-reguljära språk  Språken som kan definieras av finita nätverk eller reguljära uttryck räcker inte alltid till  Exempel: Balanserade parenteser Tillåtet: Ej tillåtet: 3(3 (1+2)(1+3)+3) (1+(2+(3+4)+5))1+()+2 (1+(((2+3))))(1+2)+3)+(4 1+(2+(3+(4)))osv.  En ändlig automat skulle bara kunna klara ett begränsat antal parenteser  En kontextfri grammatik klarar det här

4 4Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Icke-reguljära språk, forts.  Inbäddade relativsatser: Bill är rik Bill som äger Microsoft är rik Bill som äger Microsoft och heter Gates är rik Bill som äger Microsoft som gjort Window som är jobbigt ibland som mycket annat här i världen är rik  Nästlade if-satser: if(a) { if(b) { if(c) { … }  Samma som för parenteserna: reguljära språk kan inte klara godtyckligt djup inbäddning  Finita automater är effektiva, men här duger de inte  Rekursiva strukturer är viktiga för exempelvis programspråk

5 5Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Kontextfria grammatiker  Består av fyra komponenter: Ett alfabet Σ T av terminala symboler Ett alfabet Σ N av icke-terminala symboler En startsymbol: S є Σ N En ändlig mängd produktionsregler (syntaxregler) på formen A   där  A є Σ N och   є (Σ T  Σ N )*

6 6Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Ett exempel på en CFG: aritmetiska uttryck  Låt oss formulera en CFG för aritmetiska uttryck bestående av: Operander: heltal Operatorer: de fyra räknesätten Parenteser för gruppering  Terminaler: +, -, *, /, (, ), tal  Icke-terminaler:  Startelement:

7 7Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Ett exempel på en CFG: aritmetiska uttryck, forts.  Produktionsregler:  tal  ( )  +  -  *  / “syntaktiska kategorin kan komponeras av: något som är ett uttryck följt av / följt av ett uttryck tal är en platshållare för en sträng som kan tolkas som ett tal

8 8Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Ett exempel på en CFG: aritmetiska uttryck, forts. 2  För fullständigheten borde första regeln lyda:  Och vi får istället: Terminaler: +, -, *, /, (, ), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,. Icke-terminaler:,, Och ett par nya produktionsregler  |  1|2|3|4|5|6|7|8|9|0 Exempel: (1+2)*30

9 9Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Exempel 2: balanserade parenteser  Vi kan göra en grammatik som definierar uttryck med balanserade parenteser  ε Den tomma strängen är balancerad  ( ) Om vi har två balanserade uttryck så kan vi konstruera ett tredje genom att sätta parenteser runt det första och konkatenera dem

10 10Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Exempel 2: balanserade parenteser, forts.  De enda terminala symbolerna var parenteser!  En ny regel kan tillåta godtyckliga uttryck: 

11 11Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Exempel 3: C-”statements”   while (condition)   if (condition)   if (condition) else   { }   “simple statement” ;   ε    Sedan måste tal, variabler, uttryck, fler konstruktioner, mm läggas till

12 12Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Utforska ett språk utifrån dess grammatik  Grammatiken är en induktiv beskrivning av språket  Vi kan generera språket: 1.Starta med en tom mängd L 2.Välj en syntaktisk kategori som står för en sträng i språket 3.Generera en sträng genom att tillämpa pråduktionsregler tills endast terminaler återstår 4.Stoppa in strängen i mängden L 5.Gå till steg 2 Valen kan göras antingen: Systematiskt så att vi ser till att sekvensen regler vi valt för att skapa ett element i språket aldrig upprepas Slumpmässigt: vi slipper hålla reda på vilka regler som använts men vet aldrig när vi är klara

13 13Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Parsträd  Ett bra sätt att visualisera ett uttryck i ett språk  Ett bevis för att ett uttryck tillhör språket  I löven finns terminaler  I övriga noder icketerminaler och tillämpning av en produktionsregel  Exempel: 25*(2+(1))  En förenkling av ett parsträd är syntaxträd där icketerminalerna tas bort från trädet: Atomära operander representeras som en nod Operatorer flyttas upp och ersätter den syntaktiska kategorin ovanför Kvarvarande icke-terminaler tas bort

14 14Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Ambiguitet  För uttrycket finns två olika parsträd:  Eftersom det finns uttryck som kan beskrivas av flera olika parsträd så är grammatiken ambiguös  Att en grammatik är icke-ambiguös är mycket svårt att bevisa  Problem kan uppstå om evaluering av uttryck i språket blir olika beroende på parsträd: if a then if b then c else d

15 15Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Icke-ambiguös grammatik för aritmetiska uttryck  Vi lägger till nya syntaktiska kategorier för termer och faktorer: 1.  + | - | 2.  * | / | 3.  ( ) | 4.  | 5.  1|2|3|4|5|6|7|8|9|0 e=expression, t=term, f=factor, n=number, d=digit  Regel 1 och 2 garanterar att och 1/2*3 grupperas korrekt

16 16Språk & logik: Kontextfria grammatikerVäxjö 21 april -04 Nästa föreläsning  Parsning!


Ladda ner ppt "Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist"

Liknande presentationer


Google-annonser