Upload
raducanu-theodor
View
3
Download
2
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.