Kľúčový rozdiel medzi analýzou zhora nadol a zdola nahor je v tom, že pri analýze zhora nadol sa vykoná analýza od počiatočného symbolu po vstupný reťazec, zatiaľ čo pri analýze zdola nadol sa vykoná analýza od vstupného reťazca po začiatočný symbol. Ďalším dôležitým rozdielom medzi analýzou zhora nadol a zdola nahor je to, že analýza zhora nadol používa odvodenie najviac zľava a analýza zdola nadol najviac odvodenie vpravo.
Jazyky na vysokej úrovni pomáhajú písať počítačové programy. Sú ľahšie pochopiteľné pre programátora, ale nie pre počítač. Preto sa program na vysokej úrovni skonvertuje na strojový kód. Úlohou kompilátora je previesť ľudským zdrojom čitateľný kód na strojovo čitateľný strojový kód. Program prechádza niekoľkými krokmi, aby sa previedol na strojový kód. Celý tento proces sa nazýva Systém spracovania jazyka. Jedným z nich je kompilácia. Analyzátor syntaxe alebo syntaktický analyzátor je v kompilátore a vykonáva úlohu analýzy.
Čo je to analýza zhora nadol?
Každý programovací jazyk má súbor pravidiel na reprezentáciu jazyka. Analyzátor syntaxe alebo syntaktický analyzátor vezme vstupný reťazec a skontroluje, či je v súlade s gramatikou. Inými slovami, gramatika by mala vytvoriť tento reťazec pomocou stromu analýzy.
Pri analýze zhora nadol sa analýza uskutoční od počiatočného symbolu a dosiahne daný vstupný reťazec. Zvážte nasledujúce pravidlá tvorby gramatiky. Vstupný reťazec (w) je cad.
S -> cAd
A -> ab /a
Strom analýzy po vykonaní analýzy zhora nadol je nasledujúci.
Obrázok 01: Analýza stromu 1 s analýzou zhora nadol
S produkuje c A d a A vytvára a b. Struna je cabd. Nie je to požadovaný reťazec. Takže je potrebné urobiť backtracking, čiže použiť iné alternatívy.
Podobne S produkuje c A d. Aplikovaním druhej možnosti pre A získate a. Teraz dáva požadovaný reťazec. Preto syntaktický analyzátor akceptuje tento vstupný reťazec. Strom analýzy po vykonaní analýzy zhora nadol je nasledujúci.
Obrázok 02: Analýza stromu 2 s analýzou zhora nadol
Keď je vstupný reťazec (w) abbcde
Zvážte nasledujúce pravidlá tvorby gramatiky.
S -> aABe
A -> Abc/b
B -> d
Pri analýze zhora nadol
S -> aABe (nahradenie A -> Abc)
S -> aAbcBe (nahradenie A -> b)
S -> abbcBe (nahradenie B ->d)
S -> abbcde
Substitúcia začína najskôr najpremennejšou ľavou stranou a potom ďalšou pravou pozíciou atď. Preto sa riadi metódou odvodzovania najviac vľavo. Okrem toho je dôležité rozhodnúť, aké produkčné pravidlo zvoliť, keď existuje premenná.
Čo je analýza zdola nahor?
Pri analýze zdola nahor prebieha analýza iným spôsobom. Analýza prebieha od vstupného reťazca po počiatočný symbol. Zvážte nasledujúce pravidlá tvorby gramatiky a nechajte vstupný reťazec w ɛ cad
S -> cAd
A -> ab /a
Strom analýzy po vykonaní analýzy zdola nahor vyzerá takto.
Obrázok 03: Analýza stromu s analýzou zdola nahor
Daný reťazec je cad. A je generované A. Kombináciou c, A a d získate počiatočný symbol S.
Keď je vstupný reťazec (w) abbcde
Zvážte nasledujúce pravidlá tvorby gramatiky.
S -> aABe
A -> Abc/b
B -> d
Pri analýze zdola nahor
S -> aABe (nahradenie B ->d)
S -> aAde (Nahradenie A -> Abc)
S -> aAbcde (nahradené A -> b)
S -> abbcde
Substitúcia začína najskôr pravou najpremennejšou a potom sa presunie na ďalšiu ľavú pozíciu atď. Preto sa riadi metódou odvodzovania ľavej mot.
Aký je rozdiel medzi analýzou zhora nadol a zdola nahor?
Analyzácia zhora nadol je stratégia analýzy, ktorá sa najprv pozerá na najvyššiu úroveň stromu analýzy a potom nadol zo stromu analýzy pomocou pravidiel formálnej gramatiky. Analýza zdola nahor je stratégia analýzy, ktorá sa najprv pozrie na najnižšiu úroveň stromu analýzy a spracuje strom analýzy pomocou pravidiel formálnej gramatiky. Analýza prebieha od počiatočného symbolu po vstupný reťazec pri analýze zhora nadol. Na druhej strane analýza prebieha od vstupného reťazca po počiatočný symbol pri analýze zdola nahor.
Okrem toho je hlavným rozhodnutím pri analýze zhora nadol vybrať produkčné pravidlo, ktoré sa má použiť na vytvorenie reťazca, zatiaľ čo pri analýze zdola nadol je hlavným rozhodnutím vybrať, kedy použiť produkčné pravidlo na zníženie reťazca na získajte štartovací symbol. Pri analýze zhora nadol sa navyše používa najviac zľava a pri analýze zdola nadol sa najviac odvodzuje vpravo.
Súhrn – analýza zhora nadol vs. analýza zdola nahor
Rozdiel medzi analýzou zhora nadol a zdola nahor je v tom, že pri analýze zhora nadol sa vykoná analýza od počiatočného symbolu po vstupný reťazec, zatiaľ čo pri analýze zdola nadol sa vykoná analýza od vstupného reťazca po začiatočný symbol.