Escolar Documentos
Profissional Documentos
Cultura Documentos
passagem
Visão Geral:
Sintaxe
Definição de linguagem
Semântica
Não Terminal
Os lados direitos das 3 produções com o não terminal lista podem ser
agrupados
Tokens + - 1 2 3 4 5 6 7 8 9 0
Não-terminais lista e dígito
lista é terminal de partida, pois suas produções são fornecidas primeiro
9–2+5
• 9 é uma lista, pois 9 é um dígito;
•9 – 5 é uma lista, pois 9 é uma lista e 5 é um dígito;
•9 – 5 + 2 é uma lista, pois 9 – 5 é uma lista e 2 é um dígito
Definição de Sintaxe
• Blocos e listas separadas por “;”
Bloco begin cmds_opcs end
Cmds_opcs lista_cmds | Є
lista_cmds lista_cmds; cmd | cmd
Exercício 1
Árvores gramaticais
Demonstra como o símbolo de partida de uma gramática deriva uma cadeia
X Y Z
digito
lista
lista digito
digito
9 - 5 + 2
Ambiguidade
• Quando uma gramática possui mais que
uma árvore gramatical gerando uma
cadeia de tokens
cadeia cadeia
2 cadeia cadeia
cadeia cadeia 9 +
-
2
9 5 5
Eliminação da Ambiguidade
Existem duas maneiras:
Exercício
Associatividade dos Operadores
9 + 5 + 2 é equivalente a (9 + 5) + 2
2 cadeia cadeia
cadeia cadeia a =
+
c
9 5 b
Tabela Associatividade em PHP
Associação Operador
esquerda [
não associativo ++ --
não associativo ~ - (int) (float) (string) (array)
(object) (bool) @
não associativo instanceof
direita !
esquerda */%
esquerda +-.
esquerda &&
esquerda ||
esquerda ?:
direita = += -= *= /= .= %= &= |= ^=
<<= >>=
Precedência de Operadores
Considerando 9 + 5 * 2
Existem duas possíveis interpretações (9 + 5) * 2 e 9 + (5 * 2).
digito Y | A | X | B
lista1 A*X
lista2 lista1+B
Tokens terminais = := * + Y A X B
Não-terminais lista1 lista2
Exercícios
if(3 % 2 == 0){
printf (“Número par”);
4++;
}
else{ }
dígitos 3 | 2 | 0 | 4
expr 3%2==0
cmd printf(“numero par”);4++
cmd1 if(expr )cmd else Є
voltar
Exercícios
• Cria a árvore gramatical para a sentença
• 4–3/5
lista
lista
- dígito /
4 3 5 voltar