首页 > 代码库 > 编译原理实验一
编译原理实验一
#include <iostream> #include <cstdio> #include <string> #include <vector> using namespace std; int Vt[30],Vn[30]; vector<string> P; //char str[100]; int tl,nl; void init() { tl=nl=0; } void split(string str,string p) { int i; if(str=="") return; str+=p; int len = str.size(); int pos = str.find(p); cout<<str<<endl; while(pos!=len-1) { string x = str.substr(0,pos); P.push_back(x); str = str.substr(pos+1,len); pos = str.find(p); //cout<<x<<endl<<str<<endl; } } void test() { P.push_back("a"); } void input() { int i,len; string str; while(getline(cin,str) && str[0]!=‘q‘) { //len = strlen(str); //cout<<"a"<<len<<endl; len = str.size(); for(i =0;i<len;i++) { if(str[i]<=‘z‘ && str[i]>=‘a‘) Vt[str[i]-‘a‘]++; else if(str[i]!=‘S‘ && str[i]<=‘Z‘ && str[i]>=‘A‘) Vn[str[i]-‘A‘]++; } split(str,","); //test(); } } void output() { int i; cout<<"(Vt={"; for(i=0;i<26;i++) { if(Vt[i]) { cout<<(char)(‘a‘+i);i++;break; } } for(;i<26;i++) { if(Vt[i]) cout<<","<<(char)(‘a‘+i); } cout<<"},Vn={S"; for(i=0;i<26;i++) { if(Vn[i]) cout<<","<<(char)(‘A‘+i); } cout<<"},P={"; for(vector<string>::iterator it = P.begin(); it!=P.end();) { cout<<","<<*(it);it++; } cout<<"},S)"<<endl; } int main() { init(); input(); output(); return 0; }
编译原理实验一
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。