Banco de dados
(cod. 5387) Departamento de Inform´tica a Universidade da Beira Interior Ano lectivo 2012/2013
1
Introdu¸˜o ca
Este trabalho ´ parte constituinte da avalia¸ao pr´tica da Unidade Curricular e c˜ a de c´digo 5387 designada por Linguagens Formais e Compila¸ao, na sua o c˜ edi¸˜o de 2012-2013. ca O trabalho visa o exerc´ dos conceitos e das t´cnicas b´sicas de deseıcio e a nho de processadores de linguagens e de compiladores expostos nas aulas da presente UC. Com tal este trabalho ´ estruturado em duas partes. A prie meira parte do trabalho visa ilustrar a utiliza¸ao de t´cnicas (e ferramentas c˜ e computacionais associadas) de processamento de linguagens. Em particular as t´cnicas de analises l´xica, sint´ctica e semˆntica. A segunda parte visa a e e a a aplica¸˜o de t´cnicas e algoritmos de processamento e gera¸˜o de c´digo de ca e ca o baixo n´ (MIPS, no contexto deste trabalho). ıvel
2
Descri¸˜o geral do trabalho ca
O objectivo geral ´ a constru¸˜o de um compilador simples para uma pequena e ca linguagem de programa¸˜o. ca 1
2.1
Primeira Parte
Nesta parte pretende-se que seja definida a linguagem de programa¸˜o e ca constru´ um pequeno front-end para esta linguagem. Assim pretende-se: ıdo • O l´xico e a gram´tica (formato BNF) da linguagem definida. e a • Um analisador l´xico para esta linguagem. e • Um analisador sint´tico. a • A vers˜o preliminar de um analisador semˆntico que construa uma a a arvore de sintaxe abstracta e uma tabela de s´ ´ ımbolo que permitam a execu¸˜o do passo seguinte. ca • Um tradutor da arvore de sintaxe abstracta para um (conjunto de) ´ ficheiro(s) html que espelha a estrutura do programa fonte.
2.2
Segunda Parte
O objectivo, m´ ınimo, deste trabalho ´ construir um gerador de c´digo MIPS e o para um subconjunto simples da linguagem definida no ponto anterior. V´rias a extens˜es, opcionais, s˜o