Przejdź do treści

olski.dopełniacze

Łańcuch dopełniaczy, czyli grupa imienna, w której przydawka stoi pod przydawką.

Raport zawiera analizę wyników badań skuteczności metod leczenia pacjentów oddziału. każe czytelnikowi zgadywać, co do czego należy: każda z tych form określa formę stojącą przed nią, a która z nich określa którą, mówi dopiero rozbiór. Naprawą jest czasownik, a nie krótszy łańcuch: Raport analizuje, jak skutecznie oddział leczy pacjentów.

Reguła pyta o rozbiór, bo dopełniacz jest u Morfeusza zlany z innymi przypadkami, a łańcuch czytany ze znaczników liczy formy zamiast przydawek: zdania tego jednego pliku ma cztery formy w dopełniaczu i jedną przydawkę. Zdanie, którego gramatyka nie wyprowadza, zostaje przez to bez wiersza, i tym różni się ta reguła od chwytu rejestru (olski/chwyty.py), który czyta się z samej morfologii.

Wiersz o łańcuchu pada obok werdyktu i tylko pod flagą --dopełniacze, bo sądów czytelnika nad cudzym tekstem ta reguła nie ma; próg wraz z tym, co go rusza, trzyma docs/linter.md#czwarty-wykrywacz-zgłasza-łańcuch-dopełniaczy.

ŁAŃCUCH_DOPEŁNIACZY = 'łańcuch dopełniaczy' module-attribute

PRÓG = 4 module-attribute

NAPRAWA_ŁAŃCUCHA = 'przetnij grupę i orzeknij czynność czasownikiem' module-attribute

Łańcuch dataclass

Grupa imienna wraz z liczbą przydawek, które w niej wiszą jedna pod drugą.

Liczba idzie razem z grupą, bo to ona rozstrzyga o zgłoszeniu (PRÓG), a autor odszukuje grupę w swoim zdaniu po formach.

Source code in olski/dopełniacze.py
42
43
44
45
46
47
48
49
50
51
52
53
@dataclass(frozen=True)
class Łańcuch:
    """Grupa imienna wraz z liczbą przydawek, które w niej wiszą jedna pod drugą.

    Liczba idzie razem z grupą, bo to ona rozstrzyga o zgłoszeniu (:data:`PRÓG`),
    a autor odszukuje grupę w swoim zdaniu po formach.
    """

    #: Grupa tak, jak stoi w zdaniu.
    grupa: str
    #: Ile przydawek dopełniaczowych stoi w niej jedna pod drugą.
    ile: int

grupa instance-attribute

ile instance-attribute

__init__(grupa, ile)

łańcuchy(wynik)

Łańcuchy dopełniaczy tego zdania; pusta krotka jest milczeniem.

Zdanie wieloznaczne wydaje ten łańcuch, który stoi w każdym jego czytaniu. Łańcucha, którego jedno czytanie nie ma, czytelnik nie musi czytać łańcuchem, a reguła myli się przez to w stronę milczenia, tak samo jak zawężenia warstwy zaimkowej (olski/odniesienia.py). Czytania idą tu tak, jak wydał je las, a on urywa je na swojej granicy (olski.parse.MAX_READINGS), więc zdanie o setkach czytań myli się w stronę odwrotną: łańcuch zdjęty czytaniem urwanym zostaje.

Source code in olski/dopełniacze.py
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
def łańcuchy(wynik: Result) -> tuple[Łańcuch, ...]:
    """Łańcuchy dopełniaczy tego zdania; pusta krotka jest milczeniem.

    Zdanie wieloznaczne wydaje ten łańcuch, który stoi w każdym jego czytaniu.
    Łańcucha, którego jedno czytanie nie ma, czytelnik nie musi czytać łańcuchem,
    a reguła myli się przez to w stronę milczenia,
    tak samo jak zawężenia warstwy zaimkowej (``olski/odniesienia.py``).
    Czytania idą tu tak, jak wydał je las, a on urywa je na swojej granicy
    (:data:`olski.parse.MAX_READINGS`), więc zdanie o setkach czytań
    myli się w stronę odwrotną: łańcuch zdjęty czytaniem urwanym zostaje.
    """
    if not wynik.readings:
        return ()
    pierwsze, *dalsze = [_w_czytaniu(czytanie) for czytanie in wynik.readings]
    return tuple(łańcuch for łańcuch in pierwsze if all(łańcuch in inne for inne in dalsze))