Na ciência da computação, um analisador é um programa de computador que analisa dados de entrada e constrói uma estrutura de dados representando seu significado. Os dados normalmente são uma sequência de caracteres (frequentemente, mas nem sempre, em linguagem natural), mas podem ser dados estruturados, como XML, JSON, HTML, ou dados em um formato estruturado, como CSV.
Os analisadores são um componente chave dos compiladores, que traduzem o código-fonte legível por humanos em código-objeto executável por máquina. Eles também são usados no processamento de linguagem natural, análise de dados e muitas outras aplicações.
Existem dois tipos principais de analisadores:de cima para baixo e de baixo para cima. Os analisadores de cima para baixo começam examinando a estrutura geral da entrada e, em seguida, descem até os caracteres individuais. Os analisadores bottom-up começam examinando os caracteres individuais e depois os transformam em estruturas cada vez maiores.
A escolha do tipo de analisador depende da natureza dos dados de entrada e da saída desejada. Por exemplo, analisadores descendentes são frequentemente usados para processamento de linguagem natural, enquanto analisadores ascendentes são frequentemente usados para análise de dados.
Os analisadores podem ser implementados usando uma variedade de técnicas, incluindo descida recursiva, análise sintática com redução de deslocamento e gramáticas livres de contexto. A escolha da técnica de implementação depende do analisador específico e das características de desempenho desejadas.
Os analisadores desempenham um papel importante em muitas áreas da ciência da computação e são essenciais para muitas aplicações. Eles fornecem uma maneira de analisar e compreender os dados e de traduzi-los em um formato que possa ser processado por computadores.