limbaje si automate

55
Limbaje Formale, Automate s ¸i Compilatoare Curs 4 2014-15 LFAC (2014-15) Curs 4 1 / 44

Upload: jon

Post on 25-Sep-2015

246 views

Category:

Documents


5 download

DESCRIPTION

limbaje si automate

TRANSCRIPT

  • Limbaje Formale, Automate si Compilatoare

    Curs 4

    2014-15

    LFAC (2014-15) Curs 4 1 / 44

  • Curs 4

    1 Corectitudinea algoritmului de determinare a relatiei

    2 Proprietati de nchidere pentru clasa limbajelor de tip 3

    3 Expresii regulate

    4 Automatul echivalent cu o expresie regulata

    Algoritm

    5 Gramatici si limbaje independente de context

    LFAC (2014-15) Curs 4 2 / 44

  • Corectitudinea algoritmului de determinare a relatiei

    Curs 4

    1 Corectitudinea algoritmului de determinare a relatiei

    2 Proprietati de nchidere pentru clasa limbajelor de tip 3

    3 Expresii regulate

    4 Automatul echivalent cu o expresie regulata

    Algoritm

    5 Gramatici si limbaje independente de context

    LFAC (2014-15) Curs 4 3 / 44

  • Corectitudinea algoritmului de determinare a relatiei

    Algoritm pentru determinarea relatiei

    //initializarea tablourilor,

    se marcheaz a perechile F (Q F ) si (Q F ) F

    1.for (i=0; i

  • Corectitudinea algoritmului de determinare a relatiei

    9.for (i=0; i

  • Corectitudinea algoritmului de determinare a relatiei

    Algoritm pentru determinarea relatiei

    // qi si qj devin separabile si la fel toate

    // perechile de stari dependente de qi,qj

    update separabil(qi , qj){

    separabil[qi , qj] = 1;

    for ((qi , qj ) lista[qi , qj]){

    if (separabil[qi , qj ] == 0)

    update separabil(qi , qj );

    }

    }

    LFAC (2014-15) Curs 4 6 / 44

  • Corectitudinea algoritmului de determinare a relatiei

    Corectitudinea algoritmului

    Teorema 1

    Algoritmul se termina ntotdeauna si n final se obtine, pentru orice

    doua stari qi si qj , 0 i < j n: separabil[qi , qj ] = 1 ddaca qi sep qj

    LFAC (2014-15) Curs 4 7 / 44

  • Corectitudinea algoritmului de determinare a relatiei

    Corectitudinea algoritmului

    Teorema 1

    Algoritmul se termina ntotdeauna si n final se obtine, pentru orice

    doua stari qi si qj , 0 i < j n: separabil[qi , qj ] = 1 ddaca qi sep qj

    (=) Se arata ca:

    P(k) : Pentru orice doua stari qi si qj (0 i < j n) separabile de catre un cuvant w

    cu |w | k ((qi ,w) F , (qj ,w) 6 F ), are loc:

    separabil[qi , qj ] = 1.

    Inductie dupa |w |.

    LFAC (2014-15) Curs 4 7 / 44

  • Corectitudinea algoritmului de determinare a relatiei

    Corectitudinea algoritmului

    Teorema 1

    Algoritmul se termina ntotdeauna si n final se obtine, pentru orice

    doua stari qi si qj , 0 i < j n: separabil[qi , qj ] = 1 ddaca qi sep qj

    (=) Se arata ca:

    pentru oricare doua stari qi , qj (0 i < j n) pentru care separabil[qi , qj ] = 1, are

    loc:

    qi sep qj .

    Inductie asupra momentului n care algoritmul face separabil[qi , qj ] = 1.

    LFAC (2014-15) Curs 4 7 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Curs 4

    1 Corectitudinea algoritmului de determinare a relatiei

    2 Proprietati de nchidere pentru clasa limbajelor de tip 3

    3 Expresii regulate

    4 Automatul echivalent cu o expresie regulata

    Algoritm

    5 Gramatici si limbaje independente de context

    LFAC (2014-15) Curs 4 8 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la intersectie

    Daca L1, L2 L3, atunci L1 L2 L3

    Fie A1 = (Q1,1, 1, q01,F1) si A2 = (Q2,2, 2, q02,F2) automate

    deterministe astfel ncat L1 = L(A1) si L2 = L(A2).

    Automatul A (determinist) care recunoaste L1 L2:

    A = (Q1 Q2,1 2, , (q01, q02),F1 F2)

    ((q1, q2), a)) = (q1, q2) ddaca

    1(q1, a) = q1

    2(q2, a) = q2

    LFAC (2014-15) Curs 4 9 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la diferenta

    Daca L L3 atunci L = ( \ L) L3

    Fie A = (Q,, , q0,F ) automat cu L(A) = L.

    Automatul A care recunoaste L = L(A):

    A = (Q,, , q0,Q \ F )

    LFAC (2014-15) Curs 4 10 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la diferenta

    Daca L L3 atunci L = ( \ L) L3

    Fie A = (Q,, , q0,F ) automat cu L(A) = L.

    Automatul A care recunoaste L = L(A):

    A = (Q,, , q0,Q \ F )

    Daca L1, L2 L3 atunci L1 \ L2 L3 : L1 \ L2 = L1 L2

    LFAC (2014-15) Curs 4 10 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la produs

    Fie A1 = (Q1,, 1, q01, {f1}) si A2 = (Q2,, 2, q02, {f2})

    automate cu o singura stare finala astfel ncat L1 = L(A1) si

    L2 = L(A2).

    Automatul A (cu -tranzitii) care recunoaste L1 L2:

    A = (Q1 Q2,, , q01, {f2})

    LFAC (2014-15) Curs 4 11 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la reuniune

    Fie A1 = (Q1,1, 1, q01, {f1}) si A2 = (Q2,2, 2, q02, {f2})

    automate cu o singura stare finala astfel ncat L1 = L(A1) si

    L2 = L(A2).

    Automatul A (cu -tranzitii) care recunoaste L1 L2:

    A = (Q1 Q2 {q0, f},1 2, , q0, {f})

    LFAC (2014-15) Curs 4 12 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la iteratie

    Fie A = (Q,, , q01, {f}) automat cu o singura stare finala astfel

    ncat L(A) = L.

    Automatul A (cu -tranzitii) care recunoaste L (= L(A)):

    A = (Q {q0, f},, , q0, {f})

    LFAC (2014-15) Curs 4 13 / 44

  • Proprietati de nchidere pentru clasa limbajelor de tip 3

    Inchiderea la operatia de oglindire

    Fie A = (Q,, , q0, {qf}) automat cu o singura stare finala.

    Automatul A (cu -tranzitii) care recunoaste L(A)R :A = (Q {q0},,

    , q0, {q0}):(q1,a) = q2 ddaca (q2,a) = q1 (inversarea arcelor n graful detranzitie)(q0, ) = qfdaca L(A), atunci (q0, ) = q0

    LFAC (2014-15) Curs 4 14 / 44

  • Expresii regulate

    Curs 4

    1 Corectitudinea algoritmului de determinare a relatiei

    2 Proprietati de nchidere pentru clasa limbajelor de tip 3

    3 Expresii regulate

    4 Automatul echivalent cu o expresie regulata

    Algoritm

    5 Gramatici si limbaje independente de context

    LFAC (2014-15) Curs 4 15 / 44

  • Expresii regulate

    Expresii regulate - definitie

    Reprezentarea limbajelor de tip 3 prin expresii algebrice

    Definitie 1

    Daca este un alfabet atunci o expresie regulata peste se defineste

    inductiv astfel:

    , , a (a ) sunt expresii regulate ce descriu respectiv limbajele

    , {}, {a}.

    Daca E, E1, E2 sunt expresii regulate atunci:

    (E1|E2) este expresie regulata ce descrie limbajul L(E1) L(E2)(E1 E2) este expresie regulata ce descrie limbajul L(E1)L(E2)(E) este expresie regulata ce descrie limbajul L(E)

    LFAC (2014-15) Curs 4 16 / 44

  • Expresii regulate

    Expresii regulate - definitie

    Reprezentarea limbajelor de tip 3 prin expresii algebrice

    Definitie 1

    Daca este un alfabet atunci o expresie regulata peste se defineste

    inductiv astfel:

    , , a (a ) sunt expresii regulate ce descriu respectiv limbajele

    , {}, {a}.

    Daca E, E1, E2 sunt expresii regulate atunci:

    (E1|E2) este expresie regulata ce descrie limbajul L(E1) L(E2)(E1 E2) este expresie regulata ce descrie limbajul L(E1)L(E2)(E) este expresie regulata ce descrie limbajul L(E)

    Ordinea de prioritate a operatorilor este , , |

    LFAC (2014-15) Curs 4 16 / 44

  • Expresii regulate

    Exemple

    (a|b)|(c|d) {a, b, c, d}

    (0|1) (0|1) {00, 01, 10, 11}

    ab {anbk |n, k 0}

    (a|b) {a, b}

    (0|1|2|...|9)(0|1|2...|9) descrie multimea ntregilor fara semn

    (a|b|c|...|z)(a|b|c|...|z|0|1|2...|9) descrie multimea identificatorilor

    Doua expresii regulate E1,E2 sunt echivalente, si scriem E1 = E2 daca

    L(E1) = L(E2)

    LFAC (2014-15) Curs 4 17 / 44

  • Expresii regulate

    Proprietati

    (p|q)|r = p|(q|r)

    (pq)r = p(qr)

    p|q = q|p

    p = p = p

    p| = p|p = p

    p = p =

    p(q|r) = pq|pr

    (p|q)r = pr |qr

    |pp = p

    |pp = p

    LFAC (2014-15) Curs 4 18 / 44

  • Expresii regulate

    De la o expresie regulata la automatul finit

    Teorema 2

    Pentru orice expresie regulata E peste exista un automat finit (cu -

    tranzitii) A, astfel ncat L(A) = L(E).

    Demonstratie: inductie structurala.

    Daca E {, , a} (a ) atunci automatul corespunzator este

    respectiv:

    LFAC (2014-15) Curs 4 19 / 44

  • Expresii regulate

    Demonstratie

    E = E1|E2

    E = E1E2

    E = E1

    LFAC (2014-15) Curs 4 20 / 44

  • Expresii regulate

    Reprezentarea expresiilor regulate sub forma de

    arbore

    Intrare : Expresia regulata E = e0e1 . . . en1Precedenta operatorilor:

    prec(|) = 1, prec() = 2, prec() = 3 (prec(()= 0).

    Iesire : Arborele asociat: t .

    Metoda : Se considera doua stive:

    STIVA1 stiva operatorilorSTIVA2 stiva arborilor (care va contine arborii partiali construiti)Metoda tree(op, tS, tD)

    LFAC (2014-15) Curs 4 21 / 44

  • Expresii regulate

    Algoritmi = 0;

    while(i < n) {

    c = ei ;switch(c) {

    case ( : { STIVA1.push(c); break; }

    case simbol (din alfabet): { STIVA2.push(tree(c,NULL,NULL)); break; }case operator : {

    while (prec(STIVA1.top())>=prec(c))

    build tree();

    STIVA1.push(c); break;

    }

    case ) : {

    do { build tree(); } while(STIVA1.top()!= ();

    STIVA1.pop(); break;

    }

    }

    i++;

    }

    while(STIVA1.not empty()) build tree();

    t = STIVA2.pop();

    LFAC (2014-15) Curs 4 22 / 44

  • Expresii regulate

    Algoritm

    build tree()

    op = STIVA1.pop();

    tD = STIVA2.pop();

    switch (op) {

    case : {

    t = tree(op, tD, NULL);

    STIVA2.push(t); break;

    }

    case | , : {

    tS = STIVA2.pop();

    t = tree(op, tS, tD);

    STIVA2.push(t); break;

    }

    }

    LFAC (2014-15) Curs 4 23 / 44

  • Expresii regulate

    Exemplu

    a b|a (b|c)

    LFAC (2014-15) Curs 4 24 / 44

  • Automatul echivalent cu o expresie regulata

    Curs 4

    1 Corectitudinea algoritmului de determinare a relatiei

    2 Proprietati de nchidere pentru clasa limbajelor de tip 3

    3 Expresii regulate

    4 Automatul echivalent cu o expresie regulata

    Algoritm

    5 Gramatici si limbaje independente de context

    LFAC (2014-15) Curs 4 25 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Automatul echivalent cu o expresie regulata

    E = E1|E2

    E = E1E2

    E = E1LFAC (2014-15) Curs 4 26 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Observatii

    pentru orice aparitie a unui simbol din , cat si pentru , daca

    acesta apare explicit n E , este nevoie de 2 stari n automatul

    construit.

    fiecare din aparitiile operatorilor | si dintr-o expresie regulata E

    introduce doua noi stari n automatul construit

    operatorul nu introduce alte stari

    daca n este numarul de simboluri din E iar m este numarul de

    paranteze mpreuna cu aparitiile simbolului , atunci numarul

    starilor automatului echivalent cu E este p = 2(n m).

    LFAC (2014-15) Curs 4 27 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    din orice stare i a automatului, se fac cel mult doua tranzitii:

    (i ,a) = j ((i , ) = )(i , ) = {j} ((i ,a) = )(i , ) = {j , k} ((i ,a) = )

    LFAC (2014-15) Curs 4 28 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    din orice stare i a automatului, se fac cel mult doua tranzitii:

    (i ,a) = j ((i , ) = )(i , ) = {j} ((i ,a) = )(i , ) = {j , k} ((i ,a) = )

    reprezentarea automatului echivalent cu o expresie regulata sepoate face cu 3 tablouri de dimensiune p, unde p este numarulstarilor (acestea sunt numerotate de la 1 la p):

    simbol[i] = a: din starea i se face o tranzitie cu simbolul a (dacasimbol[i] = , (i ,a) = )next1[i] = j : din starea i se face o tranzitie catre starea j ((i ,a) = j ,daca simbol[i] = a, altfel j (i , ))next2[i] = k : din starea i se face o - tranzitie catre k((i , ) = {j , k} si next1[i] = j) .

    LFAC (2014-15) Curs 4 28 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Algoritm

    Intrare : Expresia regulata E cu n simboluri dintre care m sunt

    paranteze si aparitii ale operatorului produs;

    Iesire : Vectorii simbol , next1, next2 de dimensiune p = 2(n m)

    ce descriu automatul cu - tranzitii echivalent cu E , starea finala f ;

    Metoda :

    1. Se construieste arborele atasat expresiei E ;

    2. Se parcurge arborele n preordine si se ataseaza nodurilor

    vizitate, exceptand pe cele etichetate cu produs , respectiv

    numerele 1, 2, . . . , n m;

    LFAC (2014-15) Curs 4 29 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Exemplu

    E = a|b c

    LFAC (2014-15) Curs 4 30 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    3. Se parcurge arborele n postordine si se ataseaza fiecarui nod No pereche de numere (N.i ,N.f ) care reprezinta starea initialarespectiv finala a automatului echivalent cu expresiacorespunzatoare subarborelui cu radacina N, astfel:

    Daca nodul are numarul k (de la pasul 2) atunci:

    N.i = 2k 1,N.f = 2k ;

    Daca nodul este etichetat cu produs si S este fiul stang al lui N, iarD fiul drept, atunci:

    N.i = S.i iar N.f = D.f

    LFAC (2014-15) Curs 4 31 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Exemplu

    E = a|b c

    LFAC (2014-15) Curs 4 32 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    5. Se parcurge din nou arborele obtinut n postordine.

    Daca N este nodul curent iar S si D sunt fii sai, atunci, n functie de eticheta lui N, seexecuta urmatoarele:

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    5. Se parcurge din nou arborele obtinut n postordine.

    Daca N este nodul curent iar S si D sunt fii sai, atunci, n functie de eticheta lui N, seexecuta urmatoarele:

    Daca N este etichetat cu a (deci este frunza): (N.i, a) = N.f

    simbol[N.i] = a, next1[N.i] = N.f

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    5. Se parcurge din nou arborele obtinut n postordine.

    Daca N este nodul curent iar S si D sunt fii sai, atunci, n functie de eticheta lui N, seexecuta urmatoarele:

    Daca N este etichetat cu a (deci este frunza): (N.i, a) = N.f

    simbol[N.i] = a, next1[N.i] = N.f

    Daca N este etichetat cu |: (N.i, ) = {S.i,D.i}, (S.f , ) = N.f , (D.f , ) = N.f

    next1[N.i] = S.i, next2[N.i] = D.i,

    next1[S.f ] = N.f , next1[D.f ] = N.f

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    5. Se parcurge din nou arborele obtinut n postordine.

    Daca N este nodul curent iar S si D sunt fii sai, atunci, n functie de eticheta lui N, seexecuta urmatoarele:

    Daca N este etichetat cu a (deci este frunza): (N.i, a) = N.f

    simbol[N.i] = a, next1[N.i] = N.f

    Daca N este etichetat cu |: (N.i, ) = {S.i,D.i}, (S.f , ) = N.f , (D.f , ) = N.f

    next1[N.i] = S.i, next2[N.i] = D.i,

    next1[S.f ] = N.f , next1[D.f ] = N.f

    Daca N este etichetat cu : (S.f , ) = D.i

    next1[S.f ] = D.i

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    5. Se parcurge din nou arborele obtinut n postordine.

    Daca N este nodul curent iar S si D sunt fii sai, atunci, n functie de eticheta lui N, seexecuta urmatoarele:

    Daca N este etichetat cu a (deci este frunza): (N.i, a) = N.f

    simbol[N.i] = a, next1[N.i] = N.f

    Daca N este etichetat cu |: (N.i, ) = {S.i,D.i}, (S.f , ) = N.f , (D.f , ) = N.f

    next1[N.i] = S.i, next2[N.i] = D.i,

    next1[S.f ] = N.f , next1[D.f ] = N.f

    Daca N este etichetat cu : (S.f , ) = D.i

    next1[S.f ] = D.i

    Daca N este etichetat cu (D nu exista n acest caz): (N.i, ) = {S.i,N.f},(S.f , ) = {S.i,N.f}

    next1[N.i] = S.i, next2[N.i] = N.f ,

    next1[S.f ] = S.i, next2[S.f ] = N.f

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    4. for(j = 1..2(n m)) {simbol[j] = , next1[j] = next2[j] = 0}

    5. Se parcurge din nou arborele obtinut n postordine.

    Daca N este nodul curent iar S si D sunt fii sai, atunci, n functie de eticheta lui N, seexecuta urmatoarele:

    Daca N este etichetat cu a (deci este frunza): (N.i, a) = N.f

    simbol[N.i] = a, next1[N.i] = N.f

    Daca N este etichetat cu |: (N.i, ) = {S.i,D.i}, (S.f , ) = N.f , (D.f , ) = N.f

    next1[N.i] = S.i, next2[N.i] = D.i,

    next1[S.f ] = N.f , next1[D.f ] = N.f

    Daca N este etichetat cu : (S.f , ) = D.i

    next1[S.f ] = D.i

    Daca N este etichetat cu (D nu exista n acest caz): (N.i, ) = {S.i,N.f},(S.f , ) = {S.i,N.f}

    next1[N.i] = S.i, next2[N.i] = N.f ,

    next1[S.f ] = S.i, next2[S.f ] = N.f

    6. f este starea pentru care next1[f] = next2[f] = 0

    LFAC (2014-15) Curs 4 33 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Exemplu

    E = a|b c

    LFAC (2014-15) Curs 4 34 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Exemplu

    LFAC (2014-15) Curs 4 35 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Exemplu

    a b c

    1 {3, 5}

    2

    3 4

    4 {2}

    5 {6, 7}

    6 {9}

    7 8

    8 {6, 7}

    9 10

    10 {2}

    LFAC (2014-15) Curs 4 36 / 44

  • Automatul echivalent cu o expresie regulata Algoritm

    Corectitudinea algoritmului

    Teorema 3

    Algoritmul descris este corect: automatul cu - tranzitii obtinut este

    echivalent cu expresia regulata E.

    Demonstratie:

    Modul n care au fost alese perechile (i , f ) de stari pentru fiecare

    nod al arborelui construit corespunde constructiilor din teorema 1.

    Deasemenea, tranzitiile care se definesc n pasul 5 al algoritmului

    urmaresc constructia din teorema 1.

    Automatul obtinut este echivalent cu expresia data la intrare.

    LFAC (2014-15) Curs 4 37 / 44

  • Gramatici si limbaje independente de context

    Curs 4

    1 Corectitudinea algoritmului de determinare a relatiei

    2 Proprietati de nchidere pentru clasa limbajelor de tip 3

    3 Expresii regulate

    4 Automatul echivalent cu o expresie regulata

    Algoritm

    5 Gramatici si limbaje independente de context

    LFAC (2014-15) Curs 4 38 / 44

  • Gramatici si limbaje independente de context

    Gramatici independente de context

    Gramatici de tip 2 (independente de context): G = (N,T ,S,P)

    N si T sunt multimi nevide, finite, disjuncte de neterminali(variabile), respectiv terminaliS N este simbolul de startP = {x u|x N,u (N T )} este multimea regulilor(productiilor).

    Un limbaj L este de tip 2 (independent de context: L L2) daca

    exista o gramatica G de tip 2 astfel ncat L(G) = L

    LFAC (2014-15) Curs 4 39 / 44

  • Gramatici si limbaje independente de context

    Derivari extrem stangi/drepte

    Fie G = (N,T ,S,P) si w L(G)

    derivare extrem stanga pentru w : derivarea n care, la orice pas

    se nlocuieste cel mai din stanga neterminal din cuvantul obtinut

    derivare extrem dreapta pentru w : derivarea n care, la orice pas

    se nlocuieste cel mai din dreapta neterminal din cuvantul obtinut

    LFAC (2014-15) Curs 4 40 / 44

  • Gramatici si limbaje independente de context

    Exemplu

    G = ({E}, {a, b,+, ), (},E ,P) unde:

    P : E E + E |E E |(E)|a|b

    Fie a + (b a)

    Derivare extrem stanga:

    E E+E a+E a+(E) a+(EE) a+(bE) a+(ba)

    Derivare extrem dreapta:

    E E + E E + (E) E + (E E) E + (E a)

    E + (b a) a + (b a)

    Exista derivari care nu sunt nici extrem drepte nici extrem stangi!

    LFAC (2014-15) Curs 4 41 / 44

  • Gramatici si limbaje independente de context

    Arbori sintactici

    Definitie 2

    Un arbore sintactic (arbore de derivare, arbore de parsare) n

    gramatica G este un arbore ordonat, etichetat, cu urmatoarele

    proprietati:

    radacina arborelui este etichetata cu S ;

    fiecare frunza este etichetata cu un simbol din T sau cu ;

    fiecare nod interior este etichetat cu un neterminal;

    daca A eticheteaza un nod interior care are n succesori etichetati

    de la stanga la dreapta respectiv cu X1, X2,..., Xn, atunci

    A X1X2 . . .Xn este o regula.

    Cazul n care regula este A reprezinta un caz special: nodul

    etichetat cu A are un singur descendent etichetat cu .LFAC (2014-15) Curs 4 42 / 44

  • Gramatici si limbaje independente de context

    Arbori sintactici

    Definitie 3

    Frontiera unui arbore de derivare este cuvantul w = a1a2 . . . anunde ai , 1 i n sunt etichetele nodurilor frunza n ordinea de la

    stanga la dreapta.

    Arbore de derivare pentru un cuvant w: arbore de derivare cu

    frontiera w.

    Un X-arbore de derivare este un subarbore al unui arbore de

    derivare care are eticheta radacinii X . Un arbore de derivare este

    un S-arbore de derivare.

    LFAC (2014-15) Curs 4 43 / 44

  • Gramatici si limbaje independente de context

    Exemplu

    G = ({E}, {a, b,+, ), (},E ,P) unde:

    P : E E + E |E E |(E)|a|b

    a + (b a)Derivare extrem stanga:

    E E + E a + E a + (E)

    a + (E E) a + (b E) a + (b a)

    Derivare extrem dreapta:

    E E + E E + (E) E + (E E)

    E + (E a) E + (b a) a + (b a)

    Arbore de derivare pentru

    a + (b a):

    LFAC (2014-15) Curs 4 44 / 44

    Corectitudinea algoritmului de determinare a relatiei Proprietati de nchidere pentru clasa limbajelor de tip 3Expresii regulateAutomatul echivalent cu o expresie regulataAlgoritmGramatici si limbaje independente de context