コメントの削除
Posted feedbacks - なでしこ
一行コメントに「##'’」と「//」、複数行コメントに「/**/」、文字列リテラルに「」、『』、""、``と結構種類がありますが、思ったほど面倒ではありませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | ●コメント削除(TEXTの|TEXTを)
ONELINEとは整数=0
MULTILINEとは整数=0
LITERALとは整数=0
SKIP_FLAGとは整数=0
BUFとは配列
TMPとは配列=TEXTを文字列分解
TMPを反復
#一文字飛ばす
もし(SKIP_FLAG=1)ならば
SKIP_FLAG=0
続ける
#文字列リテラル内
もし(LITERAL=1)ならば
もし(対象=「"」||対象=「`」||対象="」"||対象="』"||対象="」")ならば
LITERAL=0
違えば
もし(対象=「"」||対象=「`」||対象="「"||対象="『"||対象="「")ならば
LITERAL=1
#文字列リテラル外
もし(LITERAL=0)ならば
#一行コメント
もし(ONELINE=1)ならば
もし(対象=改行)ならば
ONELINE=0
違えば
続ける
違えば
#「##'’」形式
もし(対象="#"||対象="#"||対象="'"||対象="’")ならば
ONELINE=1
続ける
#「//」形式
もし(対象="/"&&TMP[回数]="/")ならば
ONELINE=1
SKIP_FLAG=1
続ける
#複数行コメント
もし(MULTILINE=1)ならば
#コメント閉じ
もし(対象="*"&&TMP[回数]="/")ならば
MULTILINE=0
SKIP_FLAG=1
続ける
違えば
#コメント開始
もし(対象="/"&&TMP[回数]="*")ならば
MULTILINE=1
SKIP_FLAG=1
続ける
BUFに対象を配列追加
BUFを""で配列結合で戻る
TEXT=「a=a*b/c//test
"hello,world /*test*/#test"を表示 # comment
/* comment */」
TEXTをコメント削除して表示
|

nobsun
#6534()
Rating-1/5=-0.20
[ reply ]