Skip to content

Instantly share code, notes, and snippets.

@luchenqun
Last active February 27, 2018 14:34
Show Gist options
  • Select an option

  • Save luchenqun/93f57e3bbc4319b980e9cf931e4313ba to your computer and use it in GitHub Desktop.

Select an option

Save luchenqun/93f57e3bbc4319b980e9cf931e4313ba to your computer and use it in GitHub Desktop.
var readline = require('readline');
var fs = require('fs');
var os = require('os');
var fReadName = './test.cpp';
var fWriteName = './test.deal.cpp';
var fRead = fs.createReadStream(fReadName);
var fWrite = fs.createWriteStream(fWriteName);
var objReadline = readline.createInterface({
input: fRead,
});
var func = []
var retType = (func) => {
var ftype = "unknowRetType";
for(let val of func){
if (val.includes("output =")) {
ftype = val.trim().split("output")[0].trim();
break;
}
}
return ftype;
}
var funcName = (func) => {
let fname = "unknowFuncName";
for(let val of func){
if (val.includes("void")) {
let arr = val.trim().split(" ");
let name = arr[1];
let start = name.indexOf("_");
let end = name.indexOf("(");
fname = name.substring(start + 1, end);
if (fname.charAt(fname.length -1) >= '0' && fname.charAt(fname.length -1) <= '9') {
fname = fname.substring(0, fname.length -1);
}
// console.log(name, fname, start + 1, end);
break;
}
}
return fname;
}
var inType = (func) => {
let ret = {
a: "unknowA",
b: "unknowB",
name: "",
};
for(let val of func){
if (val.includes("a =")) {
ret.a = val.trim().split("=")[0].trim();
}
if (val.includes("b =")) {
ret.b = val.trim().split("=")[0].trim();
break;
}
}
let temp = ret.a.split(" ");
ret.name += "_";
ret.name += (temp.length === 3) ? ("u" + temp[1]) : (temp[0]);
temp = ret.b.split(" ");
ret.name += "_";
ret.name += (temp.length === 3) ? ("u" + temp[1]) : (temp[0]);
return ret;
}
var flag = true;
objReadline.on('line', (line) => {
if (line.startsWith('//')) {
func = [];
}
func.push(line);
if(line === "}" && flag){
for(let val of func){
let name = "lcq";
// 函数声明
if (val.includes("void ")) {
val = retType(func) + " " + funcName(func) + inType(func).name + "(" + inType(func).a + ", " + inType(func).b + ")";
}
if (val.includes("CIOV i2;")) {
val = " CIOV i1, i2;";
}
if (val.includes("}")) {
fWrite.write(" return output;" + os.EOL);
}
// 过滤不打印的
if (val.includes("cout") || val.includes("a =") || val.includes("b =") || val.includes("CIOV i1;") || val === "") {
continue;
}
fWrite.write(val + os.EOL); // 下一行
}
fWrite.write(os.EOL); // 下一行
flag = true;
}
});
objReadline.on('close', () => {
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment