括号匹配C++程序.doc

括号匹配C++程序.doc

ID:53874770

大小:24.50 KB

页数:5页

时间:2020-04-10

括号匹配C++程序.doc_第1页
括号匹配C++程序.doc_第2页
括号匹配C++程序.doc_第3页
括号匹配C++程序.doc_第4页
括号匹配C++程序.doc_第5页
资源描述:

《括号匹配C++程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#include#includeusingnamespacestd;///////////////////////////////////////////////CBalance类//此类对于一般的C++或者C文件进行括号匹配检查//文件可以有注释,字符串……//字符串常量不可以跨行//my.h定义了常用的类库////////////////////////////////////////////classCBalance{private:ifstreamfin;//文件流intn

2、CurrentLine;//正在处理的行号intnErrors;//已发现的错误数structCSymbol//此类记录遇到的字符和字符的行号{charcToken;intnTheLine;};enumCommentType{SlashSlash,SlashStar};//记录//和/*两中注释方式//CheckBalance()函数的工具类//CheckMatch函数用于比较两个符号是否匹配boolCheckMatch(charchar1,charchar2,intnLine1,intnLine2);//GetNextSymbol函数用于返回读到的括号charGetNextSy

3、mbol(void);//PutBackChar用于把字符重新返还给文件流voidPutBackChar(charchar1);//SkipComment根据注释符的不同跳过源文件的注释voidSkipComment(enumCommentTypetype);//SkipQuote函数用于跳过源文件中的字符串和字符常量voidSkipQuote(chartype);//NextChar函数用于得到下一个字符charNextChar(void);public:CBalance(constchar*filename);//构造函数intCheckBalance();//检查fin中的

4、字符是否匹配};classnoFile{};//定义的异常类,当函数不存在的时候抛出异常CBalance::CBalance(constchar*filename){fin.open(filename);if(!fin)thrownoFile();nCurrentLine=1;nErrors=0;}intCBalance::CheckBalance(){structCSymbolnode;//符号与行号stackst;//定义的符号栈charLastChar,Match;//LastChar为读入的符号,Match为栈顶的字符while(LastChar=Get

5、NextSymbol())//从文件中读取括号字符,直到文件结束{//while_beiginswitch(LastChar){//switch_beigincase'(':case'[':case'{'://遇到这三种符号要进栈node.cToken=LastChar;node.nTheLine=nCurrentLine;st.push(node);break;case')':case']':case'}'://遇到这三种括号要进行比较if(st.isEmpty()){nErrors++;cout<<"在第"<

6、endl;}else{node=st.pop();Match=node.cToken;if(!CheckMatch(Match,LastChar,node.nTheLine,nCurrentLine))nErrors++;}break;}//switch_end}//while_endwhile(!st.isEmpty())//栈中多余的符号{nErrors++;node=st.pop();cout<<"第"<

7、tch(charchar1,charchar2,intnLine1,intnLine2){if(char1=='('&&char2!=')'

8、

9、char1=='['&&char2!=']'

10、

11、char1=='{'&&char2!='}'){cout<<"发现第"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。