代码无法正常工作....

编程入门 行业动态 更新时间:2024-10-14 22:19:29
本文介绍了代码无法正常工作....的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

以下是代码...

Here is the code...

#include<iostream> #include<conio.h> #include<string> #include<fstream> #include<ctype.h> using namespace std; /* The grammar follwed by this analyser is : you have to give a blank to differentite between two different entities, for eg instead of writing "int c=a+b;", write it as "int c = a + b ;". To execute this program first create an "input.txt" file where the program is written or specify the path of the file which has to be analysed, after compiling an "output.txt" file will be created where you have stored the program. */ bool keycheck(string str) { string keyword[] ={"num","alpha","fnum","lnum","snum","string","struct","bool","true","false","for","while","repeat","void","main()","if","else","switch","default","case","break","continue","return","goto"}; int flag=0; if(!(str[0]>='a' && str[0]<='z')) return false; for(int i=0;i<25;i++) { if(str == keyword[i]) { flag = 1; break; } } if(flag == 1) return true; else return false; } string opcheck(string str) { string AsgOperators ="="; string MDPOperators[5] ={"*","/","^"}; string A_SOperators[4]={"+","-"}; string RelOperators[10]={">=","<=","<",">","||","!="}; string NOT="!"; string OR="$"; string AND="&"; string S_C[2]={"SRT","CRT"}; int flag1=0,flag2=0,flag=0,flag3=0,flag4=0,flag5=0,flag6=0,flag7=0; for(int i=0;i<4;i++) { if(str == MDPOperators[i]) { flag = 1; break; } } if(flag == 1) { return "MDP Operators"; } else { for(int i=0;i<3;i++) { if(str == A_SOperators[i]) { flag1 = 1; break; } } if(flag1 == 1) { return "A_S Operator"; } else { for(int i=0;i<9;i++) { if(str == RelOperators[i]) { flag2 =1; break; } } if(flag2 == 1) return "Relational Operator"; else { for(int i=0;i<3;i++) { if(str == S_C[i]) { flag3 =1; break; } } if(flag3 == 1) return "S_C Operators"; else { if(str == "=") { flag4=1; } if(flag4 == 1) return "Asg Operator"; else { if(str == "!") { flag5=1; } if(flag5 == 1) return "NOT"; else { if(str == "$") { flag6=1; } if(flag6 == 1) return "OR"; else { if(str == "&") { flag7=1; } if(flag7 == 1) { return "AND"; } else { return "Error"; } } } } } } } } } int ischar(char c) { if((c>='A' && c<'Z') || (c>='a' && c<='z')) return 1; else return 0; } int isnum(char c) { if(c>='0' && c<='9') return 1; else return 0; } int isnums(string str) { int flag=0; for(int i = 0;i<str.length();i++)> { if(!isnum(str[i])) { if(str[i] != '.') { flag=1; break; } } } if(flag == 1) return 0; else return 1; } int isidentifier(string str) { int flag =0; for(int i=1;i<str.length();i++)> { if(!ischar(str[i])) { if(!isnum(str[i])) { if(str[i] != '_') { if(str[i] == '[') { i++; for(;str[i]!= ']';) { if(!isnum(str[i])) { flag =1; break; } i++; } } else { flag = 1; } if(flag ==1) break; } } } } return flag; } int main() { ifstream ifs("input.txt"); ofstream ofs("output.txt"); int line=0,flag=0; bool check; string str="",strch,strline; while(!ifs.eof()) { getline(ifs,strline); line++; ofs<<"---------\n"; ofs<<line<<"\n"; strline = strline + " "; for(int j=0;j<strline.length();j++)> { if(strline[j] ==' ' || strline[j]=='\t') { if(str != "") { if(ischar(str[0])) { check = keycheck(str); if(check) { ofs<<str<<"\t --> reserved word\n"; } else { flag = isidentifier(str); if(flag == 1) { ofs<<str<<"\t --> error\n"; flag = 0; } else { ofs<<str<<"\t --> identifier\n"; } } } else { if(isnum(str[0])) { if(isnums(str)) ofs<<str<<"\t -->number\n"; else ofs<<str<<"\t -->error\n"; } else { strch = opcheck(str); if(strch == "error") ofs<<str<<"\t -->"<<strch<<"\n"; else ofs<<str<<"\t -->"<<strch<<"\n"; } } } str=""; } else { str=str+strline[j]; } } } cout<<"output file is generated : output.txt"; getch(); return 0; }

