1 Tradução Dirigida à Sintaxe Prof. Ricardo Santos.

Slides:



Advertisements
Apresentações semelhantes
III – Análise sintáctica
Advertisements

Percurso não recursivo e impressão em árvores binárias Drozdek.
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
GRAFOS. Motivação Muitas aplicações em computação necessitam considerar conjunto de conexões entre pares de objetos: –Existe um caminho para ir de um.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
PGF5001 – Mecânica Quântica 1 Prof. Emerson Passos.
FORTRAN 90 Denise Yumi Takamura.
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
VI: EQUILÍBRIO RADIATIVO
Sistemas Operacionais
Prof. Dr. Helder Anibal Hermini
Prof. Dr. Helder Anibal Hermini
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Prototipação de um Interpretador para IMP com ML Juliana Vizzotto Júlio Machado Fevereiro 2002.
Teste Estrutural de Software
Criptografia Quântica : Um Estudo
Teste Funcional de Software
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Algoritmos Genéticos - Capítulo 10 Desvantagens da Representação Binária Prof. Ricardo Linden.
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Geração de Código Otimizações independentes de máquina.
Geração de Código Cap. 8. Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para.
Geração de Código Algoritmo de Escalonamento de instruções – List Scheduling.
Banco de Dados I Profa. Jiani Cardoso 2/2005
O Fluxo de Testes © Alexandre Vasconcelos
PotenCial ElÉTRICO Universidade Federal do Paraná
"Tudo o que acontece, acontece em algum lugar." Gilberto Câmara - INPE Gilberto Câmara - INPE.
Capitulo 3 Técnicas de Diagnóstico CT-282 Tutores Inteligentes Diego Ajukas.
Adriana da Silva Jacinto CT-282 Prof. Dr.Parente Técnicas de diagnóstico 1º semestre 2005.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira
CES-11 LAB 03 Bitmap Quadtree
Técnicas de Diagnóstico. Objetivo Caracterizar técnicas de diagnóstico para o modelo do estudante Caracterizar técnicas de diagnóstico para o modelo do.
1.3 – Interpretadores – Compiladores versus Interpretadores
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Linguagens para a Web Semântica.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
Capítulo V Análise Sintática
5.5.4 – Métodos para a construção da tabela de análise LR
Função Gráficos. Domínio e imagem no gráfico.
BlastPhen Aluno: Ricardo Nishikido Pereira
Já definimos o coeficiente angular de uma curva y = f(x) no ponto onde x = x 0. Derivadas Chamamos esse limite, quando ele existia, de derivada de f em.
ALOCAÇÃO DINÂMICA DE MEMÓRIA
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
TE 043 CIRCUITOS DE RÁDIO-FREQÜÊNCIA
Organização de Sistemas de Computadores
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Gerador de Analisadores Léxicos
Prof. Giovanny Lucero Introdução Prof. Giovanny Lucero
Linguagens Formais e Tradutores Análise Sintática - 1
Linguagens Formais e Tradutores Linguagens Regulares (Revisão)
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
The Data Warehouse Toolkit
WOntoVLab: Uma Arquitetura para Laboratórios Virtuais Baseada em Workflows e Ontologias Aluno: Daniel Cintra Cugler Orientadora: Profª. Dra. Marilde T.
LINGUAGENS DE PROGRAMAÇÃO
Baseado no documento do Prof. Ronaldo Martins da Costa
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Robótica: Sistemas Sensorial e Motor
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
1 Seja o resultado de um experimento aleatório. Suponha que uma forma de onda é associada a cada resultado.A coleção de tais formas de ondas formam um.
Análise Sintática – Parte 1
1 Semântica de Ações Ações Básicas, Ações Funcionais e Notação de Dados.
1.
Tradução Dirigida por Sintaxe
Faculdade Pernambucana - FAPE Setembro/2007
Traduções Dirigidas por Sintaxe
Transcrição da apresentação:

1 Tradução Dirigida à Sintaxe Prof. Ricardo Santos

