UPE Caruaru Sistemas de Informao Disciplina Compiladores Prof

  • Slides: 21
Download presentation
UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof. : Paulemir G. Campos

UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof. : Paulemir G. Campos Análise Léxica (Parte 3) 1/3/2022 Comp - Prof. Paulemir Campos 1

Roteiro da Aula n Autômato Finito Não-Determinístico n Referências 1/3/2022 Comp - Prof. Paulemir

Roteiro da Aula n Autômato Finito Não-Determinístico n Referências 1/3/2022 Comp - Prof. Paulemir Campos 2

Autômato Finito Não-Determinístico 1/3/2022 Comp - Prof. Paulemir Campos 3

Autômato Finito Não-Determinístico 1/3/2022 Comp - Prof. Paulemir Campos 3

Definição n n Um Autômato Finito Não-Determinístico (NFA – Nondeterministic Finite Automaton) é todo

Definição n n Um Autômato Finito Não-Determinístico (NFA – Nondeterministic Finite Automaton) é todo autômato que pode ocorrer escolha para que próximo estado seguir. Ou seja, existem mais de um arco com mesmo rótulo saindo de um estado, ou com arcos especiais de rótulo . 1/3/2022 Comp - Prof. Paulemir Campos 4

Exemplo de NFA a a a a Um NFA que reconhece o conjunto de

Exemplo de NFA a a a a Um NFA que reconhece o conjunto de todas as strings de a’s cujo tamanho é um múltiplo de dois ou de três. 1/3/2022 Comp - Prof. Paulemir Campos 5

Exemplo de NFA n n Note que na primeira transição, a máquina deve escolher

Exemplo de NFA n n Note que na primeira transição, a máquina deve escolher que caminho seguir. Isto é requerido sempre que há escolha de caminho que conduzem a aceitação de uma string. 1/3/2022 Comp - Prof. Paulemir Campos 6

Exemplo de NFA n Em outras palavras, a máquina deve “adivinhar” que caminho seguir,

Exemplo de NFA n Em outras palavras, a máquina deve “adivinhar” que caminho seguir, e deve sempre fazer isto corretamente. 1/3/2022 Comp - Prof. Paulemir Campos 7

Outro Exemplo de NFA a a a Um outro NFA que também reconhece o

Outro Exemplo de NFA a a a Um outro NFA que também reconhece o conjunto de todas as strings de a’s cujo tamanho é um múltiplo de dois ou de três. 1/3/2022 Comp - Prof. Paulemir Campos 8

Outro Exemplo de NFA n Neste caso, a máquina deve escolher qual dos arcos

Outro Exemplo de NFA n Neste caso, a máquina deve escolher qual dos arcos de rótulo especial deverá seguir. 1/3/2022 Comp - Prof. Paulemir Campos 9

Outro Exemplo de NFA n Outra questão é, caso exista estado com alguns arcos

Outro Exemplo de NFA n Outra questão é, caso exista estado com alguns arcos rotulados com e alguns arcos rotulados por caracteres, a máquina deve escolher: n n 1/3/2022 Ou, consumir um caracter de entrada e seguir pelo arco correspondente; Ou, seguir um arco com rótulo . Comp - Prof. Paulemir Campos 10

Convertendo uma Expressão Regular num NFA n Um autômato não-determinístico é uma notação útil

Convertendo uma Expressão Regular num NFA n Um autômato não-determinístico é uma notação útil porque é fácil de converter uma expressão regular para um NFA. 1/3/2022 Comp - Prof. Paulemir Campos 11

Convertendo uma Expressão Regular num NFA n O algoritmo de conversão transforma cada expressão

Convertendo uma Expressão Regular num NFA n O algoritmo de conversão transforma cada expressão regular num NFA com: n n 1/3/2022 Uma cauda (arco inicial); E, uma cabeça (estado final). Comp - Prof. Paulemir Campos 12

Convertendo uma Expressão Regular num NFA n Por exemplo, abaixo é mostrado uma expressão

Convertendo uma Expressão Regular num NFA n Por exemplo, abaixo é mostrado uma expressão regular (a) de símbolo único convertida num NFA. a 1/3/2022 Comp - Prof. Paulemir Campos 13

Convertendo uma Expressão Regular num NFA n Para converte a expressão regular ab num

Convertendo uma Expressão Regular num NFA n Para converte a expressão regular ab num NFA, deve-se utilizar concatenação, de modo que a cabeça de a fique enganchada na cauda de b, conforme mostrado abaixo: a 1/3/2022 b Comp - Prof. Paulemir Campos 14

Convertendo uma Expressão Regular num NFA n Em geral, qualquer expressão regular M terá

Convertendo uma Expressão Regular num NFA n Em geral, qualquer expressão regular M terá algum NFA com uma cauda e uma cabeça. M 1/3/2022 Comp - Prof. Paulemir Campos 15

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA: a a

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA: a a M N M|N 1/3/2022 Comp - Prof. Paulemir Campos 16

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA (Cont. ):

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA (Cont. ): M. N 1/3/2022 M Comp - Prof. Paulemir Campos N 17

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA (Cont. ):

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA (Cont. ): M* M 1/3/2022 Comp - Prof. Paulemir Campos 18

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA (Cont. ):

Convertendo uma Expressão Regular num NFA n Expressões Regulares e correspondentes NFA (Cont. ): M+ construído como M. M* M? construído como M | “abc” construído como a. b. c [abc] 1/3/2022 a b c Comp - Prof. Paulemir Campos 19

Exemplo de NFA para Quatro Expressões Regulares Usuais f 2 IF 3 i a

Exemplo de NFA para Quatro Expressões Regulares Usuais f 2 IF 3 i a 4 . . a-z 5 6 . 1 . 3 8 . 0 -9 z qualquer 14 7 . ID . . . caracter 1/3/2022 15 Erro 9 Num_Int 0 0 . . . 10 11 . . . 9 9 Comp - Prof. Paulemir Campos 12 13 20

Referências n Appel, A. W. Modern Compiler Implementation in C. Cambridge University Press, 1998.

Referências n Appel, A. W. Modern Compiler Implementation in C. Cambridge University Press, 1998. (Capítulo 2, seção 2. 4). 1/3/2022 Comp - Prof. Paulemir Campos 21