02. análise léxica.pdf

16
7/25/2019 02. Análise Léxica.pdf http://slidepdf.com/reader/full/02-analise-lexicapdf 1/16 Análise Léxica Compiladores http://www.ybadoo.com.br/ Compiladores Análise Léxica Cristiano Lehrer http://www.ybadoo.com.br/

Upload: magustharoth

Post on 28-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 1/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Compiladores

Análise Léxica

Cristiano Lehrer

http://www.ybadoo.com.br/

Page 2: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 2/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Introdução !/"#

● Análise léxica é a primeira fase do compilador.● A função do analisador léxico também denominado scanner é:

● !a"er a leitura do pro#rama fonte caractere a caractere e tradu"i$lopara uma se%u&ncia de s'mbolos léxicos também chamados tokens .

● (xemplos de s'mbolos léxicos:● )ala*ras reser*adas.● +dentificadores.● Constantes.● ,peradores da lin#ua#em.

Page 3: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 3/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Introdução $/"#

● -urante o processo de análise léxica são despre"ados caracteresnão si#nificati*os como espaços em branco e comentários.

● Além de reconhecer os s'mbolos léxicos o analisador tambémreali"a outras funç es:

● Arma"ena al#uns desses s'mbolos identificadores e constantes0 emtabelas internas.

● +ndica a ocorr&ncia de erros léxicos.● A se%u&ncia de tokens produ"ida pelo analisador léxico é utili"ada

como entrada pelo m1dulo se#uinte do compilador o analisador

sintático.

Page 4: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 4/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Introdução "/"#

● , pro#rama fonte é *isto de forma diferente pelo analisadores:● Analisador léxico:

– , pro#rama fonte é uma se%u&ncia de pala*ras de uma lin#ua#em re#ular .● Analisador sintático:

– (ssa se%u&ncia de tokens constitui uma sentença de um lin#ua#em li*re docontexto .

Page 5: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 5/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

%o&ens !/"#

● Tokens ou s'mbolos léxicos são as unidades básicas do texto dopro#rama.

● Cada token é representado internamente por tr&s informaç es:● Classe do token :

– 2epresenta o tipo do token reconhecido como identificador operador.● 3alor do token :

– -epende da classe. )or exemplo para constantes numéricas o *alor dotoken pode ser o n4mero inteiro representado pela constante.

● )osição do token : – +ndica o local do texto fonte linha e coluna0 onde ocorreu o token . – +nformação utili"ada para indicar o local de erros.

Page 6: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 6/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

%o&ens $/"#

● (m função do campo *alor do token os tokens podem ser di*ididosem dois #rupos:

● Tokens simples: – 5ão t&m um *alor associado por%ue a classe do token descre*e$o

completamente. – Correspondem a elementos fixos da lin#ua#em.

● Tokens com ar#umento: – 6&m um *alor associado. – Correspondem aos elementos da lin#ua#em definidos pelo pro#ramador

como por exemplo identificadores constantes numéricas e cadeias decaracteres.

Page 7: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 7/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

%o&ens "/"#

● (xemplo:● while I < 100 do I := J + I;

– 7while 8 – 7id 98

– 7 8 – 7cte ;<8 – 7do 8 – 7id 98 – 7:= 8 – 7id ;>8 – 7? 8 – 7id 98 – 7@ 8

Page 8: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 8/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

%abela de '(mbolos

● (strutura de dados #erado pelo compilador com o ob eti*o dearma"enar informaç es sobre os nomes identificadores de *ariá*eisde parBmetros de funç es de procedimentos entre outras0definidos no pro#rama fonte.

● Associa atributos tipo escopo limites no caso de *etores e n4merode parBmetros no caso de funç es0 aos nomes definidos pelopro#ramador.

● Começa a ser constru'da durante a análise léxica %uando osidentificadores são reconhecidos.

6oda *e" %ue um identificador é reconhecido no pro#rama fonte a6abela de 'mbolos é consultada a fim de *erificar se o nome á estáre#istrado@ caso não este a é feita sua inserção na tabela.

Page 9: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 9/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Analisadores Léxicos !/$#

,bter estadoinicial

,bter pr1ximos'mbolo

(stado atualé finalD )r1ximoestado

7não há8 7há8

6oEen nãoreconhecido

7não há8 7há8

6oEenreconhecido

7sim8 7não8

A áli Lé i

Page 10: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 10/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Analisadores Léxicos $/$#

● Al#oritmo para um analisador léxico:RECONHECE(M, T)

1 s ← EST !O"INICI #(M)

$ while TEM"S%M&O#OS(T)

' do ← R* IMO"S%M&O#O(T)

if E ISTE" R* IMO"EST !O(M, s, )

- then s ← R* IMO"EST !O(M, s, )

. else return false

/ if EST !O" IN #(M, s)

then return true

2 then return false

A áli Lé i

Page 11: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 11/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Lin)ua)em 'I*+L, !/-#

● Cada instrução +F)L( consiste em um n4mero de linha e umcomando.

● ,s n4meros de linha de*em aparecer em ordem crescente.● -e*em ser usadas apenas letras min4sculas.● , nome de *ariá*el tem uma 4nica letra sendo do tipo inteiro.● ,peradores aritméticos:

● Adição ?0 subtração $0 multiplicação G0 e di*isão /0.● ,peradores relacionais:

● Faior H0 maior ou i#ual H=0 menor 0 menor ou i#ual =0 i#ual==0 desi#ual I=0.

Análise Léxica

Page 12: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 12/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Lin)ua)em 'I*+L, $/-#

