Ülev alt alla ja alt üles sõelumise erinevus

Sisukord:

Ülev alt alla ja alt üles sõelumise erinevus
Ülev alt alla ja alt üles sõelumise erinevus

Video: Ülev alt alla ja alt üles sõelumise erinevus

Video: Ülev alt alla ja alt üles sõelumise erinevus
Video: Poni õuduslugu Mees / Evi Th/ 2024, November
Anonim

Peamine erinevus ül alt alla ja alt üles sõelumise vahel on see, et ül alt alla sõelumine teostab sõelumise jälgimissümbolist sisendstringini, samas kui alumine alla sõelumine teostab sõelumise sisendstringist algussümbolile. Veel üks oluline erinevus ül alt alla ja alt üles sõelumise vahel on see, et ül alt alla sõelumisel kasutatakse kõige vasakpoolsemat ja alt-alla sõelumisel parempoolset tuletamist.

Kõrgetasemelised keeled aitavad kirjutada arvutiprogramme. Programmeerijal on neid lihtsam mõista, arvutil aga mitte. Seetõttu teisendab kõrgetasemeline programm masinkoodiks. Kompilaatori ülesanne on teisendada inimesele loetav lähtekood masinloetavaks masinkoodiks. Programm läbib masinkoodiks teisendamiseks mitu etappi. Kogu seda protsessi nimetatakse keeletöötlussüsteemiks. Üks neist on koostamine. Süntaksianalüsaator või parser on kompilaatoris ja täidab sõelumisülesande.

Mis on ül alt alla sõelumine?

Igal programmeerimiskeelel on keele esindamiseks reeglid. Süntaksianalüsaator või parse võtab sisendstringi ja kontrollib, kas see vastab grammatikaproduktsioonidele. Teisisõnu peaks grammatika tootma selle stringi parsipuu abil.

Ülev alt alla sõelumisel toimub sõelumine algussümbolist ja jõuab antud sisendstringini. Mõelge järgmistele grammatika tootmisreeglitele. Sisendstring (w) on cad.

S -> cAd

A -> ab /a

Pärast ül alt alla sõelumist on sõelumispuu järgmine.

Ülev alt alla ja alt üles sõelumise erinevus
Ülev alt alla ja alt üles sõelumise erinevus
Ülev alt alla ja alt üles sõelumise erinevus
Ülev alt alla ja alt üles sõelumise erinevus

Joonis 01: sõelumispuu 1 ül alt alla sõelumisega

S toodavad c A d ja A toodavad a b. String on cabd. See ei ole nõutav string. Seega on vaja teha tagasiteed, st kasutada teisi alternatiive.

Samamoodi S toodavad c A d. Teise võimaluse rakendamine A jaoks annab a. Nüüd annab see vajaliku stringi. Seetõttu aktsepteerib parser selle sisendstringi. Parsipuu pärast ül alt alla sõelumist on järgmine.

Ülev alt alla ja alt üles sõelumise erinevus_joonis 2
Ülev alt alla ja alt üles sõelumise erinevus_joonis 2
Ülev alt alla ja alt üles sõelumise erinevus_joonis 2
Ülev alt alla ja alt üles sõelumise erinevus_joonis 2

Joonis 02: sõelumispuu 2 ül alt alla sõelumisega

Kui sisendstring (w) on abbcde

Võtke arvesse järgmisi grammatika tootmisreegleid.

S -> aABe

A -> Abc/b

B -> d

Ülev alt alla sõelumisel

S -> aABe (asendab A -> Abc)

S -> aAbcBe (asendab A -> b)

S -> abbcBe (asendab B ->d)

S -> abbcde

Asendamine algab kõigepe alt vasakpoolseima muutujaga ja seejärel järgmisesse parempoolsesse asendisse ja nii edasi. Seetõttu järgib see kõige vasakpoolsemat tuletamismeetodit. Lisaks on oluline otsustada, milline tootmisreegel valida muutuja olemasolul.

Mis on alt üles sõelumine?

Alt üles sõelumine toimub teisel viisil. Sõelumine toimub sisendstringist algussümbolini. Mõelge järgmistele grammatika tootmisreeglitele ja olgu sisendstring w ɛ cad

S -> cAd

A -> ab /a

Pärast alt üles sõelumist on sõelumispuu järgmine.

Peamine erinevus ül alt alla ja alt üles sõelumise vahel_joonis 03
Peamine erinevus ül alt alla ja alt üles sõelumise vahel_joonis 03
Peamine erinevus ül alt alla ja alt üles sõelumise vahel_joonis 03
Peamine erinevus ül alt alla ja alt üles sõelumise vahel_joonis 03

Joonis 03: sõelumispuu alt üles sõelumisega

Antud string on cad. A genereerib A. C, A ja d kombineeritakse, et saada algussümbol S.

Kui sisendstring (w) on abbcde

Võtke arvesse järgmisi grammatika tootmisreegleid.

S -> aABe

A -> Abc/b

B -> d

Alt üles sõelumisel

S -> aABe (asendab B ->d)

S -> aAde (asendab A -> Abc)

S -> aAbcde (Asendamine A -> b)

S -> abbcde

Asendamine algab kõigepe alt kõige parempoolsema muutujaga ja seejärel liigub järgmisse vasakpoolsesse asendisse ja nii edasi. Seetõttu järgib see vasakpoolse mot tuletusmeetodit.

Mis vahe on ül alt alla ja alt üles sõelumisel?

Ülav alt alla sõelumine on sõelumisstrateegia, mis vaatleb esm alt sõelumispuu kõrgeimat taset ja töötleb sõelumispuu alla, kasutades formaalse grammatika reegleid. Alt üles sõelumine on sõelumisstrateegia, mis esm alt vaatleb sõelumispuu madalaimat taset ja töötab vormilise grammatika reeglite abil parsipuu üles. Sõelumine toimub algussümbolist sisendstringini, ül alt alla sõelumisel. Teisest küljest toimub sõelumine sisendstringist algussümbolini, alt üles sõelumisel.

Lisaks on ül alt alla sõelumise peamine otsus valida, millist tootmisreeglit stringi koostamiseks kasutada, samal ajal kui põhiotsus alt-alla sõelumisel on valida, millal kasutada tootmisreeglit stringi vähendamiseks. hankige algussümbol. Veelgi enam, ül alt alla sõelumine kasutab vasakpoolset tuletamist ja alt alla sõelumine kasutab parempoolset tuletamist.

Ülev alt alla ja alt üles sõelumise erinevus tabelikujul
Ülev alt alla ja alt üles sõelumise erinevus tabelikujul
Ülev alt alla ja alt üles sõelumise erinevus tabelikujul
Ülev alt alla ja alt üles sõelumise erinevus tabelikujul

Kokkuvõte – ül alt alla vs alt üles sõelumine

Ülev alt alla ja alt üles sõelumise erinevus seisneb selles, et ül alt alla sõelumine teostab sõelumise jälgimise sümbolist sisendstringini, alt alla sõelumine aga sisendstringist algussümbolile.

Soovitan: