Documente Academic
Documente Profesional
Documente Cultură
10/2/2023 2
Secventa
Def.
• secventa peste
o succesiune finita de simboluri din
• subsecventa
o succesiune de simboluri consecutive dintr-o
secventa
10/2/2023 3
Lungimea unei secvente
• def:
nr. de simboluri din care este formata acea secventa
• notatie
|…|
Ex: |abc| = 3
10/2/2023 4
Concatenare
Dacã
x=a1a2…an
y=b1b2…bm
atunci z = a1…anb1…bm
reprezintã concatenarea secventelor x si y
si se noteaza z = xy
Notatii: aa…aa = an
(de n ori)
10/2/2023 Exemplu: a2 = aa 5
Secventa
Def.
• secventa peste
o succesiune finita de simboluri din
• subsecventa
o succesiune de simboluri consecutive dintr-o
secventa
w2 – subsecventa a lui w1
daca $ secventele u, v a.i. w1= u w2 v
10/2/2023 6
Prefix, sufix
Fie x, y, z sunt secvente peste alfabetul
• x este un prefix al secventei xy
• y un sufix al secventei xy
• * = + U {e}
10/2/2023 8
Operatia *
Denumiri:
• Operatia: *, steaua lui Kleene
• Inchiderea lui Kleene
* - inchiderea alfabetului
- multimea tuturor secventelor ce se pot obtine
folosind secvente din
(*, . ) - monoid
10/2/2023 10
Limbaj, cuvant
• def: (limbaj)
L – limbaj peste alfabetul
daca L *
• def: (cuvant)
Cuvant al unui limbaj – un element al limbajului
10/2/2023 11
Metode de specificare a unui limbaj
• enumerand elementele
• evidentierea unor proprietati ale elementelor
– folosind multimi si descrieri matematice
–…
• folosind gramatici, automate, expresii regulare
• …
10/2/2023 12
Cateva tipuri de limbaje
• teoretice
L = {an | n N} limbaj peste = {a}
L = {anbn | n N} limbaj peste = {a,b}
• informatice
limbajul identificatorilor
= {a, …, z, A, …, Z,_, 0,…,9}
L = {a’w’ | a’ {a,…,z, A, …, Z,_}, w’ *}
• matematice
ex: limbajul reprezentarii zecimale a numerelor naturale
10/2/2023 13
Operatii cu limbaje (1)
Fie: L1 – limbaj peste 1 L2 – limbaj peste 2
(operatii cu multimi)
• L1 L 2 limbaj peste ales corespunzator;
de exemplu: = 1 2
• L1 L 2 limbaj peste ( = 1 2)
• L1 – L 2 limbaj peste ( = 1 )
• L1 L 2 limbaj peste ( = 1 2)
(operatii bazate pe concatenare)
• câtul la dreapta: L1 / L2 = { w *| $ y L2: wy L1}
• câtul la stânga: L1 \ L2 = { w *| $ y L2: yw L1}
10/2/2023 14
Operatii cu limbaje (2)
• L limbaj peste un alfabet
• complementara:
• închiderea tranzitivã:
10/2/2023 15
Gramatica independenta de context
O gramatica independenta de context este un cvadruplu
G = (N, , P, S)
• N este un alfabet de simboluri neterminale
• este un alfabet de simboluri terminale
• N=f
• P N x (N )*
P multime finitã (multimea regulilor de productie)
• S N (simbolul de start - simbolul initial)
Notatie:
(a , b ) P se noteaza: a b
(a se înlocuieste cu b)
• Gramatica regulara:
reg. prod. sunt de forma
• A aB
• A b unde A,B N si a,b
caz special: S→ e poate P In acest caz S nu apare în membrul
drept al nici unei reguli de productie.
• primitive (terminale)
• variabile metalingvistice : intre paranteze unghiulare
• conective metalingvistice: ::= , |
10/2/2023 18
Extended Backus Naur Form
• închiderea tranzitivã:
10/2/2023 21
Analiza lexicala
Atomi lexicali:
– identificatori
– constante (literali)
– cuvinte cheie (cuvinte rezervate) spatiile "albe"
– operatori aritmetici, relationali, …
separatori
FIP TS
Cod atom Pozitie in TS Pozitie Atom Alte
Cod Atom lexical informatii
4
lexical 1 a …
0 1
0 ID 2 b …
3
1 CONST
0 2
2 :=
5
3 <
0 2
4 if
2
5 then 0 1
10/2/2023 3
Analiza lexicala (versiunea 1)
detecteaza
10/2/2023 4
Analiza lexicala (versiunea 2)
10/2/2023 5
Analiza lexicala (versiunea 3)
Altfel
Daca e identificator sau constanta
Daca nu exista deja in TS atunci adauga-l ; Sf. Daca
adauga in FIP codul coresp. atomului si pozitia in TS
altfel
Eroare
Sf.Daca
Sf. Daca
Sf.cattimp
10/2/2023 6
Analiza lexicala (versiunea 4)
Cat timp (mai exista caractere necitite in prg. sursa) ex
detecteaza atom
Daca atom e cuvant-cheie sau operator sau separator atunci
adaugaFIP(cod(atom), 0)
Altfel
Daca atom e identificator atunci
indice:=poz(atom,TS)
adaugaFIP((cod_id, indice)
altfel Daca atom e constanta atunci
indice:=poz(atom,TS)
adaugaFIP((cod_const, indice)
altfel
MesajEroare:, indicatie asupra erorii
sfDaca
Sf.Daca
Sf. Daca
Sf.cattimp
10/2/2023 7
Obs.: multe cautari in TS
++ urmatoarele faze !!
• TS fara organizare
- cautare secventiala
• organizare pt. cautare mai rapida
– ordonare (ordonata lexicografic)
• tabel ordonat lexicografic Probleme ?
• arbore binar de cautare echilibrat
– tabela de dispersie
cautare – fct. de dispersie
(hash)
.
10/2/2023 8
TS si programe cu mai multe blocuri
Obs.:
noi vom lucra doar cu
un singur bloc program
Cum se modifica
algoritmul de cautare
in TS?
10/2/2023 9
Automat finit (AF)
•
Rezultate
Date
“aceptare”
sir simb. Automat sau
Finit “ne-acc.”
Automat finit: model fizic
Automat finit: model matematic
• Un automat finit este un ansamblu
M = (Q, , , q0, F) :
• Q – alfabetul starilor
• – alfabet de intrare
• : Qx → P(Q) functie de tranzitie
• q0 Q - stare initialã
• F Q multimea stãrilor finale
AF – reprezentare tabelara
aj
0 1
p q p 0
q r p 0
r r r 1
AF – reprezentare sub forma de graf
• graf orientat
• cu noduri si arce
etichetate
• (graf de tranzitii)
Configuratii si relatii de tranzitie
M = (Q, , , q0, F).
configuratie: (q,x) Qx*
tranzitie: element din (Qx*) x (Qx*)
= Uq1 q (q1,a)
M2 – determinist (?)
Problema: determinati AFD echiv. pt.
AF – stari care nu contribuie la
acceptarea unui cuvant
• stare neproductiva – (nu e stare productiva)
• stare inaccesibila – (nu e stare accesibila)
10/10/2023 15
Algoritm determin. stari productive
1. i:=0
A0:=F
2. Repeta
i:=i+1
Ai+1=Ai { qQ | p Ai, a a.i. p (q,a)}
pana cand Ai=Ai+1
{Ai – multimea starilor productive}
10/10/2023 16
Teorema:
M1 – AF exista M2 – AF fara st. neproductive echiv.
Constructie (nu demonstratie!):
• Pornim cu: M1=(Q1,1,1,q01,F1) – AF oarecare
• determinam A – multimea starilor productive
(algoritmul anterior)
• Construim: M2 pe baza lui M1 (a.i. L(M1) = L(M2))
M2=(A,1,A,q01,F1)
L(M1) = L(M2) !
10/10/2023 17
Teorema:
M1 – AF exista M2 – AF fara st. inaccesibile echiv.
Constructie (nu demonstratie!):
• … analog …
10/10/2023 18
alta metoda de determinare a AFD
? echivalent pentru un AFN dat
• M1 => ? M2
Ideea:
1. {q01} Q2
pornim cu Q2={q01}
2. adaugam la Q2 toate submultimile lui Q1 la care se
poate ajunge prin functia de tranzitie, atunci cand
se aplica unei stari q Q2 deja adaugata
10/10/2023 19
AFD complet definit
M = (Q, , , q0, F) (AFD)
• : Qx → P(Q) functie de tranzitie ; | q,a |
• …
Teor: AFD AFD complet definit echivalent
Constructie:
AFD => AFD complet definit:
• adaugam o stare (neproductiva) r si extindem astfel:
• (q,a) Qx a.i. q,a devine: q,a r}
• a r,a r}
10/10/2023 20
Minimizarea automatelor finite
Ce vrem:
Automat determinist cu numar minim de stari !
Automat redus
• AFD
• nu contine stari inaccesibile si neproductive
• nu contine perechi de stari echivalente
10/10/2023 21
Minimizarea AFD
• automat cu numar minim de stari
- fara stari –inaccesibile, neproductive
- mai putine stari ?
ideea: relatie de echivalenta; clase de echivalenta
• stari diferentiate
• stari k diferentiate
• stari echivalente
• stari k-echivalente
Automatul redus
Fie M1 – un automat finit oarecare
• Determinam AFD echivalent
• Eliminam starile inaccesibile si neproductive
• Determinam AFD echivalent complet definit
• ≡ 0 ≡1 ≡2 … ≡n …
• Daca (≡k) = (≡k+1) atunci (≡k) = ≡
Lema:
Pt. orice M exista n N a.i. q1 ≡n q2 => q1≡ q2
Curs 3
10/17/2023 1
Gramatica
O gramatica este un cvadruplu G = (N, S , P, S)
• N este un alfabet de simboluri neterminale
• S este un alfabet de simboluri terminale
• NS=f
• P (N S )* N (N S )* x (N S )*
P multime finitã (multimea regulilor de productie)
• S N (simbolul de start - simbolul initial)
Notatie:
(a , b ) P se noteaza: a b
(a se înlocuieste cu b)
10/17/2023 LFTC - Dana Lupsa 2
Notatii
• la nivel abstract (exemple matematice, specificari)
– S: a,b,… litere mici de la inceputul alfabetului
– N: A,B,.. litere mari de la inceputul alfabetului
– S sau N: X,Y,…litere mari de la sfarsitul alfabetului
– S* : x,y,… litere mici de la sfarsitul alfabetului
– ( S U N )* : a,b,… litere grecesti
• nu se folosesc spatii cand avem nevoie de mai multe
caractere pentru a specifica un simbol (terminal sau
neterminal)
• Gramatica regulara:
reg. prod. sunt de forma
• A aB
• A b unde A,B N si a,b S
caz special: S→ e poate P In acest caz S nu apare în membrul
drept al nici unei reguli de productie.
• Gramatici de tip 0
nici o restrictie (suplimentara) referitoare la forma regulilor de productie
• Gramaticile de tip 1
dependente de context gramatici monotone
( monotonic, non-contracting )
• Gramaticile de tip 2
gramatici independente de context
=> Limbaje independente de context
• Gramaticile de tip 3
gramatici regulare => Limbaje regulare
Teorema:
• Limbaj regular
= limbaj generat de o gramatica regulara
• putere de exprimare
AF: AFN AFD
AF gr.regulare
AF (m.regulare expr.reg.)
Teorema:
Daca
L1, L2 sunt limbaje regulare peste alfabetul S
atunci:
L1 U L2, L1∩ L2, L1L2, L1*, complement(L1)
sunt limbaje regulare peste alfabetul S
L1∩L2
• M1 = (Q1, S, d1, q01, F1)
• M2 = (Q2, S, d2, q02, F2)
• ? M = (Q, S, d, q0, F)
complement(L1)
Care este
automatul finit
echivalent?
11/28/2012 2
Echivalenta dintre expresiile
regulare si limbajele acceptate de AF
Teorema:
Daca r este o expresie regulara, atunci exista un AF care
accepta multimea secventelor reprezentate de aceasta
expresie (multimea regulara). Si reciproc.
• Echivalenta:
– constructia automatului echivalent
pentru fiecare dintre constructiile de mai sus
(nu vom face dem.)
– constructia expresiei regulare
ce descrie limbajul acceptat de un automat
(nu vom face dem.) ( ~ seminar)
• Automatul ce accepta: F
• Automatul ce accepta:
...
10/23/2023 LFTC (Dana Lupsa) 7
.
a) Se considera AF pt.: a si b
b) Se considera AF pt.: a* si b*
c) Se considera AF pt.: a si b*
Fie S un alfabet.
Multimile regulare peste S se definesc recursiv astfel:
1. F - multime reg. peste S
2. {} …
3. {a} daca: a S
4. RUS daca R,S – multimi regulare peste S +
5. RS daca R,S – multimi regulare peste S
6. R* daca R – multime regulara peste S
7. Orice alta multime regulara se obtine aplicand de un
numar finit de ori reg. 1-6
• Expresii regulare
1. F expr. reg. coresp. m.reg. F
2. {}
3. a daca: a S {a}
4. r+s daca r,s – expresii regulare r|s RUS
5. rs daca r,s – expresii regulare RS
6. r* daca r – expresie regulara R*
7. Orice alta expr. reg. se obtine aplicand de un numar finit de ori reg. 1-6
• Expresii regulare echivalente:
– mult. regulare reprezentate de acestea sunt egale
(utilizarea lui F si )
(reuniune si concaten.)
F+r=r+F=r
r+s =s+r r=r=r
( r+s )+ t = r +(s + t) Fr=rF=F
( rs ) t = r ( st )
F* =
(r+s)t = rt + st
r* + = + r* = r*
r(s+t) = rs + rt
( + r)* = r*
(r*)* = r*
(r*s*)* = (r+s)*
12/19/2012 LFTC (Dana Lupsa) 5
Expresii regulare
Exercitiu:
Fie r, s – expresii regulare oarecare
Demonstrati ca:
• r* r* = r *
• ( r*)* = r*
• (r*s*)* = (r + s)*
Notatie:
(a , b ) P se noteaza: a b
(a se înlocuieste cu b)
10/31/2023 LFTC - Dana Lupsa 2
Ne reamintim: clasificarea Chomsky
• Gramatici de tip 0:
nici o restrictie (suplimentara) referitoare la forma regulilor de productie
• Gramaticile de tip 1 (gramatici monotone)
– a b P: |a| <= |b |
– caz special: S→ e poate P. In acest caz S nu apare în membrul drept al nici unei reguli de productie.
• Gramaticile de tip 3:
reg. prod. sunt de forma
• A aB
• A b unde A,B N si a,b S
caz special: S→ e poate P In acest caz S nu apare în membrul drept al nici unei reguli de productie.
Teoremã.
Fie G = (N, S, P, S) o gramaticã independentã de context.
Un cuvânt w peste alfabetul S, deci din S*, apartine
limbajului generat de G, adicã w L(G), dacã si numai dacã
w este frontul unui arbore de analizã sintacticã.
10/31/2023 LFTC (Dana Lupsa) 7
Gramatica ambigua
O gramaticã G = (N, S, P, S) independentã de
context este ambiguã
dacã si numai dacã existã cel putin un cuvânt w care
admite doi arbori de derivare distincti; în caz contrar
gramatica este neambiguã.
• Teorema
G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã,
fãrã simboluri neproductive
10/31/2023 LFTC (Dana Lupsa) 16
Simplificarea GIC
(transformari echivalente)
• simbol inaccesibil
Un simbol X N US este simbol inaccesibil dacã nu
existã nici o * derivare: S=>* aXb (a,b(NUS)*)
1. i:=0 ; V0:={S}
2. Repeta
Vi+1 :=Vi U{ B | $ A Vi, a,bUS)* a.i
A→ aBb P}
i:=i+1
pana cand Vi=Vi-1
{Vi – multimea simbolurilor neterminale accesibile}
NA := Vi
E → E+T
E→T
T→T*F
T→F
F → (E)
F→a
Teorema:
G= (N, S, P, S) $ G' = (N', S', P', S) proprie echiv.
Teorema:
G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã
fãrã reg.prod. recursive la stanga
Observatii:
• Recursivitatea nu se poate elimina.
• Recursivitatea la stanga a fost transformata în
recursivitate la dreapta.
Exercitiu
Eliminati recursivitatea la stanga:
S-> Sa
S->a
• definitia formala:
Teoremã.
Dacã L1si L2 sunt limbaje independente de context atunci:
L1U L2 , L1L2 , L1*
sunt limbaje independente de context.
Observatie:
L1∩L2, compl(L1) - nu sunt neaparat l.i.c.
L1 = { anbn | n N}
L2 = { cn | n N}
L3 = { anbn cm | m, n N}
L4 = { anbm cm | m, n N}
L1 U L2 , L1L2 , L1*
10/31/2023 5
Problema 1:
Fie limbajul:
L = {anbncn | n N}
Este independent de context?
Rezolvare:
Facem observatia ca: z L ddaca:
a. ordinea simb. este data de regulile:
i. simb. a apar inaintea simb. b si c
ii. simb. b apar inaintea simb. c
b. nr. simb. a este egal cu nr. simb. b este egal cu nr. simb. c
(si notam: nra(z)=nrb(z)=nrc(z))
Vom dem. ca nu este independent de context, prin reducere la absurd, folosind lema
de pompare pentru limbaje independente de context.
PP. ca este independent de context.
Atunci au loc conditiile din lema de pompare
De aici rezulta ca pN* astfel incat:
z L care satisfice
- |z|>=p
- o descompunere z = uvwxy astfel incat: uviwxiy L, i N
si |vx| >=1
si |vwx|<=p
Dem., Versiunea 1:
Alegem z cu |z|>=p (satisface cond. de mai sus)
n a.i.anbncn| >=p ; z L => z = anbncn si |z|>=p
z = uvwxy descompunerea din lema de pompare
ne aflam in unul din urmatoarele cazuri generale:
1. cel putin unul dintre v si x contin cel putin 2 simboluri (dintre a,b,c)
diferite; (cazul 1)
2. v si x contin un singur simbol de oricate ori (o sau mai multe)
dar acelasi simbol (sau a, sau b, sau c)
dar v si x nu pot fi ambele vide
(cazul 2)
3. v si x contin un simbol ( a, sau b, sau c) de oricate ori,
dar nu pot fi vide,
dar v si x nu contin acelasi simbol (cazul 3)
cazul 1: (vezi cazurile posibile pentru cazul 1; aleg unul dintre ele si dem. pt. el;
pentru celelalte demonstratia se face analog)
fie: v = ak1bk2 , k1>0, k2>0 (rel.1) (oricare x)
fie i =2
cf. Lemei de pompare: uv2wx2y L
adica:
uv2wx2y = u ak1 bk2 ak1 bk2 wx2y L ,
atunci cand k1>0 si k2>0 (cf. rel.1)
ar insemna ca simb. b pot sa apara inaintea simb. a
ceea ce nu e adevarat pentru cuvintele din L
(observatia (a.)(i.))
=> contradictie
cazul 2: (dintre cazurile posibile pentru cazul 2 aleg unul dintre ele si dem. pt. el)
fie: v = ak1 k1>=0
k2
x=a k2>=0
cazul 3: (dintre cazurile posibile pentru cazul 3 aleg unul dintre ele si dem. pt. el)
fie: v = ak1 , k1>0 (rel.4)
x = bk2 , k2>0 (rel.5)
k3
atunci: u = a , k3>=0
y = bk4cn, k4>=0
w = an-k1-k3bn-k2-k4 , n-k1-k2>=0; n-k2-k4>=0
analog se face dem. pt. fiecare dintre cazurile de mai sus (ajunge la o contradictie)
Exercitiu:
descrieti cazurile posibile pt. cazul 2 si cazul 3
Dem., Versiunea 2 ( scurta 😊 ):
Alegem z cu |z|>=p (satisface cond. de mai sus)
z = apbpcp
=> |z|>=p
z = uvwxy descompunerea din lema de pompare
S-) o4,t
4*roS
A-> q
5
,/r /
J
,lt\
I
t
o@,,/ o@
ls Xr
as
I
q
t
\t'... o 4}a \
i
fD
/f-\-
'q.
b&f,,xiL f
t-=-J
?n-7^"zt{ *4 4*6ri& *eoVed*i "O e'"4r1.
L1, ( e'l'l ,* J
$1: srL
{4na
(z '- ( ,' u*rxt {&' Se*>c Sz
I
{
tute
(.t ULz: s-> r/ LtLz: 5+*sz
54 sz tSl +
5(->o * L
rt')2 t{
n'1. (
{
9z -tz 9z
5z-> a *
Automate push-down
(APD)
.
11/7/2023 1
Automat Push Down (APD)
Definitie:
Un automat push-down (APD) este un ansamblu
M = (Q, S, G, d, qo,Zo, F) , unde:
• Q alfabetul starilor;
• S alfabetul de intrare;
• G alfabetul memoriei stivă; ;
• qoQ stare iniţială;
• ZoG simbolul de start al memoriei stivă;
• F Q mulţimea stărilor finale;
• d:Qx(S U {e})xGP (QxG*) funcţia de tranziţie
11/7/2023 2
Reprezentare
• enumerare
• tabelara
• sub forma de graf
11/7/2023 3
Reprezentare folosind enumerare
Exemplu:
• M=({q0,q1},{a,b},{A,Z}, d,q0,Z,{q0})
• d:
d(q0,a,Z) = {(q0,AZ)}
d(q0,a,A) = {(q0,AA)}
d(q0,b,A) = {(q1,e)}
d(q1,b,A) = {(q1,e)}
d(q0,e,Z) = {(q0,e)}
d(q1,e,Z) = {(q1,e)} … si F in celelalte cazuri
11/7/2023 4
Reprezentare tabelara
Exemplu:
11/7/2023 6
Tranzitii
• ├─ tranziţie directă
(q,aw,Za)├─ (p,w,ga) <=> d(q,a,Z)'(p,g)
sau
(q,aw,Za)├─ (p,aw,ga) <=> d(q,e,Z)' (p,g) (e-tranziţie)
11/7/2023 7
Secventa acceptata de automat
11/7/2023 8
Le(M)={anbn| nN}
De ce? (justificare:)
in q0 – se accepta oricate simboluri a
cu ramanere in q0 si adaugare cate un A in stiva
adica: la fiecare citire de a adaug in stiva un A (1)
sau – se trece in starea q1 (dupa ce am citit cel putin un a, adica am A in stiva)
obs.: se poate trece in q1 oricand, fara modificarea stivei (2)
sau - se scoate Z din stiva
(acest lucru se poate intampla numai inainte de citirea unui simb)
=> se accepta secventa vida
in q1 – cand in varful stivei este un A, se citeste un b
adica: fiecare citire de b scoate un A din stiva (3)
sau: daca in varful stivei este un Z, acesta se scoate (goleste stiva)
11/7/2023 10
G.I.C. => APD echivalent
Fie: G = (N, S, P, S) – gram. independenta de context
Cine este M - APD astfel incat L(G)=Le(M) ?
constructia:
M = ({q}, S, N U S, d, q, S, F )
1. dacă (Aa) P atunci (q,a )d (q,e,A);
2. d (q,a,a ) ={(q,e)} " aS ;
3. d (.,.,.) = F în celelalte cazuri.
11/7/2023 11
Determinism
M = (Q, S, G, d, qo, Zo, F)
este determinist ddacă:
"ZG "qQ , "aS
1) |d(q,e,Z)| = 0 si |d(q,a,Z)| <=1
2) |d(q,e,Z)| = 1 si |d(q,a,Z)| = 0
11/14/2023 1
Analizorul descendent cu reveniri
Configuratie:
(s,i,a,b)
• s- starea automatului
– q – stare normala
– r – stare de revenire (sau b – back)
– t – stare de terminare (terminare cu succes)
– e – stare de eroare
• i – pozitia (urmatoare) in secventa de intrare
• a – stiva de lucru (de istorie): istoria r.p. aplicate
• b – stiva de intrare: partea inca neprelucrata
11/14/2023 2
Analizorul descendent cu reveniri
• configuratie initiala: (q,1,e,S)
• Tranzitii:
– expandare: (q,i,a,Ab) ├─ (q, i, aA1, g1b)
– avans: (q,i,a,aib) ├─ (q, i+1, aai, b)
– insucces de moment: (q,i,a,ab) ├─ (r,i,a,ab) , a<>ai
(q,i,a,e) ├─ (r,i,a,e) , in+1
– succes: (q,n+1,a,e) ├─ (t,n+1,a,e)
Observatii:
• Se numeroteaza regulile de productie
cu acelasi membru stang
• Stiva de lucru contine informatiile referitoare la
regulile de productie aplicate
11/14/2023 4
Schita subalgoritm ASDR
daca(s=r) atunci
Subalgoritmul ASDR(G, x, sir_prod) daca (varf(α) = un terminal a) atunci
s:=q; i:=1; α:=ε; β:=S; //config initiala i:=i-1;
Cattimp ((s≠t) si (s ≠e)) executa pop(α, a);
daca (s=q) atunci push (β, a);
daca (β=ε) atunci altfel // varf(α) - un Aj oarecare (indicatie pt. A→ ϒj)
daca (i=n+1)) atunci daca (exista r.p. A→ ϒj+1 ) atunci
s:=t s:=q;
altfel pop(α, Aj);
s:=r push(α, A j+1);
sf_daca pop(β, ϒ j );
altfel push (β, ϒ j+1 );
daca (varf(β) = un neterminal A) atunci altfel
pop(β, A); daca (i=1) si (A=S) atunci s:=e;
push(α, A1); altfel
push(β, ϒ1); pop( α, Aj );
altfel push( β, Aj );
daca (varf (β) = terminalul xi) atunci sf_daca
i:=i+1; sf_daca
pop(β, xi); Sf_daca
push(α, xi); Sf_daca
altfel s:=r; Sf_daca
sf_daca Sf_cattimp
sf_daca Daca s=e atunci tipareste “Eroare”
sf_daca altfel tipareste “Secventa este acceptata”
altfel constructie_sir_prod(G, α);
// … Sf_daca
Sf_subalgoritm
11/14/2023 5
.
sir_prod:=“”;
Cattimp not vida(α) executa
daca varf(α) este de forma Aj atunci
sir_prod:= sir_prod + indicativ_rp(varf(α));
sf_daca
pop(α);
Sf_Cattimp
Sf_subalgoritm
11/14/2023 6
Gramatici recursive curs 5
11/14/2023 10
Analiza sintactica descendenta.
Gramatici si analiza LL(K)
.
11/21/2023 1
FIRSTk
11/21/2023 2
FOLLOWk
11/21/2023 3
Operatia k
Fie L1, L2 – 2 limbaje peste S
L1 k L2 = {w | $ x L1, y L2 astfel incat:
fie: |w| = k si $ z: xy = wz
fie: |w| < k si xy = w
}
• A→a
FIRST1(A) FIRST1(a)
• A→aXb
(FIRST1(b) – {e}) FOLLOW1(X)
• A→aX
FOLLOW1(A) FOLLOW1(X)
[… ]
11/21/2023 7
Exercitii: FIRST1 si FOLLOW1
Problema:
• determinati FIRST1 si FOLLOW1 pentru toate terminalele si
neterminalele gramaticii cu regulile de productie:
S → BA (1)
A → +BA (2)
A→e (3)
B → DC (4)
C → *DC (5)
C→e (6)
D → (S) (7)
D→a (8)
11/21/2023 8
Gramatici LL(k)
• analizoare LL(k)
- analiza sintactica descendenta
- secv. de intrare este citita de la stanga spre dreapta
- se folosesc derivari de stanga
11/21/2023 9
Gramatici LL(k)
• G = (N, S, P, S)
? w=a1a2…an L(G)
S =>st … =>st a1a2…ai A a
(derivari de stanga)
• LL(k) : alegerea r.p. pentru a-l retranscrie pe A este
unic determinata de: ai+1ai+2…ai+k
• terminologie:
– parte inchisa: a1a2…ai
– predictia (de lungime k): ai+1ai+2…ai+k
– simbol de retranscris: A
11/21/2023 10
Gramatici LL(k)
Definitie:
G = (N, S, P, S) este LL(K):
• Daca:
– S =*>st wAa =>st w b a =*> w x
– S =*>st wAa =>st w g a =*> w y
– FIRSTk(x) = FIRSTk(y)
• atunci:
b=g
11/21/2023 11
k=1
11/21/2023 12
Gramatici LL(1)
• ? w=a1a2…aiai+1 … an L(G)
S =>st … =>st a1a2…ai A a
• LL(1): rescrierea lui A este unic determin. de ai+1
De exemplu:
Aleg: atunci cand:
A→g ai+1 FIRST1(g)
A→e ai+1 FOLLOW1 (A)
A→d (=*>e) ai+1 FOLLOW1 (A)
11/21/2023 13
Gramatici LL(1)
Teorema:
G – este de tip LL(1)
ddaca:
AN
A→a1| a2| a3| ... | am
• FIRST1(ai) FIRST1(aj) = F , i<>j
• daca $ i a.i. ai =*> e atunci: e FIRST1(ai)
FIRST1(aj) FOLLOW1 (A) = F , i<>j
11/21/2023 14
Analiza sintactica LL(1)
• se construieste tabelul de analiza LL(1)
– alegerea lui A → ai este indicata in tabel
• analizorul sintactic LL(1)
~ modelare ca un automat
Conventie:
$ : la orice cuvant din limbaj se adauga $:
marcator de sfarsit de cuvant
Observatie:
O gramatica este de tip LL(1) ddaca tabelul de analiza nu contine conflicte (nu
exista mai mult de o valoare intr-o celula din tabel)
11/21/2023 15
Tabelul de analiza LL(1)
indica actiunea posibila la un moment dat
• coloane: S U {$}
• linii: N U S U {$}
• celula => (membrul drept al reg.prod , nr. reg.prod.)
11/21/2023 16
Tabelul de analiza LL(1)
M(X,a) =
– (a,i) daca X → a P, a FIRST1(a)
X → a – a i-a regula de productie
– (a,i) daca e FIRST1(a), a FOLLOW1(X)
X → a – a i-a regula de productie
– pop X=a
– acc X = $, a = $
– err in toate celelalte cazuri
11/21/2023 17
Analizorul LL(1)
• Automat: (a,b,P)
– banda de intrare: a (stiva de intrare)
– stiva b (stiva de lucru)
– banda de iesire P => sirul regulilor de productie
• config. initiala: (w$, S$, e)
• config. finala: ($, $, P )
• tranzitii
– push (ax$, Ab, P)├─ (ax$,ab,Pi) dc.: M(A,a) = (a,i)
– pop (ax$, ab, P) ├─ (x$, b, P)
– acc ($, $, P) ├─ acc
– err in celelalte cazuri
11/21/2023 18
Transformari echivalente
• => gram. LL(1) echiv. ?
• factorizare la stanga
…
11/21/2023 19
Gramatici LR(k)
• analizoare LR(k)
- analiza sintactica ascendenta
- secv. de intrare este citita de la stanga spre dreapta
- se folosesc derivari de dreapta
metoda: deplasare - reducere
11/28/2023 1
Analiza sintactica ascendenta
Exemplu:
Cum “arata” analiza sintactica ascendenta
pentru gramatica:
S → AB (1)
A→a (2)
B→b (3)
si intrarea: ab ?
11/28/2023 2
Gramatica LR(K)
Analizoarele sintactice LR(k) lucreaza cu
gramatica imbogatita:
G’ = ( N U {S’}, , P U { S’ -> S} , S’)
(S’ N)
pentru a evita ca simbolul de start sa apara in
membrul drept al unei reguli de productie.
11/28/2023 3
Gramatica LR(K)
O gramatica G = ( N , , P, S)
este de tip LR(k) pentru k>=0
ddaca din:
– S' =*>dr a A w =>dr a b w
– S' =*>dr g B x =>dr a b y
– FIRSTk(w) = FIRSTk(y)
rezulta ca:
– A=B
– x =y
– a=g
11/28/2023 4
Gramatici LR(K) - terminologie
Prefix viabil
Fie: S =*>dr a A w =>dr a b w
Orice prefix al lui ab se numeste prefix viabil
Element de analiza LR(k)
se defineste ca fiind: [A→a.b, u]
unde A→ab P si u k u-predictie
11/28/2023 6
Colectia canonica LR(K)
C = {Ii - elementele de analiza pentru un prefix viabil}
• in I0 avem un prim element de analiza
• am cel putin un element in Ij (pentru fiecare)
=> adaug altele: functia Closure
• am o multime Ij (pentru fiecare)
=> construiesc multimile goto(Ii,X)
11/28/2023 7
Constructia colectiei canonice LR(k)
C = {Ii-elementele de analiza pentru un prefix viabil}
in I0 avem: [S’ → .S , …]
11/28/2023 9
Gramatica imbogatita
• se adauga S’
– nou simbol de start
– S’→S
Colectia canonica:
• In I0 avem: [ S’ → .S ]
• …
11/28/2023 10
Functia Closure LR(0)
11/28/2023 11
Functia goto LR(0)
11/28/2023 12
Tabelul de analiza LR(0)
11/28/2023 13
Tabelul de analiza LR(0)
T(Ii, actiune) =
– s (shift, deplasare)
daca: [A→a.b] Ii , b <>e
si: T(Ii, X) = Ij, daca Ij = goto(Ii,X)
– L (reducere cu r.p. nr. L)
daca [A→a.] Ii
A→a P : regula de prod. cu numarul L
si: T(Ii, X) nu se completeaza
– acc daca: [S’ → S.] Ii
Toate celelalte cazuri se considera eroare .
11/28/2023 14
Automatul LR(0) – model matematic
• configuratie:
(a,b,P)
(stiva_de_lucru, banda_de_intrare, banda_de_iesire)
• pe stiva: prefixe viabile, stari ale analizorului
11/28/2023 15
Automatul LR(0) – model matematic
Tranzitii
• deplasare:
($ g sk , ai..an$ , P) ├─ ($g skaism , ai+1…an$ , P)
daca: T(sk,actiune) = s si T(sk,ai) = sm
• reducere:
($ g sp-1Xpsp… Xksk, ai..an$,P)├─ ($gsp-1A sm, ai…an$, LP)
daca: T(sk,action) = L
si: A → Xp… Xk – r.p. cu nr. L
T(sp-1, actiune) = s
T(sp-1, A) = sm
S→ Ax
S→ By
A→ a
B→ a
11/28/2023 17
K=1: SLR, LR(1), LALR
11/28/2023 18
Analiza sintactica SLR
• SLR = Simple LR
• SLR tine cont de
• element de analiza SLR: predictie numai
[A→a.b, u] pentru reducere
u = FOLLOW1(A)
|u| =1
11/28/2023 19
Analiza sintactica SLR
• constructia tabelului de analiza SLR
– actiunea de reducere depinde de predictia u
=>reducerea va avea o coloana pentru fiecare a
tabelul: linii: elementele colectiei canonice
coloane: N U U {$}
celula: sstare,rnr.r.p, acc
• analizorul ~ analizorul pt. LR(0)
automat: configuratii si tranzitii
11/28/2023 20
Analiza sintactica SLR
11/28/2023 21
Gramatica SLR
O gramatica este SLR
ddaca tabelul de analiza nu contine conflicte.
S →A 1
S → xb 2
A → aAb 3
A →B 4
B →x 5
11/28/2023 22
• Gramatica data prin urmatoarele r.p. este SLR ?
S →A 1
S → xb 2
A → aAb 3
A →B 4
B →x 5
11/28/2023 23
Analizor sintactic LR(1)
• imbogatirea gramaticii
• constructia colectiei canonice
element de analiza LR(1):
– [A→a.b, u], |u| =1
• constructia tabelului de analiza
• analiza: automat
11/28/2023 24
Colectia canonica LR(1)
• elem. initial
[S’ → .S , $]
• Closure
[A → a.Bb, a] =>[B →.g, b]Closure([A→a.Bb, a])
B→g b FIRST1(ba)
• goto
goto (I,X) =
Closure ({[A→aX.b,a] | [A→a.Xb,a] I })
11/28/2023 25
Tabelul LR(1)
11/28/2023 26
Construirea tab. de analiza LR(1)
• [A→a.Xb,b] Ii : goto (Ii,X) = I j <= functia goto
action(Ii,X) = sj
• [A→a. , a] Ii action(Ii,a) = rL
L – nr. reg. de productie: A → a
A <> S’
• [S’ → S., $] Ii action(Ii,$) = acc
11/28/2023 28
Analizor sintactic LALR
• [A → a.b , a ]
nucleu
[ A → a1. , a ] reducere-reducere
[ B → b1. , a ]
11/28/2023 30
.
S. MOTOGNA
Metode de proiectare a compilatoarelor, 2006
11/28/2023 31
Analiza LR(1)
S’ → S 0
S →A 1
S → xb 2
A → aAb 3
A →B 4
B →x 5
12/7/2020 1
12/7/2020 2
12/7/2020 3
Analiza LALR
12/7/2020 4
12/7/2020 5
12/7/2020 6
12/7/2020 7
descendent ascendent
Analizoare sintactice
12/1/2021 1
LL(k)
• L: “Left-to-right” (scaneaza intrarea)
• L: “Left-most derivation”
• k simboluri de lookahead descendent
~ dezvoltare in pre-ordine a arborelui de analiza sintactica
LR(k)
• L: Scaneaza intrarea “Left-to-right”
• R: “Right-most derivation” ascendent
• k simboluri de lookahead
~ traversare in post-ordine a arborelui de analiza sintactica
LL vs LR
12/1/2021 2
Clase de limbaje si relatia dintre ele
12/1/2021 3
Gramatici si relatii de precedenta
12/5/2023 1
Gramatici de precedenta simpla
Definitie:
gramatica de precedenta simpla
este o gramatica independenta de context proprie
(inclusiv -independenta)
unic invertibila:
• nu exista 2 reguli de productie cu acelasi membru drept
• intre oricare 2 simboluri exista cel mult o relatie de precedenta
12/5/2023 2
Gramatici de precedenta simpla
Relatii de precedenta Wirth-Weber:
Adevarat
sau fals?
12/5/2023 3
Gramatici de precedenta simpla
Exemplu: S a b c $
S → aSSb S = . <. = . <.
S→c
? accb L(G) a = . <. <.
b .> .> .> .>
$ <. <.
G – gramatica de atribute
G = (N, , P, S) – gram. independenta de context
• A = UX N U A (X)
– fiecarui simbol al gramaticii
i se asociaza 0 sau mai multe atribute
: multime finita de atribute
• R = Up P R(p)
– fiecarei reguli de productie i se asociaza
o multime finita de expresii ale atributelor
asociate simbolurilor regulii de productie
=> reguli de evaluare ale atributelor
12/12/2023 1
Atribute
asocierile atribut - valoare
sunt definite numai peste o “analiza sintactica”
un arbore de derivare
Evaluator de atribute
• calculeaza valori & propaga valorile calculate
• traverseaza arborele de derivare
11/7/2013 4
Atribute
Fie: regulile de evaluare a atributelor
asociate urmatoarei reguli de productie:
A X1... Xk
• atribut sintetizat:
un atribut al lui A
regula de evaluare atribuie valoare atributului lui A
• atribut mostenit:
atribut al lui Xi
regula de evaluare atribuie valoare atributului lui Xi
El depinde de valorile parintilor si fratilor.
12/12/2023 5
Gramatica S-atributata
Def:
exista doar atribute sintetizate
si acestea depind de valorile atributelor copiilor
Evaluarea atributelor
– parcurgere "in sus" a arborelui de analiza sintact.
analizor sintactic ascendent
12/12/2023 6
Gramatica L-atributata
Def:
Pentru orice regula de productie: A-> X1 X2 … Xn
– un atribut mostenit a lui Xi depinde de atribute mostenite ale lui A si de
atribute ale lui X1, X2, …, Xi-1
– orice atribut sintetizat al lui A nu depinde de alte atribute sintetizate ale lui A
Evaluarea atributelor
in stransa legatura cu parcurgerea arborelui de derivare
Subalg. viziteaza(A)
pentru fiecare descendent Xi : (X1 , X2, …, Xn)
evalueaza atributele mostenite ale lui Xi
viziteaza (Xi)
sf. pentru
evalueaza atributele sintetizate ale lui A
endSubalg.
12/12/2023 7
Gramatică de atribute (GA) GA, DDS
- gramatica independenta de context
- atribute + expresii ale atributelor in unele surse se
foloseste acelasi
Definiţii dirijate de sintaxă (DDS) termen
(EN: Syntax directed definition)
- gramatica independenta de context
- atribute + reguli de calcul ale atributelor
pot avea efecte laterale
(apeluri de proceduri sau fragmente de program)
Scheme de traducere:
(EN: Syntax directed translation)
definitie orientata sintaxa
+ alte actiuni ex.: fragment de program
se execută atunci când este întâlnit în parcurgerea arborelui
EX: A -> α { print('x')} β
se va afişa caracterul 'x' după ce se vizitează subarborele α
şi înainte de traversarea subarborelui β.
12/12/2023 8
Gramatica de atribute. Exemplu
12/12/2023 9
Generarea codului intermediar
12/18/2023 1
Generarea codului intermediar
In urmatoarele exemple,
pentru generarea codului intermediar vom atributa gramatica
ce descrie structurile sintactice.
12/18/2023 3
E → E1+ID E.varn = newVarName()
E.cod = E1.cod ||
E.varn := E1.varn + ID.varn
E → E1 - ID E.varn = newVarName()
E.cod = E1.cod ||
E.varn := E1.varn - ID.varn
E → ID E.cod= “ ”
E.varn = ID.varn
ID → a ID.varn= a Gramatica
ID → b ID.varn= b atributata
ID12/18/2023
→c ID.varn= c 4
Exercitiu:
Dati o gramatica independenta de context (forma simplificata)
care descrie sintaxa expresiilor aritmetice , a.i.
a+b-c
sa fie un cuvant al gramaticii.
(Gramatica va respecta structurile lexicale, sintactice si semantice!)
a) atributati gramatica:
- introduceti (cel putin) atributul cod
cod - cod intermediar cu 3 adrese, reprezentare cvadruple
- definiti reg. evaluare pt. atributul cod
- folositi si alte atribute daca e nevoie
b) dati arborele de derivare
c) descrieti evaluarea atributului cod pentru exemplul dat
12/18/2023 5
Exercitiu:
Dati o gramatica independenta de context (forma simplificata)
care descrie sintaxa instructiunii if , a.i.
if a > b then max:=a else max:=b
este un cuvant al gramaticii.
(Gramatica va respecta structurile lexicale, sintactice si semantice!)
a) atributati gramatica:
- introduceti (cel putin) atributul cod
cod - cod intermediar cu 3 adrese, reprezentare cvadruple
- definiti reg. evaluare pt. atributul cod
- folositi si alte atribute daca e nevoie
b) dati arborele de derivare
c) descrieti evaluarea atributului cod pentru exemplul dat
12/18/2023 6
Exercitiu:
… similar pentru:
while a>=b do a:=a-b
12/18/2023 7
Compilator:
multi-limbaj,
multi-target .
(masina)
in stransa
legatura cu
separarea
fazelor
12/19/2022 2
Codul intermediar
• limbaj intermediar:
– usor de transcris din arborele sintactic
– usor de translatat in cod masina
– proiectat inclusiv pt. a fi inteles/utilizat de oameni
– mai apropiat de limbajul procesorului decat limbajul
sursa
Reprezentari intermediare:
"intre" arborele de analiza sintactica si ASM
• high-level: mentine structura limbajului
(tinde sa fie)
• mid-level: independent de limbaj si masina
• low-level: dependent de masina
12/19/2022 3
Codul intermediar
12/19/2022 4
Arbore sintactic abstract
“Abstract syntax trees”
Alte denumiri (intalnite in literatura de specialitate, in lb/ romana)
arbore de sintaxa abstracta, arbore sintactic
Proprietati:
• nodurile interioare sunt operatori
• descendentii unui nod sint operanzii lui
fiecare subarbore formeaza o "unitate logica"
12/19/2022 5
Arbore sintactic abstract
Exemplu: id1:=id2*id3+id4
12/19/2022 6
Arbore sintactic abstract
Exercitii propuse:
12/19/2022 7
Forma poloneza
• aceeasi idee ca si la:
forma poloneza postfixata pentru expr. aritmetice
Exemplu:
id1 := id2 * id3 + id4 => id1 id2 id3 * id4 + :=
Proprietate:
• operatorii apar in ordinea in care se executa operatiile
Avantaj:
evaluarea se face parcurgand o singura data expresia si
executand operatiile tinand cont de aritatea lor
12/19/2022 8
Cod intermediar cu 3 adrese
• secventa de instructiuni cu forma generala:
<rezultat> := <arg1> <operator> <arg2>
• operatii:
– binare
– unare – se reprezinta doar un operand
• reprezentare
– cvadruple
– triplete Pentru triplete si triplete indirecte
vom lucra numai cu exemple cu
12/19/2022 9
3 adrese – reprezentare cvadruple
• structura tip inregistrare ce contine 4 campuri:
operator arg1 arg2 rez
Exemplu:
operator arg1 arg2 rez
A := B*(C+D) … … … …
+ C D T1
* B T1 T2
:= T2 A
12/19/2022 10
3 adrese – reprezentare triplete
• structura tip inregistrare ce contine 3 campuri:
operator arg1 arg2
12/19/2022 11
3 adrese – reprezentare triplete
Exemplu:
A := B*(C+D)
12/19/2022 12
3 adrese – reprez. triplete indirecte
12/19/2022 13
3 adrese – reprez. triplete indirecte
nr. de ordine nr. operatiei
a operatiei propriu-zise
51 131
52 132
Masina cu registri
– registri: valorile cu care operam
– instructiuni:
operanzii: registri de intrare , registru de iesire
12/18/2023 1
Masina cu registri
Exemplu:
Fie expresia aritmetica
A+B
12/18/2023 2
Masina cu stiva
Modelul se bazeaza pe faptul ca orice expresie poate fi scrisa in
forma poloneza postfixata.
Pentru simplificare, noi vom
folosi doar exemple de tipul:
12/18/2023 3
Masina cu stiva / masina cu registri
Exemplu: 2+3
• Masina cu stiva
Push 2
Push 3
Add
• Masina cu registri
Load 2, r0
Load 3, r1
Add r0, r1, r2
12/18/2023 4
Alte modele de calcul
+ combinatii
• Masina cu acumulator
acumulator : un registru special
- operand implicit
- rezultate stocate in acumulator
+…
• Masina cu acumulator si stiva
stiva + acumulator (registru special)
… …
12/18/2023 5
Java bytecode :
exemplu
12/18/2023 6
Idei execitii atributare gramatici
– cod intermediar
.
1/3/2024 1
Exercitiu:
Dati o gramatica independenta de context (forma simplificata)
care descrie sintaxa instructiunii if , a.i.
if a > b then max:=a else max:=b
este un cuvant al gramaticii.
(Gramatica va respecta structurile lexicale, sintactice si semantice!)
a) atributati gramatica:
- introduceti (cel putin) atributul cod
cod - cod intermediar cu 3 adrese, reprezentare cvadruple
- definiti reg. evaluare pt. atributul cod
- folositi si alte atribute daca e nevoie
b) dati arborele de derivare
c) descrieti evaluarea atributului cod pentru exemplul dat
1/3/2024 2
2
Idee rezolvare – reguli de evaluare a atributelor,
asociate regulii de productie ce descrie sintaxa instructiunii if
Fie sintaxa instr. if-then-else descrisa astfel:
S→if E then S1 else S2
reguli de evaluare pt. atributului cod:
S.et_false = newLabel ()
S.et_after = newLabel()
S.cod = E.cod ||
g= , E.varn , false , S.et_false ||
S1.cod ||
goto S.et_after ||
S.et_false ':' ||
S2.cod ||
1/3/2024
S.et_after ':' 3
3
Exercitiu:
… similar pentru:
while a>=b do a:=a-b
1/3/2024 4
4
Idee rezolvare – reguli de evaluare a atributelor, asociate
regulii de productie ce descrie sintaxa instructiunii while
S→ while E do S1
S.et_begin = newLabel ()
S.et_after = newLabel()
S.cod = S.et_begin ':' ||
E.cod ||
g=, E.var, false, S.et_after ||
S1.cod ||
goto S.et_begin ||
1/3/2024
S.et_after ':' 5
5
• Recapitulare, Exemple, Aplicatii
Automate
• Translatoare
• Masini Turing
1/9/2024
Automat finit: model fizic
Automat finit: model matematic
• Un automat finit este un ansamblu
M = (Q, , , q0, F) : AF cu numar
• Q – alfabetul starilor minim de stari
• – alfabet de intrare
Model fizic
1/9/2024
Automat push-down (APD)
M = (Q, , G, , qo,Zo, F)
• Q alfabetul stărilor;
• alfabetul de intrare;
• G alfabetul memoriei stivă;
• qoQ stare iniţială;
• ZoG simbolul de start al memoriei stivă;
• F Q mulţimea stărilor finale;
• :Qx( U {e})xGP (QxG*) funcţia de tranziţie
– are ca valori submulţimi finite din QxG* (posibil
multimea vida)
1/9/2024
Transformarea acceptarii dupa criteriul stivei vide
in acceptare dupa criteriul starii finale
Fie: M – APD care accepta L dupa criteriul stivei vide
Dorim sa construim M’ care accepta L dupa criteriul starii finale
M’ – contine tot ce contine M , dar mai adaugam:
• qnou o noua stare initiala
• qf o noua starea finala
• Znou noul simbol initial al stivei
Adaugam si tranzitiile corespunzatoare noilor stari, asa cum este schitat mai jos:
1/9/2024
model fizic
Translator
finit
1/9/2024
Translator finit
Exemplu:
M = ( Q, , D, , qo, F )
M = ({q0, q1}, {a}, {b} , , q0 , {q1} )
(q0, a) = {q1, {b}}
d(q1, e) = {q1, {b}}
Translatarea definita de M:
T(M)={(x,y)| x* , yD*, (q0,x,e) |-* (q,e,y), qF)
1/9/2024
Alte automate
In literatura mai gasim:
(intre multe alte tipuri)
1/9/2024
Translator push-down
M = (Q, , G, D, , qo, Z0, F)
• Q alfabetul stărilor;
• alfabetul de intrare;
• G alfabetul memoriei stivă;
• D alfabetul de iesire;
• qoQ stare iniţială;
• ZoG simbolul de start al memoriei stivă;
• F Q mulţimea stărilor finale;
• : Q x ( U {e}) x G P0 (Q x G*x D*)
1/9/2024
multimea partilor finite
Translator model fizic
push-down
1/9/2024
Translator push-down
M = (Q, , G, D, , qo, Z0, F)
1/9/2024
Ne reamintim: Analizorul LL(1)
• Automat: (a,b,P)
– banda de intrare: a
– stiva b (stiva de lucru)
– banda de iesire P => sirul regulilor de productie
• config. initiala: (w$, S$, e)
• config. finala: ($, $, P )
• tranzitii
– push (ax$, Ab, P)├─ (ax$,ab,Pi) dc.: M(A,a) = (a,i)
– pop (ax$, ab, P) ├─ (x$, b, P)
– acc ($, $, P) ├─ acc
– err in celelalte cazuri
1/9/2024
Automatul LL(1)
ca translator push-down (modificat)
[Moldovan]
Limbajul acceptat
se defineste dupa
criteriul stivei vide.
1/9/2024
Masini Turing
• infinita
banda de intrare • finita la stanga
•…
cap citire/scriere
UC
1/9/2024
Masini Turing
O miscare a masinii Turing consta din:
• se schimba starea
• se inlocuieste simbolul curent de pe banda de intrare
• capul citire/scriere se muta cu o pozitie la stanga sau
la dreapta
1/9/2024
Masina Turing cu banda infinita
O masina Turing este: M = (Q, , G, , q0, #, F)
• Q – multime finita de stari
• G – multimea simbolurilor benzii
• # - un simbol din G, numit simbolul blanc
• – o submultime a lui G -{#}
• – este functia de tranzitie
: Q x G → P(Q x G x {L,R})
• q0 – starea initiala
• F Q – multimea starilor finale
1/9/2024
Masina Turing cu banda infinita
• configuratie
a1 q a2 a1a2 G*, separate de capul de citire
pana la cel mai din stanga/dreapta simbol ne-blank
• tranzitie
(p,Y,L) (q,Xi)
X1X2…Xi-1qXi Xi+1…Xn├─X1X2 … Xi-2 p Xi-1YXi+1…Xn
(p,Y,R) (q,Xi)
X1X2…Xi-1qXi Xi+1…Xn├─X1X2 … Xi-1Y p Xi+1…Xn
• limbaj acceptat
{w * | q0w ├─ a1qa2 , q F, a1a2 G*}
1/9/2024
Exemplu: masina Turing
Functia de tranzitie 0011 ?
G-
0 1 X Y #
q0 (q1,X,R) (q3,Y,R) 0
q1 (q1,0,R) (q2,Y,L) (q1,Y,R) 0
q2 (q2,0,L) (q0,X,R) (q2,Y,L) 0
q3 (q3,Y,R) (q4,# ,R) 0
q4 1
1/9/2024
Masini Turing
• Masina Turing cu o singura banda
versus Masina Turing cu mai multe benzi
O mașină Turing cu k benzi
nu este mai puternică decât o mașină Turing standard
• Mașină Turing deterministă (MTD)
versus mașină Turing nedeterministă (MTND)
Cele două sunt computațional echivalente,
adică orice MTND se poate transforma într-o MTD
(și invers).
1/9/2024
Masini Turing
Teza lui Church
• Logicianul Alonzo Church a emis ipoteza că maşina Turing este
modelul cel mai general de calcul care poate fi propus.
maşina Turing este la fel de puternică ca orice alt model de calcul
nu înseamnă că poate calcula la fel de repede ca orice alt model de calcul, ci că
poate calcula aceleaşi lucruri
• Acest enunţ nu este demonstrabil în sens matematic.
Dacă avem un model de calcul, putem defini precis ce înţelegem prin complexitate:
• Timpul de calcul pentru un şir dat la intrare: este numărul de mutări făcut de maşina
Turing înainte de a intra în starea ``terminat'';
• Spaţiul consumat pentru un şir de intrare: este numărul de căsuţe de pe bandă pe
care algoritmul le foloseşte în timpul execuţiei sale.
1/9/2024
Potrivirea sirurilor de caractere
(pattern matching) folosind AF
Exercitiu:
Gasiti subsecventa:
ACACAGA
in textul:
ACACACAGA
1/9/2024
Gramatici • Recapitulare, Exemple, Aplicatii
1/16/2024 1
Limbaje formale si tehnici de compilare
Limbaj regulare:
• gramatici regulare,
• automate finite,
• expresii regulare.
Gramatici de atribute
1/16/2024 2
Gramatica
O gramatica este un cvadruplu G = (N, S , P, S)
• N este un alfabet de simboluri neterminale
• S este un alfabet de simboluri terminale
• NS=f
• P (N S )* N (N S )* x (N S )*
P multime finitã (multimea regulilor de productie)
• S N (simbolul de start - simbolul initial)
Notatie:
(a , b ) P se noteaza: a b
(a se înlocuieste cu b)
1/16/2024 3
• Gramatici de tip 0
nici o restrictie (suplimentara) referitoare la forma regulilor de productie
• Gramaticile de tip 1
dependente de context gramatici monotone
( monotonic, non-contracting )
• Gramaticile de tip 2
gramatici independente de context
• Gramaticile de tip 3
gramatici regulare
• unde Zi – sunt neterminale nou introduse, distincte pentru fiecare regula de productie
1/16/2024 LFTC - Dana Lupsa 6
• Gramatica regulara:
reg. prod. sunt de forma
• A aB
• A b unde A,B N si a,b S
caz special: S→ e poate P In acest caz S nu apare în membrul
drept al nici unei reguli de productie.
e.g.: S → aSb
1/16/2024 S → ab 8
Gramatici independente de context
Ne reamintim:
• gram. ε -independenta
• eliminarea regulilor de productie de redenumire
• forma normala Greibach
• forma normala Chomsky (FNC)
[…] si echivalente
1/16/2024 9
Forma normala Greibach
Gramatica in forma normala Greibach
• reg. prod. sunt de forma
• A a a unde a (N U S )* si a S
• caz special:
S→ e poate P
In acest caz S nu apare în membrul drept al nici unei reguli de productie.
1/16/2024 10
Forma normala Greibach
Teorema:
Pentru orice gramatica independenta de context
exista o gramatica in forma normala Greibach echivalenta.
Constructie:
Fie: gram. e –independenta, fara redenumiri
1. (similar cu algoritmul pt. eliminarea recursivitatii stanga)
• impunem o ordine asupra neterminalelor: N = {A1,A2,…,An}
si apoi modific r.p. a.i. sa nu existe Ai→Aja cu i<j
2. Pentru k = n-1 , … , 1
avem neterminalul Ak
pentru toate r.p. Ak Aj a (k<j)
se inlocuiesc cu: Ak ba ,
pentru toti b a.i. : Aj b (in toate modurile posibile)
1/16/2024 11
Forma normala Chomsky
Gramatica in forma normala Chomsky
caz special:
S→ e poate sa apara in multimea regulilor de productie,
dar in acest caz S nu apare în membrul drept al nici unei reguli de
productie.
1/16/2024 12
Forma normala Chomsky
Teorema:
Pentru orice gramatica independenta de context
exista o gramatica in forma normala Chomsky echivalenta
Constructie:
Fie: gram. e –independenta, fara redenumiri
Folosim transformari de forma:
A X1X2 … Xn : A X1Z1
Z1 X2Z2
Zn-2 Xn-1Xn
1/16/2024 13