2
已解决
薛乘志
初级启示者
初级启示者
我用define对c++做了一些魔改,它现在变成了这样:
#include <bits/stdc++.h>
#define using(ns) using namespace ns;
using(std);
#define begin(code) main(){code;return 0;}
#define var(type,names...) type names
#define array(type,name,number) type name[number]
#define function(type,name,code,args...) type name(args){code;}
#define for(type,name,ed) for(type name=0;name<ed;name++)
#define input(data) std::cin>>data;
#define inputf(format,data) std::scanf(format,data)
#define print(data) std::cout<<data;
#define printf(format,data) std::printf(format,data)
function(int, jia,
return a + b,
var(int, a), var(int, b))
begin(
var(int, n, sum = 0);
input(n);
array(int, a, 1000);
for(int, i, n){
input(a[i]);
sum += a[i];
}
print(jia(n, sum));
)
而且编译能成功就很离谱
0
0
0
0
0
0
王牌工作室官方
新手光能
新手光能
第9行是不是无限递归......
王牌工作室官方在2022-02-25 12:43:12追加了内容
function多了个分号,并且只能写一条语句,还不如Lambda
王牌工作室官方在2022-02-25 12:44:29追加了内容
#define function(type,name,code,args...) auto name=[](args)->type{code}
请自行写分号
0
吴庞茂旭
资深光能
资深光能
/*
NAME:Cc++ (Chinese C++)
NODE/TIPS:NONE
*/
//std
#include <bits/stdc++.h>
#include <windows.h>
#define int long long
using namespace std;
string code;
map<string,string> ctoe;//翻译连接
map<string,string> ini;//变量连接
vector<string> box;//存储已有的可替换串
string itos(int n){
string s="";
while(n){
s=char(n%10+'0')+s;
n/=10;
}
return s;
}
string getname();//给变量取名
void inte();//处理Cc++中的变量、函数问题
void build();
void repet();
void nice();//去掉行首的空格
void fh();//添加分号
signed main(){
build();
string c;
while(getline(cin,c)){
if(c=="END")break;
code+=" "+c+"\n";
}
inte();
repet();
fh();
cout<<code;
return 0;
}
string getname(){
static int n=1;
return "v"+itos(n++);
}
void inte(){
int p1=code.find("#");
int p2=code.find("#",p1+1);
while(p1!=-1&&p2!=-1){
//中间一定就是变量了
string s=code.substr(p1+1,p2-p1-1);
if(!ini.count(s))ini[s]=getname();//取名
code.replace(p1,p2-p1+1,ini[s]);
p1=code.find("#",p2+1);
p2=code.find("#",p1+1);
}
}
void build(){
//存储
box.push_back(" 导入");
box.push_back(" 标准库");
box.push_back(" 扩展库");
box.push_back(" 微软库");
box.push_back(" 命名空间为");
box.push_back(" 标准空间");
box.push_back(" 宏定义");
box.push_back(" 替换为");
//头文件集成
ctoe[" 导入"]="#include";
ctoe[" 标准库"]="<bits/stdc++.h>";
ctoe[" 扩展库"]="<conio.h>";
ctoe[" 微软库"]="<windows.h>";
ctoe[" 命名空间为"]="using namespace ";
ctoe[" 标准空间"]="std";
ctoe[" 宏定义"]="#define";
ctoe[" 替换为"]="";
}
void repet(){
for(int i=0;i<box.size();i++){
string c=box[i];
int p=code.find(c);
while(p!=-1){
code.replace(p,c.size(),ctoe[c]);
p=code.find(c,p+ctoe[c].size());
}
}
}
void nice(){
int p1=0;
while(p1!=-1){
if(code[p1])
}
}
void fh(){
/* TODO (#1#): 在句末添加分号 */
int p1=0,p2=code.find("\n");
while(p2!=-1){
if(code[p1]!='#'&&code[p1]!='/'&&code[p2-1]!='{'){//这类情况是不需要添加分号的
code.insert(p2,";");
}
cout<<code<<endl;
p1=p2+2,p2=code.find("\n",p2+1);
}
}
//Cc++演示
导入 标准库
导入 微软库
导入 扩展库
宏定义 #Cc++# 替换为 good
命名空间为 标准空间
END
使用下面的样例试试?
0