Różnica między analizowaniem odgórnym i oddolnym

Spisu treści:

Różnica między analizowaniem odgórnym i oddolnym
Różnica między analizowaniem odgórnym i oddolnym

Wideo: Różnica między analizowaniem odgórnym i oddolnym

Wideo: Różnica między analizowaniem odgórnym i oddolnym
Wideo: #19 Jak oddolnie zmienia się system edukacji w Polsce | Godmother Podcast 2024, Listopad
Anonim

Kluczowa różnica między parsowaniem odgórnym i oddolnym polega na tym, że parsowanie odgórne wykonuje parsowanie od symbolu początkowego do ciągu wejściowego, podczas gdy parsowanie oddolne wykonuje parsowanie od ciągu wejściowego do symbolu początkowego. Co więcej, kolejną ważną różnicą między parsowaniem zstępującym i oddolnym jest to, że parsowanie zstępujące wykorzystuje najbardziej wyprowadzone po lewej stronie, a parsowanie oddolne wykorzystuje najbardziej wyprowadzone po prawej stronie.

Języki wysokiego poziomu pomagają pisać programy komputerowe. Łatwiej je zrozumieć programiście, ale nie komputerowi. Dlatego program wysokiego poziomu konwertuje się na kod maszynowy. Zadaniem kompilatora jest przekształcenie czytelnego dla człowieka kodu źródłowego w czytelny dla komputera kod maszynowy. Program przechodzi przez kilka kroków, aby przekonwertować na kod maszynowy. Cały ten proces nazywa się systemem przetwarzania języka. Jednym z nich jest kompilacja. Analizator składni lub parser znajduje się w kompilatorze i wykonuje zadanie analizowania.

Co to jest parsowanie odgórne?

Każdy język programowania ma zestaw reguł reprezentujących język. Analizator składni lub parsowanie pobiera ciąg wejściowy i sprawdza, czy jest on zgodny z produkcjami gramatycznymi. Innymi słowy, gramatyka powinna wygenerować ten ciąg przy użyciu drzewa analizy.

W parsowaniu zstępującym, parsowanie odbywa się od symbolu początkowego i dociera do podanego ciągu wejściowego. Rozważ następujące zasady tworzenia gramatyki. Ciąg wejściowy (w) to cad.

S -> cAd

A -> ab /a

Drzewo parsowania po wykonaniu parsowania zstępującego wygląda następująco.

Różnica między analizowaniem od góry do dołu i od dołu do góry
Różnica między analizowaniem od góry do dołu i od dołu do góry
Różnica między analizowaniem od góry do dołu i od dołu do góry
Różnica między analizowaniem od góry do dołu i od dołu do góry

Rysunek 01: Analiza drzewa 1 z analizowaniem odgórnym

S tworzy c A d i A tworzy a b. Ciąg to cabd. Nie jest to wymagany ciąg znaków. Tak więc konieczne jest cofanie się, czyli korzystanie z innych alternatyw.

Podobnie, S produkuje c A d. Zastosowanie drugiej opcji dla A da a. Teraz daje wymagany ciąg. Dlatego parser akceptuje ten ciąg wejściowy. Drzewo parsowania po wykonaniu parsowania z góry na dół wygląda następująco.

Różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 2
Różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 2
Różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 2
Różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 2

Rysunek 02: Parsowanie drzewa 2 z analizowaniem odgórnym

Gdy ciąg wejściowy (w) to abbcde

Rozważ następujące zasady tworzenia gramatyki.

S -> aABe

A -> Abc/b

B-> d

W analizowaniu z góry na dół, S -> aABe (zastępuje A-> Abc)

S -> aAbcBe (zastępując A-> b)

S -> abbcBe (zastępuje B ->d)

S-> abbcde

Podstawianie zaczyna się od skrajnie lewej zmiennej, a następnie do następnej prawej pozycji i tak dalej. W związku z tym wynika z najbardziej lewej metody wyprowadzania. Ponadto ważne jest, aby zdecydować, jaką regułę produkcji wybrać, gdy istnieje zmienna.

Co to jest analiza oddolna?

Oddolne parsowanie odbywa się w odwrotny sposób. Parsowanie odbywa się od ciągu wejściowego do symbolu początkowego. Rozważ następujące zasady tworzenia gramatyki i niech ciąg wejściowy będzie w ɛ cad

S -> cAd

A -> ab /a

Drzewo parsowania po wykonaniu analizy oddolnej wygląda następująco.

Kluczowa różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 03
Kluczowa różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 03
Kluczowa różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 03
Kluczowa różnica między analizowaniem od góry do dołu i od dołu do góry_Rys. 03

Rysunek 03: Parsowanie drzewa z analizą oddolną

Podany ciąg to cad. A jest generowane przez A. c, A i d łączą się, aby uzyskać symbol początkowy S.

Gdy ciąg wejściowy (w) to abbcde

Rozważ następujące zasady tworzenia gramatyki.

S -> aABe

A -> Abc/b

B-> d

W analizie oddolnej

S -> aABe (zastępując B->d)

S -> aAde (zastępuje A-> Abc)

S -> aAbcde (Podmiana A -> b)

S-> abbcde

Podstawianie zaczyna się od najbardziej prawej zmiennej, a następnie przechodzi do następnej lewej pozycji i tak dalej. W związku z tym jest to metoda lewostronnego wyprowadzania.

Jaka jest różnica między analizowaniem odgórnym a oddolnym?

Przetwarzanie zstępujące to strategia analizowania, która najpierw sprawdza najwyższy poziom drzewa analizowania i działa w dół drzewa analizowania przy użyciu reguł gramatyki formalnej. Analiza oddolna to strategia analizowania, która najpierw sprawdza najniższy poziom drzewa analizowania i działa w górę drzewa analizowania przy użyciu reguł gramatyki formalnej. Parsowanie odbywa się od symbolu początkowego do ciągu wejściowego, w analizie zstępującej. Z drugiej strony parsowanie odbywa się od ciągu wejściowego do symbolu początkowego, w analizie oddolnej.

Ponadto główną decyzją w parsowaniu zstępującym jest wybór reguły produkcyjnej, która ma być użyta w celu skonstruowania łańcucha, podczas gdy główną decyzją w parsowaniu zstępującym jest wybór, kiedy użyć reguły produkcyjnej, aby zredukować łańcuch do uzyskać symbol początkowy. Co więcej, parsowanie zstępujące wykorzystuje najbardziej wyprowadzone z lewej strony, a analizowanie z dołu w dół wykorzystuje wyprowadzenie z prawej strony.

Różnica między analizowaniem od góry do dołu i od dołu do góry w formie tabelarycznej
Różnica między analizowaniem od góry do dołu i od dołu do góry w formie tabelarycznej
Różnica między analizowaniem od góry do dołu i od dołu do góry w formie tabelarycznej
Różnica między analizowaniem od góry do dołu i od dołu do góry w formie tabelarycznej

Podsumowanie – Parsowanie odgórne i oddolne

Różnica między parsowaniem odgórnym a oddolnym polega na tym, że parsowanie odgórne wykonuje parsowanie od symbolu początkowego do ciągu wejściowego, podczas gdy parsowanie oddolne wykonuje parsowanie od ciągu wejściowego do symbolu początkowego.

Zalecana: