忍者ブログ
趣味と実益を兼ねて将棋のプログラムを作ってみたいなと思っている私の試行錯誤や勉強したことを綴ってゆく予定です。 一番の目的はソフトウェア設計やオブジェクト指向に慣れること ・・・だったのですが、元々の興味や電王戦に触発されたこともあり、AI製作も目指してみたいと今は考えています。 ※はてなに移転しました。
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
プロフィール
HN:
cwron
性別:
男性
自己紹介:
将棋の腕前はムラがあるのでなんとも言えませんが、将棋ウォーズや81Dojo基準だと約三段てことになってます。リアルで指す機会が希少です。
Share
ブログ内検索
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ここ最近はCSAファイルから構文木、抽象構文木を構成するプログラムを書いています。その過程で気づいた仕様のあいまいさとかについてのメモ。勘違いもあるかも。なおCSAの仕様はVer.2.2を参照しています。


拍手[0回]

あくまで現状の私レベルでの見解です。的外れもある気がすますが一応メモ的な感じで残しておきます。

セパレータ (スラッシュ)について
仮にセパレータが1個入っている棋譜ファイルがあるとする。セパレータの前後にある棋譜をそれぞれA,Bとする。この場合、Bの側に対局者・期戦情報とか、あるいは初期配置(必須)がなかった場合にAのそれを補完する、ということが許されるのかどうか。多分AとBは完全に独立、という扱いが正解なのでしょうが、同一のカードを同一のファイル内にまとめて記述したい、とかの場合には、補完自体はNGとしても、補完指示にあたるオペレータがあってもいいのではない かとも思います。また、私的にはセパレータは案外利用価値があるオペレータだと思っています。例えば、棋譜解析・学習においてあらかじめ対象ファイル数を削減するといった目的や、7番勝負を通して鑑賞したいだとか、ある棋士の順位戦の対局を1期分まとめて鑑賞したいとかが考えられます。要は注目したいもの(特定の対局者、期戦など)がある場合です。主に鑑賞の時に便利かなと。
マルチステートメント(コンマ)について
コメント行の中のコンマや、ドルマークで始まるインフォメーションに関する行の中で現れたコンマをどう解釈するのか?という問題です。コメント中のコンマは読み飛ばしでOKだと思いますが、インフォメーションの行では文章の一部としてコンマを使いたい場面もあるかもしれません。インフォメーション行中のコンマを解釈すべきか否か、これは議論があっていいように思います。なお私が今書いてるコードではコメント行以外の場所で現れたコンマは全てマルチステートメントとして解釈させています。
行頭、行末(あるいはマルチステートメント記号の前後)の空白を許すかどうか
まあ解釈する側で適宜切り詰めろよって話だと思いますが、一応。
CSA仕様は上方互換か下方互換か( 、どちらでもないか)
これは明示してあるのとないのでは結構負担が変わってくる気がします。バージョンの差異を吸収できるコードを書く時にはこの辺の情報が欲しい。まぁ、ちゃんと仕様を確認すれば事実上○○互換だ、ってのはあるかも知れませんが、仕様策定者の意図が必ずしもそれに一致しているとは限りませんので、安心して実装の前提条件に据えられません。仕様の厳密さとは離れた、意志みたいな部分ですが、そういった仕様策定の方向性とかのドキュメントがあればいいなと思ったりします。
行の先頭文字だけではカテゴリが確定できない
具体的には開始手番と着手の2つです。両方+かーで始まるので1文字目を見ただけではその行のカテゴリが確定できない場合があります。別にさほど問題がある訳ではないですが、オペレータの種類自体少ないんだからそのくらい分けておいてくれよ、と思いました。何ぶん面倒くさがりなので。
初期配置の指定の優先順位など
盤面一括指定と行指定・個別指定は混在していてもいいのか?いいのであればそれをどういう優先順位で解釈すべきか?といった話。指定が被ったら新しい方で上書き、という方法にするとか、一括指定があれば行単位指定や個別指定は全て無視するようにする、とか、「間違いじゃない答え」は複数ある。

以上。構文解析はハードル高く見えてたけど案外なんとかなりそうです。ただコード書いてるうちにこうした引っかかりが出てきたり、設計の壁に当たって一からコード書き直したりとかでなんだかんだ時間を食っています。

PR
お名前
タイトル
文字色
URL
コメント
パスワード
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Copyright © nounai.output(spaghetiThinking); All Rights Reserved
Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
忍者ブログ / [PR]