#include<bits/stdc++.h>
using namespace std;
#define Komeiji return
#define Koishi 0
#define stri string::iterator
#define LN jcq["line"]
#define VA jcq["val"]
#define FG jcq["flag"]
#define RE jcq["ret"]
stack<int> sad;
int nc[10000000]={};
map<string,int> jcq,hs;
vector<vector<string> > daima;
void csh()
{
vector<string> daima_i;
daima.push_back(daima_i);
return;
}
bool read(string &ml)
{
ml.clear();
char rewq=getchar();
while(rewq==' '||rewq=='\n'||rewq=='[')
{
if(rewq=='[')while(rewq!=']')rewq=getchar();
rewq=getchar();
}
while(rewq!=' '&&rewq!=';'&&rewq!='\n')
{
ml+=rewq;
rewq=getchar();
}
return (rewq==';'?0:1);
}
int if_int(stri l,stri r)
{
int fhz=0,j=1;
for(r--;r!=l;r--,j*=10)fhz+=int((*r)-'0')*j;
return fhz;
}
void read_int(int &sr)
{
string ml;
read(ml);
sr=if_int(--ml.begin(),ml.end());
return;
}
int get_int(string ml)
{
if(ml[0]=='%'||ml[0]=='#')return jcq[ml.substr(1,ml.length()-1)];
else if(ml[0]=='@')
{
ml=ml.substr(1,ml.length()-1);
if(ml[0]=='%')return nc[jcq[ml.substr(1,ml.length()-1)]];
else return nc[if_int(--ml.begin(),ml.end())];
}
else return if_int(--ml.begin(),ml.end());
}
void change(string &ml,int b)
{
if(ml[0]=='%'||ml[0]=='#')jcq[ml.substr(1,ml.length()-1)]=b;
else
{
ml=ml.substr(1,ml.length()-1);
if(ml[0]=='%')nc[jcq[ml.substr(1,ml.length()-1)]]=b;
else nc[if_int(--ml.begin(),ml.end())]=b;
}
return;
}
int main()
{
csh();
jcq["e1"]=jcq["e2"]=jcq["e3"]=jcq["e4"]=jcq["r1"]=jcq["r2"]=jcq["r3"]=jcq["r4"]=FG=VA=LN=RE=0;
int N,sr;
scanf("%d",&N);
string ml;
getchar();
for(int i=0;i<N;i++)
{
vector<string> daima_i;
bool qwer=read(ml);
if(ml=="function")
{
daima_i.push_back("nop");
read(ml);
hs[ml]=i;
}
else
{
daima_i.push_back(ml);
while(qwer)
{
qwer=read(ml);
daima_i.push_back(ml);
}
}
daima.push_back(daima_i);
}
for(int i=1;i<=N;i++)
{
if(daima[i][0]=="callfunc")sad.push(i),sad.push(LN),LN=hs[daima[i][1]],i=hs[daima[i][1]];
else if(daima[i][0]=="udef"||daima[i][0]=="nop")continue;
else if(daima[i][0]=="hlt")Komeiji Koishi;
else if(daima[i][0]=="set")
{
int c0=get_int(daima[i][1]);
change(daima[i][2],c0);
}
else if(daima[i][0]=="jmp")i=LN+get_int(daima[i][1])-1;
else if(daima[i][0]=="jif"&&((daima[i].size()<3&&FG!=0)||(daima[i].size()>=3&&get_int(daima[i][2])!=0)))i=LN+get_int(daima[i][1])-1;
else if(daima[i][0]=="call")sad.push(i),sad.push(LN),LN=get_int(daima[i][1])-1,i=get_int(daima[i][1])-1;
else if(daima[i][0]=="ret")
{
if(daima[i].size()>=2)RE=get_int(daima[i][1]);
LN=sad.top(),sad.pop(),i=sad.top(),sad.pop();
}
else if(daima[i][0]=="inv")
{
if(daima[i].size()>=3)daima[i][2]=-get_int(daima[i][1]);
else VA=-get_int(daima[i][1]);
}
else if(daima[i][0]=="add")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])+get_int(daima[i][2]));
else VA=get_int(daima[i][1])+get_int(daima[i][2]);
}
else if(daima[i][0]=="sub")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])-get_int(daima[i][2]));
else VA=get_int(daima[i][1])-get_int(daima[i][2]);
}
else if(daima[i][0]=="mult")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])*get_int(daima[i][2]));
else VA=get_int(daima[i][1])*get_int(daima[i][2]);
}
else if(daima[i][0]=="idiv")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])/get_int(daima[i][2]));
else VA=get_int(daima[i][1])/get_int(daima[i][2]);
}
else if(daima[i][0]=="mod")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])%get_int(daima[i][2]));
else VA=get_int(daima[i][1])%get_int(daima[i][2]);
}
else if(daima[i][0]=="lsft")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])<<get_int(daima[i][2]));
else VA=get_int(daima[i][1])<<get_int(daima[i][2]);
}
else if(daima[i][0]=="rsft")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])>>get_int(daima[i][2]));
else VA=get_int(daima[i][1])>>get_int(daima[i][2]);
}
else if(daima[i][0]=="band")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])&get_int(daima[i][2]));
else VA=get_int(daima[i][1])&get_int(daima[i][2]);
}
else if(daima[i][0]=="bor")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])|get_int(daima[i][2]));
else VA=get_int(daima[i][1])|get_int(daima[i][2]);
}
else if(daima[i][0]=="bxor")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])^get_int(daima[i][2]));
else VA=get_int(daima[i][1])^get_int(daima[i][2]);
}
else if(daima[i][0]=="lgr")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])>get_int(daima[i][2]));
else FG=get_int(daima[i][1])>get_int(daima[i][2]);
}
else if(daima[i][0]=="lls")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])<get_int(daima[i][2]));
else FG=get_int(daima[i][1])<get_int(daima[i][2]);
}
else if(daima[i][0]=="lge")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])>=get_int(daima[i][2]));
else FG=get_int(daima[i][1])>=get_int(daima[i][2]);
}
else if(daima[i][0]=="lle")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])<=get_int(daima[i][2]));
else FG=get_int(daima[i][1])<=get_int(daima[i][2]);
}
else if(daima[i][0]=="leql")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])==get_int(daima[i][2]));
else FG=get_int(daima[i][1])==get_int(daima[i][2]);
}
else if(daima[i][0]=="land")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])&&get_int(daima[i][2]));
else FG=get_int(daima[i][1])&&get_int(daima[i][2]);
}
else if(daima[i][0]=="lor")
{
if(daima[i].size()>=4)change(daima[i][3],get_int(daima[i][1])||get_int(daima[i][2]));
else FG=get_int(daima[i][1])||get_int(daima[i][2]);
}
else if(daima[i][0]=="rint")
{
read_int(sr);
if(daima[i].size()>=2)change(daima[i][1],sr);
else VA=sr;
}
else if(daima[i][0]=="rch")
{
sr=getchar();
while(sr==int(' ')||sr==int('\n'))sr=getchar();
if(daima[i].size()>=2)change(daima[i][1],sr);
else VA=sr;
}
else if(daima[i][0]=="wint")
{
if(daima[i].size()>=2)printf("%d",get_int(daima[i][1]));
else printf("%d",VA);
}
else if(daima[i][0]=="wch")
{
if(daima[i].size()>=2)printf("%c",get_int(daima[i][1]));
else printf("%c",VA);
}
}
Komeiji Koishi;
}
/*
01001001 01001101 01001101 01001111 01010010 01010100 01000001 01001100
01001111 01001101 01001110 01001001 01010011 01010011 01001001 01000001 01001000
01001000 01000101 01000001 01010010
01001111 01010101 01010010
01010000 01010010 01000001 01011001 01000101 01010010 01010011
01010111 01000101
01000001 01010010 01000101
01011001 01001111 01010101 01010010
01000011 01001000 01001001 01001100 01000100 01010010 01000101 01001110
01010000 01001001 01001111 01010101 01010011
01010011 01000011 01001000 01001111 01001100 01000001 01010010 01010011
01001111 01000110
01010100 01001000 01000101
01010000 01000001 01010100 01001000
01001111 01000110 01010100 01001000 01000101
01001101 01000001 01000011 01001000 01001001 01001110 01000101
01010111 01000101
01010000 01010010 01001001 01011010 01000101
01001011 01001110 01001111 01010111 01001100 01000101 01000100 01000111 01000101
01000001 01000010 01001111 01010110 01000101
01000001 01001100 01001100
01000101 01001100 01010011 01000101
01000110 01001111 01010010
01001001 01010100
01001001 01010011
01011001 01001111 01010101 01010010
01000101 01010100 01000101 01010010 01001110 01000001 01001100
01000111 01001001 01000110 01010100
01010101 01010000 01001111 01001110
01001101 01000001 01001110 01001011 01001001 01001110 01000100
01010111 01000101
01000001 01010011 01010000 01001001 01010010 01000101
01010100 01001111
01010100 01001000 01000101
01000010 01001100 01000101 01010011 01010011 01000101 01000100
01000110 01001111 01010010 01001101
01001111 01000110
01010100 01001000 01000101
01001101 01000001 01000011 01001000 01001001 01001110 01000101
01000001 01001110 01000100
01000001 01010011 01000011 01000101 01001110 01010011 01001001 01001111 01001110
01010100 01001000 01010010 01001111 01010101 01000111 01001000
01010100 01000101 01000011 01001000 01001110 01001111 01001100 01001111 01000111 01011001
01010100 01001000 01000001 01010100
01010111 01000101
01001101 01001001 01000111 01001000 01010100
01000101 01001101 01010101 01001100 01000001 01010100 01000101
01010100 01001000 01001001 01001110 01000101
01000111 01001100 01001111 01010010 01011001
01010011 01001000 01000101 01001100 01010100 01000101 01010010 01000101 01000100
01000010 01011001
01010011 01010100 01000101 01000101 01001100
01000001 01001110 01000100
01010000 01010010 01001111 01010100 01000101 01000011 01010100 01000101 01000100
01000010 01011001
01010100 01001000 01001001 01001110 01000101
01000001 01010110 01000001 01010100 01000001 01010010 01010011
01001111 01000110
01010111 01000001 01010010
01010111 01000101
01010000 01001100 01011001
01010100 01001000 01000101
01010011 01010100 01000001 01010010 01010011
01001001 01001110
01010011 01000101 01000001 01010010 01000011 01001000
01001111 01000110
01011001 01001111 01010101 01010010
01001100 01001111 01010011 01010100
01000111 01001001 01000110 01010100 01010011
01010100 01001111
01001111 01010101 01010010
01001011 01001001 01001110 01000100
01001101 01000001 01000011 01001000 01001001 01001110 01000101
01000111 01001111 01000100
01010111 01000001 01010100 01000011 01001000
01001111 01010110 01000101 01010010
01010101 01010011
01001001 01001110
01001111 01010101 01010010
01010100 01010010 01000001 01010110 01000101 01001100 01010011
01010011 01001000 01001001 01000101 01001100 01000100
01010101 01010011
01010111 01001001 01010100 01001000
01001101 01000101 01010100 01000001 01001100
01000001 01001110 01000100
01001100 01001001 01000111 01001000 01010100 01001110 01001001 01001110 01000111
01000110 01001111 01010010
01010100 01001000 01000101
01010101 01001110 01001001 01010110 01000101 01010010 01010011 01000101
01001001 01010011
01000001 01001110
01010101 01001110 01000011 01000001 01010010 01001001 01001110 01000111
01010110 01001111 01001001 01000100
01000001 01001110 01000100
01010100 01001000 01000101
01010111 01000001 01010010 01010000
01001000 01010101 01001110 01000111 01000101 01010010 01010011
01000110 01001111 01010010
01010101 01010011
01000001 01001100 01001100
01010100 01001111 01001100 01001100
01010100 01001000 01000101
01000111 01010010 01000101 01000001 01010100
01000010 01000101 01001100 01001100
01001111 01001110 01000011 01000101
01010000 01010101 01001100 01001100
01010100 01001000 01000101
01001100 01000101 01010110 01000101 01010010
01000110 01001111 01010010 01010111 01000001 01010010 01000100
01010100 01001111
01000101 01001110 01000111 01000001 01000111 01000101
01010100 01001000 01000101
01010000 01001001 01010011 01010100 01001111 01001110
01000001 01001110 01000100
01010000 01010101 01001101 01010000
01010100 01001111 01001100 01001100
01010100 01001000 01000101
01000111 01010010 01000101 01000001 01010100
01000010 01000101 01001100 01001100
01010100 01010111 01001001 01000011 01000101
01010111 01001001 01010100 01001000
01010000 01010101 01010011 01001000
01001111 01000110
01000010 01010101 01010100 01010100 01001111 01001110
01000110 01001001 01010010 01000101
01010100 01001000 01000101
01000101 01001110 01000111 01001001 01001110 01000101
01000001 01001110 01000100
01010011 01010000 01000001 01010010 01001011
01010100 01010101 01010010 01000010 01001001 01001110 01000101
01001001 01001110 01010100 01001111
01001100 01001001 01000110 01000101
01010100 01001111 01001100 01001100
01010100 01001000 01000101
01000111 01010010 01000101 01000001 01010100
01000010 01000101 01001100 01001100
01010100 01001000 01010010 01001001 01000011 01000101
01010011 01001001 01001110 01000111
01010000 01010010 01000001 01001001 01010011 01000101
01010100 01001111
01010100 01001000 01000101
01000111 01001111 01000100
01001111 01000110
01000001 01001100 01001100
01001101 01000001 01000011 01001000 01001001 01001110 01000101 01010011
*/