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++){
other

            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;
   }