金曜日, 1月 05, 2018

コメントを消すプログラム (flex)

できました。うざいコメントを消すプログラム。

コメントをすべて消してくれるプログラムです。

// から行末、/* */ 内を消すプログラムです。あしからず。

自分で書いても良かったんですが、flex 使ってみました。これならクオート(リテラル)の処理が自動です。

コンパイル方法は以下の通り。
flex remove-comments.l;
gcc lex.yy.c -lfl -o remove-comments.exe

ファイル名を指定してください。
./remove-comments.exe filename

%{
%}
%x COMMENT
%x STRING
cmt \/\/.*
%%
{cmt} /* do nothing */
flex remove-comments.l ;gcc lex.yy.c -lfl;gcc lex.yy.c -lfl -o remove-comments.exe
\" BEGIN(STRING); yymore();
<STRING>\n BEGIN(INITIAL);
<STRING>([^\"\n]|\\\"|\\\n)+ yymore();
<STRING>\" printf(yytext);BEGIN(INITIAL);
"/*" BEGIN(COMMENT); yymore();
<COMMENT>"*/" BEGIN(INITIAL);
<COMMENT>"*" yymore();
<COMMENT>[^*]+ yymore();
%%
int main(int argc, char** argv){
yyin=fopen(argv[1],"r");
return yylex();
}
追記です(2021-02-24)。Cygwin 環境での flex のインストール方法です。結論から言うと、m4 をインストール。gcc をインストールで動きます。Devel パッケージからはだめです。個別のプログラム名でインストール。

うるさいコメントがこれで消えます。

(追記)IME変換ってのはアメ公のエゴが満開ですよね。日本語は連中の所有物じゃない。冒涜です。

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...