Análise Léxica e Sintática: Conceitos Fundamentais
Classificado em Computação
Escrito em em português com um tamanho de 3,6 KB.
- O programa é uma sequência de instruções que descrevem como executar uma determinada tarefa.
- O analisador léxico reconhece, a partir de uma sequência de caracteres, os símbolos terminais de uma linguagem.
- O scanner tem por objetivo reconhecer os itens léxicos e atribuir a cada um deles uma classe/identificação.
- O conjunto finito de todos os símbolos de uma linguagem é denominado alfabeto.
- Podemos entender a tarefa de reconhecer um token como a atividade de identificação de uma palavra em uma sentença/linguagem, tarefa esta realizada por um analisador léxico.
- Os símbolos terminais podem ser considerados as palavras de uma linguagem de programação.
- O alfabeto de uma linguagem é um conjunto finito de símbolos que são utilizados na composição das suas instruções.
- A velocidade de execução é a principal vantagem que se obtém com as operações binárias.
- Os tokens a serem reconhecidos pelo analisador léxico são definidos pela gramática da linguagem fonte.
- A análise sintática verifica se a sentença está de acordo com a gramática da linguagem e a análise semântica verifica se a sentença é provida de sentido.
- O analisador léxico envia tokens para o analisador sintático.
- Os tokens podem ser considerados as palavras de uma linguagem de programação.
- Os *parsers* são classificados em analisadores sintáticos descendentes e analisadores sintáticos ascendentes.
- As árvores gramaticais normalmente são criadas pelo analisador sintático e podem ser usadas como estruturas intermediárias entre o analisador sintático e o analisador semântico.
- Os *parsers* descendentes recursivos são um exemplo de *parser* *top-down*.
- As duas fases principais dos compiladores são a análise e a síntese.
- Os autômatos, ou diagramas de transição, delineiam as ações que devem ser executadas quando um analisador léxico/scanner é chamado pelo *parser* a fim de obter o próximo token.
- A derivação mais à esquerda de uma sentença é a sequência de formas sequenciais que se obtêm derivando sempre o símbolo não-terminal mais à esquerda.
- Uma linguagem é gerada por uma gramática que, ao manipular um alfabeto, gera as cadeias de caracteres da linguagem.
- O analisador léxico insere na tabela de símbolos, apenas uma vez, todos os tokens que ele obtém do programa fonte.
- Cada nó interno de uma árvore de derivação corresponde a um não-terminal.
- A análise de uma sentença por intermédio de sua gramática/sintaxe pode ser feita através da construção de uma estrutura denominada árvore sintática.
- A linguagem gerada por uma gramática pode ser representada por árvores gramaticais ou por uma derivação, que é utilizada especialmente em *parsers* *top-down*.
- Uma derivação é uma sequência de substituições de nomes de estruturas por escolhas feitas no conjunto das regras gramaticais/regras de produção estabelecido para a linguagem.
- Um analisador sintático descendente codificado manualmente consiste em um conjunto de rotinas recursivas em que cada rotina corresponde a uma regra/produção da gramática.
- Dizemos que uma gramática é ambígua se ela produz mais de uma árvore gramatical para a mesma sentença.
- A determinação da estrutura gramatical de um programa e a construção de uma árvore gramatical que represente esta estrutura são tarefas do analisador sintático.