Start work on functions

This commit is contained in:
2025-05-16 06:17:57 +10:00
parent 49bcaaaa13
commit 7fb60587e7
4 changed files with 34 additions and 2 deletions

View File

@@ -46,6 +46,17 @@ void Interpreter::initInterpreter(vector<string> args) {
variables["args"] = buf;
}
valtype Interpreter::keywordToValtype(keywords in) {
switch (in) {
case keywords::INT: return valtype::INT;
case keywords::DEC: return valtype::DEC;
case keywords::BOOL: return valtype::BOOL;
case keywords::STR: return valtype::STR;
default: return valtype::KEYWORD;
}
return valtype::KEYWORD;
}
void Interpreter::interpret(vector<Token> tokenList) {
if (debugMode) log.toggleDebugPrint();
tokens = tokenList;
@@ -532,6 +543,17 @@ void Interpreter::executeCode(vector<Token> tokens) {
} else {
syntaxError.generalError("Achievement get: How did we get here?");
}
} else if (tokens[i].keyword == keywords::FUNCTION) {
i++;
Function buf;
if (tokens[i].type != valtype::KEYWORD) syntaxError.generalError("fun needs a keyword, not a value");
buf.type = keywordToValtype(tokens[i].keyword);
i++;
string valName;
if (tokens[i].value.type == valtype::STR) valName = get<string>(tokens[i].value.value);
buf.startToken = tokenIndex;
i++;
if (tokens[i].keyword != )
} else {
if (tokens[i].keyword == keywords::VALUE && tokens[i].value.type == valtype::STR && variables.find(get<string>(tokens[i].value.value)) != variables.end()) {
log.debug("Manipulating variable...");