CEDIS | Universidade de Brasília (UnB)

Fundamentos de linguagens formais e autômatos

FGA0003 — Compiladores 1 · Semana 2 · Aula teórica

Prof. Dr. Sergio Antônio Andrade de Freitas
Curso de Engenharia de Software · 2026
símbolo CEDIS logo UnB
símbolo CEDISCEDIS
2/29

Resultado da avaliação diagnóstica

Preencher oralmente em sala, conforme o número atualizado de respostas e de estudantes matriculados.

  • Respondentes: ______
  • Total da turma: ______
  • Percentual de participação: ______
  • Observação: valores atualizados no momento da aula.
símbolo CEDISCEDIS
3/29

Objetivos de aprendizagem

Definir

alfabeto, cadeia e linguagem formal

Interpretar

componentes e produções de uma gramática

Comparar

classes da Hierarquia de Chomsky

Simular

o processamento de uma cadeia em um AFD

Relacionar

autômatos, análise léxica e Flex

símbolo CEDISCEDIS
4/29

Mapa da aula

  1. 01Revisão: símbolos e cadeias
  2. 02Conceito central: linguagens e gramáticas
  3. 03Exemplo guiado: derivação
  4. 04Aplicação: Hierarquia de Chomsky e autômatos
  5. 05Fixação: cinco atividades interativas
  6. 06Síntese: conexão com Flex
Parte 1

Do símbolo à linguagem

Alfabeto, cadeia e regra de pertinência

símbolo CEDISCEDIS
6/29

Três conceitos fundamentais

  • Σ fornece os símbolos permitidos.
  • Σ* contém todas as cadeias finitas sobre Σ.
  • Uma linguagem L é um subconjunto de Σ*.
Diagrama entre alfabeto, cadeia e linguagem formal
símbolo CEDISCEDIS
7/29

Exemplo: começa com a e termina com b

Pertencem à linguagem

  • ab
  • aab
  • aaab
  • abab

Não pertencem

  • ba
  • bb
  • aa
  • bbaa
símbolo CEDISCEDIS
8/29
atividade

Alfabeto e cadeia

Qual afirmação distingue corretamente alfabeto e cadeia?

  1. Alfabeto é um conjunto finito de símbolos; cadeia é uma sequência finita desses símbolos.
  2. Alfabeto é uma sequência e cadeia é um conjunto de símbolos.
  3. Alfabeto e cadeia são sempre infinitos.
  4. Alfabeto e cadeia são nomes equivalentes para o mesmo objeto.
QR Code para acesso à atividade
Parte 2

Gramáticas formais

Como especificar a construção de cadeias

símbolo CEDISCEDIS
10/29
Diagrama da tupla G igual a V, Sigma, R e S

Estrutura de uma gramática

  • V: variáveis ou não terminais
  • Σ: símbolos terminais
  • R: regras de produção
  • S: símbolo inicial
símbolo CEDISCEDIS
11/29

Exemplo de gramática

Variáveis

V = {S}

Terminais

Σ = {a, b}

Produções

S → aSb | ab

Início

S

Linguagem gerada

{aⁿbⁿ | n ≥ 1}

símbolo CEDISCEDIS
12/29

Derivação guiada de aaabbb

A cada passo, uma ocorrência de S é substituída por uma produção.

Linha do tempo da derivação de aaabbb
símbolo CEDISCEDIS
13/29
atividade

Derivação de uma cadeia

Com S → aSb | ab, qual derivação gera aaabbb?

  1. S ⇒ aSb ⇒ aaSbb ⇒ aaabbb
  2. S ⇒ ab ⇒ aabb ⇒ aaabbb
  3. S ⇒ aSb ⇒ aaaSbbb ⇒ aaabbb
  4. S ⇒ aSb ⇒ abab ⇒ aaabbb
QR Code para acesso à atividade
Parte 3

Hierarquia de Chomsky

Classes de linguagens e seus reconhecedores

símbolo CEDISCEDIS
15/29
Diagrama aninhado da Hierarquia de Chomsky

Classes de linguagens formais

As classes internas estão contidas nas externas, mas o reconhecedor necessário torna-se mais poderoso.

símbolo CEDISCEDIS
16/29

Regulares e livres de contexto

