Compiladores: ¿Diferencia principal entre analizador léxico y analizador?


Respuesta 1:

Miremos como una analogía, consideremos que el inglés es nuestro lenguaje de programación.

El analizador léxico divide la entrada en tokens válidos, es decir, entidades más pequeñas que tienen sentido y están bien definidas en el lenguaje:

Por ejemplo, "hermoso" es un token válido, ya que es una palabra válida en inglés.

Mientras que "dsefuewfiu" no es un token válido ya que no tiene ningún sentido.

Mientras que Parser verifica la gramática, es decir, la oración se adhiere a las leyes de formación de oraciones en inglés:

Por ejemplo: "Mi nombre es Rahul" es una oración válida en inglés.

Mientras que "mi nombre es Rahul" no tiene sentido.

Esta es la diferencia básica entre un analizador léxico y un analizador sintáctico.


Respuesta 2:

Un analizador léxico generalmente analiza en términos de expresiones regulares, proporcionando resultados que un analizador utiliza en forma de tokens: identificadores, cadenas, números, operadores.

Un analizador implementa una gramática de nivel superior utilizando los tokens como entrada. Hace cosas que un analizador léxico no puede hacer, como paréntesis de equilibrio.

No es técnicamente necesario dividirlo en dos pasos como este, pero conceptualmente, es mucho más fácil hacerlo.


Respuesta 3:

El analizador léxico es la primera fase del proceso de compilación que toma el programa fuente como entrada y produce una secuencia de caracteres significativos llamados lexemas ...

Estos lexemas funcionan como entrada para

Próxima fase de análisis de sintaxis.

En esta fase, el analizador toma este lexema como entrada y produce salida en forma de árbol de sintaxis ......