Attempt to add some more mathy and variable stuff

This commit is contained in:
Maxwell 2025-04-24 17:40:16 +10:00
parent 995514d62f
commit f8c8296d01
3 changed files with 9 additions and 10 deletions

BIN
mx

Binary file not shown.

View File

@ -414,46 +414,44 @@ class Interpreter {
if (newToken.type == valtype::INT) { if (newToken.type == valtype::INT) {
newToken.value.value = get<int>(before.value.value) + get<int>(after.value.value); newToken.value.value = get<int>(before.value.value) + get<int>(after.value.value);
} }
else if (newToken.type == valtype::DEC) { else if (newToken.type == valtype::DEC) {
newToken.value.value = get<double>(before.value.value) + get<double>(after.value.value); newToken.value.value = get<double>(before.value.value) + get<double>(after.value.value);
} }
else if (newToken.type == valtype::STR) { else if (newToken.type == valtype::STR) {
newToken.value.value = get<string>(before.value.value) + get<string>(after.value.value); newToken.value.value = get<string>(before.value.value) + get<string>(after.value.value);
} else { } else {
syntaxError.mathCannotDoOperationOnType("+", "bool"); syntaxError.mathCannotDoOperationOnType("+", "bool");
} }
} }
else if (currentInstruction[i].keyword == keywords::SUBTRACT) { else if (currentInstruction[i].keyword == keywords::SUBTRACT) {
if (newToken.type == valtype::INT) { if (newToken.type == valtype::INT) {
newToken.value.value = get<int>(before.value.value) - get<int>(after.value.value); newToken.value.value = get<int>(before.value.value) - get<int>(after.value.value);
} }
else if (newToken.type == valtype::DEC) { else if (newToken.type == valtype::DEC) {
newToken.value.value = get<double>(before.value.value) - get<double>(after.value.value); newToken.value.value = get<double>(before.value.value) - get<double>(after.value.value);
} else { } else {
syntaxError.mathCannotDoOperationOnType("-", "bool or string"); syntaxError.mathCannotDoOperationOnType("-", "bool or string");
} }
} }
else if (currentInstruction[i].keyword == keywords::MULTIPLY) { else if (currentInstruction[i].keyword == keywords::MULTIPLY) {
if (newToken.type == valtype::INT) { if (newToken.type == valtype::INT) {
newToken.value.value = get<int>(before.value.value) * get<int>(after.value.value); newToken.value.value = get<int>(before.value.value) * get<int>(after.value.value);
} }
else if (newToken.type == valtype::DEC) { else if (newToken.type == valtype::DEC) {
newToken.value.value = get<double>(before.value.value) * get<double>(after.value.value); newToken.value.value = get<double>(before.value.value) * get<double>(after.value.value);
} else { } else {
syntaxError.mathCannotDoOperationOnType("*", "bool or string"); syntaxError.mathCannotDoOperationOnType("*", "bool or string");
} }
} }
else if (currentInstruction[i].keyword == keywords::DIVIDE) { else if (currentInstruction[i].keyword == keywords::DIVIDE) {
if (newToken.type == valtype::INT) { if (newToken.type == valtype::INT) {
newToken.value.value = get<int>(before.value.value) / get<int>(after.value.value); newToken.value.value = get<int>(before.value.value) / get<int>(after.value.value);
} }
else if (newToken.type == valtype::DEC) { else if (newToken.type == valtype::DEC) {
newToken.value.value = get<double>(before.value.value) / get<double>(after.value.value); newToken.value.value = get<double>(before.value.value) / get<double>(after.value.value);
} else { } else {
syntaxError.mathCannotDoOperationOnType("/", "bool or string"); syntaxError.mathCannotDoOperationOnType("/", "bool or string");
} }
} else {
syntaxError.generalError("Da math aint mathing");
} }
} }
} }

View File

@ -1,4 +1,5 @@
print "dingusify"; print "dingusify";
let str bingus "heheheha its bingusing time"; let str bingus "heheheha its bingusing time";
print bingus; print bingus;
print 1 + 1;
exit 0; exit 0;