C++简单编辑器实例(函数库简单应用)

C++简单编辑器实例(函数库简单应用)

ID:37910879

大小:40.00 KB

页数:11页

时间:2019-06-02

C++简单编辑器实例(函数库简单应用)_第1页
C++简单编辑器实例(函数库简单应用)_第2页
C++简单编辑器实例(函数库简单应用)_第3页
C++简单编辑器实例(函数库简单应用)_第4页
C++简单编辑器实例(函数库简单应用)_第5页
资源描述:

《C++简单编辑器实例(函数库简单应用)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//OneComputer.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include"iostream"#include"map"#include"cctype"#include"sstream"#include"string"usingnamespacestd;istream*input;////////////////////////////////////////////doublenumber_value;stringstring_value;///////////////////////////////////////////////初

2、等项函数的变量/////////////////////////////////////////////////maptable;/////////////////////////////////////////////////检查符号表用在prim上面的//////////////////////////////////////////////////intno_of_errors;/////////////////////////////////////////////////////////////////////////////////////

3、//////////doubleexpr(boolget);doubleterm(boolget);doubleprim(boolget);doubleerror(conststring&s);//////////////////////////////////////////////////枚举类型用来表示各种符号enumToken_value{NAME,NUMBER,END,PLUS='+',MINUS='-',MUL='*',DIV='/',PRINT=';',ASSIGN='=',LP='(',RP=')'};Token_valuecurr_tok=PRINT;//定义字符

4、值,用“;”防止错误导致的致命错误//定义输入函数Token_valueget_token(){charch;do{if(!cin.get(ch))returncurr_tok=END;}while(ch!=''&&isspace(ch));cin>>ch;switch(ch){case0:returncurr_tok=END;case';':case'*':case'/':case'+':case'-':case'(':case')':case'=':returncurr_tok=Token_value(ch);case'0':case'1':case'2':case'3':

5、case'4':case'5':case'6':case'7':case'8':case'9':case'.':returncurr_tok=NUMBER;default:if(isalpha(ch)){string_value=ch;while(cin.get(ch)&&isalnum(ch))string_value.push_back(ch);cin.putback(ch);returncurr_tok=NAME;}error("badtoken");returncurr_tok=PRINT;}}int_tmain(intargc,char*argv[]){switch(ar

6、gc){case1:input=&cin;break;case2:input=newistringstream(argv[1]);break;default:error("toomanyarguments");return1;}table["pi"]=3.141592653547;table["e"]=2.71818281828478;while(*input){get_token();if(curr_tok==END)break;if(curr_tok==PRINT)continue;cout<

7、put;returnno_of_errors;}//处理加减的函数doubleexpr(boolget){doubleleft=term(get);for(;;)switch(curr_tok){casePLUS:left+=term(true);break;caseMINUS:left-=term(true);break;default:returnleft;}}//用来处理乘除的函数doubleterm(boolget){doubleleft=prim(get);

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

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

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