iosfwd文件程序中出现断点:

The breakpoint occured in the program in the iosfwd file at:

static int __CLRCALL_OR_CDECL compare(const _Elem *_First1, const _Elem *_First2, size_t _Count) { // compare [_First1, _First1 + _Count) with [_First2, ...) return (_Count == 0 ? 0 : _CSTD memcmp(_First1, _First2, _Count)); }

推荐答案

; string AND = &; string S_C [ 2 ] = { SRT, CRT}; int flag1 = 0 ,flag2 = 0 ,flag = 0 ,flag3 = 0 ,flag4 = 0 ,flag5 = 0 ,flag6 = 0 ,flag7 = 0 ; for ( int i = 0 ; i< 4; i ++) { if (str == MDPOperators [i]) { flag = 1 ; break ; } } 如果(flag == 1 ) { return MDP运营商; } else { for ( int i = 0 ; i< 3; i ++) { if (str == A_SOperators [i]) { flag1 = 1 ; break ; } } 如果(flag1 == 1 ) { return A_S Operator ; } else { for ( int i = 0 ; i< 9; i ++) { if (str == RelOperators [i]) { flag2 = 1 ; break ; } } 如果(flag2 == 1 ) return 关系运算符 ; else { for ( int i = 0 ; i< 3; i ++) { if (str == S_C [i]) { flag3 = 1 ; break ; } } 如果(flag3 == 1 ) return S_C Operators ; else { if (str == =) { flag4 = 1 ; } 如果(flag4 == 1 ) return Asg Operator; else { if (str == !) { flag5 = 1 ; } if (flag5 == 1 ) return NOT; else { if (str == "; string AND="&"; string S_C[2]={"SRT","CRT"}; int flag1=0,flag2=0,flag=0,flag3=0,flag4=0,flag5=0,flag6=0,flag7=0; for(int i=0;i<4;i++) { if(str == MDPOperators[i]) { flag = 1; break; } } if(flag == 1) { return "MDP Operators"; } else { for(int i=0;i<3;i++) { if(str == A_SOperators[i]) { flag1 = 1; break; } } if(flag1 == 1) { return "A_S Operator"; } else { for(int i=0;i<9;i++) { if(str == RelOperators[i]) { flag2 =1; break; } } if(flag2 == 1) return "Relational Operator"; else { for(int i=0;i<3;i++) { if(str == S_C[i]) { flag3 =1; break; } } if(flag3 == 1) return "S_C Operators"; else { if(str == "=") { flag4=1; } if(flag4 == 1) return "Asg Operator"; else { if(str == "!") { flag5=1; } if(flag5 == 1) return "NOT"; else { if(str == "

) { flag6 = 1 ; } if (flag6 == 1 ) return 或; else { if (str == &) { flag7 = 1 ; } 如果(flag7 == 1 ) { return AND; } 其他 { 返回 错误; } } } } } } } } } int ischar( char c) { if ((c> = ' A'&& ; c< ' Z')||(c> = ' a'&& c< = ' z')) return 1 ; else return 0 ; } int isnum( char c ) { if (c> = ' 0'&& c< = ' 9') return 1 ; else return 0 ; } int isnums(string str) { int flag = 0 ; for ( int i = 0 ; I< str.length();我++)> { if (!isnum(str [i])) { if (str [i]!= ' 。') { flag = 1 ; break ; } } } if (flag == 1 ) return 0 ; else return 1 ; } int isidentifier(string str) { int flag = 0 ; for ( int i = 1 ; I< str.length();我++)> { if (!ischar(str [i])) { if (!isnum(str [i])) { if (str [i]!= ' _') { if (str [i] == ' [') { i ++; for (; str [i]!= ' ]';) { if (!isnum(str [i])) { flag = 1 ; break ; } i ++; } } 其他 { flag = 1 ; } if (flag == 1 ) break ; } } } } 返回标志; } int main() { ifstream ifs( input.txt); ofstream( output.txt); int line = 0 ,flag = 0 ; bool check; string str = ,strch,strline; while (!ifs.eof()) { getline(ifs,strline) ; line ++; ofs<< --------- \ n ; ofs<< line<< \ n; strline = strline + ; for ( int j = 0 ; J< strline.length(); J ++)GT; { if (strline [j] == ' ' || strline [j] == ' \t') { if (str!= ) { if (ischar(str [ 0 ])) { check = keycheck(str); if (check) { ofs<< str<< \t - > reserved word \\\; } else { flag = isidentifier(str); if (flag == 1 ) { ofs<< str<< \t - > error \ n; flag = 0 ; } else { ofs<< str<< \t - > identifier \\\; } } } 其他 { if (isnum(str [ 0 ])) { if (isnums(str)) ofs<< str<< \t - > number \ n; else ofs<< str<< \t - > error \\\; } else { strch = opcheck(str); if (strch == error ) ofs<< str<< \t - > << strch<< \ n; else ofs<< str<< \t - ><< strch<< \\\; } } } str=\"\"; } else { str=str+strline[j]; } } } cout<<\"output file is generated : output.txt\"; getch(); return 0 ; } ") { flag6=1; } if(flag6 == 1) return "OR"; else { if(str == "&") { flag7=1; } if(flag7 == 1) { return "AND"; } else { return "Error"; } } } } } } } } } int ischar(char c) { if((c>='A' && c<'Z') || (c>='a' && c<='z')) return 1; else return 0; } int isnum(char c) { if(c>='0' && c<='9') return 1; else return 0; } int isnums(string str) { int flag=0; for(int i = 0;i<str.length();i++)> { if(!isnum(str[i])) { if(str[i] != '.') { flag=1; break; } } } if(flag == 1) return 0; else return 1; } int isidentifier(string str) { int flag =0; for(int i=1;i<str.length();i++)> { if(!ischar(str[i])) { if(!isnum(str[i])) { if(str[i] != '_') { if(str[i] == '[') { i++; for(;str[i]!= ']';) { if(!isnum(str[i])) { flag =1; break; } i++; } } else { flag = 1; } if(flag ==1) break; } } } } return flag; } int main() { ifstream ifs("input.txt"); ofstream ofs("output.txt"); int line=0,flag=0; bool check; string str="",strch,strline; while(!ifs.eof()) { getline(ifs,strline); line++; ofs<<"---------\n"; ofs<<line<<"\n"; strline = strline + " "; for(int j=0;j<strline.length();j++)> { if(strline[j] ==' ' || strline[j]=='\t') { if(str != "") { if(ischar(str[0])) { check = keycheck(str); if(check) { ofs<<str<<"\t --> reserved word\n"; } else { flag = isidentifier(str); if(flag == 1) { ofs<<str<<"\t --> error\n"; flag = 0; } else { ofs<<str<<"\t --> identifier\n"; } } } else { if(isnum(str[0])) { if(isnums(str)) ofs<<str<<"\t -->number\n"; else ofs<<str<<"\t -->error\n"; } else { strch = opcheck(str); if(strch == "error") ofs<<str<<"\t -->"<<strch<<"\n"; else ofs<<str<<"\t -->"<<strch<<"\n"; } } } str=""; } else { str=str+strline[j]; } } } cout<<"output file is generated : output.txt"; getch(); return 0; }

The breakpoint occured in the program in the iosfwd file at:

The breakpoint occured in the program in the iosfwd file at:

static int __CLRCALL_OR_CDECL compare(const _Elem *_First1, const _Elem *_First2, size_t _Count) { // compare [_First1, _First1 + _Count) with [_First2, ...) return (_Count == 0 ? 0 : _CSTD memcmp(_First1, _First2, _Count)); }

One error is here: One error is here: string S_C[2]={"SRT","CRT"}; //... for(int i=0;i<3;i++) { if(str == S_C[i])

where you access a non existing item when i becomes two. You also access unitialized string items (which are empty strings). So you should check all your array sizes.

where you access a non existing item when i becomes two. You also access unitialized string items (which are empty strings). So you should check all your array sizes.

更多推荐

代码无法正常工作....

本文发布于:2023-11-07 23:22:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1567710.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:无法正常   代码   工作

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!