2 Tradução Dirigida à Sintaxe 1.Símbolos da gramática possuem atributos para manter informação das construções de LP que eles (os símbolos) representam 1.Os valores desses atributos são avaliados através de regras semânticas associadas às regras de produção 1.A avaliação dessas regras semânticas: – Pode gerar código intermediário – Pode inserir informação na TS – Pode realizar a checagem de tipos – Pode emitir mensagens de erro

3 Definições Dirigidas à Sintaxe e Esquemas de Tradução 1.Ao associar regras semânticas com produções pode-se adotar duas técnicas – Definições Dirigidas à Sintaxe (Syntax-Directed Definitions/SDDs) – Esquemas de Tradução A.SDDs: – Fornece especificações de alto nível para as traduções – Esconde detalhes de implementação tais como: ordem de avaliação das ações semânticas – Associamos regras de produção com um conjunto de ações semânticas B.Esquemas de Tradução: – Indicam a ordem de avaliação das ações semânticas associadas com uma regra de produção

4 Definições Dirigidas à Sintaxe 1.Uma SDD é uma generalização de uma gramática livre de contexto em que: – Cada símbolo da gramática está associado com atributo(s) – Esse(s) atributo(s) pode(m) ser: Sintetizados ou Herdados – Cada regra de produção possui um conjunto de regras semânticas 2.Regras semânticas definem dependências entre atributos. Tais dependências podem ser representadas por um grafo de dependências 1.O grafo de dependências determina a ordem de avaliação dessas regras semânticas 1.A avaliação de uma regra semântica define a avaliação de um atributo. No entanto, uma regra semântica também pode ter outros efeitos (Ex: imprimir um valor) 1.Uma árvore sintática que exibe os valores dos atributos em cada nó é chamada de árvore sintática anotada

5 Definição Dirigida à Sintaxe Em uma SDD, cada produção A α está associada com um conjunto de regras semânticas na forma: b=f(c 1,c 2,…,c n ) Onde f é uma função e b pode ser um dos seguintes: b é um atributo sintetizado de A e c 1,c 2,…,c n são atributos dos símbolos da gramática na produção A α. OU b é um atributo herdado de um dos símbolos da gramática em α, e c 1,c 2,…,c n são atributos dos símbolos da gramática na produção A α.

6 Gramática de Atributos Assim, uma regra semântica b=f(c 1,c 2,…,c n ) indica que o atributo b depende dos atributos c 1,c 2,…,c n. Uma gramática de atributos é uma definição dirigida à sintaxe em que as funções nas regras semânticas não podem ter outros efeitos além de avaliar os valores dos atributos

7 Definição Dirigida à Sintaxe -- Exemplo Produção Regras Semânticas L E returnprint(E.val) E E 1 + TE.val = E 1.val + T.val E TE.val = T.val T T 1 * FT.val = T 1.val * F.val T FT.val = F.val F ( E )F.val = E.val F digitF.val = digit.lexval 1.Símbolos E, T e F estão associados com o atributo sintetizado val. 2.O token digit tem um atributo sintetizado lexval

8 Árvore Sintática Anotada -- Exemplo Entrada: 5+3*4 L E.val=17 return E.val=5 + T.val=12 T.val=5 T.val=3 * F.val=4 F.val=5 F.val=3 digit.lexval=4 digit.lexval=5 digit.lexval=3

9 Grafo de Dependência Entrada: 5+3*4 L E.val=17 E.val=5 T.val=12 T.val=5 T.val=3 F.val=4 F.val=5 F.val=3 digit.lexval=4 digit.lexval=5 digit.lexval=3

10 Definição Dirigida à Sintaxe – Exemplo2 Produções Regras Semânticas E E 1 + TE.loc=newtemp(), E.code = E 1.code || T.code || add E 1.loc,T.loc,E.loc E TE.loc = T.loc, E.code=T.code T T 1 * FT.loc=newtemp(), T.code = T 1.code || F.code || mult T 1.loc,F.loc,T.loc T FT.loc = F.loc, T.code=F.code F ( E )F.loc = E.loc, F.code=E.code F idF.loc = id.name, F.code= 1.Símbolos E, T e F estão associados com os atributos sintetizados loc e code. 2.O token id tem um atributo sintetizado name. 3.Considere que o símbolo || é um operador de concatenação de strings.

