Kompilátory: Hlavní rozdíl mezi lexikálním analyzátorem a syntaktickým analyzátorem?


Odpověď 1:

Podívejme se na to jako na analogii, považujte angličtinu za náš programovací jazyk.

Lexikální analyzátor rozděluje vstup na platné tokeny, tj. Menší entity, které mají smysl a jsou dobře definovány v jazyce:

Například - „krásný“ je platný token, protože je platným slovem v angličtině.

Zatímco "dsefuewfiu" není platný token, protože nedává žádný smysl.

Vzhledem k tomu, že Parser kontroluje gramatiku, tj. Věta dodržuje zákony tvorby vět v angličtině:

Například - „Jmenuji se Rahul“ je platná anglická věta.

Zatímco „jméno My is Rahul“ nedává smysl.

Toto je základní rozdíl mezi lexikálním analyzátorem a syntaktickým analyzátorem.


Odpověď 2:

Lexikální analyzátor obvykle analyzuje z hlediska regulárních výrazů a poskytuje výstup, který analyzátor používá ve formě tokenů: identifikátory, řetězce, čísla, operátory.

Analyzátor implementuje gramatiku vyšší úrovně pomocí tokenů jako vstupu. Dělá věci, které lexikální analyzátor nemůže, například závorky vyvážení.

Není technicky nutné rozdělit je na dva takovéto kroky, ale z koncepčního hlediska je mnohem snazší to udělat.


Odpověď 3:

Lexikální analyzátor je první fází procesu kompilace, který jako zdroj vstupuje zdrojový program a vytváří sekvenci smysluplných znaků zvaných lexémy ...

Tyto lexémy fungují jako vstup pro

Další fáze analýzy syntaxe.

V této fázi analyzátor vezme tento lexém jako vstup a vytvoří výstup ve formě stromu syntaxe ......