Sastavljači: Glavna razlika između leksičkog analizatora i raščlanjivača?


Odgovor 1:

Pogledajmo to kao analogiju, smatramo da je engleski naš programski jezik.

Leksički analizator dijeli ulaz na važeće tokene, tj. Manje cjeline koji imaju smisla i su dobro definirani na jeziku:

Na primjer - "lijepa" je valjana oznaka jer je to engleska važeća riječ.

Dok "dsefuewfiu" nije valjan žeton jer nema nikakvog smisla.

Dok Parser provjerava gramatiku, tj. Rečenica se pridržava zakona tvorbe rečenica na engleskom:

Na primjer - "My name is Rahul" je valjana engleska rečenica.

Dok "ime mi je Rahul" nema smisla.

To je osnovna razlika između leksičkog analizatora i analizatora.


Odgovor 2:

Leksički analizator obično rabi u smislu regularnih izraza, pružajući izlaz koji parser koristi u obliku tokena: identifikatori, žice, brojevi, operatori.

Parser provodi gramatiku više razine koristeći tokene kao ulaz. Čini stvari koje leksički analizator ne može, kao što su zagrade u zagradama.

Tehnički ga nije potrebno razbiti na dva koraka poput ovog, ali konceptualno je to mnogo lakše.


Odgovor 3:

Leksički analizator prva je faza procesa kompilacije koji uzima izvorni program kao ulaz i stvara niz značajnih znakova koji se zovu leksemi ...

Ti leksemi funkcioniraju kao ulaz

Sljedeća faza analize sintakse.

U ovom fazi parser koristi ovaj leksem kao ulaz i proizvodi izlaz u obliku stabla sintakse ......