给一个简单粗暴的编译器
查看原帖
给一个简单粗暴的编译器
1154618
florrygg楼主2024/5/8 16:37

我的编译器绝对没有侵权,是我赛时自己打的。用法:在运行直接把 nn 的值先写好(后台的一个正整数),然后运行,直接粘入指令即可计算出结果。

#include <bits/stdc++.h>
using namespace std;
#define il inline
#define re register
#define endl '\n'

const int Maxn=3001;
const int maxn=1001;
int n=5,p[maxn],t;
string op[maxn],flag;
int x[maxn],y[maxn],l[maxn];

signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	p[1]=n;
	cin>>t;
	for(int i=1;i<=t;i++)
	{
		cin>>op[i];
		if(op[i]=="new"||op[i]=="dec")
		{
			cin>>x[i];
		}
		else if(op[i]=="assign")
		{
			cin>>x[i]>>y[i];
		}
		else if(op[i]=="iftry")
		{
			cin>>x[i];
			cin>>flag;
			cin>>l[i];
		}
		else if(op[i]=="ifeq"||op[i]=="ifneq")
		{
			cin>>x[i]>>y[i]>>flag>>l[i];
		}
	}
	for(int i=1;i<=t;i++)
	{
		if(op[i]=="new")
		{
			p[x[i]]=++n;
		}
		else if(op[i]=="dec")
		{
			p[x[i]]--;
		}
		else if(op[i]=="assign")
		{
			p[x[i]]=p[y[i]];
		}
		else if(op[i]=="iftry")
		{
			if(p[x[i]]>=0)
			{
				i=l[i]-1;
			}
		}
		else if(op[i]=="ifeq")
		{
			if(p[x[i]]==p[y[i]])
			{
				i=l[i]-1;
			}
		}
		else if(op[i]=="ifneq")
		{
			if(p[x[i]]!=p[y[i]])
			{
				i=l[i]-1;
			}
		}
	}
	cout<<n<<endl;
	return 0;
}
2024/5/8 16:37
加载中...