Ključna razlika između raščlanjivanja odozgo prema dolje i odozdo prema gore je u tome što raščlanjivanje odozgo prema dolje izvodi raščlanjivanje od simbola za gledanje do ulaznog niza, dok raščlanjivanje odozdo prema dolje izvodi raščlanjivanje od ulaznog niza do početnog simbola. Nadalje, još jedna bitna razlika između raščlanjivanja odozgo prema dolje i odozdo prema gore je da raščlanjivanje odozgo prema dolje koristi krajnju lijevu derivaciju, a raščlanjivanje odozdo prema dolje koristi krajnju desnu derivaciju.
Jezici visokog nivoa pomažu u pisanju kompjuterskih programa. Programer ih lakše razumije, ali ne i kompjuter. Stoga se program visokog nivoa pretvara u mašinski kod. Zadatak kompajlera je da pretvori ljudski čitljivi izvorni kod u mašinski čitljiv mašinski kod. Program prolazi kroz nekoliko koraka da bi se pretvorio u mašinski kod. Cijeli ovaj proces se naziva Sistem obrade jezika. Jedna od njih je kompilacija. Analizator sintakse ili parser je u kompajleru i on obavlja zadatak parsiranja.
Šta je raščlanjivanje odozgo prema dolje?
Svaki programski jezik ima skup pravila za predstavljanje jezika. Analizator sintakse ili raščlanjivanje uzima ulazni niz i provjerava da li je u skladu s gramatičkom produkcijom. Drugim riječima, gramatika bi trebala proizvesti taj niz koristeći stablo raščlanjivanja.
U raščlanjivanju odozgo prema dolje, raščlanjivanje se odvija od početnog simbola i dostići će dati ulazni niz. Razmotrite sljedeća pravila izrade gramatike. Ulazni niz (w) je cad.
S -> cAd
A -> ab /a
Stablo raščlanjivanja nakon izvođenja raščlanjivanja odozgo prema dolje je kako slijedi.
Slika 01: Parsiranje stabla 1 sa raščlanjivanjem odozgo nadole
S proizvodi c A d i A proizvodi a b. Žica je cabd. To nije obavezni niz. Dakle, potrebno je napraviti backtracking, odnosno koristiti druge alternative.
Slično, S proizvodi c A d. Primjena druge opcije za A će dati a. Sada daje traženi niz. Stoga, parser prihvata ovaj ulazni niz. Stablo raščlanjivanja nakon izvođenja raščlanjivanja odozgo prema dolje je kako slijedi.
Slika 02: Parsiranje stabla 2 sa raščlanjivanjem odozgo prema dolje
Kada je ulazni niz (w) abbcde
Uzmite u obzir sljedeća pravila izrade gramatike.
S -> aABe
A -> Abc/b
B -> d
U analizi odozgo prema dolje, S -> aABe (Zamjena A -> Abc)
S -> aAbcBe (Zamjena A -> b)
S -> abbcBe (Zamjena B ->d)
S -> abbcde
Zamjena počinje najprije s najlijevim najvarijabilnijim, a zatim na sljedeću desnu poziciju i tako dalje. Stoga slijedi metodu krajnje lijeve derivacije. Nadalje, važno je odlučiti koje pravilo proizvodnje odabrati kada postoji varijabla.
Šta je raščlanjivanje odozdo prema gore?
U odozdo prema gore raščlanjivanje se dešava na drugi način. Parsiranje se dešava od ulaznog niza do početnog simbola. Uzmite u obzir sljedeća pravila izrade gramatike i neka ulazni niz bude w ɛ cad
S -> cAd
A -> ab /a
Stablo raščlanjivanja nakon izvođenja raščlanjivanja odozdo prema gore je kako slijedi.
Slika 03: Parsiranje stabla sa raščlanjivanjem odozdo prema gore
Dati niz je cad. A generira A. C, A i d se kombinuju kako bi dobili početni simbol S.
Kada je ulazni niz(w) abbcde
Uzmite u obzir sljedeća pravila izrade gramatike.
S -> aABe
A -> Abc/b
B -> d
U raščlanjivanju odozdo prema gore, S -> aABe (Zamjena B ->d)
S -> aAde (Zamjena A -> Abc)
S -> aAbcde (Zamjena A -> b)
S -> abbcde
Zamjena počinje najprije najpromjenljivijom desnom, a zatim prelazi na sljedeću lijevu poziciju i tako dalje. Stoga slijedi metod derivacije lijevog pokreta.
Koja je razlika između parsiranja odozgo prema dolje i odozdo prema gore?
Razbor odozgo prema dolje je strategija raščlanjivanja koja prvo gleda na najviši nivo stabla raščlanjivanja i radi nize stablo raščlanjivanja koristeći pravila formalne gramatike. Parsiranje odozdo prema gore je strategija raščlanjivanja koja prvo gleda na najniži nivo stabla raščlanjivanja i obrađuje stablo raščlanjivanja koristeći pravila formalne gramatike. Raščlamba se događa od početnog simbola do ulaznog niza, u raščlanjivanju odozgo prema dolje. S druge strane, raščlanjivanje se dešava od ulaznog niza do početnog simbola, u raščlanjivanju odozdo prema gore.
Dalje, glavna odluka u raščlanjivanju odozgo prema dolje je odabrati koje proizvodno pravilo će se koristiti da bi se konstruirao niz, dok je glavna odluka u raščlanjivanju odozdo prema dolje odabrati kada koristiti proizvodno pravilo za smanjenje niza na dobiti početni simbol. Štaviše, raščlanjivanje odozgo prema dolje koristi krajnju lijevu derivaciju, a odozdo prema dolje koristi krajnju desnu derivaciju.
Sažetak – raščlanjivanje odozgo prema dolje vs odozdo prema gore
Razlika između raščlanjivanja odozgo prema dolje i odozdo prema gore je u tome što raščlanjivanje odozgo prema dolje izvodi raščlanjivanje od simbola za gledanje do ulaznog niza, dok raščlanjivanje odozdo prema dolje izvodi raščlanjivanje od ulaznog niza do početnog simbola.