Błąd #1456
Nie chce wyłuskać pierwszego tokenu gdy MATCH zawiera pusty MATCH
Status: | Zamknięty | Start date: | 26 Apr 2011 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | Adam Radziszewski | % Done: | 100% | |
Category: | - | |||
Target version: | - |
Description
(przeniosłem z corpus do wccl)
Wywołanie wccl-match -i ccl in3.xml m3.ccl
się wywala z komunikatem Received starting match that points outside sentence
.
Ostatnie dopasowanie to MATCH(MATCH(),TOK[6])
, wydaje się ono prawidłowe — najpierw pusty MATCH będący wynikiem operatora optional
, potem jest już dopasowanie na rzeczownikowy token. Powinien pominąć puste matche i dojść do tego TOK[6]
.
History
#1 Updated by Adam Wardyński over 12 years ago
- Status changed from Nowy to Rozwiązany
- Assignee changed from Adam Wardyński to Adam Radziszewski
- % Done changed from 0 to 100
Tak naprawdę to był błąd w MatchVector::first_token - funkcja szukała najmniejszej pozycji na liście, nie ignorując pustych poddopasowań, które zwracają Position::Nowhere. A tak się składa, że Position::Nowhere to min_int czyli zawsze najmniejsza wartość, która niestety była zwracana.
Zmieniłem w ten sposób, że ujemne wartości są ignorowane, korzystając implicite z tego, że Nowhere i inne specjalne są też negatywne, a nie powinny tak naprawdę żadne negatywne znaleźć się w dopasowaniach. Czyli teraz szukana jest najmniejsza, ale nieujemna wartość.
commit 1270ffe8237eff041bd8745f503e3e90982402c3
#2 Updated by Adam Radziszewski over 12 years ago
- Status changed from Rozwiązany to Zamknięty