feat: basic lexer + parser with basic example

This commit is contained in:
2025-11-26 22:26:10 +01:00
parent 1975059b1b
commit 7febbb80d4
10 changed files with 414 additions and 1 deletions

47
include/string.hpp Normal file
View File

@ -0,0 +1,47 @@
#pragma once
#include <cstddef>
struct StringView
{
size_t size;
const char* data;
public:
StringView()
{
data = nullptr;
size = 0;
}
StringView(const char* data, size_t size)
{
this->data = data;
this->size = size;
}
};
struct StringBuilder
{
size_t size;
size_t capacity;
char* data;
public:
StringBuilder()
{
size = 0;
capacity = 10;
data = (char*)malloc(capacity * sizeof(char));
}
private:
void ensureSize(size_t newSize)
{
if (newSize <= capacity) return;
capacity = capacity + (capacity / 2);
data = (char*)realloc(data, capacity * sizeof(char));
}
public:
void PushChar(char c)
{
ensureSize(size + 1);
data[size++] = c;
}
};