int syntax_check(const char *string)
{
const char *src = string;
int total = 0;
int flag = 0;
while (*src) {
switch (*src) {
case '{': //如果是正括号,隻管将計數器遞加,因為“可能”後面會将它遞減的,未來是未決的
total++;
flag = 1;
break;
case '}':
if (flag)
return -1;
total--;
default:
flag = 0;
}
if (total < 0) { //隻要計數器小于0了,就說明已經多了一個反括号,由于是向後這一個方面掃描的,是以不能指望再有正括号與之抵消了
break;
*src ++;
}
return total;
}
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1271171