A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

III – Análise sintáctica

Apresentações semelhantes


Apresentação em tema: "III – Análise sintáctica"— Transcrição da apresentação:

1 III – Análise sintáctica
DEI Papel do analisador sintáctico Diagnóstico e recuperação de erros Uso de gramáticas independentes de contexto Bibliografia aconselhada: Aho, Sethi e Ullman – secções 4.1 e 4.2 Appel – secção 3.1 Jorge Morais LFA 1999/

2 Papel do analisador sintáctico
DEI Jorge Morais LFA 1999/

3 Tipos de analisadores sintácticos
DEI Parsers universais: reconhecem todas as gramáticas independentes de contexto mas são ineficientes Parsers descendentes (Top-Down): reconhecimento feito da raíz para as folhas Parsers ascendentes (Bottom-Up): reconhecimento feito das folhas para a raíz Jorge Morais LFA 1999/

4 Tipos de gramáticas DEI
A maioria dos métodos trabalham apenas com subclasses de gramáticas, mas são suficientemente expressivas Gramáticas LL(k) (Left-to-right parse, Leftmost-derivation, k-token lookahead): mais usado para parsers implementados directamente Gramáticas LR(k) (Left-to-right parse, Rightmost-derivation, k-token lookahead): mais usado com ferramentas automáticas Jorge Morais LFA 1999/

5 Erros sintácticos DEI A maioria dos erros no código fonte são erros sintácticos Erros frequentes: Tecla de shift Carácter em falta ou em excesso Chavetas encadeadas Erros resultantes de outros: variáveis mal declaradas não entram na tabela de símbolos Jorge Morais LFA 1999/

6 Estratégias de recuperação
DEI Modo de pânico: eliminar tokens até chegar a um de sincronização (delimitadores como ‘;’ e ‘}’); uma recuperação por instrução. Recuperação ao nível da frase: substituição, adição e remoção de caracteres para tentar encontrar um frase correcta; má quando os erros ocorrem antes Jorge Morais LFA 1999/

7 Estratégias de recuperação (cont.)
DEI Produções de erros: aumentar a gramática com os erros sintácticos mais comuns Correcção global: fazer o número mínimo de alterações possíveis; enorme custo em termos de tempo e espaço Jorge Morais LFA 1999/

8 Estruturas sintácticas
DEI Uso de gramáticas independentes de contexto: facilidade de construção, recursividade e clareza Uma instrução do tipo if-then-else pode ser definida recursivamente: Se E é uma expressão e I1 e I2 são instruções então “if E then I1 else I2” é uma instrução Inst  if Expr then Inst else Inst Jorge Morais LFA 1999/

9 Exemplo: expressão aritmética
DEI Expr  Expr Op Expr | PAR_ESQ Expr PAR_DIR | MENOS Expr | ID Op  MAIS | MENOS | MULT | DIV Notação simplificada (quando um token tem um único lexema substitui-se pelo lexema): Expr  Expr Op Expr | ( Expr ) | - Expr | ID Op  + | - | * | / Jorge Morais LFA 1999/

10 Derivação de x * (y + z) DEI
Expr  Expr Op Expr  ID Op Exp  ID * Expr  ID * ( Expr )  ID * ( Expr Op Expr )  ID * ( ID Op Expr )  ID * ( ID + Expr)  ID * ( ID + ID ) A cada ID corresponde um endereço na tabela de símbolos Jorge Morais LFA 1999/

11 Árvore de derivação de x*(y+z)
DEI Jorge Morais LFA 1999/


Carregar ppt "III – Análise sintáctica"

Apresentações semelhantes


Anúncios Google