老师要我做个C++ compiler,不知道应该不应该过来问
我确实很努力地想了,但是没办法,也许有些函数不懂吧,做不出来,
原题如下:
扫描C++源程序,给出其中的常量、变量和函数列表,包括出现位置(行号)、定义性/使用性出现、类型(函数给出行参类型和返回值类型),最终判断是否满足“先定义后使用”原则。
我的思路如下:
string s1,s2,s3;
ifstream fin;
ofstream fout;
fin.open("compiler.cpp");
fout.open("d:\\file.txt");
fin>>s1;
while(fin){
fin>>s2;
if(s1=="const"&&isVar(s2)){
fin>>s3;
fout<<s3<<" is a constant!"<<endl;
s1=s3;
}else if(isVar(s1)&&s2.find("(")!=basic_string::npos){
fout<<s2<<" is a variable!"<<endl;
s1=s2;
}else s1=s2;
其中有个函数如下:
bool isVar(string s1){
if(s1=="char"||s1=="short"||s1=="int"||s1=="long"||s1=="bool")
return 1;
else return 0;
}
有哪位热心人,给点思路
原题如下:
扫描C++源程序,给出其中的常量、变量和函数列表,包括出现位置(行号)、定义性/使用性出现、类型(函数给出行参类型和返回值类型),最终判断是否满足“先定义后使用”原则。
我的思路如下:
string s1,s2,s3;
ifstream fin;
ofstream fout;
fin.open("compiler.cpp");
fout.open("d:\\file.txt");
fin>>s1;
while(fin){
fin>>s2;
if(s1=="const"&&isVar(s2)){
fin>>s3;
fout<<s3<<" is a constant!"<<endl;
s1=s3;
}else if(isVar(s1)&&s2.find("(")!=basic_string::npos){
fout<<s2<<" is a variable!"<<endl;
s1=s2;
}else s1=s2;
其中有个函数如下:
bool isVar(string s1){
if(s1=="char"||s1=="short"||s1=="int"||s1=="long"||s1=="bool")
return 1;
else return 0;
}
有哪位热心人,给点思路
...全文
相关推荐
Dev编程软件.rar
**代码版本控制**:虽然Dev-Cpp本身可能不直接支持,但可以集成Git等版本控制系统,学习如何在IDE中管理代码版本。6.
MATLAB与C_Visual C++混合编程的实现.zip
通过掌握以上步骤,你就可以成功地实现MATLAB与C++的混合编程,充分利用两者的优势,解决复杂问题。记住,实践是最好的老师,不断尝试和调试是掌握这项技术的关键。
c,c++编译器-eclipse,mingw使用教程.pdf
通过以上步骤,初学者可以建立起一个功能完备的C/C++开发环境,开始他们的编程之旅。在实际操作中,可能会遇到各种问题,如编译错误、环境配置不正确等,但随着经验的积累,这些问题都将迎刃而解。
gnu 2.9 g++2.9源码
标题 "gnu 2.9 g++2.9源码" 提及的是GNU Compiler Collection (GCC) 的一个较早版本——2.95,其中包含了C++编译器g++的相关源代码。
gcc强化训练.ppt
本资源是一份关于嵌入式Linux环境下GCC强化训练的PPT,由主讲老师欧阳坚讲解。GCC,全称为GNU Compiler Collection,是一个广泛使用的开源编译器套件,支持多种硬件平台和操作


