Błąd #1446

Wyłuskanie nie widzi matcha?

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

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

Also available in: Atom PDF