Pʐ؂vO@`̂SETu[`֐(1)`

EPʐ؂vÕTu[`֐̃t@ĆA̂QłB

@@@sepa*_1.c
@@@sepa*_2.c

E"sepa*_1.c"́A̂悤ȋ@\̊֐\ĂB

@@  ̓ǂݍ
@@  񏈗
@@  ̌o
@@  ڑ̏
@@  Xg̐
@@  o͂̃gD[


P  ̓ǂݍ

@@@searchw( word, count, inn, bytes, poses, yomi )
  @@  |
@@@@|-- read_srec( recn, val )
@@@  |-- read_trec( recn, type, val, ch )
@@@  +-- read_irec( addr, in, poses, yomi )

@@@set_suppldata()


searchw( word, count, inn, bytes, poses, yomi )

@iϐj
    char  word[WRD_L]                 Ώۂ̌̕\Líj
@@char  yomi[DEPTH][WIDTH][STR_L]   ʂ̓ǂ݁iój
    int   *count                      ʂ̕\L̐iój
@@int   inn[DEPTH]                  ʂ̌`ԑf̐iój
@@int   bytes[DEPTH]                ʂ̕\L̒iój
    short poses[DEPTH][WIDTH]         ʂ̌`ԑfރR[hiój

@i@\j
@ETRIE\̌sB

@EΏۂƂȂwordnƁATRIE\Aʓ
@@\ĽcountA\LƂ̌`ԑf̌innA\LƂ̒bytesA`ԑf
@@Ƃ̌`ԑfR[hposesA`ԑfƂ̓ǂyomi̒lԂB

@EႦ΁AuwZvƂnāAuwZvAuwiԁjvAŗL
@@uwvƂR̌`ԑfꂽƂƁÂ悤ȒlԂB

@@@@count=2i\ĹuwZvƁuwv̂Qj
@@@@inn[0]=1iuwZvƂ\Ľ`ԑf͂Pj
@@@@inn[1]=2iuwvƂ\Ľ`ԑf͂Qj
@@@@poses[0][0]=10iuwZvƂ`ԑf͈ʖj
@@@@poses[1][0]=46iuwvƂ`ԑf̂ЂƂ߂̓osܒip̌ꊲj
@@@@poses[1][0]=14iuwvƂ`ԑf̂ӂ߂͐lj


set_suppldata()

@iϐj
    int  n                ꎞIȕϐ
    int  code             `ԑfރR[h
    char sign             ⑫̍s̃}[N
    char word[MAXLEN]     ⑫ɓo^Ă`ԑf̕\L
    char name[80]         ⑫̃t@C
    FILE *fp              ⑫̃t@C|C^

@i@\j
@E[U⑫"suppl*.dat"`ԑfǂݍ݁AǉȂΔz
@@plusdataɓo^A폜ȂΔzminusdataɓo^B

@Eǉ񂪂num_plusA폜񂪂num_minusCNgB

@E[U⑫́APCłɂĂ͗B̎A̔łɂĂTRIE\
@@̖₤߂̎ŁAPsP`ԑfɑΉeLXgt@C
@@łBႦ΁A̎

@@@@@-s(TAB)41
@@@@@+s(TAB)74

@@ƂQśATRIEɂ͌`ԑfR[h41œo^ĂwsxƂ`ԑf
@@폜A`ԑfR[h74Ƃď邱ƂĂB

@E[U⑫ɂāAs'*'̍s̓RgsłB


Q  񏈗

@@@substring( str, pos1, leng, substr )

@@@  +-- reverse(s)
@@    |
@@@itoa(n, s)
@@@itoahex(n, s)

@@@  +-- int a_to_int(c)
@@    |
@@@int ahex_to_int(s)

@@@int str_head_cmp( astr, bstr )


substring( str, pos1, leng, substr )

@iϐj
    char str[]      풊oíj
    int  pos1       o擪̈ʒuíj
    int  leng       o钷íj
    char substr[]   oiój

@i@\j
@Estrpos1leng̕𒊏oBosubstrłB


int str_head_cmp( astr, bstr )

@iϐj
    char astr[]   ʏ́A͕̓
    char bstr[]   ʏ́AZ͕̓

@i@\j
@Ebstrastr̐擪ƈv邩ǂiastr̐擪
@@bstrł邩ǂj𒲂ׂBvĂ0ԂB


R@̌o

@@  int isjdigit(cc)
@@  int isjkansuuji(cc)
@@  int isjalpha(cc)
@@  int isjkatakana(cc)

@@          +-- int jbreak(str,isj)
@@          |-- int jspan(str,isj)
@@    +-- jextract(str,isj,extstr,head,spanlen,remstr)
@@    |
@@  find_isj(initstr,isj,isjcode,node_id,xn)


int isjdigit(cc)

@iϐj
@@char cc[2]  @̑ΏۂƂȂSpP

@i@\j
@ESpccASpArAiPAQARAcjł邩ǂ𒲂ׂB
@@Ȃ1ԂAłȂ0ԂB


int isjkansuuji(cc)

@iϐj
@@char cc[2]  @̑ΏۂƂȂSpP

@i@\j
@ESpccASpiA\ASAcjł邩A܂͑SpArA
@@iPAQARAcjł邩ǂ𒲂ׂBȂ1ԂAłȂ
@@0ԂB


int isjalpha(cc)

@iϐj
@@char cc[2]  @̑ΏۂƂȂSpP

@i@\j
@ESpccASpAt@xbgi`AaAbAcAAAAcjł邩
@@ǂ𒲂ׂBȂ1ԂAłȂ0ԂB


int isjkatakana(cc)

@iϐj
@@char cc[2]  @̑ΏۂƂȂSpP

@i@\j
@ESpccASpJ^JiiAACAEAcjł邩ǂ𒲂ׂB
@@1ԂAłȂ0ԂB


int jbreak(str,isj)

@iϐj
    char str[]    ̑ΏۂƂȂ镶
    int (*isj)()  𔻒肷֐

@i@\j
@E֐isjŔ肳蕶킪AstrɏoĂʒui擪̃o
@@CgjԂB܂A蕶킪Ȃ-1ԂB

@EႦ΁Astr"IPXXPN"Aisjisjdigitn΁ASpArA
@@uPv4oCgڂɏoĂ̂ŁA4ԂB

@EeLXgvO~OSNOBOL4+̑gݍ݊֐BREAKƗގ̋@\B


int jspan(str,isj)

@iϐj
    char str[]    ̑ΏۂƂȂ镶
    int (*isj)()  𔻒肷֐

@i@\j
@E֐isjŔ肳蕶킪Astr̐擪AĂi擪
@@̃oCgjԂB܂A蕶킪擪ɂȂ0ԂB

@EႦ΁Astr"PXXPN"Aisjisjdigitn΁ASpArÁu
@@PXXPvƐ擪8oCgAĂ̂ŁA8ԂB

@EeLXgvO~OSNOBOL4+̑gݍ݊֐SPANƗގ̋@\B


jextract(str,isj,extstr,head,spanlen,remstr)

@iϐj
    char str[]      ̑ΏۂƂȂ镶íj
    char extstr[]   oꂽ
    char remstr[]   c̕
    int (*isj)()    񒊏ô߂ɕ𔻒肷֐
    int *head       oꂽ̐擪̈ʒu
    int *spanlen    oꂽ̒

@i@\j
@EstrA֐isjŔ肳蕶݂̂Ȃ镶extstrP
@@oBheadɂextstȑoʒuAspanlenɂextstr̒Aremstr
@@extstrstr菜c̕ԂB

@EႦ΁Astr"PXXPNPQ"Aisjisjdigitn΁ASpArA
@@݂̂Ȃ钷8oCg̕uPXXPv4oCgڂɌ̂ŁA
@@̂悤ȒlԂB

@@@@extstr  = "PXXP"
@@@@head    = 4
@@@@spanlen = 8
@@@@remstr  = "N"


find_isj(initstr,isj,isjcode,node_id,xn)

@iϐj
    char initstr[]          ̑ΏۂƂȂ镶íj
    int  (*isj)()           𔻒肷֐íj
    int  isjcode            `ԑfރR[híj
    int  *node_id;          `ԑfm[ḧAԍíj
    struct node xn[MAXNODE] `ԑfm[h̔zi͂ój

@i@\j
@EstrA֐isjŔ肳蕶݂̂Ȃ镶extstrA
@@\Ȍ蒊oA`ԑfR[hisjcodeƂāA`ԑfm[h̔zvf
@@xn[node_id]֓o^B

@EႦ΁Astr"PXXPNPQ"AisjisjdigitAisjcode13n΁A
@@SpArÂ݂Ȃ镶uPXXPvƁuPQvA`ԑfR[h
@@13^Č`ԑfm[h̔zɓo^B


S@ڑ̏

@@@init_conjtabl(val)
@@@entry_conj(p,q,val)
@@@set_conjtabl()
@@@int check_conj(p,q)


init_conjtabl(val)

@iϐj
    int val   ڑ]l

@i@\j
@E`ԑfڑe[uf[^̂QzconjtablAڑ]lvali0܂1j
@@ŏBڑ]ĺA0͐ڑsA1͐ڑ\Bs̃e[úA
@@512rbg~512rbg̑傫B


entry_conj(p,q,val)

@iϐj
    int p     ̌`ԑf̌`ԑfރR[h
    int q     Ě`ԑf̌`ԑfރR[h
    int val   ڑ]l

@i@\j
@E`ԑfރR[hpq̍Eւ̐ڑ]lvali0܂1jA`ԑfڑ
@@e[uf[^̂Qzconjtabl֓o^B


set_conjtabl()

@iϐj
   int i, j       ꎞIȕϐ
   char cc        t@Cǂݍ񂾂PoCg
   char name[80]  `ԑfڑe[uf[^̃t@C
   FILE *fp_in    `ԑfڑe[uf[^̃t@C|C^

@i@\j
@E`ԑfڑe[uf[^AOt@Cconjtabl.datÂQ
@@zconjtabl֓ǂݍށB

@E̊֐́A`ԑfڑe[uf[^̃t@C̐擪512*512/8=32768o
@@CgA"eof"悤܂AēǂݍށBāA32768oC
@@gt@CƁAʂ̃t@C̈ǂł܂Ƃ肤̂
@@ӁB"eof"̌oȂ̂́Aڑe[uf[^eofƓR[h
@@\邽߁B


int check_conj(p,q)

@iϐj
    int p     ̌`ԑf̌`ԑfރR[h
    int q     Ě`ԑf̌`ԑfރR[h

@i@\j
@E`ԑfރR[hpq̍Eւ̐ڑ]l̂Qzcontabl
@@ǂݎAʁi0܂1jԂBڑȂ1AڑsȂ0B


T@Xg̐

@@@init_xnode()

@@@  +--struct ilist *new_ilist(id)
@@    |
@@  join_ilist(x,y)

@@    +-- struct slist *new_slist(str,n)
@@    |
@@  join_slist(str,n)


init_xnode()

@iϐj
@@int i   @`ԑfm[ḧAԍ

@i@\j
@E`ԑfm[h̔zxnode̒lB`ԑfm[h̑̕ϐnum_nodes
@@ɂ0ďB


join_ilist(x,y)

@iϐj
    int x,y@ `ԑfm[ḧAԍ

@i@\j
@E`ԑfm[h̔zvfxnode[x]̍\̃onodelistilȂX
@@gjցAlyȂB


join_slist(str,n)

@iϐj
    char str[MAXOUT]  V̕
    int  n            ̓K؂wWl

@Ẽ̕XgsolutionցAV̕strwWln̒lɉđ}
@@BXǵAwWln̒l̏ɏɃ\[gĂB

@EXgsolution̏Ԃ́A擪ɎwWl0AɎwWlMAXNODÊQ̌`
@@fm[hiǂ_~[jȂ郊XgłB


U@o͂̃gD[

@@@wait_return()
@@@new_line()
@@@bell()


wait_return()

@i@\j
@EsR[h͂܂ŁAvȌ~B


new_line()

@i@\j
@EsR[hWo͂ƃt@C"sepa.suc"֏o͂B


bell()

@i@\j
@Ex炷BG[̌xɎgpB


