Compiladores, Aula Nº 11 João M. P. Cardoso

Slides:



Advertisements
Apresentações semelhantes
Software Básico Silvio Fernandes
Advertisements

Tópicos em Compiladores
gerador de código intermediário
Compiladores Claudio Benossi
II – Análise léxica DEI Papel do analisador léxico.
I - Noções dum compilador
III – Análise sintáctica
I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/2000.
III – Análise sintáctica
III – Análise sintáctica
Compiladores I Cristiano Damiani Vasconcellos
Análise Léxica (Parte 2)
Software Básico Silvio Fernandes
INTRODUÇÃO À PROGRAMAÇÃO
Curso Sistemas de Informação Disciplina: Arquitetura de Software
YACC.
Análise Sintática Ascendente
Análise Léxica Supondo o trecho de programa abaixo:
Construção de Compiladores
Decodificador 2 para 4 (2 : 4)
Construção de Compiladores
Construção de Compiladores
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Prof. Bruno Moreno Aula 4 – 11/03/2011
Análise Semântica e Representação Intermédia
Análise léxica e sintática
Lex Linguagem (e compilador) para especificar analisadores léxicos.
Aula prática - análise contextual
Ferramentas para a Construção de Compiladores: Lex & Yacc
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 7 João M. P. Cardoso
Compiladores, Aula Nº 19 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Gramáticas Livres de Contexto
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Compiladores, Aula Nº 10 João M. P. Cardoso
Conjuntos (continuação)
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Análises léxica e sintática
Análise Léxica Primeira fase de um compilador
Mayerber Carvalho Neto
Análise Léxica e Sintática
Expressões Regulares e Gramáticas
Aulão de Linguagens Formais e Compiladores
Capítulo II Gramáticas e Linguagens
Aula 14 1 Análise Sintáctica Compiladores, Aula Nº 14 João M. P. Cardoso.
Analise sintática aula-07-analise-sintática.pdf.
Esquemas L-atribuídos
Análises léxica e sintática
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso.
Compiladores.
Análise Sintática Prof. Alexandre Monteiro
Tradução Dirigida por Sintaxe
Aula 18 1 Análise Sintáctica Compiladores, Aula Nº 18 João M. P. Cardoso.
Linguagens Livres de Contexto
Compiladores Análise Sintática
Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso.
Linguagens Formais - aula 02
Computabilidade e Linguagens Formais
Sintaxe de uma Linguagem
PLP – JavaCC Java Compiler Compiler
Analisador sintático: Tipos de análises sintáticas
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Análise Semântica e Representação Intermédia
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
Estrutura de Dados Prof. André Cypriano M. Costa
Compiladores, Aula Nº 13 João M. P. Cardoso
Transcrição da apresentação:

Compiladores, Aula Nº 11 João M. P. Cardoso Análise Sintáctica Compiladores, Aula Nº 11 João M. P. Cardoso Aula 11

Manuseando estruturas if-then-else Start  Stat Stat  IF Expr THEN Stat ELSE Stat Stat  IF Expr THEN Stat Stat  ... Aula 11

Árvore Sintáctica Considere o enunciado: if e1 then if e2 then s1 else s2 Aula 11

Árvore Sintáctica Duas Árvores Sintácticas Stat Stat Expr e1 Expr Stat IF Stat Expr e1 IF Expr THEN Stat ELSE Stat Stat e2 s1 s2 IF Expr THEN Stat ELSE Stat Qual é a correcta? e1 s2 IF Expr s1 THEN Aula 11 e2

Leituras alternativas Gramática ambígua Árvore sintáctica 1 if e1 if e2 s1 else s2 Árvore sintáctica 2 Aula 11

Gramática modificada Goal  Stat Stat  WithElse Stat  LastElse WithElse  IF Expr THEN WithElse ELSE WithElse WithElse  ... LastElse  IF Expr THEN Stat LastElse  IF Expr THEN WithElse ELSE LastElse Aula 11

Gramática modificada Ideia básica: controlar quando um IF sem ELSE pode ocorrer No nível de topo do enunciado Ou como último numa sequência de enunciados if then else if then ... Aula 11

Analisador Sintáctico Converte programas numa árvore sintáctica Pode ser programado do zero! Ou construído automaticamente por um gerador de “parsers” Aceitam uma gramática como entrada Produzem um analisador sintáctico como resultado Problema prático A Árvore Sintáctica para a gramática modificada é complicada Gostaríamos de começar com uma árvore sintáctica mais intuitiva Aula 11

Solução Sintaxe Abstracta versus Concreta Sintaxe abstracta corresponde ao meio intuitivo de pensar a estrutura do programa Omite detalhes como palavras-chave supérfluas que estão lá para tornar a linguagem ambígua Sintaxe abstracta pode ser ambígua Sintaxe Concreta corresponde à gramática completa para utilizada para analisar sintacticamente a linguagem Os analisadores sintácticos são muitas das vezes escritos para produzirem Árvores Sintácticas Abstractas (ASTs) Aula 11

ASTs (Árvores Sintácticas Abstractas) Começar com uma gramática intuitiva mas ambígua Modificar a gramática para a tornar não- ambígua Árvores sintácticas concretas Menos intuitivas Converter as árvores sintácticas concretas em ASTs Correspondem à gramática intuitiva para a linguagem Mais simples de manipular pelo programa Aula 11

Exemplo Gramática não-ambígua Gramática intuitiva mas ambígua OP1 = + | - OP2 = * | / INT = [0-9] [0-9]* OPEN = ( CLOSE = ) Start  Expr Expr  Expr OP1 Term Expr  Term Term  OPEN Expr CLOSE Term  Term OP2 INT Term  INT Gramática intuitiva mas ambígua OP = * | / | + | - INT = [0-9] [0-9]* Start  Expr Expr  Expr OP Expr Expr  INT Aula 11

Exemplo Árvore sintáctica abstracta para Start Start Árvore sintáctica abstracta para (2-3)*4 Árvore sintáctica concreta para (2-3)*4 Expr Expr Term OP * Expr Expr OP1 * INT 4 Term Expr Expr INT 4 OP - OPEN Expr CLOSE INT 2 INT 3 Expr OP2 - Term Utiliza gramática intuitiva Elimina terminais supérfluos OPEN, CLOSE, etc. Term INT 3 INT 2 Aula 11

Exemplo AST para (2-3)*4 Árvore sintáctica abstracta para Ainda mais simplificada Árvore sintáctica abstracta para (2-3)*4 Start Start Expr Expr OP * Expr Expr Expr OP * INT 4 Expr Expr INT 4 INT 2 OP - INT 3 OP - INT 2 INT 3 Aula 11

Sumário Níveis da estrutura lexicais e sintácticos Lexicais – expressões regulares e autómatos Sintácticos – gramáticas Ambiguidades na gramática Gramáticas modificadas Árvores Sintácticas Abstractas (ASTs) Papel generativo versus papel reconhecedor Generativo mais conveniente para especificação Reconhecedor requerido na implementação Aula 11