img169

img169



169


12.1. Parsing ekspansywnych języków grafowych

I3 = [£,5,4],    h = [F,\, 5],

h = [A,X, 6].

W drugim przebiegu parsera będziemy analizować wierzchołki grafu, startując od wierzchołka o indeksie 1 i kończąc na wierzchołku o największym indeksie oraz wspomagając się wygenerowanymi trójkami. Zauważmy, że analizując np. wierzchołek o indeksie 2 zapamiętamy, że startują z niego produkcje: czwarta i szósta. Jakkolwiek w następnym kroku faktycznie będziemy sprawdzać, czy można zastosować produkcję czwartą do wierzchołka o indeksie 3, to sprawdzenie, czy możemy zastosować produkcję szóstą nastąpi dużo później - w naszym przypadku na końcu - gdyż jest ona związana z wierzchołkiem o indeksie 5. Będziemy musieli zatem zapamiętać konieczność sprawdzenia aplikacji pewnych produkcji w późniejszych krokach analizy.

Niech zatem wektor ir(i), i = l,...,m, gdzie m jest liczbą wierzchołków grafu, służy do zapamiętania numerów produkcji stosowanych w kolejnych wierzchołkach, i jest indeksem aktualnie analizowanego wierzchołka, a trójki Ii są poprzednio wprowadzonej postaci (A',, a,,/,]. Oznaczmy przez k sumę liczby produkcji, które, w momencie analizy i-tego wierzchołka, już rozważyliśmy i liczby tych produkcji, które zapamiętaliśmy do rozważenia w przyszłości.

Zauważmy, że jeśli przez d, oznaczymy długość ciągu produkcji startujących cii, to kolejne k będziemy otrzymywać zwiększając je w każdym kroku o di, tzn. k := k + d,-. Zatem, jeśli w i-tym kroku analizy okaże się, że Jfe = i, tzn. nie zapamiętaliśmy takich produkcji, które będą rozważane w przyszłości, to zapamiętujemy jedynie ciąg produkcji startujących z wierzchołka i-tego:

rr(i + 1). ,.x(i + d,) := Oj.

Natomiast jeśli k > i, tzn. w poprzednich krokach zapamiętaliśmy produkcje do rozważenia w przyszłości (jest ich k — i), to musimy je przepakować na dalsze pozycje w wektorze r, czyli

ir(i + 1 + di) := ir(i + 1),

t(* + di) := ir(k),


Wyszukiwarka

Podobne podstrony:
img165 165 12.1. Parsing ekspansywnych języków grafowych II scena:
img171 171 12.1. Parsing ekspansywnych języków grafowych procedurę ExpRec (var rec); begin for i :=
img165 165 12.1. Parsing ekspansywnych języków grafowych II scena: ii
img167 167 12.1. Parsing ekspansywnych języków grafowych Nim przedstawimy formalny zapis algorytmu
img171 171 12.1. Parsing ekspansywnych języków grafowych procedurę ExpRec (var rec); begin for i :=
img173 12.2. Parsing dla gramatyki grafowej klasy ETL( 1) 173 Rys. 12.5. Graf dla sceny z rys. 12.la
img175 12.2. Parsing dla gramatyki grafowej klasy ETL() Rys. 12.9. Analiza grafu (opis w tekście)
img177 177 12.2. Parsing dla gramatyki grafowej klasy ETL( 1) do analizy wierzchołków obu grafów ind
img179 179 12.2. Parsing dla gramatyki grafowej klasy ETL(l) conid(G, H, i) - boolowska funkcja spra
img173 12.2. Parsing dla gramatyki grafowej klasy ETL( 1) 173 Rys. 12.5. Graf dla sceny z rys. 12.la
img175 12.2. Parsing dla gramatyki grafowej klasy ETL() Rys. 12.9. Analiza grafu (opis w tekście)
img177 177 12.2. Parsing dla gramatyki grafowej klasy ETL( 1) do analizy wierzchołków obu grafów ind
img179 179 12.2. Parsing dla gramatyki grafowej klasy ETL(l) conid(G, H, i) - boolowska funkcja spra
img172 172 12. Metody grafowe12.2. Parsing dla gramatyki grafowej klasy ETL() Metodę tą zilustrujemy
img168 16812. Metody grafowe Rys. 12.3. Przebieg generacji sceny I z rys. 12.1 za pomocą ekspansywne
img172 172 12. Metody grafowe12.2. Parsing dla gramatyki grafowej klasy ETL() Metodę tą zilustrujemy

więcej podobnych podstron