Qual é a diferença entre a análise lexical e a análise sintática

Índice:

Anonim

o principal diferença entre a análise lexical e a análise de sintaxe é que a análise lexical lê o código-fonte um caractere por vez e o converte em lexemas significativos (tokens), enquanto a análise de sintaxe pega esses tokens e produz uma árvore de análise como saída.

Um programa de computador é um conjunto de instruções que direciona o computador para executar as tarefas projetadas no programa. Geralmente, um programador escreve o programa usando uma linguagem de alto nível. O computador não entende essas instruções. Portanto, o código-fonte deve ser convertido em código de máquina para torná-lo compreensível para o computador. Além disso, um compilador é um programa de software que ajuda a converter o código-fonte em código de máquina equivalente. Ele passa por várias etapas ou estágios para concluir esse processo de conversão. Em outras palavras, cada fase recebe a entrada do estágio anterior e a saída vai para a próxima fase. No geral, a análise lexical e a análise de sintaxe são duas etapas envolvidas neste processo de compilação.

Compilador, análise lexical, análise de sintaxe

O que é Análise Lexical

A fase lexical é a primeira fase do processo de compilação. Leva o código-fonte como entrada. Além disso, ele verifica o programa de origem e converte um caractere por vez em lexemas ou tokens significativos. A saída da análise lexical vai para a fase de análise de sintaxe. Geralmente, um analisador léxico executa a análise lexical.

O formato do token é o seguinte.

O que é análise de sintaxe

A segunda fase do processo de compilação é a análise de sintaxe. Ele pega os tokens produzidos pela análise lexical como entrada e gera uma árvore de análise. A árvore de análise também é chamada de árvore de sintaxe.

Nesta fase, as organizações de tokens são verificadas em relação à gramática do código-fonte. Além disso, o analisador executa a análise de sintaxe. Ele verifica se a expressão feita pelos tokens está sintaticamente correta.

Além das duas etapas acima, o processo de compilação também envolve fases como análise semântica, geração de código intermediário, geração de código, otimização de código etc.

Diferença entre análise lexical e análise de sintaxe

Definição

A análise lexical é o processo de converter uma sequência de caracteres em uma sequência de tokens, enquanto a análise de sintaxe é o processo de analisar uma sequência de símbolos em linguagem natural, linguagens de computador ou estruturas de dados em conformidade com as regras de uma gramática formal.

Sinônimos

Funcionalidade

A análise lexical lê o programa de origem, um caractere por vez, e o converte em lexemas significativos (tokens), enquanto a análise de sintaxe toma os tokens como entrada e gera uma árvore de análise como saída. Portanto, esta é a principal diferença entre a análise lexical e a análise sintática.

Pedido

Além disso, outra diferença entre a análise lexical e a análise sintática é que a análise lexical é a primeira fase do processo de compilação, enquanto a análise sintática é a segunda fase do processo de compilação.

Conclusão

Em resumo, um compilador é um programa de software que converte o código-fonte em código de máquina equivalente. Além disso, ele passa por várias fases para realizar essa tarefa. Dois deles são análise lexical e análise de sintaxe. Em geral, a análise de sintaxe ocorre após a análise lexical. A principal diferença entre a análise lexical e a análise de sintaxe é que a análise lexical lê o código-fonte um caractere por vez e o converte em lexemas significativos (tokens), enquanto a análise de sintaxe pega esses tokens e produz uma árvore de análise como saída.

Referências:

1. “Fases do compilador - Javatpoint.” Www.javatpoint.com, disponível aqui. 2. “Análise Lexical.” Wikipedia, Wikimedia Foundation, 8 de julho de 2019, disponível aqui. 3. “Análise.” Wikipedia, Wikimedia Foundation, 15 de maio de 2019, disponível aqui.

Cortesia de imagem:

1. ”Um compilador multi-linguagem e multi-alvo ideal” Por I, Surachit (CC BY-SA 3.0) via Commons Wikimedia

Qual é a diferença entre a análise lexical e a análise sintática