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

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

Curso Sistemas de Informação Disciplina: Arquitetura de Software

Apresentações semelhantes


Apresentação em tema: "Curso Sistemas de Informação Disciplina: Arquitetura de Software"— Transcrição da apresentação:

1 Curso Sistemas de Informação Disciplina: Arquitetura de Software
Compiladores e Interpretadores

2 Linguagem de Programação
Uma Linguagem de Programação é composta de símbolos e códigos, regras de sintaxe e ferramenta. A primeira e mais primitiva linguagem de computador é a própria linguagem de máquina (formada por 0’s e 1’s).

3 Programação em Linguagem de Máquina
Desenvolver um programa em linguagem de máquina é difícil, longo e principalmente caro de se construir. Um programa em linguagem de máquina é difícil de ser entendido por outros programadores. Essa complexidade levou a necessidade de desenvolver novas técnicas e ferramentas.

4 Linguagem Assembly e o Processo de Tradução
O processo de tradução da linguagem de montagem para a linguagem de máquina é realizada por um programa chamado ASSEMBLER. Os programas de alto nível também precisam ser traduzidos para a linguagem de máquina. O processo de montagem traduz um programa escrito numa Linguagem de Programação num programa equivalente em Linguagem de Máquina.

5 Processo de Montagem e Tradução
CÓDIGO FONTE TRADUÇÃO LINGUAGEM DE MÁQUINA

6 Compiladores (Processo de Compilação)
Fonte LP Compilação Executável criado antes da execução LM Dados Execução

7 Interpretadores (Processo de Interpretação)
Fonte LP Interpretação Executável criado em tempo de execução LM Dados Execução

8 Compiladores Híbridos
LP Fonte Compilação Código intermediário criado antes da execução Código Intermediário Interpretação LM Executável criado em tempo de execução Dados Execução

9 Código Intermediário É mais ágil de INTERPRETAR.
Não é específico de uma PLATAFORMA. Necessita ser instalado um INTERPRETADOR DE CÓDIGO.

10 Código Intermediário Exemplo.: JVM – Java Virtual Machine (Máquina Virtual Java) .NET – Dot Net (Máquina Virtual Microsoft) O código intermediário é chamado de bytecode.

11 Backus-Naur Form - BNF É uma linguagem usada para descrever outra linguagem. BNF é uma metalinguagem para descrever Linguagens de Programação.

12 Backus-Naur Form - BNF Foram os idealizadores iniciais da linguagem de livre contexto. John Backus Noam Chomsky Mais tarde Peter Naur modificou a linguagem para o projeto do Algol 60. Peter Naur

13 Gramática BNF Uma gramática em BNF é composta por um conjunto finito de regras para definir uma Linguagem de Programação. Portanto, a gramática consiste em um conjunto de definições “REGRAS”. É com a aplicação da gramática que conseguimos formar programas válidos na linguagem destino.

14 Exemplo de Gramática BNF
<programa> ::= begin <list_inst> end <list_inst> ::= <instrução> ; | <instrução> ; <list_inst> <instrução> ::= <var> := <expressão> <var> ::= A | B | C <expressão> ::= <var> + <var> | <var> - <var> | <var>

15 Gramática BNF A BNF usa abstrações para representar estruturas sintáticas. Ex.: <expressão> Os itens léxicos são representados pelo negrito e são chamados de TERMINAIS. Ex.: A | B | C | D O símbolo ::= é usado no sentido de: “é definido por” <id> ::= A | B | C | D

16 Regras da BNF Sempre existe um símbolo não-terminal no lado esquerdo de uma instrução.| <var> ::= A | B | C | D No lado direito podemos ter terminais e/ou não-terminais. <var> ::= A | B | C | D <instrução> ::= <var> = <expressão>

17 Regras da BNF Sempre existe um símbolo não-terminal no lado esquerdo de uma instrução.| <var> ::= A | B | C | D No lado direito podemos ter terminais e/ou não-terminais. <var> ::= A | B | C | D <instrução> ::= <var> = <expressão>

18 Quais são os Não-Terminais e os Terminais ?
<programa> ::= begin <lista_sentenças> end <lista_sentenças> ::= <sentença> ; | <sentença> ; <lista_sentenças> <sentença> ::= <id> := <expressão> <id> ::= A | B | C | D | E <expressão> ::= <id> + <id> | <id> - <id> | <id>

19 Quais são os Não-Terminais e os Terminais ?
programa lista_sentenças sentença id expressão Terminais begin end ; := A B C D E + -

20 Exemplo de Programa Válido
begin A := B + C; B := B - D; A := B; end Um programa apenas contém símbolos terminais!

21 Exemplo de uma Linguagem com SE condicional?
<programa> ::= begin <lista_sentenças> end <lista_sentenças> ::= <sentença> ; | <sentença> ; <lista_sentenças> | <condição> ; <lista_sentenças> <sentença> ::= <id> := <expressão> <condição> ::= if <comparação> then <lista_sentenças> end if | if <comparação> then <lista_sentenças> else <lista_sentenças> end if <comparação> ::= <id> > <id> | <id> < <id> | <id> = <id> | <id> <> <id> | <id> <= <id> | <id> >= <id> <id> ::= A | B | C | D | E <expressão> ::= <id> + <id> | <id> - <id> | <id>

22 Parse Trees A := B + C <sentença> A := B + C <id> A :=
<expressão> <id> B + <id> C

23 Desenhe a Árvore de Análise para a instrução:
Exercício Desenhe a Árvore de Análise para a instrução: A := B * ( A + C )

24 Exercício * <atrib> A := <expr> <expr> B ) (
+ C

25 Exercício Desenhe a Árvore de Análise para a instrução:
A := (B * C) + (A * C) + (B * C)


Carregar ppt "Curso Sistemas de Informação Disciplina: Arquitetura de Software"

Apresentações semelhantes


Anúncios Google