11 Definição Dirigida à Sintaxe – Atributos Herdados Produção Regras Semânticas D T LL.in = T.type T intT.type = integer T realT.type = real L L 1 idL 1.in = L.in, addtype(id.entry,L.in) L idaddtype(id.entry,L.in) 1.O símbolo T está associado com o atributo sintetizado type. 1.O símbolo L está associado com o atributo herdado in.

12 Grafo de Dependência – Atributos Herdados Entrada: real p q D L.in=real T LT.type=real L 1.in=real addtype(q,real) real L id addtype(p,real)id.entry=q id id.entry=p parse treedependency graph

13 Árvores Sintáticas 1.Separando tradução de árvores sintáticas 2.Árvore sintática: é uma representação intermediária da entrada (do programa fonte) 3.Procedimentos: mknode, mkleaf 4.Utilização do atributo sintetizado nptr (pointer) PRODUÇÃOREGRA SEMÂNTICA E E 1 + TE.nptr = mknode(+,E 1.nptr,T.nptr) E E 1 - TE.nptr = mknode(-,E 1.nptr,T.nptr) E TE.nptr = T.nptr T (E) T.nptr = E.nptr T idT.nptr = mkleaf(id, id.lexval) T numT.nptr = mkleaf(num, num.val)

14 Definições S-Atribuídas 1.SDDs são usadas para especificar traduções dirigidas à sintaxe 1.Criar um tradutor para uma SDD arbitrária pode ser complexo 1.É desejável fazer a análise semântica durante a análise sintática (isto é, em um único passo realiza a análise sintática e avalia as regras semânticas). 1.Duas sub-classes de SDDs: – Definições S-atribuídas: apenas atributos sintetizados são usados em SDDs. – Definições L-atribuídas: além dos atributos sintetizados, pode-se também usar atributos herdados 2.Para implementar definições S-atribuídas e L-atribuídas pode-se avaliar regras semânticas em um único passo

15 Avaliação Bottom-Up de Definições S- Atribuídas Coloca-se valores dos atributos sintetizados dos símbolos da gramática em uma pilha paralela – Quando uma entrada da pilha da sintaxe possui o símbolo X (terminal ou não- terminal), a entrada correspondente na pilha paralela manterá o atributo sintetizado do símbolo X Avalia-se os valores dos atributos durante a redução. A XYZ A.a=f(X.x,Y.y,Z.z)onde todos os atributos são sintetizados pilha pilha paralela topo. X Y Z. X.x Y.y Z.z. A. A.a

16 Avaliação Bottom-Up de Definições S-Atribuídas (cont.) ProduçãoRegras Semânticas L E returnprint(val[top-1]) E E 1 + Tval[ntop] = val[top-2] + val[top] E T T T 1 * Fval[ntop] = val[top-2] * val[top] T F F ( E )val[ntop] = val[top-1] F digit 1.Em cada shift de digit, colocamos digit.lexval em val-stack. 2.Nos demais shifts, nada é inserido em val-stack pois outros terminais não possuem atributos (mas o ponteiro da pilha val-stack é incrementado). ntop = top – r + 1 r = no. de símbolos no lado direito da produção

17 Avaliação Bottom-Up -- Exemplo Em cada shift, inserimos digit.lexval em val-stack. stackval-stackinputactionsemantic rule 05+3*4rs6d.lexval(5) em val-stack 0d65+3*4rFdF.val=d.lexval 0F45+3*4rTFT.val=F.val 0T35+3*4rETE.val=T.val 0E25+3*4rs8insere slot vazio em val-stack 0E2+85-3*4rs6d.lexval(3) em val-stack 0E2+8d65-3*4rFdF.val=d.lexval 0E2+8F45-3*4rTFT.val=F.val 0E2+8T115-3*4rs9insere slot vazio em val-stack 0E2+8T11*95-3-4rs6d.lexval(4) em val-stack 0E2+8T11*9d65-3-4rFd F.val=d.lexval 0E2+8T11*9F rTT*FT.val=T 1.val*F.val 0E2+8T115-12rEE+TE.val=E 1.val*T.val 0E217rs7insere slot vazio em val-stack 0E2r717-$LErprint(17), retira slot vazio de val-stack 0L117$acc