Você está na página 1de 12

PROGRAMAÇÃO E

COMPILADORES
GRAMÁTICA
CONCEITOS BÁSICOS
1) Alfabeto ou vocabulário.
Conjunto finito não vazio de símbolos.
Ex. {a, b} {1, 2, 3} {while, for, do}
N={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} V={1, +, ), a}
2) Símbolos (átomos, letras)
Elementos do alfabeto.
1, 7, 2 são símbolos de N
a, + são símbolos de V
CONCEITOS BÁSICOS
3) Cadeias (palavras, sentenças)
Qualquer concatenação finita de símbolos de um alfabeto.
Cadeia de N = 1234
Cadeia de V = +1
Exercício
V1 = {a, b}
Escreva 3 cadeias diferentes para V1 contendo 3 símbolos cada uma.
Cadeia 1 = Cadeia 2 = Cadeia 3 =
Cadeia vazia (é a cadeia que contém elementos) = λ (ou Є)
CONCEITOS BÁSICOS
4) Fechamento de um alfabeto
Seja V um vocabulário (ou alfabeto), então o fechamento V* é o
conjunto das cadeias de qualquer comprimento sobre o vocábulo V.
Chama-se V+ o fechamento positivo de V, definida por :
V+ = V* - {λ}
5) Concatenação de cadeias
Seja s = a1 a2 ... an
t = b1 b2 ... bn
CONCEITOS BÁSICOS
(ai, bi Є V)
A concatenação st = a1a2 ... an b1b2 ... bn;
Para qualquer s em V*, tem-se sλ = λs = s (elemento neutro);
Associatividade s1 (s2s3) = (s1 s2) s3;
Comutatividade s1 s2 ≠ s2 s1.
CONCEITOS BÁSICOS
Dada uma cadeia não vazia
s = a1 a2 ... an (ai, Є V), o inteiro n é o seu comprimento e será
denotado por |s|.
O comprimento |λ| = zero, assim para s e t em V*, |st| = |s| + |t|;
Dados s em V* e a em V, denotamos |s|a o número de ocorrências de
símbolo “a” em s.
Outra vez se s e t forem cadeias em V* , temos |st|a = |s|a + |t|a
CONCEITOS BÁSICOS
Exercício
Seja {a,b,c}
|aaa| =
|aab|b =
|aabbb|c =
|cccλ| =
|λ| =
|cccd|c =
CONCEITOS BÁSICOS
6) Produto de dois alfabetos
V1 = {a,b} V2 = {1, 2, 3}
V1 x V2 = {a1, a2, a3, b1, b2, b3}
V1 x V2 ≠ V2 x V1
7) Exponenciação de alfabetos
V° = λ ; V1 = V ; Vn = V 𝑛 − 1 V ; V* = V° U V1 U V2 U V3 ... U Vn U
...
INTRODUÇÃO
Dispositivo de geração de sentenças que formam as linguagens.
Uma gramática G = (Vn , Vt , P, S), onde :
Vn : Alfabeto finito conhecido como vocabulário não terminal que é
usado pela gramática para definir construções auxiliares ou
intermediárias na formação de sentenças.
Ex. bloco de comandos
Os símbolos de Vn são usados como nomes para categorias
sintáticas (verbo – Língua Portuguesa).
Representação usual : Elementos de Vn em letras maiúsculas.
INTRODUÇÃO
Vt : Alfabeto terminal, que são os símbolos dos quais as sentenças da
linguagem são constituídas.
Os símbolos de Vt são aqueles que aparecem em programas (letras,
dígitos, palavras reservadas etc.).
Representação usual : Elementos de Vt em letras minúsculas (início,
fim etc.).
Vt U Vn = V Vt ∩Vn = vazio (λ)
Cadeias mistas Є { Vt È Vn }* ou V* e são representadas por letras
gregas.
P : É o conjunto finito de regras de produção, que são todas as leis de
formação utilizadas pela gramática para definir a linguagem.
INTRODUÇÃO
Cada produção P tem a forma ∞ → β, onde ∞ é uma cadeia
contendo no mínimo um não terminal (∞ Є V* Vn V* ) e β é uma
cadeia contendo terminais e/ou não terminais (β Є V*).
A interpretação de ∞ → β é que ∞ pode ser substituído por β sempre
que ∞ ocorrer.
S : é o elemento de Vn que dá início ao processo de geração de
sentenças, S é o símbolo inicial da gramática.
REFERÊNCIAS BIBLIOGRÁFICAS
• Ricardo Luís de Freitas, Compiladores.
• Tanenbaum, Andrew S. – Sistemas Operacionais Modernos, 2ª Edição,
Prentice Hall, 2003.

Você também pode gostar