out3/0016083_3.cpp
#include<string.h>
#include<cstdlib>
#include<iostream>
using namespace std;
int a[4];
int charge=0;
string string1;
string string2;
string string3;
int c=0;
int print();
int transL1(string u);
int transL2(string u);
int transR(string u);
int printerror();
int instruction(string u ){
while(1){
u[c];
//cout<<u[c]<<endl;
//cout<<u[c]<<endl;
if (u[c]=='\0') break;
switch(u[c]){
case'l':
a[0]=1;
if(u[c+1]!='o'||u[c+2]!='a'||u[c+3]!='d'){printerror();charge=1;return -1;}
while(1){
c++;
if(u[c]=='r'){
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
}
c++;//硆翴
c++;
if (u[c]=='['){
int p;
p=transL1(string3);
a[2]=(p/10);//Τ硆翴蛤俱计锣Θ16ゼゴ
a[3]=(p%10);
if(p==-1){printerror();charge=1;return -1;}
}
else{
a[0]=2;
int p;
p=transL2(string3);
a[2]=(p/10);
a[3]=(p%10);
if(p==-1){printerror();charge=1;return -1;}
}
print();
break;
case's':
a[0]=3;
if(u[c+1]!='t'||u[c+2]!='o'||u[c+3]!='r'||u[c+4]!='e'){printerror();charge=1;return -1;}
while(1){
c++;
if (u[c]=='r'){
c++;//e
c++;//r
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//硆翴
c++;//'['
int p;
p=transL1(string3);
a[2]=(p/10);
a[3]=(p%10);
if(p==-1){printerror();charge=1;return -1;}
break;
}
}
print();
break;
case'm':
a[0]=4;
a[1]=0;
if(u[c+1]!='o'||u[c+2]!='v'||u[c+3]!='e'){printerror();charge=1;return -1;}
while(1){
c++;
if (u[c]=='r'){
c++;//s计
if(u[c]>47&&u[c]<58){a[3]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[3]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//硆翴
c++;//R
c++;//r计
if(u[c]>47&&u[c]<58){a[2]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[2]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
}
print();
break;
case'a':
a[0]=5;
if(u[c+2]!='d'){printerror();charge=1;return -1;}
while(1){
c++;
if(u[c]=='i'){
c++;//R
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//s
c++;//s计
if(u[c]>47&&u[c]<58){a[2]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[2]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'t'
c++;//t计
if(u[c]>47&&u[c]<58){a[3]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[3]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
if(u[c]=='f'){
a[0]=6;
c++;//R
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//s
c++;//r计
if(u[c]>47&&u[c]<58){a[2]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[2]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'t'
c++;//r计
if(u[c]>47&&u[c]<58){a[3]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[3]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
if(u[c]=='r'){
a[0]=8;
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'s'
c++;//s计
if(u[c]>47&&u[c]<58){a[2]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[2]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'t'
c++;//t计
if(u[c]>47&&u[c]<58){a[3]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[3]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
}
print();
break;
case'o':
a[0]=7;
if(u[c+1]!='r'){printerror();charge=1;return -1;}
while(1){
c++;
if(u[c]=='r'){
c++;//r
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'s'
c++;//s计
if(u[c]>47&&u[c]<58){a[2]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[2]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'t'
c++;//t计
if(u[c]>47&&u[c]<58){a[3]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[3]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
}
print();
break;
case'x':
a[0]=9;
if(u[c+1]!='o'||u[c+2]!='r'){printerror();charge=1;return -1;}
while(1){
c++;
if(u[c]=='r'){
c++;//r
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'s'
c++;//s计
if(u[c]>47&&u[c]<58){a[2]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[2]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//'t'
c++;//t计
if(u[c]>47&&u[c]<58){a[3]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[3]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
break;
}
}
print();
break;
case'r':
if(u[c+1]!='o'||u[c+2]!='r'){printerror();charge=1;return -1;}
a[0]=10/*'A'*/;
c++;//'o'
c++;//'r'
c++;//'r'
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//','
c++;//材计
int p;
p=transR(string3);
if(p==-1){printerror();charge=1;return -1;}
a[2]=0;
a[3]=(p);
print();
break;
case'j':
a[0]=11/*'B'*/;
if(u[c+1]!='m'||u[c+2]!='p'){printerror();charge=1;return -1;}
while(1){
c++;
if(u[c]=='p'){
c++;
if(u[c]=='e'){
c++;//'q'
c++;//'r'
c++;//r计
if(u[c]>47&&u[c]<58){a[1]=(u[c]-48);}
if(u[c]>96&&u[c]<103){a[1]=(u[c]-87);}
if(u[c]<48){printerror();charge=1;return -1;}
if(u[c]>57&&u[c]<97){printerror();charge=1;return -1;}
if(u[c]>103){printerror();charge=1;return -1;}
c++;//=
c++;//r
c++;//0
c++;//','
c++;//材计
int p=transL2(string3);
if(p==-1){printerror();charge=1;return -1;}
a[2]=(p/10);
a[3]=(p%10);
break;
}
else{
int p=transL2(string3);
if(p==-1){printerror();charge=1;return -1;}
a[1]=0;
a[2]=(p/10);
a[3]=(p%10);
break;
}
}
}
print();
break;
case'h':
if(u[c+1]!='a'||u[c+2]!='l'||u[c+3]!='t'){printerror();charge=1;return -1;}
a[0]=12/*'C'*/;
a[1]=0;
a[2]=0;
a[3]=0;
print();//临ゝЧΘ
break;
}
c=0;
return 0;
}
}
int print(){
for(int i=0;i<4;i++){
cout<<a[i]/8%2<<a[i]/4%2<<a[i]/2%2<<a[i]%2;
}
}
int printerror(){
cout<<"error ";
int i=0;
while(string1[i]){
cout<<string1[i];
i++;
}
cout<<endl;
}
int transL1(string u){
int h,t,n,total;
c++;
h=(u[c]);
c++;
t=(u[c]);
c++;
n=(u[c]);
if(n!=']'){
total=(h-48)*100+(t-48)*10+(n-48);
}
if(n==']'){
n=t;t=h;
total=(t-48)*10+(n-48);
}
if(n=='\0'){
n=h;
total=(n-48);
}
if (total<256&&total>=0){
t=total/16;
n=total%16;
}
if(total>256||total<0){ return -1; }
return t*10+n;
}
int transL2(string u){
int h,t,n,total;
h=u[c];
c++;
t=(u[c]);
c++;
n=(u[c]);
if(n!='\0'){
total=(h-48)*100+(t-48)*10+(n-48);
}
if(n=='\0'){
n=t;t=h;
total=(t-48)*10+(n-48);
}
if(t=='\0'){
n=h;
total=(n-48);
}
if (total<256&&total>=0){
t=total/16;
n=total%16;
}
if(total>256||total<0){ return -1; }
return t*10+n;
}
int transR(string u){
int t,n,total;
t=u[c];
c++;
n=(u[c]);
if(n=='\0'){
n=t;
total=(n-48);
}
if(n!='\0'){
total=(t-48)*10+(n-48);
}
if (total<16&&total>=0){
n=total%16;
}
if(total>15||total<0){ return -1; }
return n;
}
int main(){
while(charge<1){
getline(cin,string1);
if(cin.eof())break;
int i=0,j=0;
for( i=0,j=0;string1[i]!='\0';i++){
if(string1[i]!=' '&&string1[i]!='\t'){
string2[j]=string1[i];
j++;
}
if(string1[i]==';'){break;}
}
j=0;
while(string2[j]){
string3[j]=tolower(string2[j]);
j++;
}
i=0;
int test=instruction(string3);
while(string1[i]){string1[i]=0;i++;}i=0;
while(string2[i]){string2[i]=0;i++;}i=0;
while(string3[i]){string3[i]=0;i++;}i=0;
if (test==0) continue;
if(charge==1) break;
}
//system ("pause");
return 0;
}