这是一个对魔王语言进行解释的代码
#include <algorithm>
#include <iostream>
#include <stack>
#define AUTHOR "HEX9CF"
using namespace std;
using Status = int;
using ElemType = int;
const int N = 1e6 + 7;
const int TRUE = 1;
const int FALSE = 0;
const int OK = 1;
const int ERROR = 0;
const int INFEASIBLE = -1;
// const int OVERFLOW = -2;
const string A_NEW = "sae";
const string B_NEW = "tAdA";
string fa(string str) {
int pos = 0;
while ((pos = str.find('B', pos)) != string::npos) {
str.replace(pos, 1, B_NEW);
pos += B_NEW.length();
}
return str;
}
string fb(string str) {
int pos = 0;
while ((pos = str.find('A', pos)) != string::npos) {
str.replace(pos, 1, A_NEW);
pos += A_NEW.length();
}
return str;
}
string fc(string str) {
for (int i = 0; i < str.length(); i++) {
if (str[i] == '(') {
string s = "";
stack<char> stk;
int begin = i;
char xita = str[++i];
while (str[++i] != ')') {
stk.push(str[i]);
// cout << str[i] << endl;
}
int len = stk.size();
while (stk.size()) {
char t = stk.top();
stk.pop();
s += xita;
s += t;
}
s += xita;
// cout << s << endl;
str.replace(begin, len + 3, s);
i = begin + len * 2 + 1;
}
}
return str;
}
string fd(string str) {
string ret = "";
for (const auto i : str) {
switch (i) {
case 't':
ret += "天";
break;
case 'd':
ret += "地";
break;
case 's':
ret += "上";
break;
case 'a':
ret += "一只";
break;
case 'e':
ret += "鹅";
break;
case 'z':
ret += "追";
break;
case 'g':
ret += "赶";
break;
case 'x':
ret += "下";
break;
case 'n':
ret += "蛋";
break;
case 'h':
ret += "恨";
break;
}
}
return ret;
}
int main() {
string str;
cin >> str;
str = fa(str);
str = fb(str);
str = fc(str);
str = fd(str);
cout << str << endl;
return 0;
}