Você está na página 1de 54

Universidade Federal de Santa Catarina

Centro Tecnolgico
Departamento de Informtica e de Estatstica
LINGUGENS F!"#IS E C!#$ILD!"ES
%$rof& !linto 'os( )arela F*rtado+
Captulo I Introduo
I.1 - Introduo a Compiladores
I.2 - Introduo a Teoria da Computao
I.3 - Introduo a Teoria das Linguagens Formais
I.1 Introduo a Compiladores
I.2 - Introduo a Teoria da Computao
O Que Teoria da Computao?
Teoria da Computao pode ser !ista "omo um guia #um roteiro$ %ue nos orienta no
sentido de in&ormar o %ue pode e o %ue no pode ser e&eti!amente "omput'!el( e)pli"ando
por%ue( de %ue &orma e "om %ue "omple)idade. *este sentido( a Teoria da Computao
"lassi&i"a os pro+lemas "omputa"ionais em tr,s "lasses-
a$ Problemas Indecidveis #ou imposs.!eis de serem solu"ionados$/
+$ Problemas Intratveis #poss.!eis "om re"ursos ilimitados( porm imposs.!eis "om
re"ursos limitados$/
"$ Problemas Tratveis #poss.!eis de serem solu"ionadas "om re"ursos limitados$.
0sta "lassi&i"ao englo+a pro+lemas de toda a nature1a( en!ol!endo desde pro+lemas
"l'ssi"os %ue &undamentam a teoria da "omputao at pro+lemas #ou inst2n"ias de
pro+lemas$ pr'ti"os da "i,n"ia da "omputao( tais "omo-
1 3 0)iste programa para solu"ionar um determinado pro+lema?
2 3 Qual o poder de e)presso de um determinado modelo de espe"i&i"ao?
3 3 4ado um programa %ual%uer( ele sempre tem parada garantida?
5 3 4ois programas 61 e 62 so e%ui!alentes entre si?
7 3 8ma determinada soluo a mel9or soluo para um dado pro+lema?
: 3 Qual o signi&i"ado de um determinado programa?
; 3 4ado um programa %ual%uer( este programa est' "orreto?
0sta lista poderia ser e)pandida e detal9ada( "ontudo( seu o+<eti!o en&ati1ar a
a+rang,n"ia da teoria da "omputao. 4os t=pi"os a%ui listados( "omple)idade #7$( sem2nti"a
#:$ e "orreo>"onstruo #;$( "ostumam ser tratados "omo dis"iplinas espe".&i"as e
independentes( en%uanto %ue os demais se "lassi&i"am "omo pro+lemas +'si"os da teoria da
"omputao. Todos os pro+lemas "omputa"ionais podem ser tratados #estudados$ so+ a =ti"a
da Teoria das Linguagens Formais e ut?matos.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 1
Aegundo esta =ti"a( a teoria da "omputao pode ser !ista "omo um "on<unto de
modelos &ormais #<untamente "om suas propriedades$ %ue &undamentam a "i,n"ia da
"omputao. Tais modelos in"luem ut?matos #Finitos( de 6il9a e B'%uinas de Turing$ e
Cram'ti"as( en%uanto %ue as propriedades de interesse en!ol!em %uestDes de de"idi+ilidade(
Inter-rela"ionamento entre modelos #a+rang,n"ia( e%ui!al,n"ia( et"...$ e "omple)idade
"omputa"ional.
*esta apostila( a+ordaremos a Teoria da Computao segundo a =ti"a da Teoria das
Linuaens !ormais e "ut#matos.
I.2.1 - Conceitos e Prop$sitos !undamentais da Teoria da Computao
Com o o+<eti!o de mel9or &undamentar as %uestDes "o+ertas pela teoria da "omputao
e de identi&i"ar "laramente a possi+ilidade de redu1ir tais %uestDes a pro+lemas pertinentes a
Teoria das Linguagens Formais( apresentaremos nesta seo alguns "on"eitos &undamentais e
"omentamos alguns dos prin"ipais prop=sitos %ue sustentam a teoria da "omputao.
Procedures e "lortmos
O "on"eito de algoritmo &undamental dentro da "i,n"ia da "omputao e pode ser
de&inido &ormalmente segundo !'rios prop=sitos da teoria da "omputao #"omo ser' !isto no
&inal desta seo$ ou in&ormalmente em &uno da de&inio de pro"edure #"omo !eremos a
seguir$.
Procedure- E m "on<unto &inito de passos #instruDes$( os %uais podem ser e)e"utados
me"ani"amente em uma %uantidade &i)a de tempo e "om uma %uantidade &i)a de es&oro. 8m
+om e)emplo de uma pro"edure um programa de "omputador es"rito em linguagem de
m'%uina( pois tal programa possui um nFmero &inito de passos( todos e)e"ut'!eis
me"ani"amente "om uma %uantidade &i)a de re"ursos.
"loritmo- E uma pro"edure %ue sempre p'ra/ ou se<a( uma pro"edure "u<a e)e"uo "9egar'
ao &inal( independentemente de %uais se<am suas entradas. di"ionalmente( di1emos %ue uma
pro"edure termina para uma determinada entrada( se e)iste um nFmero &inito t( tal %ue ap=s a
e)e"uo de t instruDes #no ne"essariamente distintas$( ou no e)istem mais instruDes a
serem e)e"utadas( ou a Fltima instruo e)e"utada &oi uma instruo G9altH.
0)emplos-
1 3 4ado um nFmero inteiro positi!o I( determinar se I ou no um nFmero primo.
2 3 4ado um inteiro I( determinar se e)iste um nFmero per&eito maior %ue I #o+s- um nFmero
per&eito se a soma de seus di!isores #e)"eto ele mesmo$ igual ao pr=prio nFmero$.
3 3 4ado um programa es"rito em uma determinada linguagem de programao( determinar
se esse programa est' sintati"amente "orreto. 0ste pro+lema uma inst2n"ia do seguinte
pro+lema genri"o- dada uma "adeia de "ara"teres ) determinar se essa "adeia gerada por
uma Cram'ti"a Li!re de Conte)to #ou re"on9e"ida por um ut?mato de 6il9a$.
5 3 4ado um programa %ual%uer( determinar se e)iste alguma entrada para a %ual o programa
entrar' em loop.
Os pro+lemas enun"iados nos e)emplos 1 e 3 possuem representao algor.tmi"a
en%uanto %ue os pro+lemas dos e)emplos 2 e 5 s= so represent'!eis !ia pro"edures.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 2
Con%untos &ecursivos e Con%untos &ecursivamente 'numerveis
8m "on<unto dito Ie"ursi!amente 0numer'!el se ele pode ser representado
#solu"ionado$ por uma pro"edure( e Ie"ursi!o se ele pode ser representado #solu"ionado$ por
um algoritmo. Como pro"edures e algoritmos podem ser de&inidos &ormalmente atra!s de
!'rios modelos #gram'ti"as e aut?matos( por e)emplo$( podemos tam+m de&inir "on<untos
re"ursi!os e re"ursi!amente enumer'!eis em &uno de tais modelos.
Problemas (ecidveis e Indecidveis ) "loritmos e Procedures
8m pro+lema de"id.!el #trat'!el ou no$ se e somente se ele resol!.!el por um
algoritmo( para %ual%uer entrada perten"ente ao seu dom.nio/ "aso "ontr'rio ele um
pro+lema inde"id.!el.
partir das de&iniDes a"ima( podemos notar "laramente a relao entre pro+lemas
de"id.!eis e inde"id.!eis "om "on<untos re"ursi!os e re"ursi!amente enumer'!eis/ ou se<a( um
pro+lema de"id.!el se o "on<unto de soluDes das di!ersas inst2n"ias deste pro+lema um
"on<unto re"ursi!o( e inde"id.!el "aso tal "on<unto se<a re"ursi!amente enumer'!el. ssim
sendo( torna-se e!idente %ue a %uesto da de"idi+ilidade pode ser tratada &ormalmente atra!s
dos modelos %ue "ompDem a Teoria das Linguagens e ut?matos.
"lasse dos pro+lemas inde"id.!eis signi&i"ati!amente representada pelo GJLTI*C
6IOKL0BH #pro+lema da parada$ %ue "onsiste em- G4ado uma pro"edure L e uma entrada
M( de"idir #determinar$ se L termina %uando apli"ado a M. inde"idi+ilidade deste pro+lema
e)tremamente Ftil para demonstrar a inde"idi+ilidade de outros pro+lemas atra!s da
reduo destes para o H9alting pro+lem GG.
Prop$sitos da Teoria da Computao
t a%ui de&inimos pro"edures e algoritmos de maneira intuiti!a e in&ormal. Contudo
eles podem ser de&inidos rigorosamente #pre"isamente$ atra!s de !'rios &ormalismos
"on9e"idos "omo prop=sitos #ou prin".pios$ da Teoria da Computao. Tais &ormalismos tem
sido e)plorados largamente na Ci,n"ia da Computao( onde ser!em "omo modelos na
soluo de di!ersos pro+lemas pr'ti"os. 4entre os &ormalismos mais importantes( podemos
"itar-
a$ B'%uinas de Turing #Turing( 1N3:$/
+$ Cram'ti"as #C9omsOP( 1N7N$/
"$ lgoritmos de BarOo! #BarOo!( 1N71$/
d$ Lam+da Cal"ulus #C9ur"9( 1N51$/
e$ Aistemas 6ost e Aistemas de 6roduo #0mil 6ost( 1N3:$/
&$ FunDes Ie"ursi!as #Qleene( 1N3:$.
8m ponto importante a ressaltar a%ui( %ue toda pro"edure #ou algoritmo$ des"rita por
algum destes &ormalismos( pode tam+m ser des"rita atra!s de %ual%uer um dos demais/ &ato
este %ue sugere a e%ui!al,n"ia entre os &ormalismos.
a"eitao destes &ormalismos dentro da teoria da "omputao ( em grande parte(
de"orrente da 9ip=tese #"on9e"ida "omo Tese de C9ur"9$ de %ue todo pro"esso "omput'!el 3
pass.!el de ser des"rito por uma pro"edure 3 pode ser reali1ado por uma B'%uina de Turing.
0sta tese( apesar de no ter sido pro!ada &ormalmente( tam+m no &oi "ontradita e "ontinua
sendo uni!ersalmente a"eita. Conse%Rentemente podemos a&irmar %ue B'%uinas de Turing
"onstituem o &ormalismo mais genri"o para a representao de pro"edure e %ue %ual%uer
outro &ormalismo ser' signi&i"ati!o se &or "onsiderado e%ui!alente Ss m'%uinas de Turing.
demonstrao &ormal da e%ui!al,n"ia entre os di!ersos &ormalismos "itados e m'%uinas de
Turing( re&ora a tese de C9ur"9.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 3
I.* Introduo a Teoria das Linuaens !ormais
O %ue a Teoria das Linuaens !ormais?
6ara respondermos esta %uesto pre"isamos primeiro responder o %ue Linguagem
Formal( e para isto pre"isamos antes responder o %ue Linuaem.
Ini"ialmente( de maneira +astante in&ormal( podemos de&inir uma linguagem "omo
sendo uma &orma de "omuni"ao. 0la+orando um pou"o mais esta de&inio( podemos
de&inir uma linguagem "omo sendo Gum "on<unto de elementos #s.m+olos$ e um "on<unto de
mtodos #regras$ para "om+inar estes elementos( usado e entendido por uma determinada
"omunidadeH.
0)emplos- 1 - Linguagens *aturais #ou idiom'ti"as$
2 - Linguagens de 6rogramao( de Controle( de Consulta
3 3 6roto"olos de Comuni"ao
Contudo( apesar de intuiti!a( esta de&inio no nos permite responder satis&atoriamente
as duas primeiras %uestDes/ pre"isamos antes dar um sentido &ormal para a de&inio de
linguagem. Faremos isto nas duas pr=)imas seDes.
I.*.1 Conceitos +sicos
"l,abeto #ou !o"a+ul'rio$- E um "on<unto &inito( no !a1io( de s.m+olos #elementos$.
Iepresentaremos um al&a+eto por.
0)emplos- T U Va( +( "(...(1 W
T U VX( 1W
T U Va( e( i( o (uW
-entenas- 8ma sentena so+re um al&a+eto T( uma se%R,n"ia #ou "adeia$ &inita de
s.m+olos do al&a+eto.
0)emplo de sentenas so+re T U V a ( + W- a( +( aa( a+( ++( aaa( aa+( a+a( +aa( ...
Taman.o de uma sentena- Ae<a Y uma sentena .
O taman9o da sentena Y( denotado por ZYZ( de&inido pelo nFmero de s.m+olos
#elementos do al&a+eto$ %ue "ompDem Y.
0)emplos- Ae<a T U V a ( + ( " W
se ) U a+a( ento Z)Z U 3
se ) U "( ento Z)Z U 1
-entena va/ia- E uma sentena "onstitu.da de nen9um s.m+olo/ isto ( uma sentena
de taman9o X #1ero$.
O+ser!aDes- - Iepresentaremos a sentena !a1ia por #psolon$.
- 6or de&inio( ZZ U X
Pot0ncia de uma sentena- Ae<a Y uma sentena . n-sima pot,n"ia de Y(
representada por Y
n
( signi&i"a Y repetido n !e1es.
0)emplos- se ) U a+( ento )
3
U a+a+a+
6ara )( )
X
U
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 5
!ec.amento de um "l,abeto
Ae<a T um al&a+eto .
- O &e"9amento re&le)i!o #ou simplesmente &e"9amento$ de T( representado por T
[
(
dado pelo "on<unto de todas as poss.!eis se%R,n"ias %ue podem ser &ormadas a partir
de T( in"lusi!e a sentena !a1ia.
- O &e"9amento transiti!o #ou &e"9amento positi!o$ de T( representado por T
\
( dado
por T
[
- V W.
0)emplos- Ae<a T U V X( 1 W( temos %ue-
T
[
U V( X( 1( XX( X1( 11( XXX(...W
T
\
U VX( 1( XX (X1( 11( XXX(...W
I.*.2 Linuaens e suas &epresenta1es
Linuaem- 8ma linguagem L so+re um al&a+eto T( um su+"on<unto de T
[
/ isto (
L 2

&epresenta1es de Linuaens- O estudo de linguagens est' intimamente rela"ionado


ao estudo das &ormas de representao dessas linguagens. O pro+lema de representao de
uma linguagem( por sua !e1( est' rela"ionado "om o &ato dela ser &inita ou in&inita-
- Linuaem !inita- E uma Linguagem %ue pode ser representada por enumerao.
0)emplo- linguagem de&inida "omo sendo o "on<unto dos inteiros positi!os pares maiores
%ue X e menores %ue 2X( pode ser representado por- L U V2( 5( :( ]( 1X( 12( 15( 1:( 1]W.
- Linuaem In,inita- *este "aso( na impossi+ilidade de usarmos enumerao(
pre"isamos en"ontrar uma representao &inita para estas linguagens.
0)emplo- linguagem de&inida "omo sendo o "on<unto dos inteiros pares poderia ser
representada por T UV2( 5( :( ]( 1X(...W %ue( %ue apesar de intuiti!a( no &inita e nem pre"isa.
s representaDes &initas de linguagens "lassi&i"am-se em Ie"on9e"edores e Aistemas
Ceradores-
&econ.ecedores 3 Ao dispositi!os &ormais %ue nos permitem !eri&i"ar se uma
determinada sentena perten"e ou no a uma determinada linguagem # uma representao
das sentenas de uma linguagem so+ o ponto de !ista do re"on9e"imento de tais sentenas$.
0sses dispositi!os denominam-se autmatos/ aut?matos &initos( aut?matos de pil9a e
m'%uinas de turing( por e)emplo( podem ser desta"ados "omo importantes "lasses de
aut?matos.
-istemas 3eradores 3 Ao dispositi!os &ormais dotados de me"anismos %ue permitem a
gerao sistem'ti"a das sentenas de uma linguagem #representao so+ o ponto de !ista da
gerao das sentenas de uma linguagem$. Os prin"ipais sistemas geradores dispon.!eis so as
gramticas( dentre as %uais( por e)emplo( podemos desta"ar as gram'ti"as de CJOBAQ^.
O+ser!aDes- Todo reconhecedor e todo sistema gerador pode ser representado por
algortmos e>ou procedures.
Linuaens !ormais- Ao linguagens %ue podem ser representadas de maneira &inita e
pre"isa atra!s de sistemas "om sustentao matem'ti"a #dispositi!os &ormais ou modelos
matem'ti"os$.
Linuaem &ecursiva- 8ma linguagem re"ursi!a se e)iste um algoritmo "apa1 de
re"on9e"er ou gerar as sentenas %ue "ompDem essa linguagem.
Linuaem &ecursivamente 'numervel- E toda a linguagem "u<as sentenas podem
ser re"on9e"idas ou geradas por pro"edures.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 7
Teoria das Linuaens !ormais e dos "ut#matos
0ntende-se por Teoria das Linguagens Formais e dos ut?matos o estudo de modelos
matem'ti"os %ue possi+ilitam a espe"i&i"ao e o re"on9e"imento de linguagens #no sentido
amplo da pala!ra$( suas "lassi&i"aDes( estruturas( propriedades( "ara"ter.sti"as e inter-
rela"ionamentos.
import2n"ia desta Teoria na Ci,n"ia da Computao dupla- 0la tanto ap=ia outros
aspe"tos te=ri"os da Ci,n"ia da Computao #de"idi+ilidade( "omputa+ilidade( "omple)idade
"omputa"ional( por e)emplo$( "omo &undamenta di!ersas apli"aDes "omputa"ionais tais
"omo pro"essamento de linguagens( re"on9e"imento de padrDes( modelagem de sistemas.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. :
C"P4T5L6 II 3&"78TIC"-
II.1 3 Boti!ao
II.2 3 4e&inio Formal
II.3 3 4eri!ao e Ieduo
II.5 3 Aentenas( Forma Aenten"ial e Linguagem
II.7 3 Tipos de Cram'ti"as #Jierar%uia de C9omsOP$
II.: 3 Aentena Ta1ia
II.; 3 Ie"ursi!idade das C.A.C.
II.1 7otivao
Aa+emos %ue uma linguagem %ual%uer "on<unto ou su+"on<unto de sentenas so+re
um al&a+eto( ou se<a- dado um al&a+eto T( uma linguagem L so+re esse al&a+eto( um
su+"on<unto de T
[
L T
[
.
ssim sendo( de!emos nos preo"upar em de&inir %ue su+"on<unto esse.
&inalidade de uma gram'ti"a de&inir o su+"on<unto de T
[
%ue &orma #de&ine$ uma
determinada linguagem. 8ma gram'ti"a de&ine uma estrutura so+re um al&a+eto de &orma a
permitir %ue apenas determinadas "om+inaDes se<am !'lidas( isto ( se<am "onsideradas
sentenas #de&inindo assim a linguagem %ue ela representa$.
6 9ue : 3ramtica;
8ma gram'ti"a( de maneira in&ormal( pode ser de&inida "omo sendo-
a$ 8m sistema gerador de linguagens/
+$ 8m sistema de rees"rita/
"$ 8ma maneira &inita de des"re!er #representar$ uma linguagem/
d$ 8m dispositi!o &ormal usado para espe"i&i"ar de maneira &inita e pre"isa uma
linguagem poten"ialmente in&inita.
0)emplo intuiti!o de uma Cram'ti"a-
#um su+"on<unto da gram'ti"a da l.ngua portuguesa$
<sentena= >> ? <su%eito= <predicado=
<su%eito= >> ? <substantivo=
@ <artio= <substantivo=
@ <artio= <ad%etivo= <substantivo=
<predicado= >> ? <verbo= <ob%eto=
<substantivo= >> ? %oo @ 7aria @ cac.orro @ livro @ po
<artio= >> ? o @ a
<ad%etivo= >> ? pe9ueno @ bom @ bela
<verbo= >> ? morde @ le @ ol.a
<ob%eto= >> ? <substantivo=
@ <artio= <substantivo=
@ <artio= <ad%etivo= <substantivo=
*otao utili1ada-
_ ......... ` - "ategoria sint'ti"a ou gramati"al/
--U - de&inido por
Z - ou #alternati!a$
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. ;
--U - regra de sinta)e #ou regra gramati"al ou regra de produo$
II.2 (e,inio !ormal de 3ramtica
Formalmente de&inimos uma gram'ti"a C "omo sendo um %u'drupla #sistema &ormal
"onstitu.do de %uatro elementos$ 3 ? A2nB 2tB PB -C onde-
2n 3 E um "on<unto &inito de s.m+olos denominados no-terminais. 0stes s.m+olos
tam+m so denominados meta !ari'!eis( ou se<a( so os s.m+olos utili1ados na des"rio da
linguagem.
2t 3 E um "on<unto &inito de s.m+olos denominados terminais. Ao os s.m+olos da
linguagem propriamente ditos( ou se<a os s.m+olos %ue podem ser usados na &ormao das
sentenas da linguagem.
Con!enDes- 2n 2t ? e 2n 2t ? 2
P 3 E um "on<unto &inito de pares # ( $ denominado produ1es #ou regras gramati"ais
ou regras de sinta)e$. 8ma produo representada por >> ? ( onde T
[
TnT
[

T
[
( e signi&i"a %ue : de,inido por ( ou ainda %ue produ1 ou e%ui!alentemente %ue
produ1ido #gerado$ a partir de .
- 3 E o smbolo inicial da gram'ti"a/ de!e perten"er a Tn. O s.m+olo ini"ial de uma
gram'ti"a o no-terminal a partir do %ual as sentenas de uma linguagem sero geradas.
0)emplo- Formali1ando o su+"on<unto da gram'ti"a da l.ngua portuguesa( apresentado
na seo anterior( ter.amos-
3portuues ? A2nB 2tB PB -CB onde>
2n U V _sentena` ( _su<eito` ( _predi"ado` ( _su+stanti!o` (
_artigo` ( _ad<eti!o` ( _predi"ado` ( _!er+o` ( _o+<eto` W
2t U V <oo( maria ( "a"9orro( li!ro ( po( o ( a ( pe%ueno( +om ( +ela ( morde ( le ( ol9a W
P U o "on<unto das regras gramati"ais apresentado
- U _sentena`
Fa1endo uma analogia entre o e)emplo intuiti!o e a noo &ormal de gram'ti"a(
"onstatamos %ue-
2n 3 so as "ategorias sint'ti"as ou gramati"ais/
2t 3 so as pala!ras utili1adas "omo s.m+olos da linguagem/
P 3 so as regras sint'ti"as #ou gramati"ais$/
- - a "ategoria gramati"al %ue sinteti1a o %ue ser' produ1ido #gerado$ pela gram'ti"a.
*otao a ser utili1ada neste "urso-
>>? -
2
D
3 Letras de GH a GTH e pala!ras es"ritas "om letras maiFs"ulas
2t 3 Letras de GaH a GtH( pala!ras es"ritas "om letras minFs"ulas( d.gitos e "ara"teres espe"iais
2tE - u( !( )( P( Y( 1
F2
D
2tG 3 8( T( M( ^( a( L
F2
D
2tGE - ( ( ( ( ... ( # e)"eto $
II.* (erivao e &eduo
Ao operaDes de su+stituio %ue &ormali1am a utili1ao de gram'ti"as( sendo %ue-
(erivao- E a operao %ue "onsiste em su+stituir em string #ou parte dele$ por outro( de
a"ordo "om as produDes das gram'ti"as em %uesto( no sentido s.m+olo ini"ial sentena/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. ]
&eduo- E a operao %ue "onsiste na su+stituio de um string #ou parte dele$ por outro( de
a"ordo "om as produDes da gram'ti"a( no sentido sentena s.m+olo ini"ial.
Observao- deri!ao a operao ade%uada para gerao de sentenas/ en%uanto %ue a
operao de reduo ade%uada ao re"on9e"imento de sentenas.
Doo !ormal de (erivao e &eduo
Ae<a C U #Tn( Tt( 6( A$ uma gram'ti"a .
Ae<a #Tn Tt$
[
.
4eri!ao > reduo em um passo #ou direta$- di1emos %ue deri!a em um passo #ou
deri!a diretamente$ ( se e somente se P/ indi"amos por .
*este "aso( di1emos ainda %ue redu1-se a em um passo #ou diretamente$/
denotamos por .
4eri!ao > reduo em 1ero ou mais passos- 6or e)tenso( di1emos %ue deri!a em
1ero ou mais passos #ou simplesmente deri!a$ ( se e)istirem se%R,n"ias 1B 2B ...B n tais
%ue- 1 2 ... n / esta &orma de deri!ao denotada por .
nalogamente redu1-se a em 1ero ou mais passos #ou simplesmente redu1-se$/
indi"amos por .
4eri!ao > reduo em um ou mais passos- 6or outro lado( se ti!ermos "erte1a de %ue
pelo menos um passo &oi ne"ess'rio para "9egar em a partir de #ou !i"e-!ersa$( ento
teremos uma no!a &orma de deri!ao #reduo$ denominada deri!ao #reduo$ em um ou
mais passos/ indi"aremos por- Aou por C.
O+ser!ao- - Ae em X #1ero$ passos( ento U .
- Quando !'rias gram'ti"as esti!erem sendo usadas simultaneamente( de!emos
usar o nome da gram'ti"a so+ a seta de deri!ao #reduo$ para no "ausar dF!idas.
II.H -entenaB !orma -entencial e Linuaem
-entena 3 E uma se%R,n"ia s= de terminais produ1ida #gerada$ a partir do s.m+olo
ini"ial de uma gram'ti"a/ isto ( se 3 ? A2nB 2tB PB -C - I( ento I uma sentena
perten"ente S linguagem representada por C.
!orma -entencial 3 E uma se%R,n"ia %ual%uer #"omposta por terminais e no-
terminais$ produ1ida #gerada$ a partir do s.m+olo ini"ial de uma gram'ti"a/ isto (
se 3 ? A2nB 2tB PB -C - ento B B BB so &ormas
senten"iais de 3.
Linuaem 3 Formalmente de&inimos a linguagem gerada por 3 ? A2nB 2tB PB -CB
denotada por LA3CB "omo sendo- LA3C ? FI @ I 2tE - IG/ ou se<a( uma linguagem
de&inida pelo "on<unto de sentenas %ue podem ser deri!adas a partir do s.m+olo ini"ial da
gram'ti"a %ue a representa.
3ramticas '9uivalentes 3 4uas gram'ti"as 31 e 32 so e%ui!alentes entre si( se e
somente se LA31C ? LA32C.
Formalmente- 31 32 LA31C ? LA32C.

'Iemplos-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. N

\
II.J Tipos de 3ramticas
#Classi&i"ao ou 9ierar%uia de CJOBAQ^$
3ramtica Tipo K>
#ou gram'ti"a sem restriDes$
C U #Tn( Tt( 6( A$( onde-
6 U V Z T
[
TnT
[
T
[
W
3ramtica Tipo 1>
#ou Cram'ti"a Aens.!el ao Conte)to 3 C.A.C.$
C U #Tn( Tt( 6( A$( onde-
6 U V ZZ ZZ( T
[
TnT
[
T
\
W
3ramtica Tipo 2>
#ou Cram'ti"a Li!re de Conte)to 3 C.L.C.$
C U #Tn( Tt( 6( A$( onde-
6 U V Tn T
\
3ramtica Tipo *>
#ou Cram'ti"a Iegular 3 C.I.$
3 ? A2nB 2tB PB -CB onde>
6 U V a M Z Tn( a Tt M VTn VWWW
O+ser!ao- s linguagens representadas #geradas$ por C.A.C.( C.L.C. e C.I. so
denominadas( respe"ti!amente( Linuaens -ensveis ao ConteIto AL.-.C.C Linuaens
Livres de ConteIto AL.L.C.C e Linuaens &eulares AL.&.C.
II.L -entena 2a/ia
Introduo- moti!ao para o estudo de gram'ti"as &oi S ne"essidade de se en"ontrar
representaDes &initas para as linguagens.
Logi"amente( se uma linguagem L possui uma des"rio &inita( ento L1 ? L FG(
tam+m de!er' possuir uma des"rio &inita.
6ela de&inio dada( as C.A.C.( C.L.C. e C.I. no a"eitam produDes da &orma A /
logo( segundo essa de&inio( #a sentena !a1ia$ no pode perten"er as L.A.C.( L.L.C. ou
L.I.. 0ntretanto( a ra1o destas de&iniDes no a sentena !a1ia em si( mas sim o &ato de %ue
a produo %ue possi+ilita a deri!ao da sentena !a1ia( pode in!ia+ili1ar a pro!a &ormal da
e)ist,n"ia de algoritmos asso"iados a estas gram'ti"as.
&ede,inio de 3.-.C. 3.L.C. e 3.&.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 1X
0m &uno do e)posto a"ima( !amos rede&inir C.A.C.( C.L.C. e C.I.( permitindo %ue a
produo A 6( se e somente se-
1 3 A &or o s.m+olo ini"ial da gram'ti"a/
2 3 A no apare"er no lado direito de nen9uma produo da gram'ti"a em %uesto.
O+ser!ao- *ote %ue segundo esta rede&inio( a produo A s= poder' ser usada uma
!e1- e)atamente na deri!ao de #a sentena !a1ia$.
Lema II.1- GAe C U #Tn( Tt( 6( A$ uma C.A.C.( ento C
1
A.C. Z L#C
1
$ U L#C$ o
s.m+olo ini"ial de C
1
no aparea no lado direito de nen9uma produo de C
1
H.
Prova- Ae<a C U #Tn( Tt( 6( A$ uma C.A.C./
Ae<a A
1
U #Tn Tt$/
Ae<a C
1
U #Tn VA C
1
W( Tt( 61( A1$( onde-
6 C
1
U VA C
1
Z A C
1
A 6W 6 A C
1
ser' o s.m+olo
ini"ial de C
1
.
6ara "ompletar a pro!a( ne"ess'rio mostrar %ue L# C
1
$ U L#C$-
L#C
1
$ U L#C$ 1 - L#C$ L#C
1
$
2 - L#C
1
$ L#C$
1 3 Ae<a Y L#C$ A Y
se A Y
ento A Y
se A
ento A 6 e( por de&inio( A
1
6
1
Logo( A
1
Y A
1
Y L#C$ L#C
1
$
2 3 Ae<a Y L#C
1
$ A
1
Y
se A
1
Y
ento A
1
Y
se A
1

ento A
1
6
1
e( para %ue esta produo e)ista( ne"ess'rio %ue 6
"onten9a a produo A ( portanto-
A Y A Y L#C
1
$ L#C$
Con"luso- 4e 1 e 2( tem-se %ue LA3
1
C ? LA3C.
OKA.- 1 3 O lema II.1 !ale tam+m para C.L.C. e C.I..
2 3 Ae C A.C.( L.C. ou Iegular( ento C
1
ser' respe"ti!amente A.C.( L.C. ou
Iegular.
Teorema II.1- GAe L A.C.( L.C. ou I0C8LI( ento L
1
U L VW e L
2
U L 3 VW
sero respe"ti!amente A.C.( L.C. ou IegularH.
6ro!a- Imediata a partir da rede&inio de gram'ti"as e do L0B II.1.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 11

[
II.M &ecursividade das 3.-.C.
(e,inio- 8ma gram'ti"a C I0C8IAIT se e)iste um algoritmo %ue determine
para %ual%uer se%R,n"ia Y( se Y ou no gerada por C.
Teorema II.2- GAe C U #Tn( Tt( 6( A$ uma C.A.C.( ento C I0C8IAITH.
Prova- #[ atra!s de algoritmo [$
Ae<a C U #Tn( Tt( 6( A$ uma C.A.C. Z A 6/
Ae<a Y uma se%R,n"ia ZYZ U n/
Ae<a T
B
o "on<unto de &ormas senten"iais Z ZZ * A em B passos.
"loritmo II.1-
1 3 To U V A W
2 3 B 1
3 3 T
B
T
B-1
V Z ( onde T
B-1
ZZ nW
5 3 Ae T
B
U T
B
-1
ento &im
seno B B\1/
"al"ule no!o T
B
#!olte ao passo 3$.
Concluso- Como em uma C.A.C. as &ormas senten"iais no so de"res"entes de
taman9o #ZZ ZZ$( e "omo o nFmero de sentenas de taman9o n &inito #no m')imo Q
n
onde
Q o nFmero de s.m+olos de Tt$( sempre e)istir' um B Z T
B
U T
B
-1 o algoritmo II.1
sempre determinar' para %ual%uer Y( se Y ou no gerado por C.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 12

[
Captulo III "ut#matos !initos e Con%untos &eulares
III.1 3 .F.4
III.2 3 .F.*.4.
III.3 3 Trans&ormao de .F.*.4. para .F.4.
III.5 3 Ielao 0ntre C.I. e .F.
III.7 3 Binimi1ao de ut?matos Finitos
III.: 3 Con<untos Iegulares e 0)pressDes Iegulares
III.; 3 Implementao de ut?matos Finitos
III.] 3 6ropriedades e 6ro+lemas de 4e"iso so+re Con<untos Iegulares
III.N 3 pli"aDes de .F. e 0.I.

3eradores ) &econ.ecedores
Cram'ti"as Tipo X B'%uinas de Turing
Cram'ti"as A.C. ut?matos Limitados Lineares
Cram'ti"as L.C. ut?matos de 6il9a
Cram'ti"as Iegulares ut?matos Finitos
"ut#matos !initos so re"on9e"edores de linguagens regulares/
0ntende-se por re"on9e"edor de uma linguagem HLH( um dispositi!o %ue tomando uma
se%R,n"ia Y "omo entrada( respondem HAIBH se Y L e G*bOH em "aso "ontrario.
Tipos de "ut#matos !initos>
"ut#mato !inito (eterminstico A".!.(.C
"ut#mato !inito Do (eterminsticoA".!.D.(.C
III.1 ".!.(.
Formalmente de&inimos um .F.4. "omo sendo um sistema &ormal B U #Q( ( ( %o( F$(
onde-
Q E um "on<unto &inito no !a1io de 'stados/
E um "l,abeto( &inito( de entrada/
!uno de 7apeamento #ou &uno de transio$
de&inida em- N I N
%o Q( o 'stado Inicial
F Q( o "on<unto de 'stados !inais
Interpreta,-o de
interpretao de uma transio #%( a$ U p( onde % p Q a ( a seguinte- se o
GControle de BH esta no estado G%H e o pr=)imo s.m+olo de entrada GaH( ento GaH de!e ser
re"on9e"ido e o "ontrole passar para o estado GpH.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 13
Significado Lgico de *m Estado
Logi"amente um estado uma situao parti"ular no pro"esso de re"on9e"imento de
uma sentena.
Senten,as ceitas por #
8ma se%R,n"ia ) a"eita #re"on9e"ida$ por um .F. B U #Q( ( %o( F$(
A9oB IC ? p @ p !.
Ling*agem ceita por #
E o "on<unto de todas as sentenas a"eitas por B. Formalmente( de&inimos por-
TA7C ? FI @ A9oB IC ? p p !G
OKA.- Todo "on<unto a"eito por um "ut#mato !inito um Con%unto &eular.
Diagrama de Transi,-o
8m diagrama de transio para um .F. B um gra&o dire"ionado e rotulado( onde os
!rti"es representam os estados e &isi"amente so representados por ".r"ulos #sendo %ue o
estado ini"ial possui uma seta "om r=tulo GInicioH e os estados &inais so representados por
".r"ulos duplos$( e as arestas representam as transiDes #sendo %ue( entre dois estados GpH e
G%H( e)istir' uma aresta dire"ionada de GpH para G%H( "om r=tulo GaH #a $ #p( a$ U %
em B.
Ta.ela de Transi,/es
E uma representao ta+ular de um .F..
*esta ta+ela as lin9as representam os estados #o ini"ial indi"ado por uma seta e os
&inais por asteris"os$( as "olunas representam os s.m+olos de entrada e o "onteFdo da posio
#%( a$ ser' igual a GpH se e)istir #%( a$ U p( seno ser' inde&inido.
III.2 ".!.D.(.
8m .F.*.4. um sistema &ormal 7 ? ANB B B 9oB !CB onde-
NB 9oB ! possuem a mesma de&inio dos .F.4.
E uma &uno de mapeamento( de&inido em N I ? ANC/ sendo %ue ANC um
su+"on<unto de Q/ isto e%Ri!ale a di1er %ue #%( a$ U p
1
( p
2
( ...(p
n
. interpretao de
%ue B no estado G%H( "om o s.m+olo GaH na entrada pode ir tanto para o estado p
1
"omo
para o estado p
2
( ...( "omo para o estado p
n
.
2antaem (esvantaem
".!.(. Implementao Tri!ial *o natural na representao de
algumas L.I.
".!.D.(. Iepresentao mais natural de
algumas LI
Implementao "omple)a
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 15
III.* Trans,ormao de ".!.D.(. para ".!.(.
Teorema *.1- GAe L um "on<unto a"eito por um ".!.D.(.( ento um ".!.(. %ue a"eita LH
Prova- Ae<a B U #Q( ( ( %o( F$ um .F.*.4..
Construa um .F.4. Bc U #Qc( ( d( %oc( Fc$ "omo segue-
1 3 Qc U V#O$W - isto ( "ada estado de Bc ser' um su+"on<unto de estados de B.
2 3 %oc U e%of - ou se<a( %oc ser' o #O$ "omposto apenas por %X.
o+s.- representaremos um estado % Qc por e%f.
3 3 Fc U V#Q$ Z #Q$ F W
5 3 6ara "ada #Q$ Qc
de&inimos c##Q$(a$ U c#Q$(
onde c#Q$ U Vp Z para algum % #Q$( #%( a$ U pW/
ou se<a( se #Q$ U e%1( %2( ...( %rf Qc e se
#%1(a$ U p1( p2( ...( p<
#%2(a$ U p<\1( p<\2( ...( pO
: - - -
#%r( a$ U pi( pi\1( ...( pn so as transiDes de B(
ento #Q$ U ep1( ...( p<( p<\1( ...( pr( pi( ...( pnf ser' um estado de Bc(
e Bc "onter' a transio- c##Q$(a$ U c#Q$.
6ara "on"luir a pro!a do teorema( +asta( mostrar %ue T#Bc$ U T#B$.
'Iemplo>
Ae<a B um .F.*.4. de&inido por-

a b
9o
9oB91 9o
91 --- 92
92 --- 9*
E9* --- ---
onde T#B$ U V W
4e&ina 7O ? ANOB OB OB 9oOB !OC( onde-
Qc U V
c U Va( +$
%o U
Fc U
O
a b
P9oQ

T#Bc$ U V W
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 17
III.H &elao entre 3.&. e ".!.
Teorema *.2- GAe C U #Tn( Tt( 6( A$ uma C.I.(
ento um .F. B U #Q( ( ( %o( F$ Z T#B$ U L#C$H.
Prova- a 3 Bostrar %ue B e)iste
+ 3 Bostrar %ue T#B$ U L#C$
aC (e,ina 7B como seue>
1 3 Q U Tn VW( onde um s.m+olo no!o
2 - U Tt
3 3 %o U A
5 3 F U V( AW se A 6
VW se A 6
7 3 Construa de a"ordo "om as regras a( + e ".
a$ 6ara "ada produo da &orma K a 6( "rie a transio #K( a$ U
+$ 6ara "ada produo da &orma K a C 6 "rie a transio #K( a$ U C
"$ 6ara todo a Tt( #( a$ U - #inde&inido$
bC Para mostrar 9ue TA7C ? LA3CB devemos mostrar
%ue - 1 LA3C TA7C
2 TA7C LA3C
1 LA3C TA7C
Bostrar %ue L#C$ est' "ontido em T#B$( signi&i"a mostrar %ue se ) L#C$ ento T#B$
"ontm )( ou se<a( B a"eita ).
Ae<a ) U a
1
a
2
...a
n
L#C$.
Ae ) L#C$( ento A )
Como C uma C.I.( a deri!ao A ) da &orma
A a
1

1
a
1
a
2

2
... a
1
a
2
...na
-1

n-1
a
1
a
2
...a
n
Logo(
A a
1

1
(
1
a
2

2
( ... n-
1
a
n
so produDes de C.
ssim sendo( por de&inio( B "onsistir' das seguitnes transiDes-
#A(a
1
$ U
1
( #
1
(a
2
$ U
2
( ... #
n-1
( a
n
$ U
6ortanto( "omo ) U a
1
a
2
...a
n
( #A( )$ U F(
conclui-se 9ue TA7C cont:m I.
Bas( e se L#C$ ???
Ae L#C$ por%ue A 6
*este "aso( por de&inio( A F e( portanto( T#B$ "ontm .
LogoB LA3C TA7C.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 1:

\
2 TA7C LA3C
Bostrar %ue T#B$ est' "ontido em L#C$( signi&i"a mostrar %ue( se T#B$ "ontm )( ento
) L#C$.
Ae<a ) U a
1
a
2
...a
n
uma se%R,n"ia a"eita por B.
Ae B a"eita )( ento uma se%R,n"ia de estados A(
1
(
2
( ...(
n-1
( Z
#A( a
1
$ U
1
(
#
1
( a
2
$ U
2
-
#
n-1
( a
n
$ U ( onde A o estado ini"ial e um estado &inal.
por de&inio( para %ue essas transiDes e)istam( C de!er' possuir as seguintes
produDes-
- a
1
"
1
B "
1
a
2
"
2
B ... "n-
1
a
n
e( se essas produDes e)istem( ento
A a
1

1
a
1
a
2

2
... a
1
a
2
...na
-1

n-1
a
1
a
2
... a
n
uma deri!ao em C/
logo( "omo ) U a
1
a
2
...a
n
A )( ento ) L#C$
Bas( e se T#B$ ?g?
*este "aso( por de&inio( A F/
e se A F por%ue A 6(
logo L#C$.
ssim( TA7C LA3C .
Concluso- 4e 1 e 2( temos %ue TA7C ? LA3C
Teorema *.*- GAe B U #Q( ( ( %o( F$ um F.( ento uma C.I. C U #Tn( Tt( 6( A$
Z L#C$ U T#B$H.
Prova- a 3 Bostrar %ue C e)iste
+ 3 Bostrar %ue L#C$ U T#B$
a$ Ae<a B U #Q( ( ( %o( F$ um .F.4..
Construa uma C.I. C U #Tn( Tt( 6( A$( "omo segue-
1 3 Tn U Q
2 3 Tt U
3 3 A U %o
5 3 4e&ina 6( "omo segue-
a$ Ae #K( a$ U C ento adi"ione K aC em 6
+$ Ae #K( a$ U C C F ento adi"ione K a em 6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 1;

\
"$ Ae %o F(
ento T#B$.
*este "aso( L#C$ U T#B$ 3 VW(
"ontudo( usando o teorema 2.1 podemos en"ontrar uma C.I. C
1
Z L#C
1
$
U L#C$ 8 VW e portanto( L#C
1
$ ser' igual a T#B$
Aeno( T#B$ e L#C$ U T#B$.
bC Para mostrar 9ue LA3C ? TA7CB devemos mostrar
%ue- 1 3 T#B$ L#C$
2 3 L#C$ T#B$
Isto pode ser &eito de maneira an'loga a demonstrao do teorema 3.2.
III.J 7inimi/ao de "ut#matos !initos
(e,inio- 8m .F.4. B U #Q( ( ( %o( F$ m.nimo se-
1 3 *o possui estados ina"ess.!eis/
2 3 *o possui estados mortos/
3 3 *o possui estados e%ui!alentes.
'stados Inacessveis>
8m estado % Q ina"ess.!el #ou inal"an'!el$ %uando no e)iste Y
1
tal %ue a partir
de %o( % se<a al"anado/ ou se<a( no e)iste Y
1
Z #%o( Y
1
$ U %( onde Y
1
uma sentena ou
parte dela.
'stados mortos>
8m estado % Q morto se ele F Y
1
Z #%( Y1$ U p( onde p F Y
1
uma
sentena ou parte dela( ou se<a( % morto se ele no &inal e a partir dele nen9um estado &inal
pode ser al"anado.
'stados '9uivalentes>
8m "on<unto de estados %1( %2( ...( %< so e%ui!alentes entre s.( se eles perten"em a uma
mesma "lasse de e%ui!al,n"ia.
Classes de '9uival0ncia AC'C>
8m "on<unto de estados %1( %2( ...( %< est' em uma mesma C0 se #%1( a$( #%2( a$( ...(
#%<( a$( para "ada a ( resultam respe"ti!amente nos estados %i( %i\1( ...( %n( e estes
perten"em a uma mesma C0.
"loritmo para Construo das Classes de '9uival0ncia
1 3 Crie( se ne"ess'rio( um estado para representar as inde&iniDes/
2 3 4i!ida Q em duas C0( uma "ontendo F e outra "ontendo Q-F/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 1]
3 3 4i!ida as C0 e)istentes( &ormando no!as C0 #de a"ordo "om a de&inio 3 lei de
&ormao das C0$( at %ue nen9uma no!a C0 se<a &ormada.
"loritmo para construo do ".!. 7nimo
'ntrada- 8m .F.4. B U #Q( ( ( %o( F$/
-ada- 8m .F.4. B.nimo Bc U #Qc( ( c( %oc( Fc$ Z Bc B/
7:todo-
1 3 0limine os estados Ina"ess.!eis/
2 3 0limine os estados Bortos/
3 3 Construa todas as poss.!eis Classes de e%ui!al,n"ia de B.
5 3 Construa Bc( "omo segue-
a$ Qc - o "on<unto de C0 o+tidas/
+$ %oc - a C0 %ue "ontem %o/
"$ Fc - o "on<unto das C0 %ue "onten9am pelo menos um elemento
F/ ou se<a - Ve%f Z p F em e%f( onde e%f uma C0W/
d$ c - c#epf( a$ U e%f #p
1
( a$ U %
1
uma transio de B p
1
e %
1
so
elementos de epf e e%f respe"ti!amente.
'Iemplo- Binimi1e o .F.4. de&inido pela seguinte ta+ela de transio-

a b
E "
3 +
+ ! '
C C 3
E ( " R
' ' "
! + C
E 3 3 !
R R (
III.L Con%untos &eulares e 'Ipress1es &eulares
Con%untos &eulares AC.&.C
8m C.I. pode ser de&inido de %uatro maneiras e%ui!alentes-
1 AE de,inio matemtica AprimitivaC EC
Ae<a um al&a+eto %ual%uer.
4e&inimos um C.I. so+re ( "omo segue-
a 3 um C.I. so+re /
+ 3 FG um C.I. so+re /
" 3 FaG( para todo a ( um C.I. so+re /
d 3 Ae P e S so C.&. so+re ( ento-
1 3 P S #unio$(
2 3 P.S #ou 6Q$ #"on"atenao$(
3 3 P
E
#&e"9amento$.
Tam+m so C.I. so+re /
e 3 *ada mais C.I.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 1N
6ortanto( um su+"on<unto de [ uma C.I. se e somente se ele - ( VW( VaW( ou
pode ser o+tido a partir destes atra!s de um nFmero &inito de apli"ao das operaDes de
5nioB Concatenao e !ec.amento.
2 C.&. so as linuaens eradas por 3ramticas &eulares.
* C.&. so as linuaens recon.ecidas por "ut#matos !initos.
H C.&. so os con%untos denotados ArepresentadosC por 'Ipress1es &eulares.
'Ipress1es &eulares A'.&.C
s 0.I. so+re um al&a+eto e os C.I. %ue elas denotam( so de&inidos "omo segue-
1 3 uma 0.I. e denota o C.I. /
2 3 uma 0.I. e denota o C.I. VW/
3 3 a para todo a ( uma 0.I. e denota o C.I. VaW/
5 3 Ae p e % so 0.I. denotando os C.I. 6 e Q respe"ti!amente( ento-
a 3 Ap @ 9C uma 0.I. denotando o C.I. 6 Q/
+ 3 Ap.9C ou Ap9C uma 0.I. denotando o C.I. 6Q/
" 3 ApC
E
uma 0.I. denotando o C.I. 6
[
/
7 3 *ada mais 0.I..
O+ser!aDes-
1 3 Os par,nteses podem ser eliminados/ neste "aso( para e!itar am+igRidades( "onsidera-se a
seguinte ordem de pre"ed,n"ia- 1$ [ 2$ . 3$ @
2 3 6ara simpli&i"ar 0.I.( podemos utili1ar as seguintes a+re!iaturas-
p
\
U pp
[
p
?
U p Z
p

% U p#%p$
[
&elao entre '.&. e C.&.
1 3 6ara todo C.I. pelo menos uma 0.I. %ue o denota/
2 3 6ara toda 0.I. poss.!el "onstruir o C.I. %ue ela denota/
3 3 4uas 0.I. so e%ui!alentes se elas denotam o mesmo C.I..
III.M - Implementao de "ut#matos !initos
0)istem duas &ormas +'si"as para implementao de .F.-
- Implementao 'spec,ica
- Implementao 3eral Aou en:ricaCT
Implementao 'spec,ica
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 2X
Consiste em representar "ada estado do .F. atra!s de um "on<unto de instruDes( ou
se<a( "onsiste em( literalmente( programar "ada estado do .F..
'Iemplo-
TAB a b c
q1 1 2 4
q2 4 2 3
q3 1 4 3
q4 4 4 4
#[ um e)emplo de uma implementao espe".&i"a para o F dado [$
inicio
9K> leia CI
se CI U dac
ento !a-para %X
seno se CI d+c
ento !a-para %erro
&im se
&im se
91> leia CI
se CI U d+c
ento !a-para %1
seno se CI c"c
ento !a-para %erro
&im se
&im se
92> leia CI
se CI U dhc
ento es"re!a dAe%u,n"ia Ie"on9e"idac pare
seno se CI U d"c
ento !a-para %2
seno se CI U dac
ento !a-para %X
&im se
&im se
&im se
9 erro> en%uanto CI dhc &aa
leia CI
&im en%uanto
es"re!a dAe%u,n"ia no Ie"on9e"idac
,im
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 21
Implementao 3'&"L
0sta &orma de implementao de .F. re%uer uma ta+ela de transiDes e um !etor de
estados &inais e( logi"amente( "onsiste na ela+orao de um pro"edimento genri"o para
interpretar a ta+ela de transiDes em &uno da se%R,n"ia de entrada a ser analisada.
'Iemplo- 6ara o .F. dado anteriormente( ter.amos-
Tabela de Transi1es 2etor de 'stados !inais
TAB a b c <> a, b, c
(q0) 1 1 2 4 4
(q1) 2 4 2 3 4
(q2) 3 1 4 3 4
(qerro) 4 4 4 4 4

VE F
1 0
2 0
3 1
4 0
O+ser!ao- T0F e0ATf U X 0AT F
T0F e0ATf U 1 0AT F
Procedimento
Ini"io
#[ ini"iali1ao de TK e T0F [$
leia 0AT( CI #[ estado ini"ial( pr=)imo "ara"ter [$
en%uanto CI dhc &aa
0AT-U TKe0AT( CIf
leia CI
&im en%uanto
se T0F e0ATf U 1
ento es"re!a dse%u,n"ia re"on9e"idac
seno es"re!a dse%u,n"ia no re"on9e"idac
&im se
&im
O+ser!aDes-
- es"ol9a entre uma e outra &orma de implementao depende da apli"ao/
- Os e)emplos de implementao apresentados so ilustrati!os( na pr'ti"a %ual%uer
implementao de!e ser adaptada segundo seus o+<eti!os. Tale( portanto a &iloso&ia de
implementao.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 22
III.U Principais Propriedades e Problemas de (eciso sobre Con%untos
ALinuaensC &eulares
Propriedades +sicas de C.&.
"lasse dos C.I. &e"9ada so+re as operaDes de 8*IbO( CO*CT0*ibO(
COB6L0B0*TO( e I*T0IA0CibO( isto -
1 5DIV6>
Ae L
1
e L
2
so C.I.( ento
L
1
L
2
U V) Z ) L
1
) L
2
W tam+m um C.I.
2 C6DC"T'D"WV6>
Ae L
1
e L2 so C.I.( ento
L
1
L
2
U V)P Z ) L
1
P L
2
W tam+m um C.I.
* C67PL'7'DT6>
Ae L
1

[
um C.I.( ento

[
- L
1
tam+m um C.I.
H IDT'&-'CWV6>
Ae L
1
e L
2
so C.I.( ento
L
1
L
2
U V) Z ) L
1
) L
2
W tam+m um C.I.
Problemas de (eciso sobre C.&.
Os pro+lemas de de"iso so+re C.I. podem ser &ormulados e demonstrados atra!s de
%ual%uer um dos modelos usados para e)pressar tais "on<untos. 8saremos a%ui o modelo de
ut?matos &initos em &uno de sua grande &ora de e)presso e tam+m por sua
apli"a+ilidade-
1 7'7+'&-RIP
4ado um F B U #Q( ( ( %X( F$ e um string )
[
.
M a"eito por B? ou se<a( ) T#B$?
2 '7PTID'--
4ado um F B U #Q( ( ( %X( F$( T#B$ U ?
* !IDIT'D'--
4ado um F B U #Q( ( ( %X( F$( T#B$ &inita?
H C6DT"ID7'DT
4ados dois Fcs B1 e B2( T#B1$ T#B2$?
J 'S5I2"L'DC'
4ados dois Fcs B1 e B2( T#B1$ U T#B2$?
L IDT'&-'CTI6D
4ados dois Fjs B1 e B2( T#B1$ T#B2$ U ?
Todos os pro+lemas a"ima apresentados so pro+lemas de"id.!eis.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 23
III.X "plica1es de ".!. e '.&.
pesar da simpli"idade destas &erramentas( e)iste uma grande !ariedade de so&tYare
"u<a espe"i&i"ao e>ou implementao pode ser +astante simpli&i"ada se reali1ada em termos
de .F. e 0.I.( resultando em so&tYarejs mais e&i"ientes. 4entre as di!ersas apli"aDes %ue
&a1em uso de .F. e 0.I. podemos "itar-
a$ nalisador L)i"o- Os toOens #s.m+olos +'si"os$ de uma linguagem de programao
geralmente podem ser espe"i&i"ados e&i"ientemente atra!s de 0.I.( as %uais podem
ser automati"amente "on!ertidas para .F.4. e%ui!alentes( "u<a implementao #o
analisador l)i"o propriamente dito$ tri!ial.
Isto permite in"lusi!e( a gerao autom'ti"a de um analisador l)i"o a partir da
espe"i&i"ao &ormal dos GtoOensH de uma linguagem de programao.
+$ 0ditores de Te)to- s operaDes de +us"a e su+stituio de "adeias de "ara"teres em
um te)to( podem ser e&i"ientemente reali1adas( se a "adeia &or e)pressa em termos
de 0.I. e a operao reali1ada em termos de um .F. usu&ruindo da possi+ilidade da
"on!erso autom'ti"a de 0.I. para .F.( de &orma transparente ao usu'rio.
"$ lm das apli"aDes a"ima #tidas "omo as prin"ipais$ podemos tam+m desta"ar o
uso destas &erramentas nas seguintes 'reas-
".1$ 6roto"olos de "omuni"ao
".2$ 6ro<eto #modelagem$ de sistemas opera"ionais
".3$ 6at9 0)pression
".5$ 6ro+lemas espe".&i"o tais "omo- segurana de ar%ui!os( desorientao em
sistemas de 9iperte)to( modelagem de redes neurais( "ompresso de dados( et"...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 25
Captulo I2 3ramticas Livres de ConteIto e "ut#matos de Pil.a
IT.1 3 kr!ore de 4eri!ao #.4.$ ou kr!ore Aint'ti"a #.A$
IT.2 3 Limite de uma kr!ore de 4eri!ao
IT.3 3 4eri!ao mais a 0s%uerda e mais a 4ireita
IT.5 3 Cram'ti"as m+.guas
IT.7 3 Trans&ormaDes #Aimpli&i"aDes$ em C.L.C.
IT.7.1 3 0liminao de A.m+olos InFteis
IT.7.2 3 Trans&ormao de C.L.C. em C.L.C. - Li!re
IT.7.3 3 0liminao #Iemoo$ de 6roduDes Aimples
IT.7.5 3 Fatorao de C.L.C.
IT.7.7 3 0liminao de Ie"urso a 0s%uerda
IT.: 3 Tipos 0spe"iais de C.L.C
IT.; 3 ut?matos de 6il9a #64$
IT.] 3 0%ui!al,n"ia entre 64 e C.L.C.
IT.N 3 6ropriedades e 6ro+lemas de 4e"iso das LLC
IT.1X 3 pli"aDes

Introduo- 4entre os %uatro tipos de gram'ti"as estudadas( as C.L.C. so as mais
importantes na 'rea de "ompiladores e linguagens de programao( pelo &ato de espe"i&i"arem
e&i"ientemente as "onstruDes sint'ti"as usuais.
"s 2rias (e,ini1es de 3.L.C.
Ini"ialmente de&inimos uma C.L.C. "omo sendo C U #Tn( Tt( 6( A$( onde 6 U V Z
Tn #Tn Tt$
\
W.
6osteriormente estendemos esta de&inio permitindo a e)ist,n"ia da produo A (
desde %ue A &osse o s.m+olo ini"ial de C e no apare"esse no lado direito de nen9uma das
produDes de 6. s gram'ti"as assim de&inidas denominam-se C.L.C. - LITI0A.
gora( rede&iniremos #em de&initi!o$ as C.L.C. permitindo a e)ist,n"ia de produDes da
&orma para Tn.
Formalmente( passamos a de&inir uma C.L.C. C "omo sendo C U #Tn( Tt( 6( A$( onde
P ? F" @ " 2n A2n 2tC
E
GB ou se%aB aora pode ser .
I2.1 8rvore de (erivao A".(.C ou 8rvore -inttica A".-.C
E um mtodo estruturado para representar as deri!aDes de uma C.L.C..
(e,inio-
Ae<a C U #Tn( Tt( 6( A$ uma C.L.C..
8ma 8rvore uma 8rvore de (erivao de C( se-
a$ Todos os nodos da 'r!ore &orem rotulados "om s.m+olos perten"entes S Tn
Tt/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 27
+$ O nodo rai1 da 'r!ore &or rotulado "om A( o s.m+olo ini"ial de C/
"$ Todo nodo "om des"endentes #alm dele pr=prio$ possuir "omo r=tulo um
s.m+olo Tn/
d$ 6ara todo nodo n #rotulado por $ "om des"endentes diretos n1( n2( ...( nO
#rotulados( respe"ti!amente( por 1( 2( ...( O$ e)istir uma produo
" "1 "2 ... "Y em P
'Iemplos>
I2.2 Limite de uma 8rvore de (erivao
O limite de uma .4. o string o+tido pela "on"atenao #da es%uerda para a direita$
das &ol9as da 'r!ore/ ou se<a( a &orma senten"ial "u<a deri!ao esta sendo representada pela
.4.
Lema H.1- GAe 4 uma .4. "om limite em C ento A .H
Lema H.2- G6ara toda deri!ao de em C( uma .4. "om limite .H
I2.* (erivao mais a 's9uerda e mais a (ireita
Ae<a a deri!ao A .
Considerando %ue o+tido de pela su+stituio de um *o-Terminal de ( temos
%ue-
a$ Ae o s.m+olo su+stitu.do &oi o mais da es%uerda( ento esta uma deri!ao mais S
es%uerda/
+$ Ae o s.m+olo su+stitu.do &oi o mais da direita( ento esta uma deri!ao mais S direita/
O+ser!ao- Ae o+tido por uma deri!ao mais a es%uerda ou mais a direita di1emos %ue
uma &orma senten"ial 's9uerda ou (ireita( respe"ti!amente.
I2.H 3ramtica "mbua
(e,inio- 8ma C.L.C. C U #Tn( Tt( 6( A$ am+.gua se para algum ) L#C$ e)iste
mais de uma .4..
4e outra &orma( C am+.gua se e)istir algum ) L#C$( tal %ue ) possua mais de uma
(erivao mais a 's9uerda ou mais de uma (erivao mais a (ireita.
0)emplos-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 2:
I2.J Trans,orma1es A-impli,ica1esC em 3.L.C.
I2.J.1 'liminao de -mbolos InZteis
(e,inio- 8m s.m+olo M Tn Tt inFtil em uma C.L.C. C U #Tn( Tt( 6( A$( se no
e)iste em C uma deri!ao da &orma-
A Y M P Y ) P
onde Y( )( P( Tt
[
( A Tn M Tn Tt/ ou se<a( um s.m+olo inFtil se ele in&rtil #no
gera string s= de terminais$ ou inal"an'!el #no apare"e em nen9uma &orma senten"ial de C$.
"loritmo I2.1
6b%etivo 3 0n"ontrar o "on<unto de Do Terminais !:rteis.
'ntrada 3 8ma C.L.C. C U #Tn( Tt( 6( A$.
-ada 3 *F 3 Con<unto de *o-Terminais !:rteis.
7:todo-
Construa "on<untos *X( *1( ...( "omo segue-
i X
*i
repita
i i \1
*i *i-1 V Z 6 #*i-1 Tt$
[
W
at *i U *i-1
*F *i
!im
O+ser!aDes- 8ma !ariante do algoritmo IT.1 pode ser usada para !eri&i"ar se L#C$ !a1ia-
+asta !eri&i"ar se A #o s.m+olo ini"ial de C$ *F.
0)emplo-
"loritmo I2.2>
6b%etivo- 0liminar s.m+olos Inalcanveis.
'ntrada- 8ma C.L.C. C U #Tn( Tt( 6( A$.
-ada- 8ma C.L.C. Cc U #Tnc( Ttc( 6c( Ac$ na %ual todos os s.m+olos #Tnd Ttc$ se<am
al"an'!eis.
7:todo-
Construa "on<untos TX( T1( ...( "omo segue-
i X / Ti VAW
repita
i i \1
Ti Ti-1 VM Z M 6( Ti-1 e #Tn Tt$
[
W
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 2;

[
at Ti U Ti-1
Construa Cc U #Tnc( Ttc( 6c( Ac$( "omo segue-
a$ Tnc Ti Tn
+$ Ttc Ti Tt
"$ 6c "on<unto de produDes de 6( %ue en!ol!am apenas s.m+olos de Ti
d$ Ac A
!im
'Iemplo -
"loritmo I2.*
6b%etivo- 0liminar smbolos inZteis.
'ntrada- 8ma C.L.C. C U #Tn( Tt( 6( A$.
-ada- 8ma C.L.C. Cc U #Tnc( Ttc( 6c( Ac$ Z L#Cc$ U L#C$ e nen9um s.m+olo de Cc se<a inFtil.
7:todo-
1 3 pli%ue o algoritmo IT.1 para o+ter *F/
2 3 Construa C1 U #Tn *F( Tt( 61( A$( onde 61 "ontm apenas produDes en!ol!endo
s.m+olos perten"entes S *F Tt/
3 3 pli%ue o LC IT.2 em C1( para o+ter C1c U #Tnc( Ttc( 6c( Ac$/
!im
'Iemplo>
I2.J.2 Trans,orma1es de 3.L.C. em 3.L.C. - Livre
Toda C.L.C. pode ser trans&ormada em uma C.L.C. - Livre( atra!s do seguinte
algoritmo-
"loritmo I2.H>
6b%etivo- Trans&ormar uma C.L.C. em uma C.L.C. - LITI0 e%ui!alente
'ntrada- 8ma C.L.C. C U #Tn( Tt( 6( A$.
-ada- 8ma C.L.C. - Livre Cc U #Tnc( Ttc( 6c( Ac$ Z L#Cc$ U L#C$.
7:todo-
1 3 Construa *e U V Z Tn W.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 2]

[
2 3 Construa 6c "omo segue-
a$ In"lua em 6c todas as produDes de 6( "om e)"eo da%uelas da &orma .
+$ 6ara "ada produo de 6 da &orma-
" + @ + De B 2
E
in"lua em 6c a produo
OKA- "aso e)ista mais de um no terminal perten"ente a *e no lado direito de
uma produo( &aa todas as "om+inaDes entre esses no terminais.
"$ Ae A *e( adi"ione a 6c as seguintes produDes-
Ac A e Ac in"luindo Ac em *c #*c U * VAcW$
"aso "ontr'rio( &aa *c U * e Ac U A.
3 3 gram'ti"a trans&ormada ser'- Cc U #Tnc( Ttc( 6c( Ac$.
!im.
'Iemplos>
1$ A a A + Z " Z
2$ A K
a Z
K +K Z
I2.J.* 'liminao A&emooC de Produ1es -imples
(e,inio- 6roduDes Aimples so produDes da &orma K( onde e K Tn.
s produDes simples de uma C.L.C. podem se remo!idas atra!s do seguinte algoritmo-
"loritmo I2.J>
'ntrada- 8ma C.L.C. - Livre C U #Tn( Tt( 6( A$.
-ada- 8ma C.L.C. - Livre Cc U #Tnc( Ttc( 6c( Ac$ sem produDes simples Z L#Cc$ U L#C$.
7:todo-
1 3 6ara todo Tn( "onstrua * U VK Z KW
2 3 Construa 6c "omo segue-
se K 6 e no uma produo simples(
ento adi"ione a 6c as produDes da &orma-
" B para todo " @ + D"
3 3 Faa Cc U #Tn( Tt( 6c( A$.
!im.
'Iemplos>
1$ A FCJ
F C Z a
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 2N

[
C dC Z J Z +
J "
2$ A a K " 4 e
K + K Z 0 Z F
4 d 4 Z F Z d
0 e 0 Z e
F & F Z &
I2.J.H !atorao de 3.L.C.
8ma C.L.C. est' ,atorada se ela determin.sti"a/ isto ( no possui 3 produDes "u<o
lado direito ini"ie "om o mesmo "on<unto de s.m+olos ou "om s.m+olos %ue geram #deri!am$
se%R,n"ias %ue ini"iem "om o mesmo "on<unto de s.m+olos.
0)emplos-
$rocesso de Fatora,-o
6ara &atorar uma C.L.C. alteramos as produDes en!ol!idas no no-determinismo( da
seguinte maneira-
a$ s produDes "om Do-(eterminismo (ireto da &orma-
Z
4e!em ser su+stitu.das por-
c
c Z
+$ 6 Do-(eterminismo Indireto retirado atra!s de sua trans&ormao em um
no-determinismo (ireto #!ia deri!aDes su"essi!as$( o %ual eliminado "omo
pre!isto no item a.
'Iemplos>
I2.J.J 'liminao de &ecurso a 's9uerda
(e,ini1es>
a$ 8m Do-Terminal em uma C.L.C. C U #Tn( Tt( 6( A$ re"ursi!o
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 3X

\
se ( para T
[
.
+$ 8ma 3ramtica "om pelo menos um *T re"ursi!o a 's9uerda ou a (ireita(
uma 3ramtica &ecursiva a 's9uerda ou a (ireita( respe"ti!amente.
&ecurso a 's9uerda
a$ (ireta #ou Imediata$ - 8ma C.L.C. C U #Tn( Tt( 6( A$ possui re"urso a
es%uerda direta( se p "ontm pelo menos uma produo da &orma .
+$ Indireta > 8ma C.L.C. C U #Tn( Tt( 6( A$ possui re"urso a es%uerda indireta( se
e)iste em C uma deri!ao da &orma-
" ... ".
'liminao de &ecurs1es a 's9uerda Imediata
Ae<am as seguintes - produDes de C-
" "1 @ "2 @ ... @ "n @ 1 @ 2 @ ... @ m
O+s.- onde nen9um i "omea "om GH.
Au+stitua estas produDes pelas seguintes-
" 1"[ @ 2"[ @ ... @ m"O
"O 1"O @ 2"O @ ... @ n"O @
O+ser!aDes- onde c um no!o no-terminal.
Processo para 'liminar &ecurs1es a 's9uerda Adiretas e indiretasC
'ntrada - 8ma C.L.C. 6r=pria C U #Tn( Tt( 6( A$.
-ada- 8ma CLC Cc U #Tnc( Tt( 6c( A$ Z L#Cc$ U L#C$ Cc no possui Ie"urso a 0s%uerda.
7:todo-
1 3 Ordene os no-terminais de C em uma ordem %ual%uer #digamos- 1( 2( ...( n$/
2 3 6ara i U 1( n &aa
6ara < U 1( i 3 1 &aa
Au+stitua as produDes da &orma
"i "%
por produDes da &orma
"i 1 @ 2 @ ... @ Y
onde 1( 2( ...( O so os lados direitos das
< 3 produDes #< 1 Z 2 Z ... Z O$
&im para
0limine as re". es%. (iretas das i 3 produDes
&im para
3 3 !im.
'Iemplos>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 31

[
I2.L TIP6- '-P'CI"I- (' 3.L.C
3ramtica Pr$pria-
8ma C.L.C. Pr$pria( se-
*o possui Ciclos/
E - Livre/
*o possui -mbolos InZteis.
3ramtica -em Ciclos>
C U #Tn( Tt( 6( A$ uma C.L.C. Aem Ci"los #ou Li!re de Ci"los$ se no e)iste em C
nen9uma deri!ao da &orma ( para Tn.
3ramtica &edu/ida>
8ma C.L.C. C U #Tn( Tt( 6( A$ uma C.L.C. Iedu1ida se-
L#C$ no !a1ia/
Ae 6( /
C no possui A.m+olos InFteis.
3ramtica de 6peradores>
8ma C.L.C. C U #Tn( Tt( 6( A$ de Operadores( se ela no possui produDes "u<o lado direito
"onten9a *T "onse"uti!os.
3ramtica 5nicamente Inversvel>
8ma C.L.C. Iedu1ida 8ni"amente In!ers.!el se ela no possui produDes "om lados
direitos iguais.
3ramtica Linear>
8ma C.L.C. C U #Tn( Tt( 6( A$ Linear se todas as suas produDes &orem da &orma
) K Y Z )( onde ( K Tn )( Y Tt[.
!orma Dormal de C.omsY\ A!.D.C.C>
8ma C.L.C. est' na F.*.C. se ela - LITI0 e todas as suas produDes #e)"eto(
possi!elmente( A $ so da &orma-
KC( "om ( K e C Tn ou
a( "om Tn a Tt.
!orma Dormal de 3reibac. A!.D.3.C>
8ma C.L.C. est' na F.*.C. se ela - LITI0 e todas as suas produDes #e)"eto(
possi!elmente( A $ so da &orma-
" a @ a 2tB 2n
E
" 2n.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 32
Principais Dotacoes (e 3.L.C.>
+D! #+acYus Daur !orm$ - *otao utili1ada na espe"i&i"ao &ormal da sinta)e de
Linguagens de 6rogramao.
0)emplos- 1$ _A` -- U a _A` Z
2$ _0` -- U 0 \ id Z id
+D!' #+D! 'Itended$ - 0%ui!alente a +D!B permite uma espe"i&i"ao mais "ompa"ta da
sinta)e de uma Linguagem de 6rogramao.
0)emplos- 1$ _A` -- U VaW
2$ _0` -- U id V\ idW
&&P - E uma notao de C.L.C. onde os lados direito das produDes so espe"i&i"ados atra!s
de 0.I. en!ol!endo Tt e Tn de uma gram'ti"a.
0)emplos-
1$ _A` -- U a[
2$ _0` -- U id

\
(iarama -inttico - E uma notao gr'&i"a de C.L.C..
0)emplos- 1$ _A` -
a
2$ _0` - id
\
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 33
I2.M "ut#matos de Pil.a AP("C
8m aut?mato de pil9a( tam+m denominado GPus. (o]n "utomataH( um dispositi!o
no-determin.sti"o re"on9e"edor de Linguagens Li!res de Conte)to #L.L.C.$( %ue possui a
seguinte estrutura geral-
a1 a2 ... an 'ntrada
^1
^2

...
Controle !inito

^n Pil.a
Formalmente( um aut?mato de pil9a #64$ um sistema de&inido por-
P ? ANB B B B 9oB ^oB !C( onde
N um "on<unto &inito de 'stados
o al&a+eto &inito de 'ntrada
o al&a+eto &inito de Pil.a
uma !uno (e 7apeamento( de&inida por-
AN I A FGC I C FN I
E
G
9K Q( o 'stado Inicial de 6
^K ( o -mbolo Inicial da Pil.a
! Q( o "on<unto de 'stados !inais.
7ovimentos de um P("
Os mo!imento de um 64 so determinados "om +ase nas seguintes in&ormaDes-
pr=)imo s.m+olo da entrada(
s.m+olo do topo da pil9a
estado "orrente
0)istem dois tipos de mo!imentos-
1 7ovimento dependente da entrada Aa-moveC
#%( a( L$ U V#p1( 1$( #p2( 2$( ...( #pm( m$W onde-
a
%( p1( p2( ...( pm Q
L
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 35
i
[
( para i i m
-ini,icado 3 O 64 6 no estado %( tendo a na entrada e L no topo da pil9a( de!e entrar
no estado pi #para %ual%uer i de 1 a m$( su+stituindo L por i na pil9a e a!anando um
s.m+olo de entrada #ou se<a( re"on9e"endo o s.m+olo a$.
1 7ovimento independente da entrada A -moveC
#%( ( L$ U V#p1( 1$( #p2( 2$( ...( #pm( m$W onde-
a sentena !a1ia
%( p1( p2( ...( pm O
L
i
[
( para i i m
-ini,icado 3 O 64 6 no estado %( independente do s.m+olo de entrada e "om L no
topo da pil9a( pode entrar no estado pi #i i m$ e su+stituir L por i na pil9a( sem a!anar o
"a+eote de leitura da entrada #ou se<a( sem re"on9e"er nen9um s.m+olo da entrada$.
(escrio Instant_nea Aou Con,iuraoC de um P("
des"rio instant2nea de um 64 dada por #%( Y( $( onde-
% Q( representa o estado atual #"orrente$/
Y
[
( a poro da entrada ainda no analisada/

[
( o "onteFdo #"orrente$ da pil9a.
Os mo!imentos e&etuados por um 64 so denotados por uma se%R,n"ia de
"on&iguraDes( de &orma %ue-
Ae #%( aY( L$ uma "on&igurao e
se 6 "ontm a transio #%( a( L$ #%c( a$( onde-
%( %c Q
a VW
Y
[
L #ou L $

[
ento a apli"ao #o uso$ desta transio dei)ar' 6 na seguinte "on&igurao-
#%c( Y( $
Tal mo!imento denotado por-
A9B a]B ^C A9OB ]B C
Linuaem "ceita por um P("
Linuaem a"eita por um 64 pode ser de&inida de duas maneiras( "on&orme o
modo "omo e&etuado o re"on9e"imento das sentenas-
1 3 Linuaem "ceita por 'stado !inal #TAPC$
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 37
T#6$ U VY Z #%X( Y( LX$
[
#p( ( $( onde p F
[
W
2 3 Linuaem "ceita Por Pil.a 2a/ia #*#6$$
*#6$ U VY Z #%X( Y( LX$
[
#p( ( $( para p QW
O+ser!ao- Linguagens a"eitas por estados &inais e por pil9a !a1ia "onstituem a mesma
"lasse de linguagens( pois para toda linguagem a"eita por um 64 61 por pil9a !a1ia( e)iste
um 64 62 %ue re"on9e"e essa linguagem por estado &inal e !i"e-!ersa.
0)emplos-
&epresentao 3r,ica de um P("
8m 64 tam+m pode ser representado por um gra&o de transiDes( similar a%uele
utili1ado na representao de .F.. di&erena +'si"a est' no r=tulo das arestas( os %uais
de!ero indi"ar alm do s.m+olo de entrada( o s.m+olo do topo da pil9a e a se%R,n"ia de
s.m+olos %ue de!er' su+stituir o s.m+olo do topo da pil9a( isto ( o r=tulo de!e ser da &orma-
#a( L$ ( onde a
L

[
.
0)emplo-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 3:
"ut#mato de Pil.a (eterminstico
8m 64 6 U #Q( ( ( ( %X( LX( F$ determin.sti"o se-
1 3 6ara "ada % Q e L ( sempre %ue #%( ( L$ ento
#%( a( L$ U para todo a .
2 3 6ara % Q( L e a ( e)iste no m')imo uma transio en!ol!endo #%( a( L$
"ondio #1$ e!ita a possi+ilidade de uma es"ol9a entre um mo!imento independente
da entrada # - mo!e$ e um mo!imento en!ol!endo um s.m+olo da entrada( en%uanto %ue a
"ondio #2$ e!ita uma es"ol9a mFltipla em &uno do s.m+olo "orrente da entrada.
0)emplos-
I2.U '9uival0ncia 'ntre P(" e 3.L.C.
Teorema- GAe L uma L.L.C.( ento e)iste um 64 6 Z 6 a"eita LH.
e%ui!al,n"ia entre 64 e C.L.C. pro!ada pela demonstrao de %ue-
1 3 E sempre poss.!el "onstruir a partir de uma C.L.C. C um 64 6 %ue a"eite L#C$ por
pil9a !a1ia #e portanto( em &uno da e%ui!al,n"ia( a"eita tam+m por estado &inal$/
2 3 E sempre poss.!el "onstruir uma C.L.C. C a partir de um 64 6 de &orma %ue
am+os a"eitam a mesma linguagem. pro!a deste teorema pode ser en"ontrada na
+i+liogra&ia indi"ada #eJO6 ;Nf( por e)emplo$.
0)emplo-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 3;
I2.X Propriedades e Problemas de (eciso das LLC
*esta seo apresentaremos as prin"ipais propriedades e os pro+lemas de de"iso
+'si"os relati!os a LLC( "om o o+<eti!o de despertar o interesse por tais aspe"tos e ilustrar
algumas %uestDes pr'ti"as. O assunto pode ser en"ontrado de &orma mais ampla e pro&unda na
+i+liogra&ia indi"ada.
Propriedades
"lasse das LLC &e"9ada so+re as seguintes operaDes-
aC 5nio
Ae L1 e L2 so LLC( ento
L1 L2 tam+m uma LLC.
bC Concatenao
Ae L1 e L2 so LLC( ento
L1L2 tam+m uma LLC.
cC !ec.amento
Ae L uma LLC( ento L
[
e L
\
tam+m so LLC.
dC Interseco Com Con%unto &eular
Ae L1 LLC e L2 um CI( ento
L1 L2 uma LLC
O+ser!aDes- 1 3 s LLC no so &e"9adas so+re as operaDes de Interseco e
Complemento.
2 3 prin"ipal apli"ao das propriedades de LLC a demonstrao de
%ue determinadas linguagens no so LLC.
Problemas de (eciso
1 3 7embers.ip
4ada uma C.L.C. C U #Tn( Tt( 6( A$ e um string )( I LA3C ;
O+ser!ao- Isto pode ser demonstrado pelo algoritmo do Teorema II.2 #C6.II$ atra!s de
uma deri!ao de no m')imo 2[Z)Z-1 passos.
2 3 'mptiness
4ada uma C.L.C. C U #Tn( Tt( 6( A$( LA3C ? ;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 3]
O+ser!ao- 0ste pro+lema pode ser resol!ido pelo algoritmo %ue determina o "on<unto de
*T &rteis de C( +astando testar se o s.m+olo ini"ial de C &rtil.
3 3 !initeness
4ada uma C.L.C. C U #Tn( Tt( 6( A$( LA3C : !inita;
O+ser!ao- 0ste pro+lema pode ser resol!ido "om au).lio dos "on"eitos de -mbolos InZteis
e Do-Terminais &ecursivos.
5 3 Containment
4adas duas C.L.C. C1 e C2( LA31C LA32C;
7 3 '9uivalence
4adas duas C.L.C. C1 e C2( LA31C ? LA32C;
: 3 Intersseco
4adas duas C.L.C. C1 e C2( LA31C LA32C ? ;
; 3 "mbi`idade
4ada uma C.L.C. C U #Tn( Tt( 6( A$( 3 : ambua;
6bserva1es- Os pro+lemas 1( 2 e 3 so decidveis( os demais so indecidveis.
I2.1K "plica1es
s LLC so de grande import2n"ia pr'ti"a( notadamente nas seguintes apli"aDes-
1 3 4e&inio #espe"i&i"ao$ de linguagens de programao/
2 3 *a &ormali1ao da noo de parsing e "onse%Rentemente na implementao de parsercs/
3 3 0s%uemas de traduo dirigidos pela sinta)e #Transdu"ercs$/
5 3 6ro"essamento de stringcs de modo geral.
4entre essas apli"aDes( as duas primeiras so &undamentais para a 'rea de
"ompiladores( pois graas S possi+ilidade de &ormali1ao das LLC #!ia C.L.C. e 64$ &oi
poss.!el "onstruir uma teoria geral de parsing %ue le!ou a proposio de di!ersas e e&i"ientes
t"ni"as #algoritmos$ de an'lise sint'ti"a. T"ni"as estas %ue( por serem +aseadas em aspe"tos
&ormais( possi+ilitam a gerao autom'ti"a de parsercs #analisadores sint'ti"os$.
4e!e-se salientar %ue C.L.C. "onstituem um modelo apropriado para espe"i&i"ao de
linguagens de programao e %uais%uer outras linguagens %ue no possuam depend,n"ia de
"onte)to( en%uanto %ue um 64 um modelo natural de um parser.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 3N
inda na "onstruo de "ompiladores #e no pro"esso de traduo( em geral$ C.L.C. e
64 t,m sido +astante utili1ados por outros dispositi!os #&ormais ou semi&ormais$
empregados na implementao de analisadores sem2nti"os #gram'ti"as de atri+uto( por
e)emplo$ e "omo +ase para es%uemas de traduo dirigidos pela sinta)e.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 5X
Captulo 2 "nlise -inttica
T.1 3 4e&iniDes 6reliminares
T.2 3 Classes de nalisadores
T.2.1 3 nalisadores 4es"endentes #Top-doYn$
T.2.2 3 nalisadores s"ententes #Kotom-up$
2.1 (e,ini1es preliminares
Parser #nalisador Aint'ti"o$ E um algoritmo %ue re"e+endo "omo entrada uma
sentena )( emite "omo sa.da-
1 3 O Parse de )( se ) perten"e S linguagem/ ou
2 3 'rro -inttico( "aso ) no pertena S linguagem.
Parsin #nalise Aint'ti"a$ E o e&eito da e)e"uo do Parser.
Parse Ae<a C U #Tn( Tt( 6( A$ uma C.L.C. "om as produDes de 6 numeradas de 1 a p
e uma deri!ao A ).
O Parse de ) em C( a se%R,n"ia &ormada pelo nFmero das produDes
utili1adasna deri!ao A ) . Bais espe"i&i"amente-
1 3 Parse "scendente #Kotton-up$ E a se%R,n"ia in!ertida dos nFmeros das
produDes utili1adas na deri!ao mais a direita de ) em C #A
dir
).
2 3 Parse (escedente #Top-doYn$ E a se%R,n"ia dos nFmeros das produDes
utili1adas na deri!ao mais a es%uerda de ) em C # A
es%
).
'Iemplos>
Con%unto !irst
(e,inio- Ae<a uma se%R,n"ia %ual%uer gerada por C. 4e&inimos "omo sendo
,irst#$ o "on<unto de s.m+olos terminais %ue ini"iam ou se%R,n"ias deri!adas #direta ou
indiretamente$ de .
O+ser!aDes- Ae U ou ( ento ,irst#$.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 51

[
"loritmo 2.1-
6ara "al"ular ,irst#M$ para todo M Tn Tt( apli"amos as seguintes regras-
a$ Ae M Tt( ento ,irst#M$ U VMW/
+$ Ae M Tn M a 6( ento "olo%ue a em ,irst#M$/ da mesma &orma(
se M 6( "olo%ue em ,irst#M$/
"$ Ae M ^1 ^2 ... ^O 6( ento( para todo i Z ^1 ^2 ... ^i-1 Tn ,irst#^<$(
para < U i( i-1( "onten9a ( adi"ione ,irst#^i$ 3 VW em ,irst#M$.
0m outras pala!ras-
1 3 Colo%ue ,irst#^1$( e)"eto ( em &irst#M$/
2 3 Ae ,irst#^1$ ento "olo%ue ,irst#^2$( e)"eto em ,irst#M$/
3 3 Ae ,irst#^2$ ento ....
.....
at ^O.
5 3 Finalmente( se para todo i #de 1 a O$ ,irst#^i$ "ontm (
ento adi"ione em ,irst#M$.
Con%unto !ollo]
(e,inio- 4e&inimos !ollo]#$( para todo Tn( "omo sendo o "on<unto de
s.m+olos terminais %ue podem apare"er imediatamente ap=s em alguma &orma senten"ial
de C.
"loritmo 2.2>
6ara todo Tn( apli%ue as regras a+ai)o( at %ue !ollo]#$ este<a "ompleto #isto (
no so&ra nen9uma alterao$-
1 3 Colo%ue h #a mar"a de &inal de sentena$ em !ollo]#A$( onde A o A.m+olo Ini"ial
da gram'ti"a em %uesto/
2 3 Ae a K 6 (
ento adi"ione !irst#$( e)"eto ( em !ollo]#K$/
3 3 Ae K #ou K( onde !irst#$$ 6(
ento adi"ione !ollo]#$ em !ollo]#K$.
0)emplos e 0)er"."ios-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 52
2.2 Classes de "nalisadores
0)istem duas "lasses &undamentais de analisadores sint'ti"os( de&inidos em &uno da
estratgia utili1ada na an'lise-
"nalisadores (escendentes ATop-do]nC
Consistem em uma tentati!a de "9egar-se a sentena a partir do s.m+olo ini"ial de C(
ol9ando a sentena ou parte dela para de"idir %ue produo de!er' ser usada na derivao.
"nalisadores "scendentes A+ottom-upC
Consistem em uma tentati!a de "9egar-se ao s.m+olo ini"ial de C a partir da sentena a
ser analisada( ol9ando a sentena ou parte dela para de"idir %ue produo de!er' ser usada na
reduo.
2.2.1 "nalisadores (escendentes ATop-(o]nC
idia geral desta "lasse de analisadores resume-se a uma tentati!a de "onstruir a
deri!ao mais S es%uerda da sentena de entrada( ou e%ui!alentemente( uma tentati!a de
"onstruir a .4. da sentena a partir do s.m+olo ini"ial da gram'ti"a em %uesto. 0stes
analisadores podem ser implementados "om #analisadores no-deterministi"os$ ou sem +a"O-
tra"O #analisadores deterrmin.sti"os$-
a$ utili/ao de bacY-tracY permite %ue um "on<unto maior de C.L.C.#in"luindo
gram'ti"as am+.guas$ possa ser analisado( entretanto apresenta !'rias des!antagens #todas
de"orrentes do Do-(eterminismo$( dentre as %uais podemos desta"ar-
1 3 Baior tempo ne"ess'rio para a an'lise/
2 3 4i&i"uldade na re"uperao de erros/
3 3 6ro+lemas na an'lise sem2nti"a e gerao de "=digo.
Os analisadores des"endentes no-determin.sti"os #dentre os %uais desta"a-se a t"ni"a
da !ora bruta$( nada mais so do %ue implementaDes diretas da idia geral dessa "lasse de
analisadores( ou se<a- "onsistem em uma tentati!a de "onstruo #e)pli"ita$ da 'r!ore de
deri!ao da sentena em an'lise( a partir do s.m+olo ini"ial da gram'ti"a. O uso do
me"anismo de +a"O-tra"O &a1-se ne"ess'rio em &uno da poss.!el presena de no-
determinismo neste pro"esso.

+$ s implementa1es sem bacY-tracY apesar de limitarem a "lasse de gram'ti"as %ue
podem ser analisadas 3 "omo !eremos adiante 3 tornam-se mais !anta<osas pelo &ato de serem
t"ni"as determin.sti"as e superarem as de&i"i,n"ias prati"as das implementaDes "om +a"O-
tra"O. ssim sendo( en&ati1aremos neste "urso as t"ni"as determin.sti"as #ou se<a( as t"ni"as
%ue no &a1em uso do me"anismo de +a"O-tra"O$.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 53

[
"nalisadores (escendentes sem +acY-TracY
6ara %ue um C.L.C. possa ser analisada deterministi"amente por estes analisadores( ela
de!e satis&a1er as seguintes "ondiDes-
a$ *o possuir &ecurso a 's9uerda/
+$ 0star !atorada( isto ( se 1 Z 2 Z ... Z n so as -produDes de uma
determinada C.L.C. ento
!irst#1$ ... !irst#n$ U /
"$ 6ara todo Tn Z ( !irst#$ !ollo]#$ U .
T:cnicas de Implementao
(escendente &ecursivo- 0sta t"ni"a "onsiste +asi"amente na "onstruo de um "on<unto
de pro"edimentos #normalmente re"ursi!os$( um para "ada s.m+olo no terminal da gram'ti"a
em %uesto.
prin"ipal des!antagem desta t"ni"a %ue ela no geral( ou se<a( os pro"edimentos
so espe".&i"os para "ada gram'ti"a/ alm disso( o tempo de an'lise maior #se "omparado
"om a t"ni"a %ue !eremos a seguir$ e e)iste a ne"essidade de uma linguagem %ue permita
re"ursi!idade para sua implementao.
6or outro lado( a prin"ipal !antagem desta t"ni"a( a simpli"idade de implementao e
a &a"ilidade para inserir as di&erentes &unDes do pro"esso de "ompilao( diretamente nos
pro"edimentos %ue reali1am a an'lise sint'ti"a de "ada no-terminal da gram'ti"a/ "ontudo
esta !antagem !eri&i"a-se apenas para gram'ti"as>linguagens pe%uenas e simples.
Outro in"on!eniente desta t"ni"a a di&i"uldade para !alidao do analisador
"onstru.do( uma !e1 %ue os pro"edimentos no esto li!res de erros de programao e ou
erros de"orrentes da no ade%uao da gram'ti"a para esta "lasse de analisadores #por
e)emplo( a presena de am+igRidade ou re"ursDes S es%uerda indiretas( no per"e+idas pelo
pro<etista$.
'Iemplo>
O 6arser (escendente &ecursivo da Cram'ti"a
3> ' T'O
'O b T'O @
T A'C @ id
seria "omposto pelos seguintes pro"edimentos-
#[ Prorama Principal [$
+egin
s"anner #sim+$/
0 #sim+$/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 55

[
end/
pro"edure 0 #sim+$/
+egin
T #sim+$/
0lin9a #sim+$/
end/
pro"edure 0lin9a #sim+$/
+egin
i& sim+ U G\H
t9en +egin
s"anner #sim+$/
T #sim+$/
0lin9a #sim+$/
end/
end/
pro"edure T #sim+$/
+egin
...
end/
P"&-'& P&'(ITI26 ALLC
E uma maneira e&i"iente de implementar um parser des"endente re"ursi!o #por isso(
tam+m denominado parser des"endente re"ursi!o ta+ular$.
8m parser preditivo "onsiste de-
1 3 'ntrada "ontendo a sentena #programa$ a ser analisada.
2 3 Pil.a usada para simular a re"ursi!idade( ela pre!, a parte da entrada %ue est'
para ser analisada # ini"iali1ada "om h e o s.m+olo ini"ial da gram'ti"a em %uesto$.
3 3 Tabela de Parsin #ou ta+ela de an'lise sint'ti"a$ Contm as aDes a serem
e&etuadas. E uma matri1 B#( a$( onde Tn a Tt.
5 3 "loritmo de anlise sinttica.
'strutura de um Parser Preditivo

a + " ... h
'ntrada
) "loritmo
a
^
L Tabela de Parsin
Pil.a h
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 57
O algoritmo do parser prediti!o tem "omo &uno determinar a partir de ) #o elemento
do topo da pil9a$ e de a #o pr=)imo s.m+olo da entrada$ a ao a ser e)e"utada( a %ual poder'
ser-
a$ Ae M U a U h o analisador anun"ia o &inal da an'lise.
+$ Ae M U a h o analisador retira ) do topo da pil9a e a da entrada. 0sta ao
"orresponde ao re"on9e"imento sint'ti"o de a.
"$ Ae M Tt e M a situao de erro #[ dMc era o s.m+olo esperado [$. *este
"aso( de!em ser ati!ados os pro"edimentos de re"uperao de erro #"aso e)istam$ ou a an'lise
sint'ti"a de!e ser en"errada( diagnosti"ando o erro en"ontrado.
d$ Ae M Tn o analisador "onsulta a ta+ela de parsing B#M(a$( a %ual poder'
"onter o nFmero de uma produo ou um indi"ati!o de erro-
- Ae B#M(a$ "ontm o nFmero de uma produo( e esta produo ( digamos. M
8Ta( ento M %ue est' no topo da pil9a de!e ser su+stitu.do por aT8 #"om 8 no topo$/
- Ae B#M( a$ "ontm um indi"ati!o de erro( ento o analisador de!e diagnosti"ar o erro
en"ontrado e ati!ar os pro"edimentos de re"uperao de erros #em implementaDes sem
re"uperao de erros a an'lise en"errada$.
O+ser!aDes- O termo Preditivo de!e-se ao &ato de %ue a pil9a sempre "ontm a des"rio do
restante da sentena #se ela esti!er "orreta$/ isto ( pre!, a parte da sentena %ue de!e estar na
entrada para %ue a sentena este<a "orreta.
"loritmo de "nlise -inttica Parser Preditivo
repita
#[ M 3 topo da pil9a [$
#[ a 3 pr=)imo s.m+olo da entrada [$
se ) terminal ou h
ento se M U a
ento retira ) do topo da pil9a
retira a da entrada
seno erro# $
seno #[ M no terminal [$
se B#M( a$ U M ^1 ^2 ... ^O
ento retira ) da pil9a
"olo"a ^O ^O-1 ... ^2 ^1 na pil9a
#[ dei)ando ^1 sempre no topo [$
seno erro# $
at M U h #[ pil9a !a1ia( an'lise "on"lu.da [$
Construo da Tabela de Parsin do Parser Preditivo
Id:ia 3eral 3 se 6 a !irst#$( ento( se est' no topo da pil9a e a o
pr=)imo s.m+olo da entrada( de!emos e)pandir #deri!ar$ ( usando a produo . Bas(
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 5:

[
e se U ou g? 3 note %ue nun"a apare"er' na entrada 3 neste "aso( se a !ollo]#$
e)pandimos #deri!amos$ atra!s da produo .
"loritmo para Construo da Tabela de Parsin g
1. 6ara "ada produo 6( e)e"ute os passos 2 e 3.
2. 6ara todo a !irst#$( e)"eto (
"olo%ue o nFmero da produo em B#( a$.
3. Ae !irst#$( "olo%ue o nFmero da produo em B#( +$( para todo +
!ollo]#$.
5. s posiDes de B %ue &i"arem inde&inidas( representaro as situaDes de erro.
Considera1es 3erais
ta+ela de parsing dos parserjs prediti!os de!e possuir a propriedade de %ue( em "ada
entrada da ta+ela B e)ista no m')imo uma produo #seu nFmero$/ isto !ia+ili1a a an'lise
determin.sti"a da sentena de entrada.
6ara %ue esta propriedade se !eri&i%ue( a gram'ti"a "onsiderada de!er' satis&a1er as
seguintes "ondiDes-
1 3 *o possuir re"urso S es%uerda/
2 3 0star &atorada/
3 3 6ara todo Tn Z ( !irst#$ !ollo]#$ U
s C.L.C. %ue satis&a1em estas "ondiDes so denominadas C.L.C. LLANC 3 isto
C.L.C. %ue podem ser analisadas deterministi"amente da es%uerda para a direita #Le&t-to-
rig9t$ e o analisador "onstruir' uma deri!ao mais S es%uerda #Le&tmost deri!ation$( sendo
ne"ess'rio a "ada passo o "on9e"imento de N s.m+olos de looOa9ead #s.m+olos de entrada
%ue podem ser !istos para %ue uma ao se<a determinada$.
Aomente C.L.C. LL#Q$ podem ser analisadas pelos analisadores prediti!os #as demais
"ausam "on&litos na "onstruo da ta+ela de parsing ou &a1em "om %ue o analisador entre
loop$/ por isso( os analisadores prediti!os so tam+m denominados analisadores LL#Q$ 3 na
pr'ti"a usa-se Q U 1( o+tendo-se desta &orma "nalisadores LLA1C para 3.L.C. LLA1C.
2.2.2 "nalisadores "scendentes
&ormulao dos algoritmos de an'lise sint'ti"a as"endente +aseia-se em um algoritmo
primiti!o denominado "loritmo 3eral -.i,t-&educe #"vana-&edu/$. 0ste algoritmo
utili1a-
a$ 8ma Pil.a -inttica #ini"ialmente !a1ia$/
+$ 8m +u,,er de 'ntrada #"ontendo a sentena a ser analisada$/
"$ 8ma 3.L.C. #"om as produDes numeradas de 1 a p$/
d$ 8m pro"edimento de an'lise sint'ti"a( o %ual "onsiste em trans,erir #GA9i&tarH$ os
s.m+olos da entrada #um a um$ para a pil9a at %ue o "onteFdo da pil9a #ou parte dele$
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 5;

[
"oin"ida "om o lado direito de uma produo. Quando isto o"orrer( o lado direito da produo
de!e ser substitudo pelo #redu1ido ao$ lado es%uerdo da produo em %uesto. 0ste pro"esso
de!e ser repetido ate %ue toda a sentena de entrada ten9a sido analisada.
O+ser!aDes- 1 3 s reduDes so priorit'rias em relao ao s9i&ts.
2 3 Ae ao &inal do pro"esso a 'ntrada esti!er !a1ia e a pil9a sint'ti"a "onti!er
apenas o s.m+olo ini"ial de C( ento a sentena analisada estar' sintati"amente "orreta.
(e,ici0ncias do "loritmo -.i,t-&educe
0m+ora esta t"ni"a de an'lise sint'ti"a possa ser apli"ada a %ual%uer CLC #esta sua
grande !antagem$( ela apresenta !'rias de&i"i,n"ias %ue in!ia+ili1am seu uso na pr'ti"a. Ao
elas-
1 3 Ie%uer muito tempo para analise/
2 3 A= dete"ta erro sint'ti"o ap=s "onsumir toda a sentena a ser analisada e( alm disso(
no identi&i"a o ponto onde o"orreu o erro.
3 3 6ode re<eitar sentenas "orretas 3 pelo &ato de %ue nem sempre %ue o lado direito de
uma produo apare"e na pil9a a ao "orreta uma reduo( &ato este %ue "ara"teri1a o Do-
(eterminismo do mtodo.
O pro+lema do no-determinismo pode ser "ontornado atra!s do uso da t"ni"a de
+acY-TracYin/ "ontudo( o uso desta t"ni"a in!ia+ili1a o mtodo na prati"a #em &uno da
"omple)idade de tempo e espao$.
*a pr'ti"a( as t"ni"as de an'lise sint'ti"a as"endente usuais superam as de&i"i,n"ias da
t"ni"a -.i,t-&educe com +acY-TracYin #apesar de &undamentarem-se nela$( apresentando
as seguintes "ara"ter.sti"as-
1 3 Tempo de an'lise diretamente propor"ional ao taman9o da sentena/
2 3 4ete"o de erros sint'ti"os no momento da o"orr,n"ia/
3 3 Ao t"ni"as (eterminsticas( isto ( em %ual%uer situao( 9a!er' sempre uma
Fni"a ao a ser e&etuada.
Contudo( estas "ara"ter.sti"as tem um "usto asso"iado- a imposio de restriDes Ss
CLC( para %ue as mesmas possam ser analisadas deterministi"amente. 8ma restrio "omum
S todas as t"ni"as deterministi"as( a e)ig,n"ia de %ue a CLC no se<a am+.gua.
Principais T:cnicas de "nlise -inttica "scendente
"lasse de analisadores as"endentes determin.sti"os "omposta por uma srie de
t"ni"as( dentres as %uais desta"am-se grandemente duas &am.lias de t"ni"as-
1 3 "nalisadores de Preced0ncia #Aimples( estendida e de operadores$ - 0stes
analisadores +aseiam-se no algoritmo -.i,t-&educeB a"res"ido de relaDes de pre"ed,n"ia
entre os s.m+olos da gram'ti"a/ relaDes estas %ue de&inem( de &orma determin.sti"a a ao a
ser e&etuada em uma dada situao.
2 - "nalisadores L& - 0sta &am.lia de analisadores tam+m +aseia-se nas operaDes
s9i&t e redu"e #( na !erdade( uma e!oluo natural do algoritmo geral s9i&t-redu"e$.
di&erena &undamental %ue estas operaDes #s9i&t e redu"e$ so reali1ados sempre
deterministi"amente( "om +ase no estado "orrente da an'lise e nas propriedades estruturais da
gram'ti"a em %uesto.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 5]
lm de teori"amente importante( a &am.lia LI #espe"ialmente as t"ni"as ALI#1$ e
LLI#1$$ a mais utili1ada na implementao de analisadores sint'ti"os( e por isso ser'
estudada de &orma mais detal9ada neste "urso.
"nalisadores L&
Introduo 3 &am.lia dos analisadores LI &ormada por uma srie de t"ni"as onde
as prin"ipais so- LI#X$( ALI#1$( LLI#1$ e LI#1$( em ordem "res"ente no sentido de &ora
#a+rang,n"ia de C.L.C.$ e "omple)idade de implementao.
Os analisadores L& so assim denominados pelo &ato de analisarem a sentena de
entrada da es%uerda para a direita #Le&t-to-rig9t$ e "onstru.rem uma deri!ao mais S direita
#&ig9tmost deri!ation$ na ordem in!ersa.
Ao+ o ponto de !ista l=gi"o( um analisador LI "onsiste de duas partes- 8m algoritmo de
an'lise sint'ti"a #padro para todas as t"ni"as da &am.lia e independente da gram'ti"a$ e uma
Ta+ela de 6arsing #"onstru.da de &orma espe"i&i"a para "ada t"ni"a e para "ada gram'ti"a$.
s prin"ipais ra1Des da grande import2n"ia desta &am.lia de analisadores na teoria de
parsing e "onse%Rentemente no desen!ol!imento de "ompiladores so-
1 3 nalisam prati"amente todas as "onstruDes sint'ti"as de linguagem de programao
%ue podem ser representadas de &orma no am+.gua por C.L.C..
2 3 Ao mais gerais %ue os outros analisadores as"endentes e %ue a maioria dos
des"endentes sem +a"O-tra"O.
3 3 6ossuem a propriedade de dete"o imediata de erros sint'ti"os.
5 3 O tempo de an'lise propor"ional ao taman9o da sentena a ser analisada.
0m "ontrapartida( podemos desta"ar "omo ponto negati!o dos analisadores LI( a
"omple)idade de "onstruo da ta+ela de parsing +em "omo o espao re%uerido para seu
arma1enamento #espe"ialmente as t"ni"as mais a+rangentes$.
Composio dos "nalisadores L&
8m analisador LI "ompDe-se se-
a$ "loritmo de "nlise -inttica padro para todas as t"ni"as da &am.lia.
+$ Tabela de "nlise -inttica #ou ta+ela de parsing$ espe".&i"a para "ada t"ni"a e
para "ada gram'ti"a.
d$ Pil.a de 'stados #ou pil9a sint'ti"a$ "onter' um 9ist=ri"o da an'lise e&etuada/
ini"iali1ada "om o estado ini"ial da an'lise sint'ti"a.
e$ 'ntrada "onter' a sentena a ser analisada( seguida por h #a mar"a de &inal de
sentena$.
&$ 5ma 3.L.C. "om as produDes numeradas de 1 a p.
'strutura 3eral de um "nalisador L&
a1 a2 .....................an c
'ntrada
-m
. "loritmo
. de Tabela
. "nlise de
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 5N
-1 -inttica Parsin
-K
Pil.a
"loritmo da "nlise -inttica L&
Consiste em determinar A
m
#o estado do topo da pil9a$ e a
i
#o pr=)imo s.m+olo da
entrada$ e( "om +ase nessas in&ormaDes( "onsultar a ta+ela de parsing para de"idir a pr=)ima
ao a ser e&etuada e e&etu'-la. 0sta ao poder' ser-
1 3 -.i,t -
2 3 &educe &
3 3 'rro
5 3 Ralt #ou "ccept$
-ini,icado e Procedimentos "ssociados as "1es
a$ Ralt- Fim de an'lise/
Procedimento 3 an'lise sint'ti"a de!e ser en"errada.
+$ 'rro- Indi"a a o"orr,n"ia de um erro sint'ti"o.
Procedimento 3 s rotinas de re"uperao( se e)istirem( de!ero ser
ati!adas para %ue a situao de erro se<a "ontornada e a an'lise possa
"ontinuar/ seno( a an'lise de!e ser en"errada.
"$ -.i,t - Aigni&i"a o re"on9e"imento sint'ti"o do s.m+olo da entrada.
Procedimento 3 O s.m+olo da entrada de!e ser retirado e o estado A(
indi"ado na ta+ela de 6arsing( de!er' ser empil9ado.
d$ &educe & Aigni&i"a %ue uma reduo pela produo nFmero I de!e ser e&etuada.
Procedimento 3 4e!ero ser retirados pa pil9a sint'ti"a tantos estados
%uantos &orem os s.m+olos do lado direito da produo I( e o s.m+olo do lado es%uerdo dessa
produo de!er' ser tratado "omo um s.m+olo de entrada na pr=)ima ao do analisador.
O+ser!aDes- O pro"esso de determinar e e&etuar as aDes sint'ti"as de!er' ser repetido at
%ue a ao Ralt se<a en"ontrada ou( para as implementaDes sem re"uperao de erros( um
erro se<a dete"tado.
Tabela de Parsin L&
ta+ela de parsing dos analisadores LI di!idida em duas partes-
a$ Ta+ela "ction "ontm as transiDes #-.i,t( &educe( 'rro e Ralt$ "om os s.m+olos
terminais.
+$ Ta+ela 3oto "ontm as transiDes #3oto e 'rro$ "om os s.m+olos no-terminais #8m
3oto um -.i,t espe"ial so+re um s.m+olo no-terminal$.
Implementao> *ormalmente utili1a-se 7atri/ ou Lista. *o "aso de matri1 3 "omo
normalmente as ta+elas de parsing so +astante esparsas 3 utili1am-se t"ni"as de
"ompa"tao de ta+elas.
Con,iurao de um "nalisador L&
E um par( "u<o 1l elemento o "onteFdo da pil9a sint'ti"a e o segundo a entrada a ser
analisada. 6or e)emplo( a "on&igurao-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 7X
A-K
)1
-1
)2
-2 ... -
m
B a
i
a
ib1
a
ib2
... a
n
cC
tem o seguinte signi&i"ado- os primeiros i-1 s.m+olos da entrada <' &oram analisados e a
pr=)ima ao a ser e&etuada ser' determinada pelo estado A
m
#topo da pil9a$ e por a
i
#pr=)imo
s.m+olo da entrada$.
O+ser!aDes- M1( M2( ...( MB s= e)istem logi"amente.
3ramticas L&> 8ma C.L.C. LI se "ada sentena %ue ela gera pode ser analisada
deterministi"amente da es%uerda para a direita por um analisador LI.
6erten"em a "lasse das gram'ti"as LI( todas as C.L.C. para as %uais poss.!el "onstruir
a ta+ela de parsing LI sem %ue 9a<am "on&litos #isto ( em "ada posio da ta+ela 9a!er' no
m')imo uma ao registrada$.
3ramticas L&ANC> Idem a de&inio anterior( "onsiderando-se Q s.m+olos de LooYa.ead.
*a prati"a usa-se Q U 1.
O+ser!aDes- C.L.C. analis'!eis por analisadores ALI#1$( LLI#1$ e LI#1$ so tam+m
denominadas( respe"ti!amente( gram'ti"as ALI#1$( LLI#1$ e LI#1$.
0)emplo- 6ara a C.L.C.-
X- 0c 0 h
1( 2- 0 0 \ T Z T
3( 5- T T [ F Z F
7( :- F #0$ Z id
ta+ela ALI#1$ "orrespondente seria-
Id # $ \ [ h 0 T F
0 S5 S4 1 2 3
1 S6 HALT
2 R2 R2 S R2
3 R4 R4 R4 R4
4 S5 S4 ! 2 3
5 R6 R6 R6 R6
6 S5 S4 " 3
S5 S4 10
! S11 S6
" R1 R1 S R1
10 R3 R3 R3 R3
11 R5 R5 R5 R5
CTIO* COTO
0)er"."io- 0&etuar a an'lise sint'ti"a das sentenas-
) U id [ id
P U #id \$ id [ id
Construo da Tabela de Parsin -L&A1C
(e,inic1es 3erais>
a$ Item L&AKC> 8m item LI#X$ #ou simplesmente item$ em uma 3ramtica C uma
produo de C "om uma mar"a #&isi"amente representada por um ponto$ em uma posio de
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 71
seu lado direito. 4enota-se um item por um par de inteiros ei( <f( onde i o no da produo e <
a posio em %ue se en"ontra o ponto.
0)emplo-
6bservao- 8m item ei( <f tem o seguinte signi&i"ado- s in&ormaDes dispon.!eis indi"am
%ue a produo i est' sendo utili1ada e %ue os primeiros < s.m+olos de seu lado direito <'
&oram analisados.
bC Item Completo- Item em %ue a Gmar"aH est' ap=s o Fltimo s.m+olo do lado direito da
produo.
cC 'stado> d uma coleo de in,orma1es sobre o proresso AsituaoC da anlise sint'ti"a
em um determinado momento. E "omposto por um "on<unto de itens.
O+ser!aDes- "oleo de estados "riada para uma C.L.C. #denominada Coleo LI#X$$ a
+ase para a "onstruo da ta+ela de parsing ALI#1$.
dC DZcleo de um 'stado- Con<unto de itens %ue deu origem ao estado.
"loritmo para Construo da Coleo LrAKC>
aC Iniciali/ao
1 3 *umere as produDes de C de 1 a p/
2 3 umente C "om a produo Ac Ah/ Ac passar' a ser o s.m+olo ini"ial de C e h
ser' usado "omo mar"a de &inal de sentena$
3 3 4e&ina o nF"leo do estado ini"ial #estado X$( "omo sendo o item eX( Xf( onde a
produo no X a produo in"lu.da.
+$ Construo dos 'stados
1 3 Faa o !ec.amento do nF"leo/
2 3 Faa o !ec.amento dos itens "riados em a/
3 3 4etermine o nF"leo dos 'stados -ucessores/
5 3 Iepita a( + e " para todos os nF"leos "riados( at %ue nen9um 'stado -ucessor
no!o se<a "riado e %ue todos os estados este<am "ompletos #isto ( todos os itens
&e"9ados$.
!ec.amento Ae um determinado item "ontm a Gmar"aH na &rente de um no-terminal (
o &e"9amento deste item ser' o pr=prio item \ o "on<unto de itens ei( of e)istentes( onde i o
nFmero de uma produo "u<o lado es%uerdo o no-terminal . Ae a Gmar"aH pre"ede um
s.m+olo terminal ou se o item "ompleto( o &e"9amento ser' o pr=prio item.
'stados -ucessores Ao os estados al"anados atra!s da mo!imentao da Gmar"aH so+re
um determinado s.m+olo. O nF"leo do estado su"essor ser' &ormado pelo "on<unto de itens
resultantes da mo!imentao a"ima re&erida. O+ser!ao- *o e)iste estado su"essor relati!o
ao item eX( 1f # Ac A( h$( uma !e1 %ue este item indi"a o &inal da an'lise.
"loritmo para Construo da Tabela de Parsin -L&A1C
a$ Crie uma lin9a para "ada estado e uma "oluna para "ada s.m+olo VTn Tt VhWW.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 72
+$ Colo%ue AJIFT #ou COTO$ nos estados %ue deram origem a estados su"essores #nas
"olunas re&erentes aos s.m+olos so+re os %uais 9ou!e a mo!imentao da mar"a$.
"$ 6ara "ada estado i "om itens "ompletos( &aa-
6ara "ada item "ompleto( &aa-
Colo%ue I048C0 * na interse"o da lin9a "orrespondente ao estado i "om as
"olunas "orrespondentes a s.m+olos &olloY#$/ onde * o nFmero da produo
en!ol!ida no item "ompleto em %uesto e o s.m+olo do lado es%uerdo desta
produo.
d$ Colo%ue JLT na interse"o da lin9a re&erente ao estado %ue "onten9a o item eX( 1f(
na "oluna do s.m+olo h.
e$ s posiDes %ue &i"arem !a1ias ap=s a e)e"uo dos passos +( " e d( representaro as
situaDes de erro.
Condio -L& A1C - "ondio para %ue a ta+ela "onstru.da pelo algoritmo a"ima se<a
ALI#1$( %ue no e)istam estados Inade9uados #estados "om "on&litos -.i,t-&educe e>ou
&educe-&educe$/ isto e%ui!ale a di1er %ue "ada posio da ta+ela de!er' "onter no m')imo
uma ao.
Propriedade das Tabelas L&
6ara %ue um analisador LI a"eite %ual%uer sentena "orreta e dete"te pelo menos um
erro em "ada sentena in"orreta( a ta+ela de parsing de!e possuir as seguintes propriedades-
a$ Condio (e 'rro- *un"a ser' en"ontrada para sentenas sintati"amente "orretas.
+$ Cada -.i,t de!er' espe"i&i"ar um Fni"o estado( o %ual depender' do s.m+olo da
entrada.
"$ Cada &educe s= reali1ado %uando os estados do topo da pil9a #os s.m+olos %ue
eles representam$ &orem e)atamente os s.m+olos do lado direito de alguma produo
de C( isto ( um handle da gram'ti"a.
d$ Ralt s= ser' en"ontrado %uando a an'lise esti!er "ompleta.
0)er"."ios- Construa a ta+ela de Parsin -L&#1$ para as seguintes C.L.C.-
1 3 0 0 \ T Z T
T T [ F Z F
F #0$ Z id
2 3 C i& 0 t9en C else C
Z i& 0 t9en C
Z "om
0 e)p
3 3 K Kc
Kc or Kc Z
Cc
c and Cc Z
C e)p Z #K$ Z not C
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 73
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8FAC-CTC-I*0 - Linguagens Formais e Compiladores - p'g. 75