このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1268979408/819
#  正規表現の使用環境は秀丸です。 
#  やりたいことは置換で、VBのソースを編集したいのが目的です。 
#   
#  例: 
#  ・Before 
#  Dim s1, s2, s3 As String 
#   
#  ・After 
#  Dim s1 As String, s2 As String, s3 As String 
#   
#  上記のように、1行で複数の変数宣言を行っている箇所で 
#  型の宣言を省略している箇所を、最後の型宣言で補いたいのですが 
#  どのように指定してやればよいでしょうか? 
# 
# 

'型の宣言を省略している箇所を、最後の型宣言で補う'(_文字列,_補正された文字列) :-
        's1, s2, S3 の認識'(_文字列,_型宣言部分,_変数部分ならび,_型部分),
        findall(W,(
                    append(_,[_変数|_],_変数部分ならび),
                    concat_atom([_変数,_型部分],W)),
                L2),
        concat_atom(L2,',',S5),
        concat_atom(_型宣言部分,S5,_補正された文字列).

's1, s2, S3 の認識'(_文字列,_型宣言部分,_変数部分ならび,_型部分) :-
        split(_文字列,[','],[_第一要素|R1]),
        sPLIT(_第一要素,[' '],L1),
        append(L0,[A],L1),
        concat_atom(L0,_型宣言部分),
        append(L2,[U],R1),
        sPLIT(U,[' '],L3),
        '最後の変数と型部分に分離する'(L3,Z,_型部分),
        append([A],L2,[Z],_変数部分ならび),!.

'最後の変数と型部分に分離する'(L,S,_型部分) :-
        append(L0,[_最後の変数|R],L),
        \+(A = ' '),
        all(L0,' '),
        concat_atom(R,_型部分),!.
'最後の変数と型部分に分離する'([_最後の変数|R],_最後の変数,_型部分) :-
        concat_atom(R,_型部分),!.