Você está na página 1de 14

Compiladores

Analise
Sintatica
Palavra
Uma palavra é uma sequência de símbolos que faz sentido em uma
linguagem específica. Na análise sintática, uma palavra pode ser um
token que representa um identificador, uma palavra-chave, um número,
etc.

Exemplos
Em uma linguagem de programação, "if" é uma palavra-chave.
"12345" é uma palavra que representa um número inteiro.

2
derivacao

A derivação é o processo de aplicar regras gramaticais para gerar uma sequência de


símbolos em uma gramática formal. Essa sequência de símbolos pode ser uma
sentença em uma linguagem.

Exemplos

Considere a regra gramatical: S -> if (E) S1 else S2.


A derivação de uma sentença como "if (x < 5) then y = 10; else y = 20;" pode ser
representada através de várias etapas de aplicação dessa regra.

3
Gramatica

Uma gramática é um conjunto de regras que define a estrutura sintática de uma


linguagem. Ela consiste em terminais (símbolos que aparecem nas palavras da
linguagem) e não-terminais (símbolos que podem ser substituídos por outras
sequências de símbolos).

Exemplo:

Gramática para expressões aritméticas simples:

E -> E + T | T
T -> T * F | F
F -> ( E ) | id | num
Onde 'id' representa um identificador e 'num' representa um número.

4
Regra grammetical

As regras gramaticais definem como os símbolos em uma gramática podem ser


combinados para formar sequências válidas na linguagem.

Exemplo:

Uma regra gramatical para uma expressão aritmética:

E -> E + T | T
Isso indica que uma expressão (E) pode ser formada pela adição de outra expressão (E)
e um termo (T), ou simplesmente um termo (T).

5
Arvore de derivacao
Uma árvore de derivação é uma representação gráfica de como uma sentença é
derivada de uma gramática. Cada nó na árvore representa um símbolo na sentença e
suas conexões representam as regras gramaticais aplicadas.

Exemplo:

Para a sentença "3 + 4 * 5":

+
/\
3 *
/\
4 5

6
Principios fundamentais
da analise sintatica
1. Analise Descendente(Top-down
parsing)
Na análise descendente, começamos com o símbolo inicial da gramática e
tentamos encontrar uma
derivação para a sequência de entrada, indo do topo (símbolo inicial) para
baixo (terminais). Existem várias estratégias de análise descendente,
incluindo a análise preditiva recursiva e a análise descendente com retrocesso
(backtracking). O objetivo é construir uma árvore de derivação que
corresponda à entrada. 7
Principios fundamentais
da analise sintatica
1. Analise Descendente(Top-down parsing)

Na análise descendente, começamos com o símbolo inicial da gramática


e tentamos encontrar uma
derivação para a sequência de entrada, indo do topo (símbolo inicial)
para baixo (terminais). Existem várias estratégias de análise
descendente, incluindo a análise preditiva recursiva e a análise
descendente com retrocesso (backtracking). O objetivo é construir uma
árvore de derivação que corresponda à entrada.
Desenho de Gramaticas

dgddddhdhdhd

9
Definicao de regra
gramaticas
As gramáticas são conjuntos de regras formais usadas para descrever a estrutura de uma
linguagem. Elas são fundamentais na construção de compiladores e interpretadores. Aqui
estão alguns pontos-chave sobre o desenho de gramáticas:

Definição de Regras Gramaticais: As regras gramaticais descrevem como as sentenças de


uma linguagem podem ser formadas. Elas consistem em terminais (símbolos que aparecem
diretamente nas sentenças) e não-terminais (símbolos que podem ser substituídos por outras
sequências de símbolos).

Exemplo de Regra Gramatical: Considere a regra gramatical para uma expressão aritmética:
E -> E + T | T. Isso indica que uma expressão (E) pode ser formada pela adição de outra
expressão (E) e um termo (T), ou simplesmente um termo (T).

10
Criacao de Arvores de
derivacao de gramatica
Uma árvore de derivação é uma representação gráfica de como uma sentença é
derivada de acordo com as regras de uma gramática. Cada nó na árvore representa um
símbolo na sentença e suas conexões representam as regras gramaticais aplicadas. Aqui
está o que você precisa saber:

Processo de Criação: Para criar uma árvore de derivação, você começa com o símbolo
inicial da gramática e aplica as regras gramaticais conforme necessário até chegar à
sentença desejada.

Exemplo de Árvore de Derivação: Para a sentença "2 * (3 + 4)", podemos criar uma
árvore de derivação mostrando como essa sentença é derivada de acordo com as regras
gramaticais para expressões aritméticas.
11
Exemplos(cont..)
Vamos criar uma árvore de derivação para a expressão aritmética "2 * (3 + 4)"
usando a gramática

E
/\
T +
/\/\
T * F
/\ /\
F num ( )
| | |
2 3 4
Gramaticas ambiguas
Uma gramática é considerada ambígua se existirem múltiplas árvores de derivação possíveis para
uma mesma sentença. A ambiguidade pode complicar a análise sintática e levar a interpretações
diferentes da mesma sentença. Aqui estão alguns pontos-chave sobre gramáticas ambíguas:

1.Causas da Ambiguidade: A ambiguidade pode surgir devido à falta de clareza nas regras
gramaticais ou à sobreposição de produções.

2.Problemas Associados: Gramáticas ambíguas podem causar dificuldades na construção de


analisadores sintáticos, pois podem levar a interpretações incorretas ou imprecisas da linguagem.

3.Resolução de Ambiguidades: Para resolver ambiguidades, é necessário modificar as regras


gramaticais para tornar sua interpretação única ou usar técnicas de desambiguação, como
precedência de operadores ou associatividade.
13
14

Exemplo

Vamos considerar a seguinte gramática para


expressões aritméticas:
E -> E + E | E * E | (E) | num
Por exemplo, para a expressão "2 * 3 + 4", podemos
derivar duas árvores de derivação diferentes

Árvore 1: Árvore 2:

E E
/\ /\
E + E *
/\/\ /\/\
E * E num 2 E E
/\ /\ /\/\
num 3 num 4 3 + num
| | | |
2 3 4 4

Você também pode gostar