2
LUCRAREA PRACTICA NR. 3 LIMBAJE FORMALE SI AUTOMATE 134 Aceasta lucrare practica trebuie predata atat prin e-mail la adresa <[email protected]> cat si pe serverul MOODLE pana in data de 24 mai 2013 ora 20:00 urmand ca in cadrul laboratorului din 27 mai sa fie prezentata. Dupa data de 24 mai lucrarea practica se mai poate trimite prin email pentru o perioada de gratie de 2 zile (48 de ore). Pentru fiecare zi partiala de intarziere se vor scadea 2 puncte din nota atribuita pe lucrare. Dupa expirarea termenului de gratie, lucrarea nu va mai fi acceptata si va fi notata cu 1. Va trebui sa rezolvati o problema de la sectiunea A, una de la B si a treia de la C. Numele functiilor, parametrii si valoarea returnata sunt sugestive. Puteti implementa in orice alt mod cu conditia ca sa se respecte cerintele problemelor. A.Limbaje regulate 1. Scrieti functiile: int afd_op(AFD &as1, AFD &as2, AFD &ad, int op); int afd_c(AFD &as, AFD &ad); int afd_s(AFD &as, AFD &ad). Functia "afd_op", in functie de "op", construieste automatul "ad" ce recunoaste reuniunea ("op"=1), intersectia ("op"=2), diferenta ("op"=3), diferenta simetrica ("op"=4), respectiv concatenarea ("op"=5) limbajelor recunoscute de automatele "as1", "as2". Ea returneaza 1=succes, 0=esec. Functia "afd_c" construieste automatul "ad" ce re- cunoaste complementara in raport cu V* (V fiind alfabetul lui "as") a limbajului recunoscut de "as". Ea returneaza 1=succes, 0=esec. Functia "afs_s" construieste automatul "ad" ce recunoaste stelarea limbajului recunoscut de "as". Ea retur- neaza 1=succes, 0=esec. Scrieti un program demonstrativ care citeste automatele necesare, le aplica functiile si afisaza automatele rezultate. 2. Scrieti functiile: int er2afnl(const char *e, AFNL &a); int afd2er(AFD &a, char *e). Functia "er2afnl" construieste automatul "a" echivalent cu expresia re- gulata "e", iar functia "afd2er" construieste expresia regulata "e" echivalenta cu automatul "a". Functiile returneaza 1=succes, 0=esec. Expresiile regulate folosesc caracterele ASCII oarecare, operatorii $ (multimea vida), & (cuvantul vid), + (re- uniune), . (concatenare), * (inchiderea Kleene), si parantezele ( ). Daca vreunul din aceste caractere trebuie considerat caracter obisnuit, va fi precedat de \; de asemenea, caracterul \ va fi desemnat prin \\. Scrieti un program demonstrativ care citeste o expresie regulata, o transforma in AFNL-ul echivalent, transforma AFNL-ul in AFD-ul echivalent, afisaza AFD-ul, transforma AFD-ul in expresia re- gulata echivalenta, apoi afisaza expresia. B.Gramatici regulate (GR) si independente de context (GIC), automate stiva(AS) 1. Scrieti un program demonstrativ in care se citeste o GIC si o afisaza. 2. Scrieti un program demonstrativ in care se citeste o GR si o afisaza. 3. Scrieti un program demonstrativ in care se citeste un AS, apoi il afisaza. 1

LP3 - 134

Embed Size (px)

DESCRIPTION

cxvcxvxvcxvxcvxv

