2

我是 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;

按照上面提到的声明格式。

请提供您宝贵的想法/意见。

4

1 回答 1

0

C/C++ 标记器,它使用 LPEG 语法将 C/C++ 文件转换为标记数组,并且还有用于将标记数组漂亮地打印为 HTML 的代码。

ltcl是 Tcl 解释器与 Lua 的简单绑定,可用于集成它。

于 2013-01-17T02:59:36.313 回答