最近我想写一个用中文来翻译c++的程序,但写到一半写不下去了,希望寻找一两个合伙伙伴一起写,如果有这方面经验的朋友可以在下面说一下,我去关注您,之后再看怎么办。
我目前基建好的std:
/*
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 fh();//添加分号
signed main(){
build();
string c;
while(getline(cin,c)){
if(c=="END")break;
code+=" "+c+"\n";
}
inte();
repet();
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 fh(){
/* TODO (#1#): 在句末添加分号 */
}
测试使用的样例:
//Cc++演示
导入 标准库
导入 微软库
导入 扩展库
宏定义 #Cc++# 替换为 good
命名空间为 标准空间
END
感谢了!!!