Citation preview

  • LUCRAREA PRACTICA NR. 3

    LIMBAJE FORMALE SI AUTOMATE 134

    Aceasta lucrare practica trebuie predata atat prin e-mail la adresa cat si pe serverul MOODLE pana in data de 24 mai2013 ora 20:00 urmand ca in cadrul laboratorului din 27 mai sa fie prezentata.Dupa data de 24 mai lucrarea practica se mai poate trimite prin email pentru operioada de gratie de 2 zile (48 de ore). Pentru fiecare zi partiala de intarziere sevor scadea 2 puncte din nota atribuita pe lucrare. Dupa expirarea termenului degratie, lucrarea nu va mai fi acceptata si va fi notata cu 1.

    Va trebui sa rezolvati o problema de la sectiunea A, una de la B si a treia dela C. Numele functiilor, parametrii si valoarea returnata sunt sugestive. Putetiimplementa in orice alt mod cu conditia ca sa se respecte cerintele problemelor.

    A.Limbaje regulate1. Scrieti functiile: int afd_op(AFD &as1, AFD &as2, AFD &ad, int op); int

    afd_c(AFD &as, AFD &ad); int afd_s(AFD &as, AFD &ad). Functia "afd_op",in functie de "op", construieste automatul "ad" ce recunoaste reuniunea ("op"=1),intersectia ("op"=2), diferenta ("op"=3), diferenta simetrica ("op"=4), respectivconcatenarea ("op"=5) limbajelor recunoscute de automatele "as1", "as2". Eareturneaza 1=succes, 0=esec. Functia "afd_c" construieste automatul "ad" ce re-cunoaste complementara in raport cu V* (V fiind alfabetul lui "as") a limbajuluirecunoscut de "as". Ea returneaza 1=succes, 0=esec. Functia "afs_s" construiesteautomatul "ad" ce recunoaste stelarea limbajului recunoscut de "as". Ea retur-neaza 1=succes, 0=esec. Scrieti un program demonstrativ care citeste automatelenecesare, le aplica functiile si afisaza automatele rezultate.

    2. Scrieti functiile: int er2afnl(const char *e, AFNL &a); int afd2er(AFD &a,char *e). Functia "er2afnl" construieste automatul "a" echivalent cu expresia re-gulata "e", iar functia "afd2er" construieste expresia regulata "e" echivalenta cuautomatul "a". Functiile returneaza 1=succes, 0=esec. Expresiile regulate folosesccaracterele ASCII oarecare, operatorii $ (multimea vida), & (cuvantul vid), + (re-uniune), . (concatenare), * (inchiderea Kleene), si parantezele ( ). Daca vreunuldin aceste caractere trebuie considerat caracter obisnuit, va fi precedat de \; deasemenea, caracterul \ va fi desemnat prin \\. Scrieti un program demonstrativcare citeste o expresie regulata, o transforma in AFNL-ul echivalent, transformaAFNL-ul in AFD-ul echivalent, afisaza AFD-ul, transforma AFD-ul in expresia re-gulata echivalenta, apoi afisaza expresia.

    B.Gramatici regulate (GR) si independente de context (GIC), automate stiva(AS)1. Scrieti un program demonstrativ in care se citeste o GIC si o afisaza.2. Scrieti un program demonstrativ in care se citeste o GR si o afisaza.3. Scrieti un program demonstrativ in care se citeste un AS, apoi il afisaza.

    1

  • LUCRAREA PRACTICA NR. 3 2

    C.Limbaje regulate si independente de context1. Scrieti functiile: int gr2afn(GR &gs, AFN &ad); int afd2gr(AFD &as, GR

    &gd); Functia "gr2afn" construieste automatul "ad" echivalent cu gramatica "gs",iar functia "afd2gr" construieste gramatica "gd" echivalenta cu automatul "as";functiile returneaza 1=succes, 0=esec. Scrieti un program demonstrativ care citesteo gramatica regulata si afisaza automatul echivalent, apoi citeste un automat siafisaza gramatica regulata echivalenta.

    2. Scrieti functiile: int gic2asv(GIC &gs, AS &ad); int asv2gic(AS &as, GIC&gd); Functia "gic2asv" construieste automatul "ad" a.i. L&(ad)=L(gs), iar func-tia "asv2gic" construieste gramatica "gd" a.i. L(gd)=L&(as); functiile returneaza1=succes, 0=esec. Scrieti un program demonstrativ care citeste o gramatica inde-pendenta de context si afisaza automatul rezultat, apoi citeste un automat si afisazagramatica independenta de context rezultata.