Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouClara Reza Alterado mais de 10 anos atrás
1
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso
2
Aula 17 2 Construção de um Parser Vamos construir sem lookahead Decisões chave Shift ou Reduce Qual a produção a reduzir? Ideia básica Construir um DFA para controlar acções de shift e de reduce O mesmo que, converter gramática por autómato de pilha (pushdown automaton) Codificar controlo de estados finitos numa tabela de parse
3
Aula 17 3 Estados do Parser Sequência de Tokens na entrada ($ para sinalizar o fim da entrada) Estado corrente do autómato de estados finitos Duas Pilhas Pilha de Estados (implementa autómato de estados finitos) Pilha de Símbolos (terminais da entrada e não-terminais das reduções)
4
Aula 17 4 Integração de controlo dos estados finitos Acções Coloca símbolos e estados na pilha Reduzir de acordo com uma dada produção Aceitar Erro Acção seleccionada é uma função de Símbolo corrente na entrada Estado corrente do controlo de estados finitos Cada acção especifica o próximo estado Implementar o controlo utilizando a tabela do parser
5
Aula 17 5 Implementa controlo dos estados finitos Em cada estado, ver Tabela[topo da pilha de estados][símbolo na entrada] Em seguida, realizar acção Tabela do Parser
6
Aula 17 6 Exemplo de Tabela do Parser S X $(1) X (X)(2) X ( )(3) GramáticaEntrada Pilha de Estados Pilha de Símbolos (()) X s0
7
Aula 17 7 Shift para sn Coloca o token na entrada na pilha de símbolos Coloca sn na pilha de estados Avança para o próximo símbolo na entrada Tabela do Parser
8
Aula 17 8 Reduce (n) Retira itens das duas pilhas quantas vezes quantos os símbolos no RHS da regra n Coloca LHS da regra n na pilha de símbolos Ver Tabela[topo da pilha de estados][topo da pilha de símbolos] Coloca esse estado (na parte goto da tabela) na pilha de estados Tabela do Parser
9
Aula 17 9 Aceitar Parar a análise e reportar sucesso Erro Parar a análise e reportar erro Tabela do Parser
10
Aula 17 10 S X $(1) X (X)(2) X ( )(3) Gramática (())$ s0 Tabela do Parser em acção Entrada Pilha de Estados Pilha de Símbolos
11
Aula 17 11 S X $(1) X (X)(2) X ( )(3) (())$ s0 GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
12
Aula 17 12 S X $(1) X (X)(2) X ( )(3) ())$ s0 ( s2 GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
13
Aula 17 13 S X $(1) X (X)(2) X ( )(3) ())$ s0 ( s2 GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
14
Aula 17 14 S X $(1) X (X)(2) X ( )(3) ))$ s0 ( s2 ( GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
15
Aula 17 15 S X $(1) X (X)(2) X ( )(3) ))$ s0 ( s2 ( GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
16
Aula 17 16 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 ( s5 ) GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
17
Aula 17 17 )$ s0 ( s2 ( s5 ) S X $(1) X (X)(2) X ( )(3) GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
18
Aula 17 18 )$ s0 ( s2 ( s5 ) S X $(1) X (X)(2) X ( )(3) GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 1: pop das pilhas
19
Aula 17 19 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 1: pop das pilhas
20
Aula 17 20 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 2: push não-terminal
21
Aula 17 21 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 X GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 2: push não-terminal
22
Aula 17 22 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 X GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 3: usar Goto, push novo estado
23
Aula 17 23 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 X s3 GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 3: usar Goto, push novo estado
24
Aula 17 24 S X $(1) X (X)(2) X ( )(3) )$ s0 ( s2 X s3 GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
25
Aula 17 25 S X $(1) X (X)(2) X ( )(3) $ s0 ( s2 X s3 s4 ) GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
26
Aula 17 26 S X $(1) X (X)(2) X ( )(3) $ s0 ( s2 X s3 s4 ) GramáticaEntrada Pilha de Estados Pilha de Símbolos Tabela do Parser em acção
27
Aula 17 27 S X $(1) X (X)(2) X ( )(3) $ s0 ( s2 X s3 s4 ) GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 1: pop pilhas
28
Aula 17 28 S X $(1) X (X)(2) X ( )(3) $ s0 GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 1: pop pilhas
29
Aula 17 29 S X $(1) X (X)(2) X ( )(3) $ s0 GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 2: push não-terminal
30
Aula 17 30 S X $(1) X (X)(2) X ( )(3) $ s0 X GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 2: push não-terminal
31
Aula 17 31 S X $(1) X (X)(2) X ( )(3) $ s0 X GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 3: usar Goto, push novo estado
32
Aula 17 32 S X $(1) X (X)(2) X ( )(3) $ s0 X s1 GramáticaEntrada Pilha de Estados Pilha de Símbolos Passo 3: usar Goto, push novo estado
33
Aula 17 33 S X $(1) X (X)(2) X ( )(3) $ s0 S s1 GramáticaEntrada Pilha de Estados Pilha de Símbolos Aceitar a String!
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.