Este documento apresenta a primeira aula de um curso sobre Gramáticas, Autômatos e Compiladores. Ele introduz os principais conceitos como alfabeto, palavra, linguagem e gramática e fornece exemplos de gramáticas regulares.
3. Formato da disciplina
}
Paulo Eduardo e Silva Barbosa
◦ pesbarbosa@gmail.com
}
Página da disciplina
◦ https://sites.google.com/site/pesbarbosa/
}
}
Bibliografia básica
AHO, Alfred V.; LAM, Mônica S.; SETHI, Ravi;
ULLMAN, Jeffrey D. Compiladores: Princípios,
Técnicas e Ferramentas. Pearson Addison
Wesley, 2007.
4. Bibliografia
SIPSER,Michael. Introdução à Teoria da
Computação. 2ª ed. São Paulo: Thomson
Pioneira, 2007. MENEZES, Paulo Blauth.
Linguagens Formais e Autômatos. Ed. Bookman
Companhia, 1a edicao, 2008.
PRICE, Ana Maria de Alencar; TOSCANI, Simão
Sirineo Implementação de Linguagens de
Programação: Compiladores. 3a ed. Bookman,
2008
LOUDEN, Keneth C. Compiladores: Princípios e
Práticas. São Paulo: Thomson Learning, 2004.
5. Formato da disciplina
}
Avaliações
◦ 1º Estágio
– Prova (5)
– Lista de exercícios (2)
– Projeto de Compiladores (analisador léxico e sintático) (3)
◦ 2º Estágio
– Prova
– Projeto de Compiladores (analisador léxico e sintático)
◦ 3º Estágio
– Integrador
– Projeto de Compiladores (analisador léxico e sintático)
6. Introdução
}
Teoria das Linguagens Formais
◦ 1950
◦ Desenvolvida para Linguagens Naturais
◦ Aplicadas para Linguagens da Computação
}
Sintaxe
◦ Verificação gramatical de programas
}
Semântica
◦ Interpretação para a linguagem (significado ou valor para
um determinado programa)
7. Linguagens e Gramáticas
}
Como definir uma linguagem em Computação?
}
Alfabeto (Σ)
◦ Conjunto finito de símbolos ou caracteres.
◦ Exemplos:
– {a, b, c}
–ø
8. Palavra
}
Palavra, cadeia de caracteres ou sentenças sobre
um alfabeto. É uma sequência finita de símbolos
(do alfabeto) justapostos.
}
Exemplos:
◦ Considere o alfabeto {a, b, c}
◦ Palavras:
– ab
– cab
– aabcabb
9. Palavra
}
Σ*
◦ Denota o conjunto de todas as palavras possíveis sobre
Σ
}
Σ+
◦ Denota Σ* - {ε}
◦ ε
– Palavra vazia, sem símbolos
10. Linguagem Formal
}
Uma linguagem formal L sobre um alfabeto Σ é
um conjunto de palavras sobre Σ* :
◦ L ⊆ Σ*
}
Exemplo:
◦ Σ = {a, b}
◦ Linguagem: conjunto de palíndromos sobre Σ
◦ Palavras desta linguagem (infinito):
– a, bb, aba, abba, bbbb, ...
11. Linguagem de Programação
É formalmente definida pelo conjunto de todos os
programas (palavras) da linguagem.
12. Gramática
}
Conjunto finito de regras nas quais, quando
aplicadas sucessivamente, geram palavras;
}
O conjunto de todas as palavras geradas por uma
gramática define a linguagem.
13. Gramática
}
Gramática de Chomsky, Gramática Irrestrita ou
simplesmente Gramática
◦ G = (V, T, P, S)
◦ V = conjunto finito de símbolos variáveis ou não-terminais;
◦ T = conjunto finito de símbolos terminais disjunto de V;
◦ Regra de Produção = P: (V ∪ T)+
(V ∪ T)*
◦ S = elemento de V chamado de símbolo inicial
14. Exemplos de Gramática
}
Gramática Regular (Linguagens Regulares)
}
G = ({S, A, B}, {0, 1}, P, S)
}
P = { S → 0B,
S → 1A,
A → 0,
A → 0S,
B → 1,
B → 1S }