mirror of
https://gitlab.com/octospacc/MultiSpaccSDK
synced 2025-06-05 22:09:21 +02:00
Sync some stuff
This commit is contained in:
88
Transpiler/Transpiler.js
Executable file
88
Transpiler/Transpiler.js
Executable file
@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('fs');
|
||||
|
||||
// idk if this actually will be ever finished
|
||||
|
||||
// https://stackoverflow.com/a/32567789
|
||||
const IsLetter = c => {
|
||||
console.log(c)
|
||||
return c.toLowerCase() != c.toUpperCase();
|
||||
};
|
||||
|
||||
const ParseArgv = _ => {
|
||||
let Argv = process.argv.slice(2);
|
||||
let Args = {};
|
||||
for (let i = 0; i < Argv.length; i++) {
|
||||
let Arg = Argv[i].split("=");
|
||||
let Left = Arg[0];
|
||||
let Right = Arg.slice(1).join("=");
|
||||
Args[Left] = Right;
|
||||
};
|
||||
return Args;
|
||||
};
|
||||
|
||||
const FillArgs = Args => {
|
||||
if (Args["Input"] == undefined) {
|
||||
console.log("No input file specified.");
|
||||
process.exit(1);
|
||||
};
|
||||
if (Args["Output"] == undefined) {
|
||||
Args["Output"] = Args["Input"] + ".c";
|
||||
};
|
||||
return Args;
|
||||
};
|
||||
|
||||
const ParseArgs = _ => {
|
||||
let Argv = ParseArgv();
|
||||
let Args = {};
|
||||
Object.keys(Argv).forEach(function(e) {
|
||||
console.log(e)
|
||||
if (e == "-i") Args["Input"] = Argv[e];
|
||||
else if (e == "-o") Args["Output"] = Argv[e];
|
||||
else if (e == "-t") Args["Target"] = Argv[e];
|
||||
});
|
||||
return FillArgs(Args);
|
||||
};
|
||||
|
||||
const CheckMethod = (Keyword, Line) => {
|
||||
if (Line.startsWith(Keyword+" ") || Line.startsWith(Keyword+"\t")) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
const Transpile = Source => {
|
||||
let Final = "";
|
||||
let Lines = Source.split('\n');
|
||||
for (let i = 0; i < Lines.length; i++) {
|
||||
let l = Lines[i];
|
||||
let lt = l.trim();
|
||||
console.log(lt);
|
||||
if (CheckMethod("if", lt)) {
|
||||
}
|
||||
else if (CheckMethod("elif", lt)) {
|
||||
}
|
||||
else if (CheckMethod("else", lt)) {
|
||||
}
|
||||
else if (CheckMethod("for", lt)) {
|
||||
}
|
||||
else if (CheckMethod("while", lt)) {
|
||||
}
|
||||
else if (IsLetter(lt[0])) {
|
||||
}
|
||||
else {
|
||||
console.log("Unknown statement at line "+i);
|
||||
}
|
||||
}
|
||||
return Final;
|
||||
}
|
||||
|
||||
const Main = _ => {
|
||||
let Args = ParseArgs();
|
||||
console.log(Args);
|
||||
let Source = fs.readFileSync(Args["Input"], 'utf8');
|
||||
let Final = Transpile(Source);
|
||||
};
|
||||
|
||||
Main();
|
Reference in New Issue
Block a user