Przejdź do treści

Parser, las i koszt

Sumy kosztów drzewa nikt nie zmierzył, więc nie wiadomo, czy bije porządek dzisiejszy. Las porządkuje ciała jednej pozycji jej kosztem, a drzewa wychodzą z niego wyliczaniem w głąb, więc kolejność czytań jest leksykograficzna: koszt produkcji przy korzeniu waży więcej niż każdy koszt produkcji pod nim, choćby ich było kilka. Koszt morfologii sumuje się już dziś i jest minimum po poddrzewie (koszt_morfologii w olski/parse/las.py), więc pytanie o sumę stawia się teraz o drugą połowę kosztu, a nie o cały. Porządek po sumie kosztów całego drzewa jest inną odpowiedzią i wymaga innego wyliczania, bo minimum globalne żąda kolejki nad lasem, a nie przejścia w głąb, i zdejmuje leniwość, na której stoi numer_czytania w olski/parse/las.py: wyliczanie przystaje dziś na pierwszym drzewie, które trafia, i granicy nie potrzebuje. Ruchem jest wariant napisany w sondzie, a nie w parserze, i jedna liczba obok tamtej: złote czytanie Składnicy pod jednym porządkiem i pod drugim. Suma liczona po wyprowadzenia w olski/parse/las.py odpowiedzi nie da, bo ta metoda czyta tablicę, czyli las przed unifikacją, i minimum wypada w niej czasem na kształcie, którego unifikacja nie przepuszcza; sumę bierze się przez to po krawędziach klas, a nie po ciałach pozycji. Dopiero różnica mówi, czy warto płacić za kolejkę. Trop jest jeden i jest przeciw: sesja, która wpuściła koszt morfologii, sumowała przez pomyłkę także koszty produkcji i przestawiła wtedy nad prozą repozytorium dwa razy więcej zdań, a przeczytane ręką wypadły gorzej — Co pan sądzi o pomyśle Pawła Piskorskiego? wychodziło pierwszym czytaniem z Co pan w wyrażeniu przyimkowym. Sądów jest kilkanaście i pomiarem to nie jest, więc trop mówi tyle, że sondę warto puścić, zanim ktoś napisze kolejkę.

Przedstawiciel pozycji może stać w klasie, której żadne czytanie nie bierze. _przedstawiciel w olski/parse/las.py bierze pierwsze drzewo pozycji bez odsiewu po klasach żywych, a _kształty obok niego ten odsiew ma, więc nazwa konstytuenta bierze się czasem z kształtu, którego werdykt nie liczy. Rozpiętość jest w obu ta sama, więc formy różni w nich tylko podział na segmenty. Ruchem jest next(self._kształty(pozycja)) w miejsce tamtej pętli, a przeszkodą pozycja bez ani jednej klasy żywej: dziś oddaje nazwę, a wtedy podniosłaby wyjątek. Do przeczytania jest, czy nad Składnicą taka pozycja pada i czy pada z innymi formami, bo od tego zależy, czy to usterka, czy sam porządek w kodzie.

Wykaz morfologii sumuje odczytania po ciałach jednej klasy, a klasy sąsiedniej nie widzi. Las._wsparte_kształtu w olski/parse/las.py idzie po produkcjach spakowanych pod jedną parą pozycji i klasy cech, więc ciało, które ten sam kształt buduje, wypuszczając cechy z klasy obok, do sumy nie wchodzi. Widać to na lemacie, którego leksykon walencyjny nie zna: Granicę pokazuje sama odpowiedź. wypisuje pokazywać, a pokazować przemilcza, bo olski/leksykon.txt ma wpis tylko dla pierwszego, więc drugi bierze ramę domyślną i wychodzi inną klasą walencyjną. Nad zdaniami README trafia to na trzy formy — pokazuje, staje, zeszła — i na lematy, których ten rejestr nie używa: pokazować, stajać, zniść. Do przeczytania jest przedtem, czy klasa jest wyborem rodzica, czy tylko kanałem cech: suma sięgająca do klasy obok mówi, że forma stoi tu pod ramą, której rodzic nie wziął, a suma w obrębie klasy tego nie mówi. Wpis zamyka się też przez to, że tak zostaje, i wtedy powód idzie do Las._wsparte_kształtu, bo dziś stoi tam granica bez wywodu. Sondą jest warunek, który tests/test_las.py sprawdza na garści zdań — zdanie zawężone do odczytań liści wyprowadza ten sam kształt — puszczony nad całym README, bo w tamtej garści tej klasy nie ma.

Zatrzymanie kosztuje nad zdaniem odrzuconym więcej niż zbudowanie tablicy, bo najdalszy w olski/parse/las.py przechodzi tablicę drugi raz i unifikuje przy tym przebyte ciała, czego samo jej budowanie nie robi wcale. Pomija je ten, kto go nie czyta (werdykt w olski/werdykt.py), więc do potanienia zostaje samo drugie przejście. Kolejka w _przed_formą dostaje przy ożywieniu symbolu wszystkie jego produkcje, a tablica ma stan dla mniejszości z nich, więc ponad połowa par schodzi z kolejki, nie robiąc nic. Ruchem jest kolejka symboli w miejsce kolejki par: rozwinięty symbol brałby wtedy z tablicy same stany o tej głowie, a produkcje czekające na pierwszą córkę wchodziłyby tak, jak wchodzą do tablicy — przez możliwe tej pozycji, a nie przez przejrzenie wszystkich. Przybliżenie tańsze od tego, czyli najdalsza pozycja o jakimkolwiek stanie tablicy, jest zmierzone i odpada: myli się w co czwartym zdaniu, i to w obie strony, bo tablica trzyma stan bez oglądania się na unifikację i na to, czy analiza częściowa ten stan w ogóle przewidziała. Do przeczytania jest _przed_formą wraz z _prefiks w olski/parse/las.py: to one są tym drugim przejściem, a warunek na analizę częściową opisuje pierwsze.