Logo Passei Direto
Buscar

Videoaula 6 - Análise Sintática (Parte 1)

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Análise Sintática – Parte 1
COMPILADORES
• Introdução
• Princípios Fundamentais
• Papel da Análise Sintática
• Símbolos Terminais e Não-Terminais
• Produções e Regras Gramaticais
• Exemplos
ROTEIRO 
● A análise sintática e as gramáticas formais
desempenham um papel essencial na 
compreensão da estrutura e da sintaxe das 
linguagens de programação. 
● Elas são parte integrante do processo de 
compilação, que transforma o código-fonte 
escrito em linguagem de alto nível em código de 
máquina executável.
INTRODUÇÃO
● A análise sintática lida com a estrutura hierárquica 
de um programa e verifica se ele segue as regras 
gramaticais da linguagem. 
● As gramáticas formais são conjuntos de regras que 
descrevem a estrutura sintática de uma linguagem. 
● Essas regras são fundamentais para o 
reconhecimento de padrões em programas de 
computador.
PRINCÍPIOS FUNDAMENTAIS
● A análise sintática desempenha um papel crucial 
na fase de análise do processo de compilação
● Ela recebe a saída da análise léxica (tokens) e 
verifica se a sequência de tokens segue a 
gramática da linguagem
● Caso contrário, identifica erros de sintaxe no 
código-fonte.
PAPEL DA ANÁLISE SINTÁTICA
● As gramáticas formais distinguem entre:
● Símbolos terminais: tokens reais, como 
palavras-chave e números
● Símbolos não-terminais: representações 
abstratas de estruturas sintáticas, como 
expressões ou declarações.
SÍMBOLOS TERMINAIS E NÃO-TERMINAIS
● As gramáticas formais distinguem entre:
● Os símbolos terminais, que representam os 
elementos concretos do código
● palavras-chave, identificadores, números e 
operadores
● Os símbolos não-terminais, que são partes da 
gramática que representam estruturas mais 
complexas
● declarações, comandos e expressões 
● Durante a análise sintática, os símbolos terminais 
são combinados de acordo com as regras dos 
símbolos não-terminais para construir a árvore 
sintática que representa a estrutura do programa.
SÍMBOLOS TERMINAIS E NÃO-TERMINAIS
● As gramáticas formais são compostas por 
produções ou regras gramaticais que definem 
como os símbolos podem ser combinados para 
formar expressões válidas na linguagem
● Essas regras são expressas usando notação 
como BNF (Backus-Naur Form) ou EBNF 
(Extended Backus-Naur Form)
PRODUÇÕES E REGRAS GRAMATICAIS
● Um exemplo simples de gramática formal para 
expressões aritméticas pode ser:
expressao -> expressao '+' termo
| expressao '-' termo
| termo
termo -> termo '*' fator
| termo '/' fator
| fator
fator -> '(' expressao ')'
| numero
● Esta gramática descreve como as expressões 
aritméticas podem ser formadas a partir de números, 
operadores e parênteses.
EXEMPLO DE GRAMÁTICA FORMAL
Considere o seguinte código
#include 
int soma(int a, int b) {
return a + b;
}
int main() {
int x = 5;
int y = 7;
int resultado = soma(x, y);
printf("A soma de x e y é: %d\n", resultado);
return 0;
}
EXEMPLO EM CÓDIGO C
● Símbolos Não-Terminais
1.Programa
2.Inclusão de Biblioteca
3.Função Principal
4.Tipo de Retorno
5.Bloco de Comandos
6.Comandos
7.Comando
8.Declaração
9.Tipo
10.Identificador
11.Parâmetros
12.Parâmetro
13.Retorno
14.Expressao
15.Chamada de Função
16.Argumentos
17.String
EXEMPLO EM CÓDIGO C
● Símbolos Terminais
1.#include 
2. int
3.soma
4.main
5. ()
6.{
7.}
8.return
9. ;
10.=
11.,
12.+
13."A soma de x e y é: %d\n"
14.0
15.x
16.5
17.y
18.7
19.resultado
EXEMPLO EM CÓDIGO C
1.Compiladores: princípios, técnicas e ferramentas
2.Compiladores: princípios e práticas
3.https://www.geeksforgeeks.org/introduction-to-syntax-analysis-in-compiler-
design/?ref=lbp
REFERÊNCIAS
https://plataforma.bvirtual.com.br/Acervo/Publicacao/280
https://integrada.minhabiblioteca.com.br/reader/books/9788522128532/pageid/0
https://www.geeksforgeeks.org/introduction-to-syntax-analysis-in-compiler-design/?ref=lbp

Mais conteúdos dessa disciplina