Linguagens regulares

  • Padrões locais
  • Expressões regulares
  • Autômatos finitos
  • Aplicação: tokens

Linguagens livres de contexto

  • Estruturas aninhadas
  • Gramáticas livres de contexto
  • Autômatos com pilha
  • Aplicação: sintaxe
símbolo CEDISCEDIS
17/29
atividade

Classe e reconhecedor

Qual associação está correta na Hierarquia de Chomsky?

  1. Linguagens regulares — autômatos finitos
  2. Linguagens regulares — máquinas de Turing apenas
  3. Linguagens livres de contexto — autômatos finitos sem memória
  4. Linguagens irrestritas — expressões regulares
QR Code para acesso à atividade
Parte 4

Autômatos finitos

Reconhecimento de linguagens regulares

símbolo CEDISCEDIS
19/29

AFD e AFN

AFD

  • Uma transição por símbolo em cada estado
  • Próximo estado determinado
  • Execução com um único caminho

AFN

  • Pode haver múltiplas transições
  • Pode admitir transições ε
  • Aceita se algum caminho aceitar
símbolo CEDISCEDIS
20/29

AFD para cadeias terminadas em 01

  • q0: nenhum sufixo relevante
  • q1: o último símbolo é 0
  • q2: os dois últimos símbolos são 01
Diagrama de estados do AFD que reconhece cadeias terminadas em 01
símbolo CEDISCEDIS
21/29

Como simular uma cadeia no AFD

1

1. Iniciar

posicione-se em q0

2

2. Ler

consuma um símbolo por vez

3

3. Transitar

aplique δ(estado, símbolo)

4

4. Encerrar

consuma toda a cadeia

5

5. Decidir

aceite somente se o estado final for q2

símbolo CEDISCEDIS
22/29
atividade

Reconhecimento pelo AFD

Qual cadeia é rejeitada pelo AFD de sufixo 01?

  1. 111
  2. 01
  3. 101
  4. 1101
QR Code para acesso à atividade
Parte 5

Da teoria ao compilador

Autômatos como base da análise léxica

símbolo CEDISCEDIS
24/29

Gramáticas geram; autômatos reconhecem

Visão geradora

  • Parte de um símbolo inicial
  • Aplica regras de produção
  • Constrói cadeias da linguagem

Visão reconhecedora

  • Recebe uma cadeia
  • Processa símbolos
  • Aceita ou rejeita a entrada
símbolo CEDISCEDIS
25/29

Flex no fluxo da análise léxica

1

Especificar

expressões regulares no arquivo .l

2

Gerar

Flex produz o analisador em C

3

Compilar

GCC cria o executável

4

Executar

o analisador percorre o código-fonte

5

Emitir

lexemas são classificados como tokens

símbolo CEDISCEDIS
26/29
atividade

Aplicação em compiladores

Qual é o papel principal de Flex em um compilador?

  1. Gerar um analisador léxico a partir de padrões regulares
  2. Gerar diretamente o código de máquina final
  3. Verificar tipos e escopos na análise semântica
  4. Alocar registradores no back-end
QR Code para acesso à atividade
símbolo CEDISCEDIS
27/29

Síntese da aula

Símbolos

formam cadeias sobre um alfabeto

Linguagens

selecionam cadeias por uma propriedade

Gramáticas

geram cadeias por produções

Autômatos

reconhecem pertinência a linguagens

Compiladores

aplicam esses modelos na análise do código

símbolo CEDISCEDIS
28/29

Referências

  1. Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, techniques, and tools (2nd ed.). Addison-Wesley.
  2. Hopcroft, J. E., Motwani, R., & Ullman, J. D. (2006). Introduction to automata theory, languages, and computation (3rd ed.). Addison-Wesley.
  3. Sipser, M. (2012). Introduction to the theory of computation (3rd ed.). Cengage Learning.
  4. Tremblay, J. P., & Sorenson, P. G. (1985). The theory and practice of compiler writing. McGraw-Hill.
  5. Wirth, N. (2005). Compiler construction. ETH Zürich.
símbolo CEDISCEDIS
29/29

Da linguagem formal ao analisador léxico

Próxima etapa: transformar expressões regulares em um analisador com Flex. FGA0003 — Compiladores 1 · CEDIS/UnB

→ avançar · ← voltar · deslize (touch) · n notas · f tela cheia · p imprimir