Escolar Documentos
Profissional Documentos
Cultura Documentos
007 Analise Sintatica
007 Analise Sintatica
Pr-processador
Analisador Lxico
Analisador Sinttico
front-end
Analisador Semntico
Gerador de Cdigo
(intermedirio)
Otimizador
back-end
Gerador de Cdigo
Introduo
final = (nota1 + nota2) / 2;
Analisador Lxico
Id1 = (Id2 + Id3) / 2
Analisador Sinttico
=
Id1
Tabela de Smbolos
/
2
+
Id2
Id3
Id1
final
double
...
Id2
nota1
double
...
Id3
nota2
double
...
...
Introduo
Analisador Semntico
=
Id1
/
intToDouble(2)
+
Id2
Id3
Gerador de Cdigo
(intermedirio)
Tabela de Smbolos
Id1
final
double
...
Id2
nota1
double
...
Id3
nota2
double
...
...
Anlise Lxica
Anlise Lxica
constanteInt
digito digito*
constanteDouble digito digito*. digito*
digito {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
X* Representa uma seqncia de zero ou mais X.
Anlise Sinttica
Verifica se as frases obedecem as regras
sintticas da linguagem:
Por exemplo, uma expresso pode ser definida
como:
expresso + expresso
expresso expresso
(expresso)
constante
Gramticas
Um conjunto de regras de produo, um
smbolo de partida. Uma regra de produo
tem o formato , onde representa o
nome da construo sinttica e representa
uma forma possvel dessa construo:
<expresso> <expresso> + <expresso>
Gramticas
<expr> <expr> + <expr>
| <expr> <expr>
| (<expr>)
| <const>
<const> <const><const>
|0|1|2|3|4|5|6|7|9
Derivao
A verificar se uma frase faz parte da linguagem
gerada pela gramtica, envolve sucessivas
substituies da cadeia de smbolos que ocorre
do lado esquerdo da produo pela sua
construo sinttica correspondente, partindo
do smbolo inicial.
Essa substituio chamada derivao sendo
normalmente denotada pelo smbolo .
Derivao
<expresso>
<expr> + <expr>
(<expr>) + <expr>
(<expr> - <expr>) + <expr>
(<const> - <expr>) + <expr>
(<const><const> - <expr>) + <expr>
(1<const> - <expr>) + <expr>
(10 - <expr>) + <expr>
(10 - <const>) + <expr>
...
(10 - 2) + 3
rvore Sinttica
(10 2) + 3
<expr>
<expr>
(<expr>)
<expr>
<const>
<expr> - <expr>
<const>
10
<const>
-
Gramticas Ambguas
10 2 + 3
<expr>
<expr>
<expr>
<expr>
<expr>
<expr> + <expr>
10
<expr>
<expr> - <expr>
10
Gramticas
<expr> <expr> + <termo>
| <expr> - <termo>
| <termo>
<termo> (<expr>)
| <const>
<expr>
<expr>
<termo>
<expr> - <termo>
<expr>
10
<expr> + <termo>
<expr> - <termo> + <termo>
<termo> - <termo> + <termo>
10 2 + 3
Gramticas
<expr>
<termo>
<fator>
<expr> + <termo>
| <expr> - <termo>
| <termo>
<termo> * <fator>
| <termo> / <fator>
| <fator>
(<expr>)
| <const>
1+2*3
<expr>
<expr>
<termo>
<termo> * <fator>
3
Gramticas
<expr>
<termo>
<fator>
<expr> + <termo>
| <expr> - <termo>
| <termo>
<termo> * <fator>
| <termo> / <fator>
| <fator>
(<expr>)
| <const>
1+2*3
<expr>
<termo>
<termo> * <fator>
Solicita token
Analisador Sinttico
Analisador Semntico
Cdigo Intermedirio
Tabela de Smbolos
...
Gramticas - Exerccios
1.
2.
3.