Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLavínia Melchior Alterado mais de 9 anos atrás
1
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso
2
Aula 12 2 Vocabulário gramatical Derivação à esquerda (Leftmost) Expandir sempre o símbolo não terminal mais à esquerda que resta Derivação à direita (Rightmost) Expandir sempre o símbolo não terminal mais à direita que resta Aplicar primeiro a produção aqui NT 1 T 1 T 2 T 3 NT 2 NT 3 E só depois aos outros símbolos não-terminais
3
Aula 12 3 Ponto Inicial Assumir que a análise lexical produziu uma sequência de tokens (símbolos terminais) Cada token tem um tipo e um valor Tipos correspondem a símbolos terminais Valores correspondem ao conteúdo do token lido Exemplo INT(549) – token que identifica um inteiro de valor lido 549 IF – palavra chave “if” sem necessidade de valor OP(+) – operador com valor +
4
Aula 12 4 Abordagem Básica Começar pelo símbolo Start ou pela primeira produção Construir uma derivação leftmost Se o símbolo leftmost é não-terminal, seleccionar uma produção e aplicá-la Se o símbolo leftmost é terminal, fazer corresponder com a entrada Se todos os terminais foram correspondidos, foi encontrada uma derivação que aceita a String! Chave: encontrar as produções correctas para os símbolos não-terminais
5
Aula 12 5 Gramática do Exemplo INT = [0-9]+ Start Expr Expr Expr “+” Term Expr Expr “-” Term Expr Term Term Term “*” INT Term Term “/” INT Term INT Conjunto de tokens (símbolos terminais): { +, -, *, /, INT }
6
Aula 12 6 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Posição corrente na árvore sintáctica Forma sentencial Entrada que falta 2-2*2 Start
7
Aula 12 7 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2-2*2 Expr Posição corrente na árvore sintáctica Expr Produção Aplicada Start Expr
8
Aula 12 8 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada a faltar 2-2*2 Expr - Term Expr Produção Aplicada Expr Expr - Term Term Expr-
9
Aula 12 9 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2-2*2 Term - Term Expr Produção Aplicada Expr Term Term Expr- Term
10
Aula 12 10 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2-2*2 INT - Term Expr Produção Aplicada Term INT Term Expr- INT Term
11
Aula 12 11 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2-2*2 2 - Term Expr Term Expr- INT 2 Term Token corresponde!
12
Aula 12 12 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta -2*2 2 - Term Expr Term Expr- INT 2 Term Token corresponde!
13
Aula 12 13 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2*2 2 - Term Expr Term Expr- INT 2 Term
14
Aula 12 14 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2*2 2 – Term*INT Expr Term Expr- INT 2 Term INT * Produção Aplicada Term Term * INT
15
Aula 12 15 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2*2 2 – INT*INT Expr Term Expr- INT 2 Term INT * Produção Aplicada Term INT INT
16
Aula 12 16 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2*2 2 – 2*INT Expr Term Expr- INT 2 Term INT * INT 2 Token corresponde!
17
Aula 12 17 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta *2 2 – 2*INT Expr Term Expr- INT 2 Term INT * INT 2 Token corresponde!
18
Aula 12 18 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2 2 – 2*INT Expr Term Expr- INT 2 Term INT * INT 2
19
Aula 12 19 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2 2 – 2*2 Expr Term Expr- INT 2 Term INT 2 * Token corresponde!
20
Aula 12 20 Analisador Sintáctico para a gramática exemplo Start Árvore Sintáctica Forma sentencial Entrada que falta 2 – 2*2 Expr Term Expr- INT 2 Term INT 2 * Análise sintáctica terminou
21
Aula 12 21 Sumário Três acções (mecanismos) Aplicar produção para expandir o símbolo não-terminal corrente na árvore sintáctica Casar o símbolo terminal corrente Aceitar a análise sintáctica como correcta Qual a produção a utilizar por cada símbolo não-terminal? Uma abordagem: Backtracking Tenta uma alternativa Quando for claro que a alternativa falhou tentar outra alternativa
22
Aula 12 22 Analisador Sintáctico Preditivo Alternativa ao backtracking Muito útil para linguagens de programação, que podem ser desenhadas para facilitar a análise Ideia básica Ver à frente na sequência de tokens Decisão de qual a produção a aplicar baseada nos tokens seguintes Utilizaremos a profundidade de um token no mecanismo de ver à frente
23
Aula 12 23 Gramática Exemplo Start Expr Expr Term Expr’ Expr’ “+” Term Expr’ Expr’ “-” Term Expr’ Expr’ Term INT Term’ Term’ “*” INT Term’ Term’ “/” INT Term’ Term’ INT = [0-9]+ Conjunto de tokens (símbolos terminais): { +, -, *, /, INT }
24
Aula 12 24 Pontos de Escolha Assumir que Term’ é a posição corrente na árvore sintáctica 3 produções diferentes a aplicar Term’ “*” INT Term’ Term’ “/” INT Term’ Term’ Utilizar o próximo token para decidir Se o próximo token for *, aplicar Term’ * Int Term’ Se o próximo token for /, aplicar Term’ / Int Term’ De outro modo, aplicar Term’
25
Aula 12 25 Múltiplas Produções com o mesmo prefixo no RHS Gramática Exemplo Nt IF THEN Nt IF THEN ELSE Assumir que Nt é a posição corrente na árvore sintáctica e IF é o próximo token Qual a produção a aplicar?
26
Aula 12 26 Solução: factorizar a gramática à esquerda Nova gramática factoriza o prefixo comum numa única produção Nt IF THEN Nt’ Nt’ ELSE Nt’ Nenhuma escolha quando o próximo token é um IF Todas as alternativas foram unificadas numa única produção
27
Aula 12 27 Símbolos não-terminais E as produções com símbolos não- terminais? Nt Nt 1 1 Nt Nt 2 2 Tem de se escolher com base nos primeiros terminais possíveis que Nt 1 e Nt 2 podem gerar E se Nt 1 ou Nt 2 podem gerar ? Tem de se escolher com base em 1 e 2
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.