Compiladors: diferència principal entre analitzador lèxic i analitzador?


Resposta 1:

Permetin-ho considerar una analogia, considerem l’anglès el nostre llenguatge de programació.

L’analitzador lèxic divideix l’entrada en fitxes vàlides, és a dir, entitats més petites que tenen sentit i estan ben definides en l’idioma:

Per exemple, "bell" és un testimoni vàlid ja que és una paraula vàlida en anglès.

Mentre que "dsefuewfiu" no és un testimoni vàlid ja que no té cap sentit.

Mentre que Parser comprova la gramàtica és a dir, l'oració s'ajusta a les lleis de formació de la frase en anglès:

Per exemple- "El meu nom és Rahul" és una frase en anglès vàlida.

Mentre que "el meu nom és Rahul" no té sentit.

Aquesta és la diferència bàsica entre un analitzador lèxic i l'analitzador.


Resposta 2:

Un analitzador lèxic sol analitzar en termes d’expressions regulars, proporcionant una sortida que un analitzador utilitza en forma de fitxes: identificadors, cadenes, números, operadors.

Un analitzador implementa una gramàtica de nivell superior utilitzant els tokens com a entrada. Fa coses que un analitzador lèxic no pot, com ara parèntesis d’equilibri.

Tècnicament no és necessari desglossar-lo en dos passos com aquest, però conceptualment, és molt més senzill fer-ho.


Resposta 3:

L’analitzador lèxic és la primera fase del procés de compilació que pren el programa font com a entrada i produeix una seqüència de caràcters significatius anomenats lexemes ...

Aquests lexemes funciona com a entrada per

Segona fase d’anàlisi de sintaxi.

En aquesta fase l'analitzador pren aquest lexema com a entrada i produeix una sortida en forma d'arbre de sintaxi ...