3.2 Automaty skªadowe automatu F DP LLA(k)
3.2.3 Automat P SA
Dla ustalonego j¦zyka L klasy DP LL(k) na alfabetem Σ zdeniujemy w sposób for-malny automat P SA (Process Saver Automaton). Jego zadaniem b¦dzie odbieranie da-nych wykonada-nych zada« analizy i zapisywanie ich na wªa±ciwej ta±mie moduªu MEM. Podobnie jak automat T DA, automat P SA czyta ta±m¦ P ST i je±li natra na status T lub C - wykonuje:
1. W przypadku statusu C zapis wska¹ników do danych wykonanego procesu ana-lizy na ta±m¦ MEM.T 1 lub MEM.T 2 (w zale»no±ci, która z ta±m w danym
Rysunek 3.5: Schemat automatu P SA
momencie peªni funkcje ta±my docelowej). Krok ten wykonywany jest, je±li na ta±mie docelowej jest jeszcze miejsce do danych kolejnego procesu.
2. Wypisanie na wyj±cie OUT P UT automatu danych procesu analizy. Dzieje si¦ tak w jednym z trzech przypadków:
- dany parser z puli po przetworzeniu zadania osi¡gn¡ª stan terminalny (ACC,
ERR), (status T , term_info=ACC/ERR),
- dalsza analiza zostaªa porzucona ze wzgl¦du na zbyt niska warto±¢ funkcji stopu analizy (status T , term_info=STOP_FUNC_VAL_TOO_LOW),
- na ta±mie docelowej osi¡gni¦to znak ko«ca ta±my, czyli nie ma ju» miejsca do za-pisu danych kolejnego proces (status C, term_info=MAX_NO_PROC_EXCEEDED).
3.2.3.1 Struktury danych automatu P SA
Automat P SA, podobnie jak automat T DA, korzysta z nast¦puj¡cych struktur danych (zdeniowanych wcze±niej):
2. ta±m MEM.T 1 i MEM.T 2 do zapisu danych zako«czonych procesów analizy, 3. struktury danych ST AT E przechowuj¡cej aktualny stan automatu.
3.2.3.2 Denicja automatu P SA DEFINICJA 3.4
Automatem P SA (Process Saver Automaton) nazywamy nast¦puj¡c¡ trójk¦: (Q, Γ, Ω)
gdzie:
• Q = {Q1, Q2, Q3, Q4, Q5, Q6, QF} sko«czonym zbiorem stanów automatu T DA ze stanem Q1 jako pocz¡tkowym,
• Γ zbiorem wska¹ników do danych procesów analizy (alfabet ta±m MEM.T 1 i
M EM.T 2),
• Ω = {I, W, T, C, ⊥} jest sko«czonym zbiorem symboli (alfabet ta±my P ST ). 3.2.3.3 Konguracja automatu P SA
Konguracj¡ automatu P SA b¦dziemy nazywa¢ czwórk¦:
(Q, M EM.T 1, M EM.T 2, P ST ) ∈ {Q1, Q2, Q3, Q4, Q5, Q6, QF} × Γ?× Γ?× Ω?.
Pole Konguracja
inicjalna Domena Opis
Q Q1
{Q1, Q2, Q3, Q4,
Q5, Q6, QF} Bie»¡cy stan automatu
M EM.T 1 ↑ 10 · · · 0⊥ Γ? Ta±ma zawieraj¡ca dane aktualnie prowadzonych procesów analizy. Strzaªka oznacza element ta±my znajduj¡cy si¦ aktualnie pod gªowic¡ zapisuj¡c¡.
M EM.T 2 ↑ 10 · · · 0⊥ Γ? Ta±ma zawieraj¡ca dane aktualnie prowadzonych procesów analizy. Strzaªka oznacza element ta±my znajduj¡cy si¦ aktualnie pod gªowic¡ zapisuj¡c¡.
P ST ↑ I · · · I⊥ Ω? Ta±ma zawieraj¡ca statusy pracy parserów z puli
P P A. Strzaªka oznacza element ta±my znajduj¡cy si¦ aktualnie pod gªowic¡ czytaj¡c¡.
3.2.3.4 Funkcja przej±cia automatu P SA
Dla automatu P SA na zbiorze konguracji zdeniujemy funkcj¡ przej±cia. Z ka»dym przej±ciem mi¦dzy dwoma konguracjami mo»e by¢ zwi¡zana akcja dwojakiego rodzaju: 1. zapisanie wska¹nika do danych parsera na wªa±ciw¡ ta±m¦ MEM.T 1 lub
M EM.T 2 (w zale»no±ci od stanu),
2. zako«czenie danej ±cie»ki analizy wraz z wypisaniem na wyj±cie gªównego auto-matu danych procesu. Zdarzenie to mo»e nast¡pi¢ wskutek:
a) wej±cia wªa±ciwego parsera w stan terminalny ACC lub ERR, b) zbyt niskiej warto±ci funkcji stopu analizy,
c) osi¡gni¦cia ko«ca wªa±ciwej ta±my MEM.T ∗. (oznacza to przekroczenie do-puszczalnej liczby aktywnych procesów).
3.2.3.4.1 Pod gªowic¡ ta±my P ST znajduje si¦ jeden z symboli I, W lub ⊥ Je±li pod gªowic¡ automatu P SA ta±my PST jest symbol I, W lub ⊥, wtedy gªowica przesuwa si¦ do nast¦pnego parsera, chyba, »e pod gªowic¡ jest znak ko«ca ta±my, wtedy gªowica ustawiana jest na pierwsz¡ komórk¦ ta±my P ST . W takim wypadku gªowica ta±my MEM.T 1 (odpowiednio MEM.T 2) pozostaje na uprzedniej pozycji, a stan automatu P SA nie ulega zmianie. Z powy»sz¡ zmian¡ konguracji nie jest powi¡zana
»adna akcja. Poni»sze tabele zawieraj¡ mo»liwe warianty zmiany konguracji w opisanej powy»ej sytuacji.
Q M EM.T 1 / MEM.T 2 P ST AKCJ A
Q1/Q2/Q5 pr1· · · ↑ pri· · · prn⊥/ par1· · · ↑ parjparj+1· · · parm⊥ BRAK
Q1/Q2/Q5 pr1· · · ↑ pri· · · prn⊥/ par1· · · parj↑ parj+1· · · parm⊥
Q M EM.T 1 / MEM.T 2 P ST AKCJ A
Q1/Q2/Q5 pr1· · · ↑ pri· · · prn⊥/ par1· · · parm↑ ⊥ BRAK
Q1/Q2/Q5 pr1· · · ↑ pri· · · prn⊥/ ↑ par1· · · parm⊥
Q M EM.T 1 / MEM.T 2 P ST AKCJ A
Q3/Q4/Q6 / pr1· · · ↑ pri· · · prn⊥ par1· · · ↑ parjparj+1· · · parm⊥ BRAK
Q3/Q4/Q6 / pr1· · · ↑ pri· · · prn⊥ par1· · · parj↑ parj+1· · · parm⊥
Q M EM.T 1 / MEM.T 2 P ST AKCJ A
Q3/Q4/Q6 / pr1· · · ↑ pri· · · prn⊥ par1· · · parm↑ ⊥ BRAK
Q3/Q4/Q6 / pr1· · · ↑ pri· · · prn⊥ ↑ par1· · · parm⊥
3.2.3.4.2 Pod gªowic¡ ta±my P ST znajduje si¦ jeden z symboli C (dane procesu do zapisania) lub T (proces do zako«czenia)
Je±li pod gªowic¡ automatu P SA ta±my PST jest symbol C (komórka park.status), oznacza to, »e wska¹nik do danych bie»¡cego parsera powinny zosta¢ zapisane na ta±mie
M EM.T 1 (MEM.T 2 odpowiednio). Poni»ej opisane s¡ mo»liwe warianty tej sytuacji. 3.2.3.4.3 Zapis kolejnego procesu na ta±mie MEM.T ∗. Je±li na ta±mie
M EM.T 1(MEM.T 2 odpowiednio) jest wolne miejsce, wtedy wska¹niki do danych pro-cesu wykonanego przez j-ty parser zostan¡ zapisane na ta±mie MEM.T 1 (MEM.T 2 odpowiednio). Nast¦pnie status j-tego parsera na ta±mie P ST zostanie ustawiony na warto±¢ I. Po wykonaniu tej czynno±ci, gªowice ta±m P ST oraz MEM.T 1 (MEM.T 2 odpowiednio) zostaj¡ przesuni¦te o jedn¡ komórk¦ w prawo.
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q1/Q2/Q5 pr1· · · ↑ pripri+1· · · prn⊥/ par1· · · ↑ parjparj+1· · · parm⊥
Je±li parj.status = C, to:
pri:= parj.dpd parj.status := I
Q1/Q5/Q5 pr1· · · pri↑ pri+1· · · prn⊥/ par1· · · parj↑ parj+1· · · parm⊥
Je±li parj.status = T, to:
P R_T ERM :
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q1/Q2/Q5 pr1· · · ↑ prn⊥/ par1· · · ↑ parjparj+1· · · parm⊥
Je±li parj.status = C, to:
pri:= parj.dpd parj.status := I
Q1/Q5/Q5 pr1· · · prn↑ ⊥/ par1· · · parj↑ parj+1· · · parm⊥
Je±li parj.status = T, to:
P R_T ERM :
T ERM →OUTPUT
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q3/Q4/Q6 / pr1· · · ↑ pripri+1· · · prn⊥ par1· · · ↑ parjparj+1· · · parm⊥
Je±li parj.status = C, to:
pri:= parj.dpd parj.status := I
Q3/Q6/Q6 / pr1· · · pri↑ pri+1· · · prn⊥ par1· · · parj↑ parj+1· · · parm⊥
Je±li parj.status = T, to:
P R_T ERM :
T ERM →OUTPUT
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q3/Q4/Q6 / pr1· · · ↑ prn⊥ par1· · · ↑ parjparj+1· · · parm⊥
Je±li parj.status = C, to:
pri:= parj.dpd parj.status := I
Q3/Q6/Q6 / pr1· · · prn↑ ⊥ par1· · · parj↑ parj+1· · · parm⊥
Je±li parj.status = T, to:
P R_T ERM :
T ERM →OUTPUT
Akcja T ERM : P R_T ERM →OUTPUT oznacza wypisanie wszystkich danych procesu wykonywanego przez j-ty parser (ten, który znajduje si¦ pod gªowic¡ na ta±mie
P ST) na wyj±cie automatu F DP LLA(k).
Zapis kolejnego procesu - na wªa±ciwej ta±mie MEM.T ∗ osi¡gni¦to znak ko«ca ta±my
Je±li na ta±mie MEM.T 1 (MEM.T 2 odpowiednio) nie ma ju» wolnego miejsca, dany proces zostanie zako«czony z odpowiedni¡ informacj¡. Oznacza to wypisanie wszystkich danych procesu na wyj±cie automatu OUT P UT . Nast¦pnie status j-parsera na ta±mie
P ST zostanie ustawiony na warto±¢ I. Po wykonaniu tej akcji gªowica ta±my P ST zostaje przesuni¦ta i jedn¡ komórk¦ w prawo.
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q1/Q2/Q5 pr1· · · prn↑ ⊥/ par1· · · ↑ parjparj+1· · · parm⊥ T ERM :
M AX_NO_P ROC_EXC
Q1/Q5/Q5 pr1· · · prn↑ ⊥/ par1· · · parj↑ parj+1· · · parm⊥ →OUTPUT
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q3/Q4/Q6 / pr1· · · prn↑ ⊥ par1· · · ↑ parjparj+1· · · parm⊥ T ERM :
M AX_NO_P ROC_EXC
Akcja T ERM : MAX_NO_P ROC_EXC →OUTPUT oznacza wypisanie wszystkich danych procesu wykonywanego przez j-ty parser (ten, który znajduje si¦ pod gªowic¡ na ta±mie P ST ) na wyj±cie automatu F DP LLA(k).
3.2.3.4.4 Kolejna iteracja analizy ta±my P ST (ta±ma P ST jest czytana od pocz¡tku) Je±li pod gªowic¡ na ta±mie P ST znajduje si¦ znak ko«ca ta±my, wtedy gªowica przesuwana jest na pocz¡tek ta±my P ST , wi¡»e si¦ to ze zmian¡ statusów automatu P SA (Q5 → Q2 (odpowiednio Q6 → Q4)). Gªowica na ta±mie MEM.T 1 (MEM.T 2 odpowiednio) pozostaje w uprzedniej pozycji. Z t¡ zmian¡ konguracji nie jest powi¡zana »adna akcja.
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q5 pr1· · · ↑ pri· · · prn⊥/ par1· · · parm↑ ⊥ BRAK
Q2 pr1· · · ↑ pri· · · prn⊥/ ↑ par1· · · parm⊥
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q6 / pr1· · · ↑ pri· · · prn⊥ par1· · · parm↑ ⊥ BRAK
Q4 / pr1· · · ↑ pri· · · prn⊥ ↑ par1· · · parm⊥
Zako«czenie zapisu procesów (gotowo±¢ do rozpocz¦cia analizy kolejnego prymitywu rozmytego)
Je±li pod gªowic¡ na ta±mie P ST znajduje si¦ znak ko«ca ta±my i automat P SA jest w stanie Q2(odpowiednio Q4), oznacza to, »e zapisano ju» dane wszystkich zada« analizy przydzielonych w danej iteracji i mo»na przej±¢ do analizy kolejnego prymitywu rozmytego. Oznacza to zmian¦ stanu z Q3(odpowiednio Q1). Z t¡ zmian¡ konguracji nie jest powi¡zana »adna akcja.
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q2 pr1· · · ↑ pri· · · prn⊥/ par1· · · parm↑ ⊥ BRAK
Q3 pr1· · · ↑ pri· · · prn⊥/ ↑ par1· · · parm⊥
Q M EM.T 1/ MEM.T 2 P ST AKCJ A
Q4 / pr1· · · ↑ pri· · · prn⊥ par1· · · parm↑ ⊥ BRAK
Q1 / pr1· · · ↑ pri· · · prn⊥ ↑ par1· · · parm⊥