Błąd #1456

Nie chce wyłuskać pierwszego tokenu gdy MATCH zawiera pusty MATCH

Added by Adam Radziszewski over 12 years ago. Updated over 12 years ago.

Status:ZamkniętyStart date:26 Apr 2011
Priority:NormalnyDue 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].

in3.xml Magnifier - Wejście (3.49 KB) Adam Radziszewski, 26 Apr 2011 15:29

m3.ccl - Reguła (180 Bytes) Adam Radziszewski, 26 Apr 2011 15:29

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

Also available in: Atom PDF