Comando Instrução de ,xemplo .escrição

)oto 9J #oto K

6ermina a execução do pro#rama.

rem J rem isto é um comentário Mual%uer texto se#uindo o comando rem éapenas para prop1sitos de documentação eé i#norado pelo compilador.

input <J input x (xibe um ponto de interro#ação para pedirao usuário para inserir um inteiro. L& esseinteiro do teclado e arma"ena o inteiro em x.

let NJ let u = K G / O <P0 Atribui a u o *alor de 0 1 2 "-# . ,bser*e%ue uma expressão arbitrariamentecomplexa pode aparecer Q direita do sinalde i#ualdade.

print ;J print w (xibe o *alor de w.6ransfere o comando do pro#rama para alinha K .

i3 < if i == x #oto NJ Compara i e x para i#ualdade e transfere o

controle do pro#rama para a linha 45 se acondição for *erdadeira@ caso contráriocontinua a execução com a pr1ximainstrução.

end RR end

Análise Léxica

Page 13: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 13/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Lin)ua)em 'I*+L, "/-#

Constante 6umérica ; 77 ;K8ariá9el > :7 ;,6%,; < <7 ;P,=> K ?7 ;9@ J

A P ;0 9 >

/ N <# R )oto K

;J7 ;; P< ;> erro RR

: ;<

rem

inputletprint

i3 end

● 2epresentação interna dos tokens :

Análise Léxica

Page 14: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 14/16

Análise LéxicaCompiladores

http://www.ybadoo.com.br/

Lin)ua)em 'I*+L, /-#

1000 3e4 E5 o56373 o 47io3 de dois i56ei3os <ENTER8

1100 i59 6 <ENTER8

1$00 i59 6 <ENTER8

1'00 i < >o6o $000 <ENTER8

1 00 93i56 <ENTER8

1-00 >o6o '000 <ENTER8

$000 93i56 <ENTER8'000 e5d <EO 8

● )ro#rama na lin#ua#em +F)L(:

Análise Léxica

Page 15: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 15/16

Compiladoreshttp://www.ybadoo.com.br/

Lin)ua)em 'I*+L, B/-#

?1, 15@?-0@?'@

?1, $5@?-1@?$, 1A@?'@

?1, '5@?-1@?$, $A@?'@

?1, 5@?--@?$, 1A@?1$@?$, $A@?- @?1, -5@?'@

?1, .5@?-'@?$, 1A@?'@

?1, /5@?- @?1, 5@?'@

?1, -5@?-'@?$, $A@?'@?1, 5@?-.@? @

● 2esultado do analisador léxico:

Análise Léxica

Page 16: 02. Análise Léxica.pdf

7/25/2019 02. Análise Léxica.pdf

http://slidepdf.com/reader/full/02-analise-lexicapdf 16/16

Compiladoreshttp://www.ybadoo.com.br/

Lin)ua)em 'I*+L, -/-#

● 6abela de 'mbolos

C di)o 8alor C di)o 8alor ;n ;JJJ ;* x>n ;;JJ >* y

<n ;>JJKn ;<JJn >JJJ

Pn ;KJJ9n ; JJNn <JJJ