Błąd #1446
Wyłuskanie nie widzi matcha?
Status: | Zamknięty | Start date: | 21 Apr 2011 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | Adam Radziszewski | % Done: | 100% | |
Category: | - | |||
Target version: | - |
Description
Kiedy w poniższej regule usunę ->2, to działa dobrze. Co więcej, przy ->1 też pisze, że out of range. Sprwadzałem ->0, ale wychodzi konkretny komunikat, że indeksy liczymy od 1 (BTW super, że taki komunikat jest i wiadomo od razu o co chodzi).
wccl-match in1.xml m2.ccl
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd"> <cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb"> <chunkList> </chunkList> </cesAna>
Match vector index out of range
cat m2.ccl
apply( match( regex( base[0], 'wyżyna'), and( inter(class[0], {subst}), inter(cas[0], {nom}) ) ), actions( mark(M->2, 'HIGHLAND_NAM') // -> 2 ) )
cat in1.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd"> <cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb"> <chunkList> <chunk> <chunk type="s"> <tok> <orth>To</orth> <lex><base>ten</base><ctag>adj:sg:nom:n:pos</ctag></lex> <lex><base>ten</base><ctag>adj:sg:acc:n:pos</ctag></lex> <lex><base>to</base><ctag>conj</ctag></lex> <lex><base>to</base><ctag>pred</ctag></lex> <lex><base>to</base><ctag>qub</ctag></lex> <lex><base>to</base><ctag>subst:sg:nom:n</ctag></lex> <lex><base>to</base><ctag>subst:sg:acc:n</ctag></lex> <lex><base>to</base><ctag>subst:sg:voc:n</ctag></lex> </tok> <tok> <orth>jest</orth> <lex><base>być</base><ctag>fin:sg:ter:imperf</ctag></lex> </tok> <tok> <orth>wyżyna</orth> <lex><base>wyżyna</base><ctag>subst:sg:nom:f</ctag></lex> </tok> <tok> <orth>pies</orth> <lex><base>pies</base><ctag>subst:sg:nom:m2</ctag></lex> </tok> </chunk> </chunk> </chunkList> </cesAna>
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
Zasadniczo był prosty błąd w logice sprawdzającej zasięg, który naprawiłem (3ae5c0df1801bc0d446eee18915544c272b2309a).
Jednak teraz dwie inne rzeczy wypłynęły:
1) M->2 nie zadziała i tak, bo $m:_M ma tylko 1 matcha, który jest sam w sobie wektorem, który matchuje dwa tokeny. Czyli M->1 zadziała, i dopiero trzeba by M->1->2 (M->1->1 dopasowuje "wyżyna", dopiero M->1->2 dopasowuje nazwę tej wyżyny). Zapewne takie zachowanie to jednak nie jest to, czego chcemy, choć pasuje bardziej do tego, co myśleliśmy oryginalnie.
2) Niestety zapis typu M->1->2 się nie parsuje. To jest jak rozumiem osobna kwestia, do poprawy w gramatyce.
Na obie sprawy otwieram osobne issues, a niniejsze uznaje za rozwiązane.
#2 Updated by Adam Radziszewski over 12 years ago
- Status changed from Rozwiązany to Zamknięty