initial CommandParser implementation

This commit is contained in:
black
2025-07-04 21:42:56 +02:00
parent cbdb4aa97d
commit 762b806fe7
2 changed files with 43 additions and 1 deletions

View File

@@ -3,3 +3,23 @@
//
#include "CommandParser.h"
CommandParser & CommandParser::getInstance() {
static CommandParser instance;
return instance;
}
std::vector<std::string> CommandParser::parseLine(const std::string &input) {
std::vector<std::string> output{};
/// Konvertiere den Input String in einen IStringStream, damit dieser bei Leerzeichen gesplittet werden kann
std::istringstream<char> iss(input);
std::string out;
do {
/// Trenne den IStringStream bei jedem Leerzeichen und füge die Befehl(e)/-sargumente dem Output hinzu
std::getline(iss, out, ' ');
if (out.at(0) != '#') {
output.push_back(out);
}
} while (!out.empty());
return output;
}

View File

@@ -4,11 +4,33 @@
#ifndef COMMANDPARSER_H
#define COMMANDPARSER_H
#include <string>
#include <vector>
class CommandParser {
private:
CommandParser() = default;
public:
/// Singleton Logik
CommandParser(const CommandParser&) = delete;
CommandParser(const CommandParser&&) = delete;
CommandParser& operator=(const CommandParser&) = delete;
CommandParser& operator=(const CommandParser&&) = delete;
~CommandParser() = default;
static CommandParser& getInstance();
/**
* Parst eine Zeile des Assembly Codes und gibt diese als sortierten Vektor zurück
*
* @param input Eine Zeile aus dem Assembly Code
* @return Ein Vektor mit Befehl und dessen Argumenten
*/
static std::vector<std::string> parseLine(const std::string& input);
};