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

2014-11-24 12:36:27 · 作者: · 浏览: 3

{

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 if(oneChar == '*')

{

// 定义指针

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '.')

{

// .h

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '=')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == '/')

{

// 如果是注释状态, 等待一行结束

//if(g_charFlag == explain)

{

//oneWord[nBuf++] = oneChar;

//string strWord = oneWord;

//vecWords.push_back(strWord);

//nBuf = 0;

////g_charFlag = noFlag;

//memset(oneWord, 0, 256);

//oneWord[nBuf++] = oneChar;

}

//else

{

oneWord[nBuf++] = oneChar;

}

}

else if(oneChar == ',')

{

oneWord[nBuf++] = oneChar;

}

else if(oneChar == ' ')

{

oneWord[nBuf++] = oneChar;

}

else

{

oneWord[nBuf++] = oneChar;

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

//string strWord = "未处理情况:%s";

//printf("error, 未处理情况.");

//return -1;

}

}

oneChar=fgetc(fp);

}

fclose(fp);

// 写入文件

FILE *fpIn;

if ((fpIn= fopen("d:\\words.txt","w+"))== NULL)

{

printf("Cannot open infile.\n");

exit(0);

}

for(int i = 0; i < vecWords.size(); i++)

{

char szBuf[300];

memset(szBuf, 0, 300);

sprintf(szBuf, "%d. %s\n", i, vecWords[i].c_str());

fwrite(szBuf, strlen(szBuf), 1, fpIn);

//printf("%d. %s\n", i, vecWords[i].c_str());

}

fclose(fpIn);

// 语法解析

// 首先要对括号进行匹配,验证语法等

vector vecClass; // 解析出类

vector vecHeader; // 解析出头文件

typedef struct

{

string funcName;

st