0
已解决
刘宇航
修练者
修练者
不知道你们还记不记得L.bc,我已经忘了是版本是多少了,好像是0.0.5,反正,我更新了!!!
代码如下↓。
#include<iostream>
#include<cmath>
#include<windows.h>
using namespace std;
long long dpos[1005][1005][15],ipos[1005][1005][15],opos[1005][1005][15],i=1,Error;
long long sz[1005][15],twj[15],error[100005];
int iinout[1005];
double dinout[1005];
bool binout[1005];
string sinout[1005];
long long linout[1005];
char cinout[1005];
string s,t[1000005],cuowu[1000005];
double fd[1005];
long long sl[1005],cl[1005],vs[1005],pa[1005];
int main(){
cout<<"L.bc_0001>|";
while(getline(cin,s)){
t[i]=s;
if(s.substr(0,4)=="int_"){
if(s[5]=='='){
for(int j=6;j<s.size();j++){
iinout[s[4]]=iinout[s[4]]*10+(s[j]-'0');
}
}
dpos[i][s[4]][1]=1;
fd[s[4]]=1.1;
}
else if(s.substr(0,7)=="double_"){
dpos[i][s[7]][2]=1;
fd[s[7]]=1.2;
}
else if(s.substr(0,5)=="bool_"){
if(s[6]=='='){
if(s[7]=='0') binout[s[5]]=0;
else binout[s[5]]=1;
}
dpos[i][s[5]][3]=1;
fd[s[5]]=1.3;
}
else if(s.substr(0,7)=="string_"){
if(s[8]=='='&&s[9]=='"'&&s[s.size()-1]=='"'){
for(int j=10;j<s.size()-1;j++){
sinout[s[7]]+=s[j];
}
}
dpos[i][s[7]][4]=1;
fd[s[7]]=1.4;
}
else if(s.substr(0,10)=="long long_"){
if(s[11]=='='){
for(int j=12;j<s.size();j++){
linout[s[10]]=linout[s[10]]*10+(s[j]-'0');
}
}
dpos[i][s[10]][5]=1;
fd[s[10]]=1.5;
}
else if(s.substr(0,5)=="char_"){
if(s[5]=='='){
cinout[s[6]]=s[8];
if(s[7]!=char(39)||s[9]!=char(39)){
Error++;
error[i]=1;
cuowu[i]="Where are the single quotation marks ?";
}
}
dpos[i][s[5]][6]=1;
fd[s[5]]=1.6;
}
else if(s.substr(0,4)=="lin>"&&(s[4]>='a'&&s[4]<='z')||(s[4]>='A'&&s[4]<='Z')){
if(fd[s[4]]==0){
Error++;
error[i]=1;
cuowu[i]="You undefined variable '";
cuowu[i]+=s[4];
cuowu[i]+="'";
}
if(fd[s[4]]==1.1) ipos[i][s[4]][1]=1;
if(fd[s[4]]==1.2) ipos[i][s[4]][2]=1;
if(fd[s[4]]==1.3) ipos[i][s[4]][3]=1;
if(fd[s[4]]==1.4) ipos[i][s[4]][4]=1;
if(fd[s[4]]==1.5) ipos[i][s[4]][5]=1;
if(fd[s[4]]==1.6) ipos[i][s[4]][6]=1;
}
else if(s.substr(0,5)=="lout<"){
if(fd[s[5]]==0&&((s[6]!=char(39)&&s[8]!=char(39))||(s[6]!='"'&&s[8]!='"'))){
Error++;
error[i]=1;
cuowu[i]="You undefined variable '";
cuowu[i]+=s[4];
cuowu[i]+="'";
}
if(s[5]==char(39)&&s[7]==char(39)){
opos[i][s[6]][6]=1;
cinout[s[6]]=s[6];
}
if(fd[s[5]]==1.1) opos[i][s[5]][1]=1;
if(fd[s[5]]==1.2) opos[i][s[5]][2]=1;
if(fd[s[5]]==1.3) opos[i][s[5]][3]=1;
if(fd[s[5]]==1.4) opos[i][s[5]][4]=1;
if(fd[s[5]]==1.5) opos[i][s[5]][5]=1;
if(fd[s[5]]==1.6) opos[i][s[5]][6]=1;
}
else if(s.substr((0,6))=="L<Win>"){
twj[1]=1;
for(int i=6;i<=s.size();i++){
if(s[i]!=' '){
twj[1]=1;
Error++;
error[i]=1;
cuowu[i]="Import unknown header file";
}
}
}
else if(s.substr(0,6)=="sleep("&&s[s.size()-1]==')'){
if(twj[1]==0){
Error++;
error[i]++;
cuowu[i]="Don't have the header file(<Win>)";
}
for(int j=6;j<s.size()-1;j++){
sl[i]=sl[i]*10+(s[j]-'0');
}
}
else if(s.substr(0,7)=="system("&&s[7]=='"'&&s.substr(8,5)=="clean"&&s[13]=='"'&&s[14]==')'){
if(twj[1]==0){
Error++;
error[i]=1;
cuowu[i]="Don't have the header file(<Win>)";
}
cl[i]++;
}
else if(s.substr(0,7)=="system("&&s[7]=='"'&&s.substr(8,5)=="pause"&&s[13]=='"'&&s[14]==')'){
if(twj[1]==0){
Error++;
error[i]=1;
cuowu[i]="Don't have the header file(<Win>)";
}
pa[i]++;
}
else if(s=="over 0"){
break;
}
else if(s=="") ;
else{
Error++;
error[i]=1;
cuowu[i]="Unknown command ";
cuowu[i]+='"';
cuowu[i]+=s;
cuowu[i]+='"';
}
i++;
if(i<10) cout<<"L.bc_000"<<i<<">|";
else if(i<100) cout<<"L.bc_00"<<i<<">|";
else if(i<1000) cout<<"L.bc_0"<<i<<">|";
else if(i<10000) cout<<"L.bc"<<i<<">|";
else{
cout<<"Error!"<<endl;
cout<<"不合法行数!!!"<<endl;
cout<<" /\\"<<endl;
cout<<" / !\\"<<endl;
cout<<"/____\\"<<endl;
Sleep(1000);
system("cls");
return 0;
}
}
if(Error!=0){
cout<<Error<<" to ERROR!"<<endl;
for(int i=1;i<=10000;i++){
if(error[i]!=0){
cout<<"Number "<<i<<" is ERROR!"<<endl;
cout<<" "<<cuowu[i]<<endl;
}
}
return 0;
}
cout<<endl<<"运行结果:"<<endl;
for(int lbcp=1;lbcp<=i;lbcp++){
if(sl[lbcp]!=0){
Sleep(sl[lbcp]);
continue;
}
if(cl[lbcp]!=0){
system("cls");
for(int sk=1;sk<=i;sk++){
cout<<"L.bc_"<<sk<<">|";
cout<<t[sk]<<endl;
}
cout<<endl<<"运行结果:"<<endl<<endl;
continue;
}
if(pa[lbcp]!=0){
system("pause");
system("cls");
for(int sk=1;sk<=i;sk++){
cout<<"L.bc_"<<sk<<">|";
cout<<t[sk]<<endl;
}
}
for(int j=1;j<=1000;j++){
if(ipos[lbcp][j][1]!=0){
cin>>iinout[j];
}
if(ipos[lbcp][j][2]!=0){
cin>>dinout[j];
}
if(ipos[lbcp][j][3]!=0){
cin>>binout[j];
}
if(ipos[lbcp][j][4]!=0){
cin>>sinout[j];
}
if(ipos[lbcp][j][5]!=0){
cin>>linout[j];
}
if(ipos[lbcp][j][6]!=0){
cin>>cinout[j];
}
if(opos[lbcp][j][1]!=0){
cout<<iinout[j]<<" ";
}
if(opos[lbcp][j][2]!=0){
cout<<dinout[j]<<" ";
}
if(opos[lbcp][j][3]!=0){
cout<<binout[j]<<" ";
}
if(opos[lbcp][j][4]!=0){
cout<<sinout[j]<<" ";
}
if(opos[lbcp][j][5]!=0){
cout<<linout[j]<<" ";
}
if(opos[lbcp][j][6]!=0){
cout<<cinout[j]<<" ";
}
}
}
return 0;
}
1.新增加了错误显示
2.调整了“运行结果”
对了,有一个**UG,就是你输入int a(这个a代表任意一个字符)的话,会直接卡出来,我也不知道怎么搞的,string就没问题。。。