我是 TCL 的初学者,并试图编写一个 TCL 脚本来解析和打印用于变量声明的 C++ 代码文件中的所有行。到目前为止,我能够检测并打印块 {} 内的所有语句。现在我明白 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;
按照上面提到的声明格式。
请提供您宝贵的想法/意见。