User manual - アプリケーション移行ガイド(2014年10月10日)
34
3.7. 詳細動作仕様
1) ソース上の関数記述判断
置換対象、警告対象の関数記述判断は、簡易的な字句解析で実施しています。
簡易的な字句解析のため、ソース記述パターンによっては正しく判断されないケースが発生する場合
があります。(ある程度イレギュラーな記述とは思いますが、C言語としては、許容範囲内の記述)
上記、関数記述判断については、特定のパターンを許容すると、別のパターンで不整合が発生してし
まうため、2種類のルールを用意して、選択可能な形態としました。
[ルール①]と[ルール②]とでは、下記 No6 を実施するか否かの違いとなっています。
本ツールでは、チェックボックス ON 時が[ルール①]の挙動となります。
[表 3-2]
No
関数記述判断の手順 ルール① ルール②
1
ソースファイルを指定されたコードページでリード ○ ○
2
ブロックコメント(*1)を除外 ○ ○
3
ラインコメント(*2)を除外 ○ ○
4
リテラル文字列(*3)を除外 ○ ○
5
ソース1行内で関数名称として有効トークン(*4)抽出 ○ ○
6
上記トークンの行内で次有効文字が ( であるか確認 ○ -
*1… /* ~ */ 記述。複数行にわたるブロックコメントも正しく処理します。
*2… // ~ 記述。
*3…"~" 記述。1行内で完結。"¥"" のエスケープも判断。'"' を誤認識しない。
*4…[_a-zA-Z][_0-9a-zA-Z]* の文字列
[ルール①][ルール②]ともに、下記記述であれば、foo,bar,baz は正しく関数記述と判断されます。
[リスト 3-3]
val = foo ( a, b, c ); val=bar(x);
val = foo(bar(x),baz(y));
val =
foo /* comment */ (
a, // comment
b); // comment