基本
Windows向けDirectX9ベースのx86アプリケーション。
エンコーディング
WindowsのAscii(つまり日本語巻環境においてはCP932/SHIFT-JIS)を基本としてdatファイルを認識している。
Unicode(UTF-16)については一旦ファイルを全て読み出してから改めてCP932に変換している模様。
おそらくCP932に含まれない文字列はUnicodeモードでも扱えないと思われる。
context構造体について
クォータービュー
デフォルトではoff
の順にon, offを調べて設定している。
datファイル解析時の挙動
字句解析
モードが3種類存在するらしい。
- 0: 特別区切り文字集合 "{}(),;:=!<>&|*/+-%"
- 1: ';'
- 2: '\n'
各モードで対応する文字ないし文字集合を区切りとして、そこまで有効な文字列をトークンとしている。
具体的な挙動としては
- まず'\n'を含まない1行を読み込む。
- 先頭に連続する空白文字列" \t\r\n"を無視する。
- 行末まで読み込んだ場合、モード2ならそこで終わり、そうでないならば次のステップに進む。
- 空白以外の文字列に突き当たったので、次の空白を探す。
- 空白が行末までない場合、追加で次の空白が出てくる(あるいはファイル末尾)まで読み込むか、あるいはモード2なら終わる。
- 空白と空白(あるいはファイル末尾)に挟まれた文字列をトークン候補文字列と仮に呼称する。
- モード0, 1の場合、特別な区切り文字が先頭にあるかどうかをトークン候補文字列に対して調べる。
- トークン候補文字列の先頭にその区切り文字がない場合は、特別な区切り文字の手前までをトークンとして終わる。
- 先頭にあるならそれを返す。
- ただし、モード0で、'+'や'-'であり、かつトークン候補文字列の続きがある場合は、そのトークン候補文字列をトークンとして終わる。
最終更新:2021年04月04日 23:36