Yerbacon/src/transpiler/MainTranspile.cpp

42 lines
1.1 KiB
C++

#include <iostream>
using namespace std;
enum LANGUAGE: unsigned short {LUA=0,JS=1,PY=2};
pair<LANGUAGE, bool> validLanguage(const string_view& it) {
static const string_view languages[3] = {".lua", ".js", ".py"};
LANGUAGE selected = LUA;
bool valid = false;
for (unsigned short i = 0; (i <= (languages->size() - 2)); ++i) {
if (it == languages[i]) {
selected = static_cast<LANGUAGE>(i);
valid = true;
break;
}
}
return pair<LANGUAGE, bool>(selected, valid);
}
#include "../headers/parsing/ParseComponents.hpp"
string transpile(ParseTree tree, string language)
{
string transpiled;
auto valided = validLanguage(language);
if (valided.second) {
switch (valided.first) {
// TODO Complete this part
case LUA:
break;
case JS:
break;
case PY:
break;
}
// TODO Actually transpile
} else {
cout << '"' << (char) toupper(language.at(1)) << language.erase(0, 2) << "\" is not a valid target." << endl;
exit(0);
}
return transpiled;
}