Linguagens e Programação
Analisador léxico
Programa que lê um ficheiro de texto (p.e.
source code) e produz uma sequência de
componentes léxicos (
tokens
)
As sequências de tokens produzidas
serão utilizados pelo analisador sintático (
parser
)
permitem identificar erros léxicos na entrada.
Analisador léxico
tokens
São padrões de caracteres com um significado
especial num determinado contexto.
São definidos por expressões regulares sobre um
alfabeto.
lexemas
Ocorrências de um
token no âmbito da informação
analisada.
São constituídos pelos carateres da informação que
compõe um
token.
IF
LPAREN
ID
GEQ
ID
RPAREN
LBRACK
Analisador léxico
Exemplo:
if(x>=y){
y=100;
}
ID
ASSIGN
INT
SCOLON
RBRACK
lexema:
FLEX
Ferramenta que permite gerar analisadores
Flex
Formato de um ficheiro FLEX
%{
int contadorNumeros=0;
%}
DIG [0-9]
%%
{DIG}+ {contadorNumeros++;
printf("Número: %s\n",yytext);}
%%
main() {
yylex();
printf("foram encontrados %d números\n", contadorNumeros);
}
Dec
la
ra
ç
õe
s
M
a
c
ros
Re
gra
s
Ro
tinas
e
m
C
Flex
Ambiente de trabalho
linux
•
ssh.dei.isep.ipp.pt
,
ssh1.dei.isep.ipp.pt
,
ssh2.dei.isep.ipp.pt
,
ssh3.dei.isep.ipp.pt
Flex
Geração do código fonte do analisador léxico
Compilação do analisador léxico
>> flex ficheiro.flex
>> flex –oficheiro.c ficheiro.flex
Produz:
ficheiro.c
Produz:
lex.yy.c
>> gcc ficheiro.c -lfl
>> gcc –oPrograma ficheiro.c -lfl
Produz:
a.out
Produz:
Flex
Execução do analisador léxico
>> ./Programa <ficheiro.txt
>> ./Programa
Xpto quert as sfsfl
Sf skfk flas kn ebs
Sf sfsç mf827 d0e 9
Fkfkh as dh 9d
<Ctrl+D>
Corresponde ao caracter
Propostas de Exercícios
1.
Escrever um programa que permita contar
o número de ocorrências de uma cadeia de
caracteres
ex1.flex
%{
int contador=0;
%}
%%
ISEP|isep {contador++;}
.|\n
%%
main()
{
yylex();
printf("numero de ocorrências : %d\n",contador);
}
Propostas de exercícios
1.
>> flex –oex1.c ex1.flex
>> gcc –oProgEx1 ex1.c -lfl
Info.txt
Em 1989, o ISEP é integrado no subsistema de Ensino Superior Politécnico, passando o seu modelo de formação a integrar dois cursos distintos: o bacharelato, com a duração de três anos, e os Cursos de Estudos Superiores Especializados, com a duração de dois anos. Em 1998, no âmbito de uma nova reforma do ensino superior politécnico, o ISEP passa a
ministrar as actuais licenciaturas bietápicas, caracterizadas pela sua estruturação em dois ciclos - o bacharelato com a duração de três anos - o que possibilita a inserção no mercado de trabalho, seguido de um segundo ciclo de dois anos - frequentado essencialmente em regime pós-laboral - para a obtenção da licenciatura.
Em 2006, por força da adesão de Portugal à Declaração de Bolonha, o isep disponibilizará um novo Plano de Estudos, constituído por licenciaturas e mestrados nas diversas áreas da Engenharia, assim iniciando um novo ciclo da sua já longa história.
Em 2008, o Presidente da República Portuguesa, enaltece a qualidade do trabalho desenvolvido no ISEP, durante o Roteiro para a Ciência. A passagem pelo isep constitui a primeira visita oficial de um chefe de Estado português a um instituto politécnico. O ISEP atribui o primeiro grau de mestre pós-Bolonha.