私はTCLの初心者で、変数宣言に使用されるC++コードファイルのすべての行を解析して出力するTCLスクリプトを作成しようとしています。これまで、ブロック {} 内のすべてのステートメントを検出して出力することができました。これで、Ansi C++ モジュールのさまざまな変数宣言形式が次のようになる可能性があることがわかりました。
int x;
int y=9;
int x,y;
int x,y=0;
int x,y=0,c;
short const x=9;
int* x,y,c=null;
short const *x=NULL;
MyObj aobj();
MyObj aobj(x,y);
Myobj * a = dynamic_cast<A *>(b);
String x = "test";
見逃したかどうかはわかりません。
私がやっていることは、行を分割していることです:
if { [ string equal $lineType "statement" ] == 1 } {
puts $lineValue
set wordList [regexp -inline -all -- {\S+} $lineValue]
}
リスト インデックスのさまざまな値で以下の形式を確認します。
qualifier varaiablename = value;
qualifier varaiablename;
qualifier varaiablename = value, variablename;
しかし、私はそれを達成することができません。TCL 正規表現は、ここで目的を達成するのに役立つと信じています。ただし、ここでコードを使用する必要がある正規表現を結論付けることはできません。
C++ で定義されたデータ型/キーワードを探すのは避けたいのですが、実際には C++ ステートメントである文字列内の特定の形式を探します。
qualifier type name;
qualifier type name, name2;
qualifier type name = value;
というより
word word word;
word word word, word;
word word word = integer, word = word;
上記の宣言形式に従って。
貴重なご意見/ご意見をお寄せください。