diff --git a/.idea/editor.xml b/.idea/editor.xml
index 43702aa..aa2a125 100644
--- a/.idea/editor.xml
+++ b/.idea/editor.xml
@@ -27,7 +27,6 @@
-
diff --git a/src/assembler/assembler.cc b/src/assembler/assembler.cc
index ed464ed..b16396e 100644
--- a/src/assembler/assembler.cc
+++ b/src/assembler/assembler.cc
@@ -2,13 +2,10 @@
namespace tyche::as {
-Assembler::Assembler(std::string const& source)
+ByteArray Assembler::assemble()
{
+ lexer_.reset();
-}
-
-ByteArray Assembler::assemble() const
-{
return {};
}
diff --git a/src/assembler/assembler.hh b/src/assembler/assembler.hh
index b5cd1bb..144963c 100644
--- a/src/assembler/assembler.hh
+++ b/src/assembler/assembler.hh
@@ -3,15 +3,19 @@
#include
+#include "lexer.hh"
#include "../common/bytearray.hh"
namespace tyche::as {
class Assembler {
public:
- explicit Assembler(std::string const& source);
+ explicit Assembler(std::string source) : lexer_(std::move(source)) {}
- [[nodiscard]] ByteArray assemble() const;
+ [[nodiscard]] ByteArray assemble();
+
+private:
+ Lexer lexer_;
};
} // tyche
diff --git a/src/assembler/lexer.cc b/src/assembler/lexer.cc
index 234e844..2a9c5ab 100644
--- a/src/assembler/lexer.cc
+++ b/src/assembler/lexer.cc
@@ -1,4 +1,20 @@
#include "lexer.hh"
namespace tyche::as {
+
+void Lexer::reset()
+{
+
+}
+
+Token Lexer::peek() const
+{
+ return {};
+}
+
+Token Lexer::ingest()
+{
+ return {};
+}
+
} // tyche
diff --git a/src/assembler/lexer.hh b/src/assembler/lexer.hh
index 75bfc2d..1fc4fbd 100644
--- a/src/assembler/lexer.hh
+++ b/src/assembler/lexer.hh
@@ -1,10 +1,28 @@
#ifndef TYCHE_LEXER_HH
#define TYCHE_LEXER_HH
+#include
+#include
+
namespace tyche::as {
-class Lexer {
+enum class TokenType { Directive, Instruction, Number, Float, String, Enter, EOF_ };
+struct Token {
+ TokenType type;
+ std::string token;
+};
+
+class Lexer {
+public:
+ explicit Lexer(std::string source) : source_(std::move(source)) {}
+
+ void reset();
+ [[nodiscard]] Token peek() const;
+ [[nodiscard]] Token ingest();
+
+private:
+ std::string source_;
};
} // tyche