A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Construção de compiladores i Linguagem de Prog. e Programas Em qualquer ling. de programação, é necessário conhecer: –estruturas de dados permitidas –como.

Apresentações semelhantes


Apresentação em tema: "Construção de compiladores i Linguagem de Prog. e Programas Em qualquer ling. de programação, é necessário conhecer: –estruturas de dados permitidas –como."— Transcrição da apresentação:

1 Construção de compiladores i Linguagem de Prog. e Programas Em qualquer ling. de programação, é necessário conhecer: –estruturas de dados permitidas –como mexer com partes do programa, sem alterar todo o resto; –os elementos de controle que identificam as estruturas, tais como: loop etc; –como implementar subrotinas.

2 Construção de compiladores i Linguagens e o Compilador L f = ling. fonte; L m = ling. máquina; L 0 = Ling. objeto.

3 Construção de compiladores i No compilador: 3 linguagens: - linguagem fonte; - linguagem objeto; - linguagem na qual o compilador foi escrito. Linguagens e o Compilador - escrito para a linguagem x; - escrito na linguagem z - código objeto na linguagem y

4 Construção de compiladores i Linguagens e o Compilador

5 Construção de compiladores i Em geral, L f é uma linguagem de alto nível como ALGOL, COBOL, PASCAL, etc. L o não é necessariamente uma linguagem de máquina, podendo ser uma Linguagem de Montagem ("Assembler") L a. Nesse caso, é necessário ter-se mais uma fase de tradução de L a para a linguagem de máquina L m do computador a ser utilizado para processar o programa objeto: Linguagens e o Compilador

6 Construção de compiladores i Est. Hierárquica de uma L.P.

7 Construção de compiladores i Análise Léxica Analisador Léxico: 31ª fase de um compilador 3lê os caracteres de entrada e produz uma sequência de símbolos léxicos válidos (tokens) 3pode ser implementado como uma subrotina do parser ou uma co-rotina do parser; 3executa tarefas secundárias, como: é remover comentários; é remover espaços em branco é controlar posição dos elementos, visando mensagens de erros ao programador

8 Construção de compiladores i Análise Léxica Tokens: 3Elementos dados: elementos básicos de qualquer ling. de programação: ënuméricos: inteiros, reais, complexos etc ëlógicos: true, false ëcaracteres: C, a, casa ëponteiros 4Identificadores / nomes: variáveis dos procedimentos, associadas a um dado nome: ëNome valor atributo

9 Construção de compiladores i Análise Léxica Tokens: 3Estruturas de dados ëarrays ërecord ëlistas ëpilhas 4Operadores aritméticos: ëUnários: ëpré-fixados ëpós-fixados ëBinários

10 Construção de compiladores i Reconhecimento de Tokens Diagramas de Transição: - passo intermediário; - apresentam ações executadas pelo Analisador Léxico; - controla as informações a respeito de caracteres que são examinados, com a leitura do arquivo fonte. Elementos dos Diagramas: - estados: posições no diagrama; - lados: setas que conectam os estados; - rótulos: indicam os caracteres de entrada que podem aparecer após atingir-se um dado estado; Obs Obs: Chamamos o diagrama de determinístico quando o mesmo símbolo não figura como rótulo de lados diferentes que deixem um mesmo estado.

11 Construção de compiladores i Diagramas de Transição Supondo a que um número real possa ser dado por:. E

12 Construção de compiladores i Diagramas de Transição Para reconhecimento de identificadores:

13 Construção de compiladores i Autômatos Finitos Os símbolos que deverão ser reconhecidos na análise léxica são representáveis por expressões regulares (ou equivalentemente por gramáticas regulares). Há uma correspondência unívoca entre expressões (ou gramáticas) regulares e autômatos finitos. Autômatos Finitos Autômatos Finitos: máquinas que podem ser utilizadas para reconhecer strings de uma dada linguagem. Autômatos Finitos são compostos por: um conjunto de estados, alguns dos quais são denominados estados finais. À medida que caracteres da string de entrada são lidos, o controle da máquina passa de um estado a outro; um conjunto de regras de transição entre os estados.

14 Construção de compiladores i Autômatos Finitos Formalmente, um autômato é descrito por cinco características: - um conjunto finito de estados; - um alfabeto de entrada finito; - um conjunto de transições; - um estado inicial; - um conjunto de estados finais. Quando, partindo de um estado inicial, varrendo a sentença dada (de acordo com as regras de transições), consegue-se atingir um estado final, a sentença dada é parte da linguagem.

15 Construção de compiladores i Autômatos Finitos Forma Gráfica de Representação de um Autômato Finito:

16 Construção de compiladores i Autômatos Finitos a b c A B B C B C B - C A - D D Forma Tabular de Representação do mesmo Autômato Finito:

17 Construção de compiladores i Autômatos Finitos não-determínisticos Um Autômato de Estados Finito não-deterministico é: - aquele em que pode ocorrer a transição vazia (aquela em que o autômato pode passar de um estado a outro sem que ocorra a entrada de um caracter do string); - aquele onde podem ocorrer indeterminações na ação, isto é, determinados estados podem ter mais do que uma transição possível para um dado caracter.

18 Construção de compiladores i Autômatos Finitos não-determínisticos Exemplo: Reconhecimento da linguagem (a|b) * abb: EstadoSímbolo de Entrada ab 0{0,1}{0} 1{2} 2{3}


Carregar ppt "Construção de compiladores i Linguagem de Prog. e Programas Em qualquer ling. de programação, é necessário conhecer: –estruturas de dados permitidas –como."

Apresentações semelhantes


Anúncios Google