C++ 代码解析(词法分析、语法分析)(二)

2014-11-24 12:36:27 · 作者: · 浏览: 1
+] = oneChar;

}

else if(oneChar == ')')

{

// 函数的结束

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '{')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '}')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == ';')

{

// 语句结束符

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '~')

{

// 析构函数符

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '\"')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '=')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '_')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == ' ')

{

oneWord[nBuf++] = oneChar;

}

else

{

//printf("未处理情况:%c", oneChar);

oneWord[nBuf++] = oneChar;

}

}

else

{

if(oneChar == ' ' || oneChar == '\t' || oneChar == '\n')

{

if(g_charFlag != explain)

{

string strWord = oneWord;

vecWords.push_back(strWord);

nBuf = 0;

g_charFlag = noFlag;

memset(oneWord, 0, 256);

}

else if(g_charFlag == explain && oneChar == '\n')

{

// 如果是注释状态,则碰到回车才截断

string strWord = oneWord;

vecWords.push_back(strWord);

nBuf = 0;

g_charFlag = noFlag;

memset(oneWord, 0, 256);

}

}

else if(oneChar == '(' || oneChar == '{')

{

//oneWord[nBuf++] = oneChar;

string strWord = oneWord;

vecWords.push_back(strWord);

nBuf = 0;

g_charFlag = noFlag;

memset(oneWord, 0, 256);

continue;

}

else if(oneChar == ')' || oneChar == '}')

{

//oneWord[nBuf++] = oneChar;

string strWord = oneWord;

vecWords.push_back(strWord);

nBuf = 0;

g_charFlag = noFlag;

memset(oneWord, 0, 256);

continue;

}

//else if(oneChar == '\n')

//{

// // 行末, 处理一些情况, 例如注释等

//}

else if(oneChar >= '0' && oneChar <= '9')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar >= 'a' && oneChar <= 'z')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar >= 'A' && oneChar <= 'Z')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '_')