基本

Windows向けDirectX9ベースのx86アプリケーション。

エンコーディング

WindowsのAscii(つまり日本語巻環境においてはCP932/SHIFT-JIS)を基本としてdatファイルを認識している。
Unicode(UTF-16)については一旦ファイルを全て読み出してから改めてCP932に変換している模様。
おそらくCP932に含まれない文字列はUnicodeモードでも扱えないと思われる。

context構造体について

クォータービュー

デフォルトではoff
  • quota_view
  • quarter_view
の順にon, offを調べて設定している。

datファイル解析時の挙動

字句解析

モードが3種類存在するらしい。
  • 0: 特別区切り文字集合 "{}(),;:=!<>&|*/+-%"
  • 1: ';'
  • 2: '\n'
各モードで対応する文字ないし文字集合を区切りとして、そこまで有効な文字列をトークンとしている。

具体的な挙動としては
  • まず'\n'を含まない1行を読み込む。
  • 先頭に連続する空白文字列" \t\r\n"を無視する。
  • 行末まで読み込んだ場合、モード2ならそこで終わり、そうでないならば次のステップに進む。
  • 空白以外の文字列に突き当たったので、次の空白を探す。
  • 空白が行末までない場合、追加で次の空白が出てくる(あるいはファイル末尾)まで読み込むか、あるいはモード2なら終わる。
  • 空白と空白(あるいはファイル末尾)に挟まれた文字列をトークン候補文字列と仮に呼称する。
  • モード0, 1の場合、特別な区切り文字が先頭にあるかどうかをトークン候補文字列に対して調べる。
  • トークン候補文字列の先頭にその区切り文字がない場合は、特別な区切り文字の手前までをトークンとして終わる。
  • 先頭にあるならそれを返す。
  • ただし、モード0で、'+'や'-'であり、かつトークン候補文字列の続きがある場合は、そのトークン候補文字列をトークンとして終わる。

タグ:

制作講座
+ タグ編集
  • タグ:
  • 制作講座
最終更新:2021年04月04日 23:36