You are on page 1of 9
Le SME CT opdewesbog ap suafenbury ap oesejuawajduy| yw one ap suaSenduy ousoa sepeo4 gs stewp se ‘jaya oxteg ap suofenfun supeispisuos ops sogémis8 ,z 9 «1 9p suafend sy owounsoquo op susBenu ) 2 odeoyde ¥ seperuouo suadenBuny Gp) “oupnen of swpeiusuo suafeniuy (¢) (Aiguiessy) seonoquus suadenSuy (2) “eummbeus 2p suodenda sagSesaf onto ws sepeayyss 195 wopod opSeuresSoad ap suaBendul se “owuaureat2ojou0s orseure01g op suoSenZury sep ovsnjoagy T°T Ino uo ossaxdxe ountioSe ousour op ossauda oud un op ogtngos ep yom} opbertosaidar own (opens owes) ueade anb ~ sevoperaudsenu no sesopopiduo? ~ sopeztrerccdse semis ap spaeme epozar 9 optiaauen stg “vumbpu ap woSenduny ‘sed soprznpea J9¢ wieK9p JOA Ve ap suafenBut] wo SoWLOKD seuesFONd so ‘sHeUoroRsado wowor 25. enb weg “(oxseie8 .y op suofeniuy 9 i eoUUIpROOIG. sueenEult) opisenb ‘uo opSeayide ep o1utuiop ov no sresmyeu susSenduy sy sewxoud sous sepesopysHOD “Baja OME ‘2p cwoo sepeayssseys sojonbe ogs ofoy sepeztin stow opSeureiZoud ap suadenduay sy ‘opSeoqde 2p vaup epep wun euotgoad win 99919599 ued epesn [pau ove ap uienduy wp swuaiay weg 9 waBenuy ap odn aseq “sun 2 sosse 2p seyougnbas ap asad axsisuoo fend ¥ “faase oxteg endoud ens stuawos wapuawe 2 wenece “zon ens sod “sr ‘one 9p weBenBuy) mum oxso> eperopisuos 9 opSeuresBoud ap wade 9p ode yey, wujgoud ‘op oxbnssap eu sopesn soqsouia[9 £0 noja eYZojounusay v watay2 onb sopSAnsWOO sM|oUH ‘uaenfay| #98 9 015] “opjajsod s9s w muojgoud oF wauKord 22ANsS osn wo oBSeesford 2p wfenduy e 25 99} stu as-ou0) owas wn 2p owtoUENoAUDSeP O) ‘sumnbpes eyed owwouressacoud ‘ered epuenbas ogsicaid e 2 (epeaninaso ogu ezaimee ap “svz98 srmma oueUy owsousestod copSeSt 2 so7ey axsp opSeweoud ap ursfensiumy “opSnj0s a o|-ypnfe ezed opnjoase opeinduos © 2 swojgoud opeurmurap wm saxoss1 wfasap anb onpyayput 0 anu opSeoxan0> 2 of owO9 anses opéoumdoud op wo8onum ew “soxOperndwOD ap opSeuesTosd PN “ewoIpr no end) wooden e 9 seossed anuo opSrorminGD ap zeayD stEUL OFT C) ouSemmerZo1g ap suaSenSury ap ovsnpeay, 1 2 Implement de Linguagens de Programacio~ Ana. A. rie Simo S.toscant (0s primeiros computadores eram programados em linguagem de méquina, em notagio bina. Cada instugdo de méquina ¢, em geral, formada por um cédigo de operago © um ou dois enderecos de registradores ou de meméria. As linguagens de méquina permitem a repistradores © operagées de sada mais € que comunicasio dita com o computador em termos de ‘quia bastante primitivas. Como um programa em linguagem de méqui ‘uma seqlincia de zeros © uns, a programagio de um algortmo complexo usando e37= po de linguagem & complexa, cansativae fortemente sueita a eros. ‘A.2* geragio compreende as linguagens simbélicas ov de montagem (Assembly), projetadas para minimizar a dificuldades da programagio em notagio binévia, Cédigos de coperagio © envderegas binérios foram substituidos por mneménicos. Nas linguagens de nontagem, a maioria das instrugBes slo representagdes simblicas de instragSes de maquina, (© processamento de um programa em linguagem simb6lica requertradugio para linguagem de maquina antes de ee ser executado. {As linguagens de 3° yeracio surgiram na décadn de 60. Algumas delas sie orientadss & solugio de problemas cientificos, tais como FORTRAN, PASCAL © ALGOL; outras, tal como coHOL, so usadas para aplicagSes comerciais. Lingoagens como PL e ADA contém - €comerci). facilidades para ambos os tipas de computagdes (ce [As Tinguagens de 3* geragio podem também ser classificadas em linguagens rocedlimentais (também chamadas “procedurais" ou imperativas) €linguagens declarativas, Nas linguagens procedimentais, um programa especifiea um procedimento, isto é, uma soquéncia de passos a serem seguidos para solucionar um problema. O programa descreve, de fotma direta, “como” ser resolvido o problema em quesifo. As instrugGes oferecidas por esas Hinguagens pertencem, em geral, atts classes: instrugdes de entrada/safa,instrugées de sulos aritméticas ou Iégicas, ¢ instrugBes de controle do fluxo de execugio (desvios ‘condicionais, incondicionais © processamento iterativo). Como exemplos de Tinguagens procedimenta {em-se BASIC, ALGOL, PLA, PASCAL, ADA, Ce [As linguagens declaativas dividem-se, basicamente, em duas classes: fieionais, as quis se baseiam na toria das fungGes recursivas €Idgicas, cuja base 6a Kégica matemética ‘A programagio funcional envolve, essencialmente, a definigdo e a chamada de fungdes. LSP é fo exemplo mais difundide de linguagem funcional, Nas linguagens I6gicas, um programa Aeclara fatos (dados e relagles entre eles) e cldusulas légicas (regras de dedugSo), que permitirio deduzir novas verdades a partir dos fatos conhecidos. © programador “define regras de dedugio sem detalhar os passos a serem seguidos para chegar a uma conclustio, O 1 moygto de Lnguagens oe Fropramaguo 2 ambiente de execusio prové um “sistema deduloc” que aceite questfes do usuério & usa as regras de dedugao para responder a essas quests. PROLOG consti ‘o primeito exemplo de Iinguagem de programagto légica. Emboraseja ma linguagem declarative, cronologicamente PROLOG 6 considerada de S*geragio, ‘As linguagens de 3" gerag foram projetadas para profissionas de processamento de dados e n3o para usuarios finsis. A depuragio de programas escitos nessas linguagens consome tempo, ¢ a mauificasBo de sistemas complex é reatvamente dificil. As linguagens de gerag foram projetadas em resposaa esses problemas. Os principaisobjetives das inguagens de 4* geraglo so: (1) failitar a programagio de computadores de maneira tal que usuérios finais possam resolver seus problemas; (2) apressar 0 processo de desenvolvimento de aplicagées; (3) failitar ¢ reduzir 0 custo de rmanuiengio de aplicagdes: (4) minimizar problemas de depura ‘erros a partir de requisitos de expressbes de alto nivel fo, ¢ (5) gerar obdigo sem Os programas escritos em linguagens de 4 gerago necesstam de menor mimero de linhas de cédigo do que os programas correspondenies codifcados em linguagens de programacdo convencionais. Adicionalmente ao emprego de comands sequlencais, tl como ‘nas linguagens de 3* gerago, as de 4 gézagio empregam diversos outros mecanismos, como por exemplo, preenchimento de formutétios, interagio via video (menus), ¢ auxilio para a ‘construgdo de grficas. Muitas linguagens de 4* geragho sto depondentes de um benco de dados ¢ de um dicionério associad. Em alguns casos, 0 dicionésio de dads evoluiv para cconterformatos do tease de relatrios,estruturas de disloges, mscanismos de veificasi, sulorizagdes para ler e modificar dados, relagdes Logicas entre valores de dados, etc. As finguagens de 4 geragdo variam bastante no nimero de facilidades ofeocidas a0 usuétio, Algumas slo, meramente, geradores de relatérios ou pacotes grifico; outras sto capazes de Berar apicapées completas. Em geral, essa linguagens sfo projtadas para atender a classes cespecificas de aplicagées. Usualmente, as linguagens de 4* gerago permitem a combinagSo de ammbos, comands procedimentais € comandos nio-procedimentas, num mesmo segmento de cédigo. Bssa caracteristca & desejavel porque operagdes nio-procedimentais aceleram e simplificam @ uso a Linguagem, enquanto 0 eédigo procedimental estende o expago de apicagBes, dando maior Aexibilidade de manipulagio légica. Exemplos de linguagens de 4 geragSo slo: LOTUS 12-3, EXCEL, SQL, SUPERCALC, VISICALC, DATATRIEVE, FRAMEWORK. ‘As linguagens de 5* gerago so usadas principalmente na érea de Inteligéncia ‘Anifical, Tas linguagens facilitam a representac2o do conhecimento que é esseneial para a simulaglo de comportamentos inteligents. 1.2. Tradutores de Linguagens de Programaciio Tradutor, no contexto de Tinguagens de programagio, & um sistema que seeita como entrada lum programa escrito em uma linguagem de programaglo (Iinguagem fonte) © produz como resultado um programa equivalente em outrafinguagem (linguagem objet). Os tradutores de linguagens de programagio podem ser clasificados em: ‘¢ Monadores (assemblers) ~ so aqueles tradutores que mapeiam instrugbes em linguagem simbélica (assembly) para instrugdes de Hinguagem de miquina, geralmente, numa relagio de tuma-para-uma, isto 6, uma instrugdo de linguagem simbélica para uma instrugio de smdguina # Macro-assemblers - sio tradutores que mapeiam instugdes em linguagem simbslica para Tinguagem de méquina, geralmente, numa relagS0 de wma~pars-virias. Muitas linguagens ‘simbélicas possuem facilidades de definigdo de "macros" que so, na realidad, Facilidades de ‘expansio de texto em linguagem mnem@nica. Um comando macro & traduzide para uma sequéncia de comandos simbélicos antes de ser procedida a radugao efetiva para linguagem de maquina + Compiladoves - sio radutores que mapeam programas eseritos em linguagem de alto nfvel para programas equivalentes em linguagem simbalica ou linguagem de mquina, A execugto de um programa escrito em linguagem de alto nivel é, basicamente, um processo de dois passos, conforme é mostrado na figura 1.1. © imtervalo de tempo no qual ocone a conversio de um programa fonte pera umn programa objeto & chamado de tempo de compitagdo. 0 programa objeto é executado no interval de tempo chamado tempo de execuso, Observa-se que o programa fonte os dados io processados em momentos distinos, respectivamente, tempo de compilagio ¢ tempo de execugio, programa progama ene >| COMPILADOR = coeca, tacos entrada pea resula ‘OBIETO Figura 1.1, Execugdo de um programa fonte + Pré-conpiladores, Pré-processadores ou Filtros- so aqueles processadores que mapeiam InstragGes escritas numa linguagem de alto nivel estendida para instagGes da Linguagem de programagio original, ou seja, so tradutores que efetuam converses entre duas linguagens de alto nivel FORTRAN IW nivel 6 >| ronment uno |__seunon Figura 1.2! Précompilador ou filtro (Os pré-compiladores surgiram para facilitar a extensio de linguagens de alto nivel existntes. As exlensbes so usadas, na maioria das veres, para atenderaplicagdesespecificas, ‘ajo objetivo € aprimorar © projeto © 9 escrita de algoritmos. Por exemplo, existem pre ‘rocessadores FORTRAN, BASIC e COBOL estruturados que mapsiam programas em versbes ‘estruturadas dessaslinguagens para programas em FORTRAN, BASIC e COBOL. padres. ‘+ Interpretadores «sho processadores que aceitam como entrada oeéigo intermediéro de um ‘programa anteriormente traduzido e produzem 0 "efeito de execusio" do algoritmo eriginal ‘sem, porém, mapes-lo para linguagem de méquina. Os interpetadores processam uma forma intermedidtia do programa fonte e dados 10 mesmo tempo. Isto é, a interpretagdo da forma interna do fonte corre em tempo de execugto, nfo sendo gerado um programa objeto. A figura que segue ilustra © processo de interpreta. programa programa 1 >| fonte ra Imermetiio | omeaace = (maquina virtua | resutados Figura 1.3. Interpretagio de e6digo, Alguns interpretadores nfo utilizam um eédigo intermedirio, abalhando diretamente sobre o programa fone, anaisando um comando fonte cada vex que esse deve ser executado “Tal enfoque consome muito tempo e & raramente, wilizado. Uma estratégia mais eficiente ‘envolve a aplicaglo de téenicas de compilago para traduziro programa fonte para una forma intermediéria, que é, entdo,interpretada. Neste texto, o termo interpretadorreferir-se-8 no sb ‘20 programa que simula a execugdo do cédigo intermediéria, mas a todo © processo interpretativo, desde a tradugho do cédigo fonte comando-a-comando até a sua execugo, Os interpretadores so, geralmente, menores que os compiladores ¢ facilitam a Implementago de construgSes complexas de linguagens de programagio. A principal ddesvantagern dos interpretadores & que o tempo de execugto de um programa intexpretado & maior que 0 tempo necessério para executar um programa objeto (compilado) equivalent, Isso porque a “execugio" do cédigo intermedidro tem embutido 0 custo do processamento de lume tradugio virtual para eéigo de maquina cada vex que uma instrugo em cédigo intermediio deve ser operada. Pode-se pensar no programa em eéidigo intermediio como 0 c6digo de miquina de um computador virtual (hipottico). (© tradutor BASIC, residente em muitos microcomputadores, € um sistema interpretative que, praticamente, no utiliza cédigo intermediério, pois “compila” um Ccomando BASIC a cada vez, utilizando o enfoque traduz-executa, Os imerpretadores so usualmente mais amigéveis (user-fiendly) do que os compiladores, pois estio bem mais préximos do cédigo fonte que programas. jé completamente traduaidos. As mensagens de erra © as faciidades de teste © depurapio em relago a interpretagao so mais clarase objetivas e, principalmente,certeiras 20 referiem-se 0 céigofonte. ‘Uma grande vantager dos sistemas interpreativos est na implementaglo de novas linguagens para. diferentes equipamentos de computagio. A utilizagio do. sistema interpretativo permite uma implementagio relativamente fei, uma vez que € produzido um cédigo intermedirio padtio, independente de miquina, para 0 qual é programado um imerpretador para cada maquina diferente. Esse método foi ullizao para a linguagem Pascal, ‘que permit a répida aceitago dessa linguagem em todo o mundo. “Tradutores que gram e6digo para mquinas hospedciras, isto 6, méguinas nas cusis cles proprios execu, so denominados ato-rsidentes (self-esiden translators. Aqules aque geram obdigo objeto pare oueas méquinas, que nfo as hospedeiras, so denominados compiladoescravados (cross-translator). Independentemente da linguagem a ser waduzida ou do programa objeto a ser gerado, ome TERT coor a Figura | [Na pritica (ponto de vista de implementacdo), seguidamente, a dstingSo entre as fases no & muito clara, Isto as fungbes basicas para a tradu30 podem nfo estar individuatizadas em ‘médulosexpecificos e podem se apresentardistribuidas em médulos i 1.3.1 Anaitise Léxiea) © objivo principal dei fe (como no caso dos delimitadores e das palavras vsti premarin ele ex cd in, ema" um identificador ¢ sua entrada numa tabela de identificadores). Além da identificagio de ohn (COAGTERES, erm gers, (GTEC UA TABERUSSTRBRTERY Seco 2.4) © cenvia mensagens de erro caso idenifique unidades Iéxicas no acitas pela linguagem em questo. programa fonte 1 ‘atsedor lnc “analisadorsirttica i analeador seminica ‘aerdnent tabetas: ~~ aorros: “ ‘Dorado de cbaide inormediric t lmizador de codigo mMo-rez> mam4az—o ‘BraTOT 36 AGG objeto veal ‘objeto Figura 14, Estrutura de um compiladar A salda do analisador téxico € uma cada de rokens que & passada para a prOxima fase, a ‘Anélise Sinttica #n yersl_ » Analisador Léxico & implementado como uma subrotina que funciona sob o comando do Analisador Sintético. EXEMPLO 1.].Salda do analisador lésco. ‘Sejao sepuinte texto fonte em Pascal while 1 < 100 dole J +15 GREAARARAAIED instrugio acima, terse. a sepvini SOMONE while, ] (id, 71 [es] fetet3) To, 1 fd, 7) = 1 fidt2) 1 ATE G7 rie quot, palavras reservadas, operadores e delimitadores sio representaos pelos prépri simbolos, e idemtificadores de vatiévels ¢ constantes numérica si representados por um par {classe do simbolo, fndie de tabel. 1.3.2. Analises Sintética e Semiintica 1 fuse de andlisesintica tem por fungéo verificar se estraturagramatical do programa eis rogras gramatiais da linguagem). anilise seméntiog ‘om por Tune verificar se as estraturas do programa i fazer sentido correta (st ge essa estrutura foi formada usando durante & execugio. ' © AnalisadoeSinttco identifi seqbtneas de sibel que constivem esruturs sindticas (po exo pes Soman) VEU YEU} "rn ee ed ee Cepia GHAGARTERIAIG ctanncs érore de dena, sue exibe a esta sintica do texto fon resltante da aplcalo dis rgras gramatcais da Tinguagem, Yn eo] a Severe, de dervaio no & produits exictamene, mas sun constugSo est impita nas chamagos da rotinas recunivas que exeeuam a onde sinttia: Em muitos compiladores, a representago interna do programa resulkante da anise Sinica of 6a dvore de devo completa do exo fn, mas una vee compacta (Grote de sine) «eG eOORIMETSTSEIREROSODENIOR Ese esa jeiva facta a ear do tip qu ise seuinte ale. CGutra fumglo dos reconhecedores sintiticos <9 deleegio de eros de sintaxe HERRAERAB)tarac Bj tenham sido encontrados, 0 Analisador Sinttice deve tentarrecupert-los prosseguindo a sivamente & posigao € 6 LBOUBTERG|OSORIED Mesmo que eros andlise do texto restante. ‘Matas vezes, 0 Analisador Sintético opera conjuntamente com 0 Analissdor (Seinintied. caja principal tividade &(elenminar se a6 estrotras sinticas analisadas faren) sador declarado como varidvel € wsado como tal; se existe GEHATG) ou seja GEAR ‘compatibilidade entre operandos ¢ operadores em expressbes; ele. Por exemplo, em Pascal, 0 ‘comando while tem a seguintesintaxe ‘while do Isto & RABE ovo os poten gaan C@iMAB overs 4 Jaqueles que No exemplo que segue, as produgdes so apresentadas na Forma ‘Normal de Backus (Backus Naut Form ou BNF), EXEMPLO 1.2 Produgdes BNF. Este exemplo mastra produgBes que geram comandos de alribuigio e comands iterativos. Os terminais sparecem em negrito e os sfmbolos nio-terminais aparecem delimitados por “<" © ">". Os comands while ¢ de aribuigdo podem ser definides (parciaimente) pelas seguintes produgées: > | catib> | + while do > evaridvels t= > < > + | > eimero> | 1] 9 > 100 EXEMPLO 1.3 Arvore de derivagao. CConsiderando 0 comanclo while do exemplo 1.1, ¢ Anaisador Sintético produzitia a érvore de white do “ — > a Figura 15 Arvore de deivagio 1.3.3 Geragiio de Cédigo Intermediario se oa pec de go ten pl Sen ig ie fa conlensad sane dierenga ene o obdigo intermedisio € o efitigo objeto final € que © 1.85 Geragiio de Cédigo Objeto Gare ib espcion deals como qual regisedores serio uses Gui) | sta fse tem come objetivo array tc. i EXEMPLO 14 Cétigo nermediri. “ (© rxdrores que possem mais uma fase para realizar a otmizasio do cdg Pa comando while apreenado aneronmente, 0 geilor de céigo itemedirio, clic so aii do blo dependents de miguina) recebendo a drvore de derivago mostra na figura 1.5, pceria produzira seguinteseqiéncia de instrugdes: EXEMPLO 1.6 Cédigo de mdquin. Lo sth < 100 goto L CTA estado oo exemple si: CN 00 12 igo hielo ral sss, eign ete tasado om fntagem sinbdles de on Le TEM dr | | meeomputadr PC 886, 1 := TEMP { LO MOV AX, seo CMP AX, 100 e a IGE 12 MOV AX,J MOV BX, ADD BX 1.34 Otimizagio de Céalgo L a 1.3.6 Geréneia de Tabelas BOOTS Coie utr mech esti eget eae Considerando 0 cédigo intermedidsio do exemplo anterior, 0 seguinte cédigo otimizado “Algumas das tabela usadas so fxas para cada ingugem, por exempo, a tbeta de eee lade] poco LO Le sas (SAREE ERROR ATTAEOINURIGHNBOID. Gs vexes chamada de lta de ones ou lita de ence: TD | Propane eo ue ies non ini ta 0s datos as colts © ameter 0 el de inion dpe ‘A Tabela de Simbol porém deve ser io compacta quanta possivel. 1.3.7 QRERGEROMIEEEOD ste mul tem or objeto "wat oer" EE SEER la: +: RSE ART GRESESD en sodas 0 ples ean ans means de apn de ee tinier rosa aati pr a eh eo, ms _secotro etme alin 1.4 Geradores de Compiladores Atwalmente, a implementaglo de Linguagens do programagéo ¢ apoisda por sistemas geradores de compiladotes (compiler-compilers, compiler generators, translator-uriting_ systems). Esses sistemas classificam.se em trés grupos: 4) getadores de analisadores léxicos - geram automaticamente reconhecedores para os simbolos [éxicos (palavras-chave, identficadores, operadores, etc.) a patir de especificagSes de graméticas ou expresses regulares, by eeradores de analisadoressintticos - produzem reconhecedores sintéticos a partir ¢ gramaicas livres do contexto, Inicialmente, a implementagio da se sinttic consumia grande esforgo na construgio de compiladores, Hoje, essa. fase consderada uma das mais fice de implementa ©) geradores de geradores de e6digo - recebem como entrada regras que definem, lwadugo de cada operacdo da linguagem intermediivia para a linguagem de méquin: [As repras devem incluir detalhes suficientes para possibilitar @ manipulagdo diferentes métodos de acesso a dados (por exemplo, uma varivel pode estar ex registradores, em meméria ox na pilha da méquina). Em geral, instrugdc intermedistias so. mapeadss para esqueletos que representam seqléncias instugies de maquina,

You might also like