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

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

III – Análise sintáctica Papel do analisador sintáctico Diagnóstico e recuperação de erros Uso de gramáticas independentes de contexto Bibliografia aconselhada:

Apresentações semelhantes


Apresentação em tema: "III – Análise sintáctica Papel do analisador sintáctico Diagnóstico e recuperação de erros Uso de gramáticas independentes de contexto Bibliografia aconselhada:"— Transcrição da apresentação:

1 III – Análise sintáctica 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 LFA 1999/ Jorge Morais

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

3 Tipos de analisadores sintácticos 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 LFA 1999/ Jorge Morais

4 Tipos de gramáticas 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 LFA 1999/ Jorge Morais

5 Erros sintácticos 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 LFA 1999/ Jorge Morais

6 Estratégias de recuperação 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 LFA 1999/ Jorge Morais

7 Estratégias de recuperação (cont.) 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 LFA 1999/ Jorge Morais

8 Estruturas sintácticas 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 LFA 1999/ Jorge Morais

9 Exemplo: expressão aritmética 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 + | - | * | / LFA 1999/ Jorge Morais

10 Derivação de x * (y + z) 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 LFA 1999/ Jorge Morais

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


Carregar ppt "III – Análise sintáctica Papel do analisador sintáctico Diagnóstico e recuperação de erros Uso de gramáticas independentes de contexto Bibliografia aconselhada:"

Apresentações semelhantes


Anúncios Google