Escolar Documentos
Profissional Documentos
Cultura Documentos
Anlise Sinttica
Analisa os TOKENS recebidos do Analisador Lxico
A partir da, produz uma rvore de derivao Responsabilidade de eliminar redundncia e elementos suprfluos A rvore hierrquica composta por TOKENS possui
Anlise Sinttica
Para entender como funciona o Analisador Sinttico,
incluem
Smbolos Terminais Aqueles que fazem parte do cdigo fonte Smbolos No-terminais Aqueles que geram outras regras
while
<
< variavel>
100
< expressao>
< expressao>
montante
:=
deposito_inicial
taxa_de_juros *
60
Especificao de uma LP
Uma linguagem de programao pode ser definida pela: Descrio da aparncia de seus programas
Sintaxe Semntica
programas
Traduo dirigida por sintaxe
Comando if-else
token
token
No-terminais
esquerdo, uma seta e uma seqncia de tokens e/ou no terminais no lado direito da seta
No-terminais
Itlico
OU
|
Smbolos no-terminais
lista
0|1|2|3|4|5|6|7|8|9
Smbolos terminais = tokens
Exemplo 2 A linguagem PASCAL permite definir uma lista vazia A gramtica abaixo permite a construo de uma lista em PASCAL
bloco begin cmd_opcs end cmd_opcs lista_cmds | lista_cmds lista_cmds ; cmd | cmd
rvores Gramaticais
Utilizadas para mostrar como um smbolo de partida,
A X Y Z
rvores Gramaticais
rvore gramatical para 9 5 + 2
lista lista + digito | lista - digito | dgito
lista
lista
+
dgito
dgito
lista
dgito
rvores Gramaticais
Uma rvore gramatical possui as seguintes
propriedades 1. A raiz rotulada pelo smbolo de entrada da gramtica 2. Cada folha um token ou 3. Cada n interior um no-terminal 4. Se A um no-terminal e X1, X2 e Xn so seus filhos A X1 X2 Xn uma produo 5. Se A , ento deve possui um nico filho:
rvores Gramaticais
A leitura sempre deve ser feita da esquerda para a
direita
lista
lista
+
dgito
dgito
lista
dgito
Ambiguidade
Uma gramtica que pode ter mais do que uma rvore
gramatical gerando uma mesma cadeia de tokens dita ambgua Para mostrar que uma gramtica ambigua necessrio encontrar uma cadeia de tokens que tenha mais do que uma rvore gramatical
Ambiguidade
As LPs devem ser definidas de modo a no permitir
amiguidades
cadeia
Ambiguidade
cadeia cadeia cadeia cadeia cadeia cadeia cadeia cadeia
cadeia
cadeia
+
cadeia
direita
So necessrias convenes para saber que operador
so associativos a esquerda
+
dgito
= direita
letra = direita
lista
dgito
letra
c 9
Precedncia de Operadores
9+5*2 (9 + 5) * 2 9 + (5 * 2) A associatividade de + e de * no resolve essa
ambigidade pelo fato de que os operadores da direita e da esquerda dos operandos so diferentes
Precisamos conhecer a precedncia relativa dos
operadores
Precedncia de Operadores
Na matemtica, * e tm precedncia mais alta do que
Sintaxe de Expresses
So criados dois no-terminais para representar os dois
nveis de precedncia expr e termo criado um no-terminal extra para gerar as unidades bsicas das expresses fator
termo termo * fator | termo / fator | fator
fator
expr
digito | (expr)
Sintaxe de Expresses
expr termo fator
expr + termo | expr termo | termo termo * fator | termo / fator | fator digito | (expr)
Sintaxe de Comandos
cmd
id := expr | if expr then cmd | if expr then cmd else cmd | while expr do cmd | begin cmd_opcs end
David Ferrer Erick Felix Jeferson Meira Marcelo Henrique Roberto Rufino