From 73939b3668d08b12b26448d6a5853a7cf0e8de73 Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Thu, 24 Apr 2025 19:43:15 +1000 Subject: [PATCH] Move everything into it's own file --- Bobfile | 2 +- mx | Bin 317352 -> 322216 bytes src/ArgParser.cpp | 38 +++ src/ArgParser.h | 11 + src/Interpreter.cpp | 263 +++++++++++++++++++ src/Interpreter.h | 20 ++ src/Logger.cpp | 36 +++ src/Logger.h | 17 ++ src/Parser.cpp | 164 ++++++++++++ src/Parser.h | 21 ++ src/SyntaxError.cpp | 54 ++++ src/SyntaxError.h | 14 + src/common.h | 62 +++++ src/main.cpp | 627 +------------------------------------------- 14 files changed, 707 insertions(+), 622 deletions(-) create mode 100644 src/ArgParser.cpp create mode 100644 src/ArgParser.h create mode 100644 src/Interpreter.cpp create mode 100644 src/Interpreter.h create mode 100644 src/Logger.cpp create mode 100644 src/Logger.h create mode 100644 src/Parser.cpp create mode 100644 src/Parser.h create mode 100644 src/SyntaxError.cpp create mode 100644 src/SyntaxError.h create mode 100644 src/common.h diff --git a/Bobfile b/Bobfile index 0224e7f..761027e 100644 --- a/Bobfile +++ b/Bobfile @@ -1,4 +1,4 @@ compiler "g++"; binary "mx"; -source "src/main.cpp"; +source "src/*.cpp"; compile; diff --git a/mx b/mx index 81e508a364208064570702eda3335e5937ce30cd..7a8be2ba9ffc4433494ce446a4526203f6e1d437 100755 GIT binary patch literal 322216 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 literal 317352 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 diff --git a/src/ArgParser.cpp b/src/ArgParser.cpp new file mode 100644 index 0000000..27c6cbd --- /dev/null +++ b/src/ArgParser.cpp @@ -0,0 +1,38 @@ +#include "ArgParser.h" + +bool debugMode = false; + +ArgParser::ArgParser(int argc, char* argv[]) { + // First, collect all arguments + for (int i = 0; i < argc; i++) { + args.push_back(argv[i]); + } + + // Then process them + for (int i = 0; i < args.size(); i++) { + if (args[i] == "--debug") { + debugMode = true; + args.erase(args.begin() + i); + } else if (args[i] == "--help") { + cout << "mxlang interpreter" << endl; + cout << "Usage: mx [file]" << endl; + cout << "Options:" << endl; + cout << " --debug Enable debug mode" << endl; + cout << " --help Show this help message" << endl; + cout << "Issues? Send an email to max@maxwellj.xyz" << endl; + cout << "Report bugs at https://git.maxwellj.xyz/max/mx" << endl; + exit(0); + } else if (args[i] == "--version") { + cout << "mxlang, version 0.0.2" << endl; + exit(0); + } + + } +} + +string ArgParser::getArg(int index) { + if (index >= 0 && index < args.size()) { + return args[index]; + } + return ""; +} diff --git a/src/ArgParser.h b/src/ArgParser.h new file mode 100644 index 0000000..3ef7bee --- /dev/null +++ b/src/ArgParser.h @@ -0,0 +1,11 @@ +#pragma once + +#include "common.h" + +class ArgParser { +private: + vector args; +public: + ArgParser(int argc, char* argv[]); + string getArg(int index); +}; \ No newline at end of file diff --git a/src/Interpreter.cpp b/src/Interpreter.cpp new file mode 100644 index 0000000..0cfa023 --- /dev/null +++ b/src/Interpreter.cpp @@ -0,0 +1,263 @@ +#include "Interpreter.h" + +optional Interpreter::consume() { + tokenIndex++; + if (tokenIndex < tokens.size()) return tokens[tokenIndex]; + return {}; +} + +optional Interpreter::peek(int offset) { + int index = tokenIndex + offset; + if (index >= 0 && index < tokens.size()) return tokens[index]; + return {}; +} + +void Interpreter::convertToTokens(vector tokenList) { + if (debugMode) log.toggleDebugPrint(); + tokens = tokenList; + log.debug("Alright we got " + to_string(tokens.size()) + " tokens"); + + while (tokenIndex < static_cast(tokens.size() - 1)) { + auto currentToken = consume(); + if (!currentToken) break; + + vector currentInstruction; + currentInstruction.push_back(currentToken.value()); + + // Collect tokens until semicolon + while (auto nextToken = peek(1)) { + if (nextToken->keyword == keywords::SEMICOLON) { + consume(); // consume the semicolon + break; + } + consume(); // consume the peeked token + currentInstruction.push_back(nextToken.value()); + } + // Apply variables to tokens + // We start at 1 so we can reassign variables in the execution of code + for (int i = 1; i < currentInstruction.size(); i++) { + if (currentInstruction[i].type == valtype::STR) { + string potentialVarName = get(currentInstruction[i].value.value); + auto varIt = variables.find(potentialVarName); + + if (varIt != variables.end()) { + // Replace the token with the variable's value + Token newToken; + newToken.keyword = keywords::VALUE; + newToken.type = varIt->second.type; + newToken.value = varIt->second; + currentInstruction[i] = newToken; + } + } + } + // Do math + for (int i = 0; i < currentInstruction.size(); i++) { + if (currentInstruction[i].keyword == keywords::ADD || currentInstruction[i].keyword == keywords::SUBTRACT || currentInstruction[i].keyword == keywords::MULTIPLY || currentInstruction[i].keyword == keywords::DIVIDE) { + Token newToken; + newToken.keyword = keywords::VALUE; + if (currentInstruction.size() < i + 1) syntaxError.mathTooFewArgs(); + Token before = currentInstruction[i - 1]; + Token after = currentInstruction[i + 1]; + if (before.type != after.type) syntaxError.mathTypeMismatch(); + newToken.type = before.type; + if (currentInstruction[i].keyword == keywords::ADD) { + if (newToken.type == valtype::INT) { + newToken.value.value = get(before.value.value) + get(after.value.value); + } + else if (newToken.type == valtype::DEC) { + newToken.value.value = get(before.value.value) + get(after.value.value); + } + else if (newToken.type == valtype::STR) { + newToken.value.value = get(before.value.value) + get(after.value.value); + } else { + syntaxError.mathCannotDoOperationOnType("+", "bool"); + } + } + else if (currentInstruction[i].keyword == keywords::SUBTRACT) { + if (newToken.type == valtype::INT) { + newToken.value.value = get(before.value.value) - get(after.value.value); + } + else if (newToken.type == valtype::DEC) { + newToken.value.value = get(before.value.value) - get(after.value.value); + } else { + syntaxError.mathCannotDoOperationOnType("-", "bool or string"); + } + } + else if (currentInstruction[i].keyword == keywords::MULTIPLY) { + if (newToken.type == valtype::INT) { + newToken.value.value = get(before.value.value) * get(after.value.value); + } + else if (newToken.type == valtype::DEC) { + newToken.value.value = get(before.value.value) * get(after.value.value); + } else { + syntaxError.mathCannotDoOperationOnType("*", "bool or string"); + } + } + else if (currentInstruction[i].keyword == keywords::DIVIDE) { + if (newToken.type == valtype::INT) { + newToken.value.value = get(before.value.value) / get(after.value.value); + } + else if (newToken.type == valtype::DEC) { + newToken.value.value = get(before.value.value) / get(after.value.value); + } else { + syntaxError.mathCannotDoOperationOnType("/", "bool or string"); + } + } else { + // Something has gone terribly wrong + // We should never reach this point in the code + syntaxError.generalError("The math aint mathing"); + } + // Insert our cool new token and get rid of the boring old stuff + currentInstruction[i - 1] = newToken; + currentInstruction.erase(currentInstruction.begin() + i); + currentInstruction.erase(currentInstruction.begin() + i); + i -= 1; + } + } + // Execute the instruction + executeCode(currentInstruction); + } +} + +void Interpreter::executeCode(vector tokens) { + SyntaxError syntaxError; + log.debug("Token length for this expression is " + to_string(tokens.size())); + for (int i = 0; i < tokens.size(); i++) { + if (tokens[i].keyword == keywords::PRINT) { + i++; + if (tokens.size() <= i) break; + Token nextToken = tokens[i]; + // Handle different value types + if (nextToken.keyword == keywords::VALUE) { + switch (nextToken.type) { + case valtype::INT: + cout << get(nextToken.value.value) << endl; + break; + case valtype::DEC: + cout << get(nextToken.value.value) << endl; + break; + case valtype::STR: + cout << get(nextToken.value.value) << endl; + break; + case valtype::BOOL: + cout << (get(nextToken.value.value) ? "true" : "false") << endl; + break; + default: + vector validTypes = {"int", "dec", "str", "bool"}; + syntaxError.fnTypeMismatch("print", validTypes, nextToken.type); + } + } else { + syntaxError.fnNotSufficientArgs("print", 1, 1, 0); + } + } else if (tokens[i].keyword == keywords::EXIT) { + i++; + if (tokens.size() <= i) break; + Token nextToken = tokens[i]; + if (nextToken.keyword == keywords::VALUE) { + switch (nextToken.type) { + case valtype::INT: + exit(get(nextToken.value.value)); + break; + case valtype::DEC: + exit(get(nextToken.value.value)); + break; + default: + vector validTypes = {"int", "dec"}; + syntaxError.fnTypeMismatch("exit", validTypes, nextToken.type); + } + } + } else if (tokens[i].keyword == keywords::LET) { + i++; + if (tokens.size() <= i + 2) { + syntaxError.fnNotSufficientArgs("let", 3, 3, tokens.size() - i); + break; + } + + Token typeToken = tokens[i]; + Token nameToken = tokens[i + 1]; + Token valueToken = tokens[i + 2]; + + i += 2; + + // Validate that we have a valid variable name + if (nameToken.type != valtype::STR) { + vector validTypes = {"str"}; + syntaxError.fnTypeMismatch("let (variable name)", validTypes, nameToken.type); + continue; + } + + string varName = get(nameToken.value.value); + Value newValue; + + // Check the type declaration matches the value + if (typeToken.keyword == keywords::INT && valueToken.type == valtype::INT) { + newValue.type = valtype::INT; + newValue.value = get(valueToken.value.value); + } + else if (typeToken.keyword == keywords::DEC && valueToken.type == valtype::DEC) { + newValue.type = valtype::DEC; + newValue.value = get(valueToken.value.value); + } + else if (typeToken.keyword == keywords::STR && valueToken.type == valtype::STR) { + newValue.type = valtype::STR; + newValue.value = get(valueToken.value.value); + } + else if (typeToken.keyword == keywords::BOOL && valueToken.type == valtype::BOOL) { + newValue.type = valtype::BOOL; + newValue.value = get(valueToken.value.value); + } + else { + vector validTypes; + if (typeToken.keyword == keywords::INT) validTypes = {"int"}; + else if (typeToken.keyword == keywords::DEC) validTypes = {"dec"}; + else if (typeToken.keyword == keywords::STR) validTypes = {"str"}; + else if (typeToken.keyword == keywords::BOOL) validTypes = {"bool"}; + syntaxError.fnTypeMismatch("let", validTypes, valueToken.type, "Variable name is " + varName); + continue; + } + + // Store the variable + variables[varName] = newValue; + } else { + if (tokens[i].keyword == keywords::VALUE && tokens[i].value.type == valtype::STR && variables.find(get(tokens[i].value.value)) != variables.end()) { + log.debug("Manipulating variable..."); + if (tokens.size() < i + 1) { + syntaxError.mathTooFewArgs(); + } + string varName = get(tokens[i].value.value); + i++; + if (variables[varName].type == valtype::INT) { + if (tokens[i].keyword == keywords::INCREMENT) { + variables[varName].value = get(variables[varName].value) + 1; + } else if (tokens[i].keyword == keywords::DECREMENT) { + variables[varName].value = get(variables[varName].value) - 1; + } else if (tokens[i].keyword == keywords::ADDTO) { + if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); + if (tokens[i + 1].value.type != valtype::INT) syntaxError.mathTypeMismatch("Expected an int when adding to an int"); + variables[varName].value = get(variables[varName].value) + get(tokens[i + 1].value.value); + } else if (tokens[i].keyword == keywords::SUBTRACTFROM) { + if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); + if (tokens[i + 1].value.type != valtype::INT) syntaxError.mathTypeMismatch("Expected an int when subtracting from an int"); + variables[varName].value = get(variables[varName].value) - get(tokens[i + 1].value.value); + } + } else if (variables[varName].type == valtype::DEC) { + if (tokens[i].keyword == keywords::INCREMENT) { + variables[varName].value = get(variables[varName].value) + 1; + } else if (tokens[i].keyword == keywords::DECREMENT) { + variables[varName].value = get(variables[varName].value) - 1; + } else if (tokens[i].keyword == keywords::ADDTO) { + if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); + if (tokens[i + 1].value.type != valtype::DEC) syntaxError.mathTypeMismatch("Expected an dec when adding to an dec"); + variables[varName].value = get(variables[varName].value) + get(tokens[i + 1].value.value); + } else if (tokens[i].keyword == keywords::SUBTRACTFROM) { + if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); + if (tokens[i + 1].value.type != valtype::DEC) syntaxError.mathTypeMismatch("Expected an dec when subtracting from an dec"); + variables[varName].value = get(variables[varName].value) - get(tokens[i + 1].value.value); + } + } + } else { + syntaxError.unknownFn(); + } + } + } +} \ No newline at end of file diff --git a/src/Interpreter.h b/src/Interpreter.h new file mode 100644 index 0000000..fdc887a --- /dev/null +++ b/src/Interpreter.h @@ -0,0 +1,20 @@ +#pragma once + +#include "common.h" +#include "SyntaxError.h" +#include "Logger.h" + +class Interpreter { +private: + SyntaxError syntaxError; + vector tokens; + map variables; + Logger log; + int tokenIndex = -1; + optional consume(); + optional peek(int offset = 1); + +public: + void convertToTokens(vector tokenList); + void executeCode(vector tokens); +}; \ No newline at end of file diff --git a/src/Logger.cpp b/src/Logger.cpp new file mode 100644 index 0000000..e0cdbe0 --- /dev/null +++ b/src/Logger.cpp @@ -0,0 +1,36 @@ +#include "Logger.h" + +string logList; + +void Logger::writeToLog(string type, string in) { + logList += type + ": " + in + "\n"; +} + +string Logger::getLog() { + return logList; +} + +void Logger::toggleDebugPrint() { + isDebug = !isDebug; +} + +void Logger::error(string in) { + cout << "Error: " + in + "\n"; + writeToLog("Error", in); +} + +void Logger::fatalError(string in, int code) { + cout << "Error: " + in + "\n"; + writeToLog("Error", in); + exit(code); +} + +void Logger::info(string in) { + cout << "Info: " + in + "\n"; + writeToLog("Info", in); +} + +void Logger::debug(string in) { + if (isDebug) cout << "Debug: " + in + "\n"; + writeToLog("Debug", in); +} \ No newline at end of file diff --git a/src/Logger.h b/src/Logger.h new file mode 100644 index 0000000..d9fbff9 --- /dev/null +++ b/src/Logger.h @@ -0,0 +1,17 @@ +#pragma once + +#include "common.h" + +class Logger { +private: + bool isDebug = false; + void writeToLog(string type, string in); + +public: + string getLog(); + void toggleDebugPrint(); + void error(string in); + void fatalError(string in, int code); + void info(string in); + void debug(string in); +}; \ No newline at end of file diff --git a/src/Parser.cpp b/src/Parser.cpp new file mode 100644 index 0000000..80e4153 --- /dev/null +++ b/src/Parser.cpp @@ -0,0 +1,164 @@ +#include "Parser.h" + +bool Parser::canInt(string in) { + try { + stoi(in); + return true; + } catch (...) { + return false; + } +} + +bool Parser::canDec(string in) { + try { + stod(in); + return true; + } catch (...) { + return false; + } +} + +void Parser::parseLines(string in, Logger log) { + log.debug("Parsing lines..."); + buffer.clear(); + termBuffer.clear(); + terms.clear(); + bool isString = false; + bool isEscaped = false; + + for (size_t i = 0; i < in.size(); i++) { + char c = in[i]; + + if (isEscaped) { + buffer += c; + isEscaped = false; + continue; + } + + if (c == '\\') { + isEscaped = true; + buffer += c; + continue; + } + + if (c == '"') { + buffer += c; + isString = !isString; + } else if (c == '\n' && !isString) { + // Skip newlines outside strings + continue; + } else if (c == ';' && !isString) { + if (!buffer.empty()) { + termBuffer.push_back(buffer); + buffer.clear(); + } + terms.push_back(termBuffer); + termBuffer.clear(); + } else if ((c == ',' || c == '{' || c == '}' || c == '(' || c == ')') && !isString) { + if (!buffer.empty()) { + termBuffer.push_back(buffer); + buffer.clear(); + } + termBuffer.push_back(string(1, c)); + } else if (c == ' ' && !isString) { + if (!buffer.empty()) { + termBuffer.push_back(buffer); + buffer.clear(); + } + } else { + buffer += c; + } + } + + // Handle any remaining buffer content + if (!buffer.empty()) { + termBuffer.push_back(buffer); + } + if (!termBuffer.empty()) { + terms.push_back(termBuffer); + } + + // Debug output + string debugString; + log.debug("Lines have been parsed."); + for (const auto& term : terms) { + for (const auto& t : term) { + debugString += t + ", "; + } + debugString += "\n"; + } + log.debug(debugString); +} + +void Parser::processLines() { + // Process vector> terms + for (int i = 0; i < terms.size(); i++) { + for (int j = 0; j < terms[i].size(); j++) { + Token token; + string ct = terms[i][j]; + if (ct == " ") continue; + // Oh boy here we go + else if (ct == "fun") token.keyword = keywords::FUN; + else if (ct == "let") token.keyword = keywords::LET; + else if (ct == "print") token.keyword = keywords::PRINT; + else if (ct == "return") token.keyword = keywords::RETURN; + else if (ct == "exit") token.keyword = keywords::EXIT; + else if (ct == "int") token.keyword = keywords::INT; + else if (ct == "dec") token.keyword = keywords::DEC; + else if (ct == "str") token.keyword = keywords::STR; + else if (ct == "bool") token.keyword = keywords::BOOL; + else if (ct == "{") token.keyword = keywords::OBRAC; + else if (ct == "}") token.keyword = keywords::CBRAC; + else if (ct == "(") token.keyword = keywords::OPARE; + else if (ct == ")") token.keyword = keywords::CPARE; + else if (ct == "+") token.keyword = keywords::ADD; + else if (ct == "-") token.keyword = keywords::SUBTRACT; + else if (ct == "*") token.keyword = keywords::MULTIPLY; + else if (ct == "/") token.keyword = keywords::DIVIDE; + else if (ct == "++") token.keyword = keywords::INCREMENT; + else if (ct == "--") token.keyword = keywords::DECREMENT; + else if (ct == "+=") token.keyword = keywords::ADDTO; + else if (ct == "-=") token.keyword = keywords::SUBTRACTFROM; + else if (ct == "*=") token.keyword = keywords::MULTIPLYTO; + else if (ct == "/=") token.keyword = keywords::DIVIDEFROM; + else { + token.keyword = keywords::VALUE; + // Convert the value based on its type + if (canDec(ct)) { + token.type = valtype::DEC; + token.value.type = valtype::DEC; + token.value.value = stod(ct); + } + else if (canInt(ct)) { + token.type = valtype::INT; + token.value.type = valtype::INT; + token.value.value = stoi(ct); + } + else if (ct == "true" || ct == "false") { + token.type = valtype::BOOL; + token.value.type = valtype::BOOL; + token.value.value = (ct == "true"); + } + else { + // Handle strings - remove quotes if present + token.type = valtype::STR; + token.value.type = valtype::STR; + if (ct.size() >= 2 && ct.front() == '"' && ct.back() == '"') { + // Remove the quotes + token.value.value = ct.substr(1, ct.size() - 2); + } else { + token.value.value = ct; + } + } + } + tokens.push_back(token); + } + Token semi; + semi.keyword = keywords::SEMICOLON; + tokens.push_back(semi); + } +} + +vector Parser::getTokens() { + return tokens; +} \ No newline at end of file diff --git a/src/Parser.h b/src/Parser.h new file mode 100644 index 0000000..28d2de0 --- /dev/null +++ b/src/Parser.h @@ -0,0 +1,21 @@ +#pragma once + +#include "common.h" +#include "Logger.h" + +class Parser { +private: + string buffer; + vector lines; + vector termBuffer; + vector tokens; + vector> terms; + vector> things; + vector>> stuff; + bool canInt(string in); + bool canDec(string in); +public: + void parseLines(string in, Logger log); + void processLines(); + vector getTokens(); +}; \ No newline at end of file diff --git a/src/SyntaxError.cpp b/src/SyntaxError.cpp new file mode 100644 index 0000000..cb4aa49 --- /dev/null +++ b/src/SyntaxError.cpp @@ -0,0 +1,54 @@ +#include "SyntaxError.h" + +void SyntaxError::fnTypeMismatch(string function, vector validTypes, valtype typeGiven, string notes) { + cerr << "TypeError: function type mismatch" << endl; + cerr << "Function '" << function << "' expected one of the following types: "; + for (int i = 0; i < validTypes.size(); i++) { + if (i != 0) cerr << ", "; + cerr << validTypes[i]; + } + cerr << endl << "Got type '"; + if (typeGiven == valtype::INT) cerr << "int"; + else if (typeGiven == valtype::DEC) cerr << "dec"; + else if (typeGiven == valtype::STR) cerr << "str"; + else if (typeGiven == valtype::BOOL) cerr << "bool"; + else cerr << "unknown"; + cerr << "' instead" << endl; + if (!notes.empty()) cerr << "Notes: " << notes << endl; + exit(1); +} + +void SyntaxError::fnNotSufficientArgs(string function, int minArgs, int maxArgs, int argsGiven) { + cerr << "TypeError: function not sufficient arguments" << endl; + cerr << "Function '" << function << "' expected between " << minArgs << " and " << maxArgs << " arguments, got " << argsGiven << endl; + exit(1); +} + +void SyntaxError::unknownFn() { + cerr << "TypeError: unknown function" << endl; + exit(1); +} + +void SyntaxError::mathTypeMismatch(string notes) { + cerr << "MathError: cannot add two different types together" << endl; + if (!notes.empty()) cerr << "Notes: " << notes << endl; + exit(1); +} + +void SyntaxError::mathTooFewArgs(string notes) { + cerr << "MathError: too few things to add together" << endl; + if (!notes.empty()) cerr << "Notes: " << notes << endl; + exit(1); +} + +void SyntaxError::mathCannotDoOperationOnType(string operatorUsed, string type, string notes) { + cerr << "MathError: cannot use operator '" + operatorUsed + " on type '" + type + "'" << endl; + if (!notes.empty()) cerr << "Notes: " << notes << endl; + exit(1); +} + +void SyntaxError::generalError(string notes) { + cerr << "GeneralError: Something went awfully wrong and we don't know why lmao" << endl; + if (!notes.empty()) cerr << "Notes: " << notes << endl; + exit(1); +} \ No newline at end of file diff --git a/src/SyntaxError.h b/src/SyntaxError.h new file mode 100644 index 0000000..c41bed7 --- /dev/null +++ b/src/SyntaxError.h @@ -0,0 +1,14 @@ +#pragma once + +#include "common.h" + +class SyntaxError { +public: + void fnTypeMismatch(string function, vector validTypes, valtype typeGiven, string notes = ""); + void fnNotSufficientArgs(string function, int minArgs, int maxArgs, int argsGiven); + void unknownFn(); + void mathTypeMismatch(string notes = ""); + void mathTooFewArgs(string notes = ""); + void mathCannotDoOperationOnType(string operatorUsed, string type, string notes = ""); + void generalError(string notes = ""); +}; \ No newline at end of file diff --git a/src/common.h b/src/common.h new file mode 100644 index 0000000..eb402d8 --- /dev/null +++ b/src/common.h @@ -0,0 +1,62 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using namespace std; + +enum class valtype { + INT, DEC, STR, BOOL, KEYWORD, UNKNOWN +}; + +enum class keywords { + IF, ELSE, WHILE, INT, DEC, STR, BOOL, FUN, RETURN, + OPARE, CPARE, OBRAC, CBRAC, + ADDTO, SUBTRACTFROM, MULTIPLYTO, DIVIDEFROM, + ADD, SUBTRACT, MULTIPLY, DIVIDE, + EQUAL, INEQUAL, LESS, GREATER, EQLESS, EQGREATER, + INCREMENT, DECREMENT, + PRINT, LET, INPUT, EXIT, + VALUE, SEMICOLON, VARIABLE +}; + +struct Value { + valtype type; + variant value; +}; + +struct Token { + keywords keyword; + Value value; + valtype type = valtype::KEYWORD; +}; + +struct var { + valtype type; + variant value; + + string toString() const { + if (type == valtype::INT) { + return to_string(get(value)); + } + else if (type == valtype::DEC) { + return to_string(get(value)); + } + else if (type == valtype::STR) { + return get(value); + } + else if (type == valtype::BOOL) { + return to_string(get(value)); + } else { + return "unknown"; + } + } +}; + +// Global variable +extern bool debugMode; +extern string logList; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index c766958..3636562 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,626 +1,11 @@ -#include #include -#include #include -#include -#include -#include -#include -#include - -using namespace std; - -enum class valtype { - INT, DEC, STR, BOOL, KEYWORD, UNKNOWN -}; - -enum class keywords { - IF, ELSE, WHILE, INT, DEC, STR, BOOL, FUN, RETURN, - OPARE, CPARE, OBRAC, CBRAC, - ADDTO, SUBTRACTFROM, MULTIPLYTO, DIVIDEFROM, - ADD, SUBTRACT, MULTIPLY, DIVIDE, - EQUAL, INEQUAL, LESS, GREATER, EQLESS, EQGREATER, - INCREMENT, DECREMENT, - PRINT, LET, INPUT, EXIT, - VALUE, SEMICOLON, VARIABLE -}; - -struct Value { - valtype type; - variant value; -}; - -struct Token { - keywords keyword; - Value value; - valtype type = valtype::KEYWORD; -}; - -struct var { - valtype type; - variant value; - - string toString() const { - if (type == valtype::INT) { - return to_string(get(value)); - } - else if (type == valtype::DEC) { - return to_string(get(value)); - } - else if (type == valtype::STR) { - return get(value); - } - else if (type == valtype::BOOL) { - return to_string(get(value)); - } else { - return "unknown"; - } - } -}; - -bool debugMode = false; - -class ArgParser { - private: - vector args; - public: - ArgParser(int argc, char* argv[]) { - // First, collect all arguments - for (int i = 0; i < argc; i++) { - args.push_back(argv[i]); - } - - // Then process them - for (int i = 0; i < args.size(); i++) { - if (args[i] == "--debug") { - debugMode = true; - args.erase(args.begin() + i); - } else if (args[i] == "--help") { - cout << "mxlang interpreter" << endl; - cout << "Usage: mx [file]" << endl; - cout << "Options:" << endl; - cout << " --debug Enable debug mode" << endl; - cout << " --help Show this help message" << endl; - cout << "Issues? Send an email to max@maxwellj.xyz" << endl; - cout << "Report bugs at https://git.maxwellj.xyz/max/mx" << endl; - exit(0); - } - } - } - - string getArg(int index) { - if (index >= 0 && index < args.size()) { - return args[index]; - } - return ""; - } -}; - -string logList; - -class Logger { - private: - bool isDebug = false; - - void writeToLog(string type, string in) { - logList += type + ": " + in + "\n"; - } - - public: - string getLog() { - return logList; - } - void toggleDebugPrint() { - isDebug = !isDebug; - } - void error(string in) { - cout << "Error: " + in + "\n"; - writeToLog("Error", in); - } - void fatalError(string in, int code) { - cout << "Error: " + in + "\n"; - writeToLog("Error", in); - exit(code); - } - void info(string in) { - cout << "Info: " + in + "\n"; - writeToLog("Info", in); - } - void debug(string in) { - if (isDebug) cout << "Debug: " + in + "\n"; - writeToLog("Debug", in); - } -}; - -class SyntaxError { - private: - public: - void fnTypeMismatch(string function, vector validTypes, valtype typeGiven, string notes = "") { - cerr << "TypeError: function type mismatch" << endl; - cerr << "Function '" << function << "' expected one of the following types: "; - for (int i = 0; i < validTypes.size(); i++) { - if (i != 0) cerr << ", "; - cerr << validTypes[i]; - } - cerr << endl << "Got type '"; - if (typeGiven == valtype::INT) cerr << "int"; - else if (typeGiven == valtype::DEC) cerr << "dec"; - else if (typeGiven == valtype::STR) cerr << "str"; - else if (typeGiven == valtype::BOOL) cerr << "bool"; - else cerr << "unknown"; - cerr << "' instead" << endl; - if (!notes.empty()) cerr << "Notes: " << notes << endl; - exit(1); - } - void fnNotSufficientArgs(string function, int minArgs, int maxArgs, int argsGiven) { - cerr << "TypeError: function not sufficient arguments" << endl; - cerr << "Function '" << function << "' expected between " << minArgs << " and " << maxArgs << " arguments, got " << argsGiven << endl; - exit(1); - } - void unknownFn() { - cerr << "TypeError: unknown function" << endl; - exit(1); - } - void mathTypeMismatch(string notes = "") { - cerr << "MathError: cannot add two different types together" << endl; - if (!notes.empty()) cerr << "Notes: " << notes << endl; - exit(1); - } - void mathTooFewArgs(string notes = "") { - cerr << "MathError: too few things to add together" << endl; - if (!notes.empty()) cerr << "Notes: " << notes << endl; - exit(1); - } - void mathCannotDoOperationOnType(string operatorUsed, string type, string notes = "") { - cerr << "MathError: cannot use operator '" + operatorUsed + " on type '" + type + "'" << endl; - if (!notes.empty()) cerr << "Notes: " << notes << endl; - exit(1); - } - void generalError(string notes = "") { - cerr << "GeneralError: Something went awfully wrong and we don't know why lmao" << endl; - if (!notes.empty()) cerr << "Notes: " << notes << endl; - exit(1); - } -}; - -class Parser { - private: - string buffer; - vector lines; - vector termBuffer; - vector tokens; - vector> terms; - vector> things; - vector>> stuff; - bool canInt(string in) { - try { - stoi(in); - return true; - } catch (...) { - return false; - } - } - bool canDec(string in) { - try { - stod(in); - return true; - } catch (...) { - return false; - } - } - public: - void parseLines(string in, Logger log) { - log.debug("Parsing lines..."); - buffer.clear(); - termBuffer.clear(); - terms.clear(); - bool isString = false; - bool isEscaped = false; - - for (size_t i = 0; i < in.size(); i++) { - char c = in[i]; - - if (isEscaped) { - buffer += c; - isEscaped = false; - continue; - } - - if (c == '\\') { - isEscaped = true; - buffer += c; - continue; - } - - if (c == '"') { - buffer += c; - isString = !isString; - } else if (c == '\n' && !isString) { - // Skip newlines outside strings - continue; - } else if (c == ';' && !isString) { - if (!buffer.empty()) { - termBuffer.push_back(buffer); - buffer.clear(); - } - terms.push_back(termBuffer); - termBuffer.clear(); - } else if ((c == ',' || c == '{' || c == '}' || c == '(' || c == ')') && !isString) { - if (!buffer.empty()) { - termBuffer.push_back(buffer); - buffer.clear(); - } - termBuffer.push_back(string(1, c)); - } else if (c == ' ' && !isString) { - if (!buffer.empty()) { - termBuffer.push_back(buffer); - buffer.clear(); - } - } else { - buffer += c; - } - } - - // Handle any remaining buffer content - if (!buffer.empty()) { - termBuffer.push_back(buffer); - } - if (!termBuffer.empty()) { - terms.push_back(termBuffer); - } - - // Debug output - string debugString; - log.debug("Lines have been parsed."); - for (const auto& term : terms) { - for (const auto& t : term) { - debugString += t + ", "; - } - debugString += "\n"; - } - log.debug(debugString); - } - void processLines() { - // Process vector> terms - for (int i = 0; i < terms.size(); i++) { - for (int j = 0; j < terms[i].size(); j++) { - Token token; - string ct = terms[i][j]; - if (ct == " ") continue; - // Oh boy here we go - else if (ct == "fun") token.keyword = keywords::FUN; - else if (ct == "let") token.keyword = keywords::LET; - else if (ct == "print") token.keyword = keywords::PRINT; - else if (ct == "return") token.keyword = keywords::RETURN; - else if (ct == "exit") token.keyword = keywords::EXIT; - else if (ct == "int") token.keyword = keywords::INT; - else if (ct == "dec") token.keyword = keywords::DEC; - else if (ct == "str") token.keyword = keywords::STR; - else if (ct == "bool") token.keyword = keywords::BOOL; - else if (ct == "{") token.keyword = keywords::OBRAC; - else if (ct == "}") token.keyword = keywords::CBRAC; - else if (ct == "(") token.keyword = keywords::OPARE; - else if (ct == ")") token.keyword = keywords::CPARE; - else if (ct == "+") token.keyword = keywords::ADD; - else if (ct == "-") token.keyword = keywords::SUBTRACT; - else if (ct == "*") token.keyword = keywords::MULTIPLY; - else if (ct == "/") token.keyword = keywords::DIVIDE; - else if (ct == "++") token.keyword = keywords::INCREMENT; - else if (ct == "--") token.keyword = keywords::DECREMENT; - else if (ct == "+=") token.keyword = keywords::ADDTO; - else if (ct == "-=") token.keyword = keywords::SUBTRACTFROM; - else if (ct == "*=") token.keyword = keywords::MULTIPLYTO; - else if (ct == "/=") token.keyword = keywords::DIVIDEFROM; - else { - token.keyword = keywords::VALUE; - // Convert the value based on its type - if (canDec(ct)) { - token.type = valtype::DEC; - token.value.type = valtype::DEC; - token.value.value = stod(ct); - } - else if (canInt(ct)) { - token.type = valtype::INT; - token.value.type = valtype::INT; - token.value.value = stoi(ct); - } - else if (ct == "true" || ct == "false") { - token.type = valtype::BOOL; - token.value.type = valtype::BOOL; - token.value.value = (ct == "true"); - } - else { - // Handle strings - remove quotes if present - token.type = valtype::STR; - token.value.type = valtype::STR; - if (ct.size() >= 2 && ct.front() == '"' && ct.back() == '"') { - // Remove the quotes - token.value.value = ct.substr(1, ct.size() - 2); - } else { - token.value.value = ct; - } - } - } - tokens.push_back(token); - } - Token semi; - semi.keyword = keywords::SEMICOLON; - tokens.push_back(semi); - } -} - vector getTokens() { - return tokens; - } -}; - -class Interpreter { - private: - SyntaxError syntaxError; - vector tokens; - map variables; - Logger log; - int tokenIndex = -1; - optional consume() { - tokenIndex++; - if (tokenIndex < tokens.size()) return tokens[tokenIndex]; - return {}; - } - optional peek(int offset = 1) { - int index = tokenIndex + offset; - if (index >= 0 && index < tokens.size()) return tokens[index]; - return {}; - } - - public: - void convertToTokens(vector tokenList) { - if (debugMode) log.toggleDebugPrint(); - tokens = tokenList; - log.debug("Alright we got " + to_string(tokens.size()) + " tokens"); - - while (tokenIndex < static_cast(tokens.size() - 1)) { - auto currentToken = consume(); - if (!currentToken) break; - - vector currentInstruction; - currentInstruction.push_back(currentToken.value()); - - // Collect tokens until semicolon - while (auto nextToken = peek(1)) { - if (nextToken->keyword == keywords::SEMICOLON) { - consume(); // consume the semicolon - break; - } - consume(); // consume the peeked token - currentInstruction.push_back(nextToken.value()); - } - // Apply variables to tokens - // We start at 1 so we can reassign variables in the execution of code - for (int i = 1; i < currentInstruction.size(); i++) { - if (currentInstruction[i].type == valtype::STR) { - string potentialVarName = get(currentInstruction[i].value.value); - auto varIt = variables.find(potentialVarName); - - if (varIt != variables.end()) { - // Replace the token with the variable's value - Token newToken; - newToken.keyword = keywords::VALUE; - newToken.type = varIt->second.type; - newToken.value = varIt->second; - currentInstruction[i] = newToken; - } - } - } - // Do math - for (int i = 0; i < currentInstruction.size(); i++) { - if (currentInstruction[i].keyword == keywords::ADD || currentInstruction[i].keyword == keywords::SUBTRACT || currentInstruction[i].keyword == keywords::MULTIPLY || currentInstruction[i].keyword == keywords::DIVIDE) { - Token newToken; - newToken.keyword = keywords::VALUE; - if (currentInstruction.size() < i + 1) syntaxError.mathTooFewArgs(); - Token before = currentInstruction[i - 1]; - Token after = currentInstruction[i + 1]; - if (before.type != after.type) syntaxError.mathTypeMismatch(); - newToken.type = before.type; - if (currentInstruction[i].keyword == keywords::ADD) { - if (newToken.type == valtype::INT) { - newToken.value.value = get(before.value.value) + get(after.value.value); - } - else if (newToken.type == valtype::DEC) { - newToken.value.value = get(before.value.value) + get(after.value.value); - } - else if (newToken.type == valtype::STR) { - newToken.value.value = get(before.value.value) + get(after.value.value); - } else { - syntaxError.mathCannotDoOperationOnType("+", "bool"); - } - } - else if (currentInstruction[i].keyword == keywords::SUBTRACT) { - if (newToken.type == valtype::INT) { - newToken.value.value = get(before.value.value) - get(after.value.value); - } - else if (newToken.type == valtype::DEC) { - newToken.value.value = get(before.value.value) - get(after.value.value); - } else { - syntaxError.mathCannotDoOperationOnType("-", "bool or string"); - } - } - else if (currentInstruction[i].keyword == keywords::MULTIPLY) { - if (newToken.type == valtype::INT) { - newToken.value.value = get(before.value.value) * get(after.value.value); - } - else if (newToken.type == valtype::DEC) { - newToken.value.value = get(before.value.value) * get(after.value.value); - } else { - syntaxError.mathCannotDoOperationOnType("*", "bool or string"); - } - } - else if (currentInstruction[i].keyword == keywords::DIVIDE) { - if (newToken.type == valtype::INT) { - newToken.value.value = get(before.value.value) / get(after.value.value); - } - else if (newToken.type == valtype::DEC) { - newToken.value.value = get(before.value.value) / get(after.value.value); - } else { - syntaxError.mathCannotDoOperationOnType("/", "bool or string"); - } - } else { - // Something has gone terribly wrong - // We should never reach this point in the code - syntaxError.generalError("The math aint mathing"); - } - // Insert our cool new token and get rid of the boring old stuff - currentInstruction[i - 1] = newToken; - currentInstruction.erase(currentInstruction.begin() + i); - currentInstruction.erase(currentInstruction.begin() + i); - i -= 1; - } - } - // Execute the instruction - executeCode(currentInstruction); - } - } - void executeCode(vector tokens) { - SyntaxError syntaxError; - log.debug("Token length for this expression is " + to_string(tokens.size())); - for (int i = 0; i < tokens.size(); i++) { - if (tokens[i].keyword == keywords::PRINT) { - i++; - if (tokens.size() <= i) break; - Token nextToken = tokens[i]; - // Handle different value types - if (nextToken.keyword == keywords::VALUE) { - switch (nextToken.type) { - case valtype::INT: - cout << get(nextToken.value.value) << endl; - break; - case valtype::DEC: - cout << get(nextToken.value.value) << endl; - break; - case valtype::STR: - cout << get(nextToken.value.value) << endl; - break; - case valtype::BOOL: - cout << (get(nextToken.value.value) ? "true" : "false") << endl; - break; - default: - vector validTypes = {"int", "dec", "str", "bool"}; - syntaxError.fnTypeMismatch("print", validTypes, nextToken.type); - } - } else { - syntaxError.fnNotSufficientArgs("print", 1, 1, 0); - } - } else if (tokens[i].keyword == keywords::EXIT) { - i++; - if (tokens.size() <= i) break; - Token nextToken = tokens[i]; - if (nextToken.keyword == keywords::VALUE) { - switch (nextToken.type) { - case valtype::INT: - exit(get(nextToken.value.value)); - break; - case valtype::DEC: - exit(get(nextToken.value.value)); - break; - default: - vector validTypes = {"int", "dec"}; - syntaxError.fnTypeMismatch("exit", validTypes, nextToken.type); - } - } - } else if (tokens[i].keyword == keywords::LET) { - i++; - if (tokens.size() <= i + 2) { - syntaxError.fnNotSufficientArgs("let", 3, 3, tokens.size() - i); - break; - } - - Token typeToken = tokens[i]; - Token nameToken = tokens[i + 1]; - Token valueToken = tokens[i + 2]; - - i += 2; - - // Validate that we have a valid variable name - if (nameToken.type != valtype::STR) { - vector validTypes = {"str"}; - syntaxError.fnTypeMismatch("let (variable name)", validTypes, nameToken.type); - continue; - } - - string varName = get(nameToken.value.value); - Value newValue; - - // Check the type declaration matches the value - if (typeToken.keyword == keywords::INT && valueToken.type == valtype::INT) { - newValue.type = valtype::INT; - newValue.value = get(valueToken.value.value); - } - else if (typeToken.keyword == keywords::DEC && valueToken.type == valtype::DEC) { - newValue.type = valtype::DEC; - newValue.value = get(valueToken.value.value); - } - else if (typeToken.keyword == keywords::STR && valueToken.type == valtype::STR) { - newValue.type = valtype::STR; - newValue.value = get(valueToken.value.value); - } - else if (typeToken.keyword == keywords::BOOL && valueToken.type == valtype::BOOL) { - newValue.type = valtype::BOOL; - newValue.value = get(valueToken.value.value); - } - else { - vector validTypes; - if (typeToken.keyword == keywords::INT) validTypes = {"int"}; - else if (typeToken.keyword == keywords::DEC) validTypes = {"dec"}; - else if (typeToken.keyword == keywords::STR) validTypes = {"str"}; - else if (typeToken.keyword == keywords::BOOL) validTypes = {"bool"}; - syntaxError.fnTypeMismatch("let", validTypes, valueToken.type, "Variable name is " + varName); - continue; - } - - // Store the variable - variables[varName] = newValue; - } else { - if (tokens[i].keyword == keywords::VALUE && tokens[i].value.type == valtype::STR && variables.find(get(tokens[i].value.value)) != variables.end()) { - log.debug("Manipulating variable..."); - if (tokens.size() < i + 1) { - syntaxError.mathTooFewArgs(); - } - string varName = get(tokens[i].value.value); - i++; - if (variables[varName].type == valtype::INT) { - if (tokens[i].keyword == keywords::INCREMENT) { - variables[varName].value = get(variables[varName].value) + 1; - } else if (tokens[i].keyword == keywords::DECREMENT) { - variables[varName].value = get(variables[varName].value) - 1; - } else if (tokens[i].keyword == keywords::ADDTO) { - if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); - if (tokens[i + 1].value.type != valtype::INT) syntaxError.mathTypeMismatch("Expected an int when adding to an int"); - variables[varName].value = get(variables[varName].value) + get(tokens[i + 1].value.value); - } else if (tokens[i].keyword == keywords::SUBTRACTFROM) { - if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); - if (tokens[i + 1].value.type != valtype::INT) syntaxError.mathTypeMismatch("Expected an int when subtracting from an int"); - variables[varName].value = get(variables[varName].value) - get(tokens[i + 1].value.value); - } - } else if (variables[varName].type == valtype::DEC) { - if (tokens[i].keyword == keywords::INCREMENT) { - variables[varName].value = get(variables[varName].value) + 1; - } else if (tokens[i].keyword == keywords::DECREMENT) { - variables[varName].value = get(variables[varName].value) - 1; - } else if (tokens[i].keyword == keywords::ADDTO) { - if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); - if (tokens[i + 1].value.type != valtype::DEC) syntaxError.mathTypeMismatch("Expected an dec when adding to an dec"); - variables[varName].value = get(variables[varName].value) + get(tokens[i + 1].value.value); - } else if (tokens[i].keyword == keywords::SUBTRACTFROM) { - if (tokens.size() < i + 1) syntaxError.mathTooFewArgs(); - if (tokens[i + 1].value.type != valtype::DEC) syntaxError.mathTypeMismatch("Expected an dec when subtracting from an dec"); - variables[varName].value = get(variables[varName].value) - get(tokens[i + 1].value.value); - } - } - } else { - syntaxError.unknownFn(); - } - } - } - } -}; +#include +#include "common.h" +#include "ArgParser.h" +#include "Logger.h" +#include "Parser.h" +#include "Interpreter.h" int main(int argc, char* argv[]) { // Parse and act upon command line arguments