#include #include #include #include using namespace std; ifstream fin("in.txt"); ofstream fout("out.txt"); char upc(char c){ if(c>='a'&&c<='z') c+='A'-'a'; return c; } char s[150]; int ind; int was_index; int was_base; int was_variable; void expr(int startop){ int got_op=0; int got_token=0; if(startop>0){ while(s[ind]=='+'||s[ind]=='-'){ ++ind; got_op=1; } } if(startop==2){ if(!got_op && s[ind]!='[') return; else{ expr(0); return; } } if(upc(s[ind]) == 'B' && (upc(s[ind+1])=='X'||upc(s[ind+1])=='P') ){ if(was_base) return; else{ was_base=1; ind+=2; got_token=1; } } else if( (upc(s[ind]) == 'S' || upc(s[ind])=='D') && upc(s[ind+1])=='I'){ if(was_index) return; else{ was_index=1; ind+=2; got_token=1; } } else if(isdigit(s[ind])){ while(isdigit(s[ind])) ++ind; got_token=1; } else if(s[ind]>='a'&&s[ind]<='z'){ if(was_variable) return; was_variable=1; ++ind; got_token=1; } else if(s[ind]=='['){ ++ind; expr(0); if(ind==0 || s[ind]!=']'){ind=0; return;} got_token=1; ind++; } else {return;} if(!got_token){return;} else{ expr(2); } } int main() { while(fin.getline(s,150) && strlen(s)>0){ ind=was_index=was_base=was_variable=0; expr(0); if(s[ind]) fout<<"ERROR\n"; else fout<<"OK\n"; } }