Compiladores
Analisador léxico: O analisador léxico é o responsável por identificar os tokens dentro do código fonte, ou seja, ele varre o código fonte caractere a caractere identificando os lexemas e classificando-os (ex: palavras reservadas,delimitadores e identificadores) com base em uma tabela de símbolos pré-definida.
Analisador sintático: O analisador sintático é responsável por verificar se as estruturas das sentenças embutidas no código fonte estão corretas, para isso o analisador monta uma árvore sintática que pode partir de cima para baixo ou de baixo para cima, sendo a segunda a melhor solução, e compara os nós folha (elementos terminais da gramática) da árvore com a tabela de símbolos(tokens).
Analisador semântico: Seu objetivo é captar o significado das ações a serem tomadas no texto fonte. Porém sua formalização é algo muito complexo. Logo sua principal função torna-se criar a partir do texto fonte, uma interpretação deste texto, expressa em alguma notação adequada que é, geralmente, uma linguagem intermediária do compilador. Esta operação é realizada com base nas informações existentes nas tabelas construídas pelos outros analisadores, tabelas de palavras reservadas, mapas e saídas dos demais analisadores.
2) O analisador léxico é quem varre o código fonte caractere a caractere classificando cada lexema e criando seus tokens, também possui a função de encontrar erros de lexemas que não podem ser reconhecidos por nenhum padrão de token.
Ex:
Arquivo fonte linha 1:
String FelipeBonitao;
Nesse caso o analisador léxico identifica os lexemas contidos 1 String(palavra reservada), 2 Felipe(id), 3;(pontuação) passando para o analisador sintático os 3 tokens (
3) Token é a classificação de uma determinada cadeia de caracteres(lexema).
Lexema é o conjunto de caracteres em si ou seja um termo.
Padrão é a regra que determina o token.
Ex:
Token | Lexema | Padrão
If |IF | IF(palavra reservada)