YamaKen
yamak****@bp*****
2005年 8月 22日 (月) 17:21:23 JST
At Mon, 22 Aug 2005 16:12:10 +0900, mover****@hct***** wrote: > 後もう一つバグっぽいコードを見付けたのですが、rkに詳しい方がいらっしゃいましたら調査 > お願い出来ますでしょうか? 以前調べた時にはrk.scmには#fと()の区別ができてないコードが散見さ れました。テストが無かったのでエンバグの危険性を考えて書き換えは しませんでしたが。 一応、参考までに昔rkを調査した時の個人メモを添付します。しかし、 SIOD依存の多く残っているコードは大抵テストのないコードなので、エ ンバグの危険を冒してまでR5RS互換路線の泥沼にはまるよりは SigScheme側でSIODバグ互換を目指す方がはるかに建設的だと思います (letの件も)。 テストのないIMコードをいじるのは地獄ですよ。いつでもSIODバグ互換 路線に切り替えられるようにしておく事をお勧めします。 > また、andでnull listのチェックをしている箇所もあります。例えば、 > custom-im-list-as-choice-recにおいて、imがnilかどうかをandでチェックしています。 > > 34 |;; ugettext should be performed higher layer > 35 |(define custom-im-list-as-choice-rec > 36 | (lambda (lst) > 37 | (filter-map (lambda (im) > 38 | (and im > > 今のところこういったコードがR5RS互換で無いように思われます。 このチェックはuim-module-managerの導入に伴ってr946で徳永さんが追 加したものですね。r947で私が単純化しましたが、ロジックは変えてな いんでim-listまたはenabled-im-list中の#fを無視するもののはずです。 意図しているのは()ではありません。 uim-module-manager以外では#fまたは()がimリストに入り込む事は無い はずなので、このコードが問題になるとしたらuim-module-manager側で ()がimリストに入り込んでいると思われます。 ------------------------------- ヤマケン yamak****@bp***** -------------- next part -------------- * rk.scm ** 緇恰宛????????В茯?2004-08-30 http://lists.sourceforge.jp/mailman/archives/anthy-dev/2004-August/001011.html - rk-context-new ??????rk context?????????綣?????context????????鴻?rule鐚??a??? ????????;鐚?????????????mmediate-commit??ack-match??????荀???????????????k context????若?絖???????????篏帥??? - rk-expect ??k context??????緇?????????<??????????箴???違??≪?t????????????????????aiueo????鰹?????ゃ?????欠Щ???鐚??t鐚??t???腱祉???? ????????????????????? - rk-push-key! ??k context???????ュ????????欠Щ??儀????育?腱糸????絖??菴???????? - rk-push-key-last! ??k-push-key!?с?n???????????????菴????????鐚????iueo??????? ?с???????鐚???с?竜?欠Щ鐚??????????????????????戎?c??帥???????с?鐚?????????阪???????????∽??с???????????????????茯よ???? ??∽??????? - rk-pending ????pending?倶?????障??障?????????c???????????<?????????? - rk-flush ??k context????祉??????? - rk-partial ?????戎?????????綽????? - rk-current-seq ?????戎?????????綽????? - rk-backspace ??ending?????????????<?????????????絖??????????室????違?????k-delete?????? ** rkc (define-record 'rk-context '((rule ()) (seq ()) (immediate-commit ()) ;; #f? (back-match ()))) ;; #f? - immediate-commit anthy?с?#t?????????????rk-proc-end-seq????? ????????-push-key-last!??????ad-hoc??申????????????????? - back-match 筝祉?hangul??? ** API - rk-context-new (rule immediate-commit back-match) - rk-flush seq?????? - rk-pending ?上?pending?倶?????障??障?????????c???????????<?????????? - rk-current-seq (rkc) ?上???kc??atch???rule-entry??????rk-lib-find-seq()???綽?? - rk-partial? back-match???絽吾?#t??ront-match?с?rk-lib-find-partial-seq() ???????ゃ???????罩祉?膈???????????絎??rk-has-subsequent???? ????????? - rk-expect rkc??????緇?????絖??rk-lib-expect-seq()???????上??? - rk-push-key! (rkc key) 筝??絖????- rk-push-key-last! ?ュ?????≦??c?partial???茖??????ュ???∈絎????? - rk-backspace pending????????? - rk-delete ?上???k-backspace???絖???ュ????絨?????綣窮?????? 篏帥?????鴻? ** 羣?PI? - str-seq-equal? ????????????紕??罸????qual????膈?- str-seq-partial? arg1??rg2??????絖?????罨<?荀??????? (str-seq-partial? '("n") '("n" "a")) => "a" (str-seq-partial? '("n" "n") '("n" "n")) => #f (str-seq-partial? '("n" "n") '("n" "n" "a")) => "a" - rk-lib-find-seq key sequence????????????rule-entry????? (rk-lib-find-seq '("n") ja-rk-rule) => ((("n")) ("?? "?? "鐓?)) - rk-lib-find-partial-seq key sequence????????????rule-entry??????絎??????????? (rk-lib-find-partial-seq '("n") ja-rk-rule) => ((("n" "n")) ("?? "?? "鐓?)) - rk-lib-expect-seq returns possible next characters (rk-lib-expect-seq '("k" "y") ja-rk-rule) => ("o" "e" "u" "i" "a") ** internal - rk-push-key-front-match rk-push-key!????????front-match??? rk-partial-seq???t???seq??????菴遵???f??????????с???? ?医???????????????札筝???若???k-proc-tail??????菴?? (rk-proc-end-seq rkc rule-entry seq) (rk-proc-tail rule-entry seq) - rk-proc-end-seq ?ュ?????≦??c?seq(pending)????違????immediate-commit????? ?????????????#t???篁ヤ???"??)(cdar ent)??????seq??? ???composed char(cadr ent)?????? ((("f"). ("??))("" "")) - rk-proc-tail 絎??????弱???????exact but has a partial match?????? composed char?????????荀?y?ュ???ending??????match??? entry?????equence??就?????????rk-flush?????????荀?y?? ???pending?????? - rk-merge-seqs "n1"????"????????????ad-hoc?∽? - rk-partial-seq? rk-partial????????? ** internal (back-match???) - rk-find-longest-head rk-check-back-commit?????????longest-head ?上???eq?у????longest match????帥?????ゃ?matched seq - rk-find-longest-back-match rk-check-back-commit?????????longest-tail ?上???eq?у????longest match????帥?????ゃ?matched seq - rk-push-key-back-match (rkc key) rk-push-key!???????? back-match?? seq??ey??恭???rk-check-back-commit??????菴?? - rk-check-back-commit (rkc rule rseq) -- rk-push-key-back-match????????-- commit??????絖??菴?? -- new-seq??atch???rule-entry??綾???(longest match????激???? ???????ead??ail???茹c???ead??ommit??????????????? ???tail??artial match???tail?眼?????с??????ead?眼? longest match????? ** back-match ** ????ュ? - pending????????????????????ュ????"????????羶???糸?羶??????障??????????