02. análise léxica.pdf
TRANSCRIPT
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/
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.
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.
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 .
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.
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.
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
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.
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
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
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
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
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
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
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
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