Koostajad: peamine erinevus leksikaalse analüsaatori ja parseri vahel?


Vastus 1:

Vaadakem seda kui analoogiat, peame inglise keelt meie programmeerimiskeeleks.

Leksiline analüsaator jagab sisendi kehtivateks tokeniteks, st väiksemateks üksusteks, millel on mõte ja mis on keeles hästi määratletud:

Näiteks - "ilus" on kehtiv märk, kuna see on inglise keeles kehtiv sõna.

"Dsefuewfiu" ei ole kehtiv märk, kuna sellel pole mingit mõtet.

Parser kontrollib grammatikat, st lause järgib lause moodustamise seadusi inglise keeles:

Näiteks: "Minu nimi on Rahul" on kehtiv ingliskeelne lause.

Arvestades, et nimi minu on Rahul, pole mõtet.

See on peamine erinevus leksikaalse analüsaatori ja parseri vahel.


Vastus 2:

Leksikaalne analüsaator parsib tavaliselt korrapäraste avaldiste abil, pakkudes väljundit, mida parser kasutab märkide kujul: identifikaatorid, stringid, numbrid, operaatorid.

Parser rakendab kõrgema taseme grammatikat, kasutades sisendina žetoone. See teeb asju, mida leksikaalne analüsaator ei saa, näiteks tasakaalusulud.

Seda ei ole tehniliselt vaja jagada kaheks selliseks etapiks, kuid kontseptuaalselt on seda palju lihtsam teha.


Vastus 3:

Leksiline analüsaator on kompileerimisprotsessi esimene etapp, mis võtab sisendina lähteprogrammi ja tekitab tähenduslike märkide jada, mida nimetatakse leksemideks ...

Need leksemid toimivad sisendina

Järgmine süntaksi analüüsifaas.

Selles faasis võtab parser selle lekseemi sisendiks ja annab väljundi süntaksipuu kujul ......