Skillnad mellan Top Down och Bottom Up Parsing

De nyckelskillnad mellan upp och ner upp parsing är det uppifrån parsning utför analyseringen från stjärnbilds-symbolen till inmatningssträngen medan den nedre nedparsningen utför analyseringen från inmatningssträngen till startsymbolen. Vidare är en annan viktig skillnad mellan uppifrån och nedåt parsing att toppen nedparsing använder vänster mest avledning och nedre parsning använder rätt mest avledning.

Språk på hög nivå hjälper till att skriva datorprogram. De är lättare att förstå av programmeraren men inte av datorn. Därför konverterar högnivåprogrammet till maskinkod. Uppgiften för kompilatorn är att konvertera den mänskliga läsbara källkoden till maskinläsbar maskinkod. Ett program går igenom flera steg för att konvertera till maskinkod. Hela processen kallas Language Processing System. En av dem är sammanställningen. Syntaxanalysatorn eller parsern finns i kompilatorn, och den utför analyseringsuppgiften.

INNEHÅLL

1. Översikt och nyckelskillnad
2. Vad är Top Down Parsing
3. Vad är Bottom Up Parsing
4. Jämförelse vid sida vid sida - Top Down vs Bottom Up Parsing i tabellform
5. Sammanfattning

Vad är Top Down Parsing?

Varje programmeringsspråk har en uppsättning regler för att representera språket. Syntaxanalysatorn eller parsen tar inmatningssträngen och kontrollerar om det är enligt grammatikproduktionerna. Med andra ord, grammatiken bör producera den strängen med ett parse-träd.

I toppen ner parsning sker parsningen från startsymbolen och kommer att nå den angivna inmatningssträngen. Tänk på följande grammatikproduktionsregler. Inmatningssträngen (w) är cad.

S -> cAd

A -> ab / a

Parse-trädet efter att ha utfört upp parsning är följande.

Figur 01: Parse Tree 1 med Top Down Parsing

S producerar c A d och A ger en b. Strängen är cabd. Det är inte den önskade strängen. Så, det är nödvändigt att göra backtracking, vilket är att använda de andra alternativen.

På liknande sätt producerar S c A d. Att tillämpa det andra alternativet för A kommer att ge en. Nu ger den önskade strängen. Därför accepterar parsern denna inmatningssträng. Parse-trädet efter att ha utfört upp parsning är följande.

Figur 02: Parse Tree 2 med Top Down Parsing

När inmatningssträngen (w) är abbcde

Tänk på följande grammatikproduktionsregler.

S -> aABe

A -> Abc / b

B -> d

I toppen ner parsning,

S -> aABe (ersätter A -> Abc)

S -> aAbcBe (ersätter A -> b)

S -> abbcBe (ersätter B -> d)

S -> abbcde

Byte börjar med vänster mest variabel först och sedan till nästa rätt position och så vidare. Därför följer det en vänster mest avledningsmetod. Vidare är det viktigt att bestämma vilken produktionsregel som ska väljas när det finns en variabel.

Vad är Bottom Up Parsing?

I botten upp sker en parsning på andra håll. Parsningen sker från inmatningssträngen till startsymbolen. Tänk på följande grammatikproduktionsregler och låt ingångssträngen vara w ɛ cad

S -> cAd

A -> ab / a

Parse-trädet efter att ha analyserat uppifrån är följande.

Figur 03: Parse Tree med Parsing uppifrån

Den givna strängen är cad. Aen alstras av A. c, a och d kombinerar för att få startsymbolen S.

När inmatningssträngen (w) är abbcde

Tänk på följande grammatikproduktionsregler.

S -> aABe

A -> Abc / b

B -> d

Inifrån och upp parsing,

S -> aABe (Byte B -> d)

S -> aAde (ersätter A -> Abc)

S -> aAbcde (Substuting A -> b)

S -> abbcde

Substitution startar med den högsta variabeln först och flyttar sedan till nästa vänstra position och så vidare. Därför följer det en vänster mot-derivatmetod.

Vad är skillnaden mellan Top Down och Bottom Up Parsing?

Top-down-analysering är en analyseringsstrategi som först tittar på den högsta nivån av parse-trädet och verkar ner parse-trädet genom att använda reglerna för en formell grammatik. Bottom up parsing är en analyseringsstrategi som först tittar på den lägsta nivån av parse-trädet och verkar upp parse-trädet genom att använda reglerna för en formell grammatik. Parsningen sker från startsymbolen till inmatningssträngen, i början av parsningen. Å andra sidan sker parsing från ingångssträngen till startsymbolen, i uppifrån-parsning.

Vidare är det viktigaste beslutet i topp nedparsning att välja vilken produktionsregel som ska användas för att konstruera strängen medan huvudbeslutet vid nedre parsning är att välja när man ska använda en produktionsregel för att minska strängen för att få startsymbolen. Vidare använder toppnedbrytning med vänster mest avledning och nedre parsning använder rätt mest avledning.

Sammanfattning - Top Down vs Bottom Up Parsing

Skillnaden mellan uppifrån och nedåt parsning är att toppen nedparsning utför analyseringen från stjärnbilds-symbolen till inmatningssträngen, medan nedre nedparsning utför analyseringen från inmatningssträngen till startsymbolen.

Referens:

1. "Compiler Design Lecture 5 - Introduktion till Parsers och LL (1) Parsing." Kompilator Design Föreläsning 5 - Introduktion till Parsers och LL (1) Parsing, Gateföreläsningar av Ravindrababu Ravula, 22 maj 2014. Tillgänglig här