Sprint 2 Step 1: base ASTNode class and Module concept

Adds the C++ editor stack foundation with ASTNode (id, conceptType, parent pointer, virtual dtor) and Module as the first concrete concept (name, targetLanguage). Header-only, compiles with C++20, test passes all assertions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Bill
2026-02-06 18:44:42 -07:00
parent 25aa8bd024
commit 586914df4e
4 changed files with 50 additions and 0 deletions

8
editor/CMakeLists.txt Normal file
View File

@@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.20)
project(WhetstoneEditor LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(step1_test tests/step1_test.cpp)
target_include_directories(step1_test PRIVATE src)

11
editor/src/ast/ASTNode.h Normal file
View File

@@ -0,0 +1,11 @@
#pragma once
#include <string>
class ASTNode {
public:
std::string id;
std::string conceptType;
ASTNode* parent = nullptr;
virtual ~ASTNode() = default;
};

15
editor/src/ast/Module.h Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#include "ASTNode.h"
class Module : public ASTNode {
public:
std::string name;
std::string targetLanguage;
Module() { conceptType = "Module"; }
Module(const std::string& id, const std::string& name, const std::string& lang)
: name(name), targetLanguage(lang) {
this->id = id;
this->conceptType = "Module";
}
};

View File

@@ -0,0 +1,16 @@
#include "../src/ast/Module.h"
#include <cassert>
#include <iostream>
int main() {
Module m("SFE_M001", "SimpleFunctionExample", "python");
assert(m.id == "SFE_M001");
assert(m.name == "SimpleFunctionExample");
assert(m.targetLanguage == "python");
assert(m.conceptType == "Module");
assert(m.parent == nullptr);
std::cout << "Step 1: PASS" << std::endl;
return 0;
}