高手帮帮忙

作者&投稿:陀烁 (若有异议请与网页底部的电邮联系)
高手帮帮忙,~

最近太忙了,不过我想这个程序对你可能有用,改一改就行。
这是一个词法分析器程序,同样是文档中随便一个C/C++程序,读取这个程序,然后分析程序里面的关健字,保留字,运算符等等,进行归类。
稍微改一下就行。
#include
#include
#include
#include
#include
#include
#include
using namespace std;

//用来存储目标文件名
string file_name;

//提取文本文件中的信息。
string GetText();

//获得一个单词符号,从位置i开始查找。
//并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。
string GetWord(string str,int i,int& j);

//这个函数用来除去字符串中连续的空格和换行
//第一个参数为目标字符串,第二个参数为开始位置
//返回值为连续的空格和换行后的第一个有效字符在字符串的位置
int DeleteNull(string str,int i);

//判断i当前所指的字符是否为一个分界符,是的话返回真,反之假
bool IsBoundary(string str,int i);

//判断i当前所指的字符是否为一个运算符,是的话返回真,反之假
bool IsOperation(string str,int i);

//此函数将一个pair数组输出到一个文件中
void OutFile(vector > v);

//此函数接受一个字符串数组,对它进行词法分析,返回一个pair型数组
vector > analyst(vector vec);

//此函数判断传递的参数是否为关键字,是的话,返回真,反之返回假
bool IsKey(string str);

int main()
{
cout<<"###########################
";
cout<<" 词法分析程序
";
cout<<"###########################
";
string com1=" ";
string com2="
";
string fileline=GetText();
int begin=0,end=0;
vector array;
do
{
begin=DeleteNull(fileline,begin);
string nowString;
nowString=GetWord(fileline,begin,end);
if(end==-1)
break;
if(nowString.compare(com1)&&nowString.compare(com2))
array.push_back(nowString);
begin=end+1;
}while(true);
vector > mid_result;
mid_result=analyst(array);
OutFile(mid_result);
cout<<"**********************************************************************
";
cout<<"***程序已完成词法分析,分析结果已经存储在文件"<<file_name<<"中!!!***
";
cout<<"**********************************************************************
";
system("pause");
return 0;
}

//提取文本文件中的信息
string GetText()
{
string file_name1;
cout<<"请输入源文件名(包括路径和后缀名):";
cin>>file_name1;
ifstream infile(file_name1.c_str(),ios::in);
if (!infile)
{
cerr<<"哦!无法打开文件 "<<file_name1.c_str()<<" !!!"<<endl;
exit(-1);
}
cout<<endl;
char f[1000];
infile.getline(f,1000,EOF);
infile.close();
return f;
}

//获得一个单词符号,从位置i开始查找。
//并且有一个引用参数j,用来返回这个单词最后一个字符在原字符串的位置。
string GetWord(string str,int i,int& j)
{
string no_use("(){} , ;
+=*/-\"");
j=str.find_first_of(no_use,i);
if(j==-1)
return "";
if(i!=j)
j--;
return str.substr(i,j-i+1);
}

