ANALISE LÉXICAS (LEX)
Análise léxica é o processo de analisar a entrada de linhas de caracteres e produzir uma seqüência de símbolos chamados “símbolos léxicos”, ou somente “símbolos” (tokens), que podem ser manipulados mais facilmente por um parser (leitor de saída).
Quando analisamos uma palavra, podemos se existe ou não algum caracter que não faz parte do nosso alfabeto, ou um alfabeto inventado por nós. O analisador léxico é a primeira etapa de um compilador.
Neste processo podem-se destacar três atividades como fundamentais:
Extração e classificação dos tokens;
Eliminação de delimitadores e comentários;
Recuperação de Erros.
O analisador léxico funciona de duas maneiras:
Primeiro estado da análise
A primeira etapa lê a entrada de caracteres, um de cada vez, mudando o estado em que os caracteres se encontram. Quando o analisador encontra um caracter que ele não identifica como correto, ele o chama de “estado morto”, voltando à última análise que foi aceita e assim tem o tipo e comprimento do léxico válido.
Segundo estado da análise
Nesta etapa são repassados os caracteres do léxico para produzir um valor. O tipo do léxico combinado com seu valor é o que adequadamente constitui um símbolo, que pode ser dado a um parser.
O parser passa a se preocupar com a questão de sintática deixando-se de se preocupar com os símbolos. Isto leva a eficiência de programação, e não eficiência de execução. Portanto, desde que o analisador léxico é o subsistema que deve examinar cada caracter único de entrada, podem ser passos intensivos e o desempenho se torna crítico, pode estar usando um compilador.
As desvantagens da Análise Léxica são o tratamento de dados em branco, formato fixo de entrada e a inexistência de palavras reservadas, em determinadas linguagens.
Análise léxica do Python
Como a linguagem de programação Python passa por um interpretador, existe a necessidade implícita de analisar o código-fonte colocado dentro do interpretador