Aula 21 07
Notações
Construções repetitivas e opcionais
Comuns -> Linguagens de programação
1) Repetição
a. Como representar:
i. Recursão -> Direita / Esquerda ii. A->(alpha)A|B A->A(alpha)|B
Onde (alpha) e B são cadeias de terminais e não terminais b. Expressões (*)
i. EBNF
A->B(alpha)* e A->(alpha)*B
A->B{(alpha)} e A->{(alpha)}B
c. Exemplo:
i. DECL-SEQ - >DECL; DECL-SEQ|DECL (recursão a direita) ii. DECL -> S iii. ---- iv. EBNF
1. DECL-SEQ -> {DECL;}DECL (direita)
2. Ou
3. DECL-SEQ -> DECL {;DECL} (esquerda)
2) Opcionais
a. Declaração -> IF-DECL|OUTRA
b. IF-DECP -> IF(exp) DECLARACAO | IF(exp) DECLARAO ELSE DECLARACAO
c. –
d. Em EBNF é especificada por [...]
i. Declaracao -> if-decl | OUTRA ii. If-decl -> IF(exp) declaracao [ELSE declaracao] iii. Exp -> 0|1
Diagramas sintáticos
São representações gráficas visuais para regras EBNF
Compostos por:
Figuras fechadas qe representam terminais e não-terminais
Linhas direcionadas:
Sequências
Escolhas
Rotulos não-terminais para cada diagrama
Circulos/formas quais -> terminais
Quadrados/retângulos -> Não-terminais
Ex: Fator -> (exp) |Numero
A->{B}
A->[B]
Exercícios
Exp -> Exp soma Termo | Termo
Soma -> +|-
Termo -> Termo mult fator | fator
Mult -> *
Fator -> (exp)|Numero
Exp -> termo {soma termo}
Soma-> +|-
Termo -> fator {mult fator}
Mult -> *
Fator -> (exp)|Numero
\
Análise sintática descendente (top->down)
Analisa a cadeia de marcas de entrada pelo acompanhamento dos passos de uma derivação à esquerda
Descentente:
Forma como a árvore sintática é percorrida
Formas de análise sintática descendentes
Analisadores com retrocesso -> testa diferentes possibilidades
Analisadores preditivos -> tenta prever a construção segunte com a base a uma ou mais marcas a frente.
Algoritmos
Decententes Recursivos
Li(1) { { L -> retrocesso de esquerda a direita {L-> acompanha uma derivação a esquerda para a cadeia de entrada {(1) -> Usa apenas um simbolo da entrada para