//这个函数用来除去字符串中连续的空格和换行
//第一个参数为目标字符串,第二个参数为开始位置
//返回值为连续的空格和换行后的第一个有效字符在字符串的位置
int DeleteNull(string str,int i)
{
for(;;i++)
if(str[i]!=' '&&str[i]!='
')
return i;
}

//判断i当前所指的字符是否为一个分界符,是的话返回真,反之假
bool IsBoundary(string str,int i)
{
int t;
char arr[7]={',',';','{','}','(',')','\"'};
for (t=0;t<7;t++)
if(str[i]==arr[t])
return true;
return false;
}

//判断i当前所指的字符是否为一个运算符,是的话返回真,反之假
bool IsOperation(string str,int i)
{
int t;
char arr[7]={'+','-','*','/','=',''};
for (t=0;t<7;t++)
if(str[i]==arr[t])
return true;
return false;
}

//此函数将一个个字符串数组输出到一个文件中
void OutFile(vector > v)
{
cout<<"请输入目标文件名(包括路径和后缀名):";
cin>>file_name;
ofstream outfile(file_name.c_str(),ios::out);
if (!outfile)
{
cerr<<"哦!无法打开文件 "<<file_name.c_str()<<" !!!"<<endl;
exit(-1);
}
cout<<endl;
int i;
outfile<<"###########################
";
outfile<<" 词法分析程序
";
outfile<<"###########################

";
for(i=0;i<v.size();i++)
outfile"<<endl;
outfile<<"

*********************************
";
outfile.close();
return;
}

//此函数接受一个字符串数组,对它进行词法分析,返回一个pair型数组
vector > analyst(vector vec)
{
vector > temp;
int i;
for(i=0;i<vec.size();i++)
{
if(vec[i].size()==1)
{
if((vec[i]==">"||vec[i]=="<"||vec[i]=="!")&&vec[i+1]=="=")
{
string jk=vec[i];
jk.append(vec[++i],0,1);
pair pp(4,jk);
temp.push_back(pp);
continue;
}
if((vec[i]=="+"&&vec[i+1]=="+")||(vec[i]=="-"&&vec[i+1]=="-"))
{
string jk=vec[i];
jk.append(vec[++i],0,1);
pair pp(4,jk);
temp.push_back(pp);
continue;
}
if(IsBoundary(vec[i],0))
{
pair pp(5,vec[i]);
temp.push_back(pp);
}
else if(IsOperation(vec[i],0))
{
pair pp(4,vec[i]);
temp.push_back(pp);
}
else if(vec[i][0]='0')
{
pair pp(3,vec[i]);
temp.push_back(pp);
}
else
{
pair pp(2,vec[i]);
temp.push_back(pp);
}
}
else if(vec[i][0]='0')
{
pair pp(3,vec[i]);
temp.push_back(pp);
}
else if(IsKey(vec[i]))
{
pair pp(1,vec[i]);
temp.push_back(pp);
}
else
{
pair pp(2,vec[i]);
temp.push_back(pp);
}
}
return temp;
}

//此函数判断传递的参数是否为关键字,是的话,返回真,反之返回假
bool IsKey(string str)
{
string p[16]={"char","double","int","long","double","float","for","while","do","break","continue","switch","short","case","return","if"};
vector ppp(p,p+16);
int u;
for(u=0;u<ppp.size();u++)
if(!str.compare(ppp[u]))
return true;
return false;
}
//finished

1.1500000-250000-180000+120000+150000-26000+11000+260000-30000-200000-24000+310000-45000-180000=1416000
2.借财务费用60000
预提费用120000
贷银行存款180000

应该是原始哈卡来直柱.是ZG里面NPC给你副魔的材料之一.
你再找一个打孔的污毒人偶(ZG毒堆里随机出)
一个急速密药(需要2个英雄之血,东瘟疫随机出,地上就有,直接拿就可以.1个原始黑钻石.一本急速圣典,急速圣典在厄运东刷小怪掉.2个大魔光碎片.然后拿着钻石,大魔光,血和圣典去厄运西的图书馆里面去换急速密药)
最后在去ZG里面找一个NPC直接去副魔就可以了,那个NPC在去杀蜘蛛的路上的一个高高的祭坛上面.不知道问队友
当然ZG副魔的前提是你在赞达拉的声望必须是友善以上
副魔效果是10耐,24远程攻击强度,1命中
但是只能给你的头亏和腿副
每次副一见装备

原始哈卡莱直柱

原始哈卡莱直柱
拾取后绑定
"来自古拉巴什帝国的贵重的权力珍宝。"

在祖尔格拉布深处,有一座静静的高台,周围毒蛇环伺,但是台上却不是Boss,而是一名老者的灵魂——无眠者赞扎。他就是赞达拉的精神领袖,他以灵体的形态赶来祖尔格拉布,哈卡不能控制他的灵魂。
赞扎会帮助对赞达拉部族有恩的勇士们。你只有在赞达拉部族的声望达到友好他才会施以援手。在达到友好声望后,和他对话会获得附魔任务.

数千年前,当祖拉曼帝国的巨魔与入侵的高等精灵“异教徒”作战时,高等精灵盗取了赞扎的强大魔法,在自己的武器和护甲上附魔,以此征服当地的巨魔。这就是我们在厄运之槌和燃烧平原的精灵们所给予的各种秘药。但是这种秘药在巨魔看来是不纯的,不过是小孩子的把戏。现在赞扎的灵魂将会帮助你把这些秘药提纯,使用原始哈卡莱的紫色护具,神奇的巫毒娃娃,将秘药变成更加强大的附魔药——
每个职业的附魔药都有不同的效果:

猎人:10耐,24远程攻击强度,1命中 ;需要急速秘药&&原始哈卡莱直柱,材料是急速圣典、1块原始黑钻石、2份大块魔光碎片和2份英雄之血。
基本材料是:
一个打孔的巫毒人偶(ZG毒堆里随机出)
一个急速密药(合成需要2个英雄之血,东瘟疫随机出,地上有,直接拿就可以,点击之后会出现3个精英,记得拿了东西就赶紧跑。1个原始黑钻石.一本急速圣典,急速圣典在厄运东刷小怪掉.2个大魔光碎片.然后拿着钻石,大魔光,血和圣典去厄运西的图书馆里面去换急速密药) ,最后在去ZG里面找一个NPC直接去副魔就可以了

原始哈卡莱直柱


伸出援助之手作文 别人向我伸出援助之手的作文三百字
只要人人都献出一点爱,世界将会变成美好的人间.亲爱的朋友们,不要吝啬你的爱.献出你的一份关爱,让我们共同手拉手走向美好的明天,我相信,在爱心的世界里,有你、有我、有她.爱心是一片照射在冬日的阳光,使贫病交迫的人感到人间的温暖;爱心是一泓出现在沙漠里的泉水,使濒临绝境的人重新看到生活的希望;爱心是一...

帮帮忙啊!!!下面都是什么手?
航行时掌握方向的人叫(舵)手;对某中技能特别熟练的的人叫(能)手;偷东西的人叫(扒)手;授予先进工作者的女同志叫(三八红旗)手;百发百中的人叫(神枪)手;协助别人进行工作的人叫(助)手;负责船上舱面工作的人叫(水)手;经过筛选后代表一方参赛的人叫(选)手;持刀杀人的人叫(...

找一部外国科幻电影,请老手们帮帮忙!!!
捍卫机密,基努·里维斯主演。老生电脑上刚好有这部电影。英文名: Johnny Mnemonic 中文名: 捍卫机密 别 名: 非常特务 | 约翰尼记忆术 | 非常任务 导 演: ( 罗伯特·朗哥 Robert Longo )主 演: (基努·里维斯\/基诺·里维斯 Keanu Reeves) (迪娜·梅耶 Dina Meyer) (艾斯提 Ice-T) (北野武 ...

我想做服装销售工作,但去面试都说要熟手,帮帮忙?
现在的老板都很精明,不会用不会干活的员工,还要花钱培训的!你有这份心我相信你会找到如意的工作!!不会太久,祝你早日成功

感谢你,牵我的手作文600字,帮帮忙,谢谢
人生的路上,难免会路过漆黑,在漆黑的道路上我一步步走着。当我迷失方向时,他,牵着我的手,在我迷茫的时候,给我点亮光明。爸爸,谢谢你。在我长大的路上,牵着我的手。每当我迷茫的时候,你总会给我指明方向。你让我明白了对与错,明白了是非善恶。在我垂头丧气时,你给我精神上的鼓励;在我...

...社会主义核心价值观的内涵及其意义。 高手们,帮帮忙吧!
以新民主主义革命理论为指引,中国共产党领导人民进行革命,取得了新民主主义革命的胜利,建立中华人民共和国,实现由新民主主义向社会主义转变,为实现国家的繁荣富强和人民共同富裕,创造了必要前提。新民主主义革命的胜利,是继俄国十月革命后的伟大历史事件,鼓舞和推动了世界被压迫民族和人民反抗帝国主义、...

怎样感谢帮助过自己的人
对于帮助自己的人,应该要觉得自己是幸运的。在自己有难的时候,别人能出手帮忙。我的姥姥就是这样一个人,在别人有需要的时候,无论是认识的还是不认识的都会帮忙。而且他也从来不计较个人的得失。有的时候可能是给钱,也有的时候可能是给粮食。家里人的人都劝他不要这么帮忙,因为到最后也不会有人...

服装外贸英语翻译,高手强人帮帮忙啊,小女子在线等
1.pls pay attention to the puckering of side seam 注意侧缝不平服,起皱 2.pls pay attention to make even stitch 针迹不均 3.armhole seams are puckering,pls improve 夹圈不平服,请改进 4.back collar is puckering,pls improve。后领不平服 5.Pkt position was slant at top and ...

数学题,高手来帮帮忙吧!
年龄差是不变的 设小兰现在的年龄x岁 "当我象你这么大时,你才2岁 x-2就是年龄差 x-2+x=2x-2就是小兰父亲现在的年龄 当你象我这么大时,我已经74岁了 74-(2x-2)=76-2x也是年龄差 所以,76-2x=x-2 3x=78 x=26 x-2=24 x+x-2=50 小兰和父亲今年各26岁、50岁 ...

初中数学题目,二次函数,高手来帮帮忙(题如下图)
图像与y轴交点在正半轴,所以c>0 所以 abc<0 正确 当x=-1时,y=a-b+c,从图中可以看出y<0,所以a+c<b, 所以a+c0,所以a+b+c>0,正确 由x=-1时,a-b+c<0,顶点横坐标-b \/2a =1, 可得a=-b \/ 2, 代入a-b+c<0,得 -b \/ 2 – b+c<0 , 解得 2c<3b ,所以2c<...

新郑市15596318862: 高手帮帮忙!
威诗盐酸: 1、再windows优化大师的主界面上,有一个“恢复”选项,点击它就可以了. 2、如果你的系统自带的“系统还原”已经开启了,那就还原一下系统吧,选择优化之前的那个时间段.

新郑市15596318862: 高手帮帮忙!!
威诗盐酸: 哦 ... 可能是你的网速太卡... 也可能是 ie 缓存文件的问题右键单击 Internet-》常规-》删除文件 然后重启IE再试试http://221.8.126.146:82/down/install_flash_player_ax.zip 你的农场 显示 是不是 flash player 版本过低呀 ??? 如果是的话 那可能你的 播放插件没装 ... 这里给你的地址是 flash player 最新版的地址

新郑市15596318862: 高手帮帮忙!!! -
威诗盐酸: 用瑞星或金山看看能行不,如果也不行的话,重装系统后不要运行你硬盘上的软件,重新下载杀软后安装杀毒.也可以全盘格式化后重装.

新郑市15596318862: 高手帮帮忙
威诗盐酸: 这个题,你需要这样考虑,比如衣服A,买一件赚1/5,那么也就是说,在原价的基础上赚了1/5,那么最后的售价就应当是原价的6/5倍,所以原价为x=84/(6/5)=84x5/6=70,买一件赚14元. 那么衣服B,就是赔1/5,原价肯定高于卖价,由于买一件赔1/5,所以实际卖价应当是原价的4/5,所以原价为y=84/(4/5)=84x5/4=105,105-84=21. 所以,两种衣服若都买一件,应当是赔7元钱.

新郑市15596318862: 高手帮帮忙 真的不知道怎么办 -
威诗盐酸: 首先,我一般会选择主动上去和人家搭讪~~(有事没事的)就算他不理你,别人看了可能也会觉得是他小心眼.(也就是在公共场合你要表现的自然点)..这个方法其实挺管用,对那种许多小矛...

新郑市15596318862: 高手帮帮忙!
威诗盐酸: 如果系统经常有所提到的错误提示,下面的建议可能会有帮助: 1.查看系统中是否有木马或病毒.这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常.平常应加强信息安全意识,对来源不明的可执行程序绝不好奇. 2.更新...

新郑市15596318862: 高手帮帮忙...这两个怎么解决啊??? -
威诗盐酸: 机器有流氓软件和木马,下载并按照360安全卫士,把360的所有功能都用一遍,全面查杀一下,然后重新启动再查杀.下载并按照WINDOWS优化大师,解除任务管理限制,或者在“开始...

新郑市15596318862: 电脑高手帮帮忙 -
威诗盐酸: 进BIOS,进第一项,把floppy disk即软驱那一项改为noie就好了...

新郑市15596318862: 高手帮帮忙谢谢
威诗盐酸: 设服装店出售2种衣服1个84元可以赚五分之一,原价X,另一种84元 赔本五分之一 ,原价Y, X=84*(1-1/5)=67.2 赚了84-X=12.8Y=84/(1-1/5)=105 亏了Y-84=21 陪了8.2

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网