以下のような機能があり、一般的と言われているフォーマットに修正できます。
・無駄な空白と空行の削除
・1行に複数のステートメントがある場合に改行を挿入する
・モジュール、複数行のdefine、ラベル、関数、制御ステートメントの本文にインデントを挿入する
・モジュール、ラベル、関数の終わりに空行を挿入する
・区切り文字や演算子の前後のスペースを調整する
・define, const, enumの後のスペースを合わせる
・elseifはelse:ifとして処理する
バグ報告などしてもらえると嬉しいです。
ダウンロードはこちらの"Click here to start download"から
http://www.mediafire.com/file/ddmjajzvnlu/HSPAutoFormatter.lzh
ーー以降サンプルーー
○入力ファイル
#define global elseif else:if #define multiLineDefine \ mes "line 1" \ mes "line 2" //module #module "moduleA" #define defineB 1 #const constA 1 #enum enumA = 0 #enum enumB //deffunc #defcfunc functionA int _val if(_val=0):return:else:if(_val=1):return "a":elseif (_val=2):return "b":else:mes "c" return "d" //deffunc #deffunc functionB int _val switch _val:case 0:mes "0":swbreak:case 1:mes "1":swbreak:default:mes "2":swbreak:swend:return #global //label *label1:a = 1*2*((3+4)/-5):mes functionA(a):goto *label2:stop //label *label2:functionB 1:stop
○出力ファイル
#define global elseif else : if #define multiLineDefine \ mes "line 1" \ mes "line 2" //module #module "moduleA" #define defineB 1 #const constA 1 #enum enumA = 0 #enum enumB //deffunc #defcfunc functionA int _val if (_val = 0) { return } else : if (_val = 1) { return "a" } elseif (_val = 2) { return "b" } else { mes "c" } return "d" //deffunc #deffunc functionB int _val switch _val case 0 mes "0" swbreak case 1 mes "1" swbreak default mes "2" swbreak swend return #global //label *label1 a = 1 * 2 * ((3 + 4) / -5) mes functionA(a) goto *label2 stop //label *label2 functionB 1 stop