From 916c169691fc5f719469e97a3e7cf7116a8d9bd0 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:24:37 +0100 Subject: [PATCH 01/13] Create ci file --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c97fc86 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,25 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y cmake build-essential llvm-dev libcatch2-dev + + - name: Build and Test + run: | + cmake . + ./build/bin/tests From 314806729955da1445b8ecfc5a8f3a9b71d99897 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:25:02 +0100 Subject: [PATCH 02/13] Create cmake file --- CMakeLists.txt | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..08f32f7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,74 @@ +cmake_minimum_required(VERSION 4.4.2) + +project(alpha) + + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +include_directories(${CMAKE_SOURCE_DIR}/src) + +find_package(LLVM REQUIRED CONFIG) + +add_definitions(${LLVM_DEFINITIONS}) +llvm_map_components_to_libnames(llvm_libs + core + support + irreader + codegen + asmprinter + target + native + TargetParser +) + + +file(GLOB_RECURSE ALL_SRC_CPP CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") +list(FILTER ALL_SRC_CPP EXCLUDE REGEX ".*main\\.cpp$") + +file(GLOB_RECURSE ALL_SRC_HPP CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp") + +add_library(alpha_lib STATIC ${ALL_SRC_CPP} ${ALL_SRC_HPP}) + +target_include_directories(alpha_lib PUBLIC + ${CMAKE_SOURCE_DIR}/src + ${LLVM_INCLUDE_DIRS} +) +target_link_libraries(alpha_lib PUBLIC ${llvm_libs}) + +# Main compiler + +add_executable(main src/main.cpp) + +target_link_libraries(main PRIVATE alpha_lib) + +set_target_properties(main PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin +) + +# Tests +find_package(Catch2 3 REQUIRED) + +enable_testing() +file(GLOB_RECURSE ALL_TEST_CPP CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp") + + +add_executable(tests + ${ALL_TEST_CPP} +) + +target_link_libraries(tests PRIVATE + alpha_lib + Catch2::Catch2WithMain +) + +get_target_property(Catch2_INCLUDE_DIR Catch2::Catch2 INTERFACE_INCLUDE_DIRECTORIES) +target_include_directories(tests PRIVATE ${Catch2_INCLUDE_DIR}) + +include(Catch) +catch_discover_tests(tests) + +set_target_properties(tests PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin +) \ No newline at end of file From cefd5c6cc88c8aeb635ee6472aa259c15f23043f Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:29:38 +0100 Subject: [PATCH 03/13] Run CI on every PR --- .github/workflows/ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c97fc86..826da4b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,9 +2,12 @@ name: CI on: push: - branches: [main] + branches: + - "**" + - "!main" pull_request: - branches: [main] + branches: + - "**" jobs: build-and-test: From 48eb01e93e4fb60f81c409fe467dda579bfcafa5 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:33:38 +0100 Subject: [PATCH 04/13] Update install step --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 826da4b..069e2ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,10 +17,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Install Dependencies + - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y cmake build-essential llvm-dev libcatch2-dev + sudo add-apt-repository universe + sudo apt-get update + sudo apt-get install -y cmake build-essential libllvm-18-dev llvm-18-dev catch2 - name: Build and Test run: | From 537851bf26755209b8bcce2cc38ab77f84c07375 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:35:14 +0100 Subject: [PATCH 05/13] Update install step --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 069e2ae..8e29861 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,9 +20,9 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo add-apt-repository universe - sudo apt-get update - sudo apt-get install -y cmake build-essential libllvm-18-dev llvm-18-dev catch2 + sudo apt-get install -y cmake build-essential libcatch2-dev + + sudo apt-get install -y llvm-dev libllvm-s-dev || sudo apt-get install -y llvm-dev - name: Build and Test run: | From 5aacf37ca960d039c6270bf11c24d92dadcefa90 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:36:50 +0100 Subject: [PATCH 06/13] Update install step --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e29861..914eac0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,9 +20,10 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y cmake build-essential libcatch2-dev - - sudo apt-get install -y llvm-dev libllvm-s-dev || sudo apt-get install -y llvm-dev + sudo apt-get install -y software-properties-common + sudo add-apt-repository universe + sudo apt-get update + sudo apt-get install -y cmake build-essential libcatch2-dev llvm-dev - name: Build and Test run: | From 9e9cec145fdf8af9b212b3319486c9b036952010 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:38:16 +0100 Subject: [PATCH 07/13] Update install step --- .github/workflows/ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 914eac0..63ca378 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,10 +20,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y software-properties-common - sudo add-apt-repository universe - sudo apt-get update - sudo apt-get install -y cmake build-essential libcatch2-dev llvm-dev + sudo apt-get install -y cmake build-essential catch2 llvm-dev - name: Build and Test run: | From a959e9002af8222f0fa79c224611e7c943a52250 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:39:11 +0100 Subject: [PATCH 08/13] Downgrade cmake version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08f32f7..64c1a57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.4.2) +cmake_minimum_required(VERSION 3.31.6) project(alpha) From e0e7bd87ac701c197bca20258fbca55b9d9ed52d Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:40:51 +0100 Subject: [PATCH 09/13] Include make step --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 63ca378..7ba7d61 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,4 +25,5 @@ jobs: - name: Build and Test run: | cmake . + make ./build/bin/tests From 50d823eeecaec130afc33a0b294baeea3f6cfb7b Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:43:03 +0100 Subject: [PATCH 10/13] Update import --- src/syntax_analyser/statement/addition/addition.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/syntax_analyser/statement/addition/addition.hpp b/src/syntax_analyser/statement/addition/addition.hpp index e94c873..ef2bcf7 100644 --- a/src/syntax_analyser/statement/addition/addition.hpp +++ b/src/syntax_analyser/statement/addition/addition.hpp @@ -1,4 +1,5 @@ #pragma once +#include #include "syntax_analyser/statement/statement.hpp" #include "syntax_analyser/statement/value/identifier/identifier.hpp" From 5b978f0f07370a28c6dce7e8fe6dfbd1d6d1b453 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:47:11 +0100 Subject: [PATCH 11/13] Update import --- src/syntax_analyser/statement/print/print.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/syntax_analyser/statement/print/print.hpp b/src/syntax_analyser/statement/print/print.hpp index 77944b0..6478fcc 100644 --- a/src/syntax_analyser/statement/print/print.hpp +++ b/src/syntax_analyser/statement/print/print.hpp @@ -1,8 +1,8 @@ #pragma once +#include -#include "syntax_analyser/statement/assignment/assignment_type.hpp" #include "syntax_analyser/statement/statement.hpp" -#include "syntax_analyser/statement/value/identifier/identifier.hpp" +#include "syntax_analyser/statement/value/value.hpp" class PrintStatement : public Statement { public: From 41b6a350a07e81479a89b25981f8653d53696e88 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 21:22:44 +0100 Subject: [PATCH 12/13] Change to llvm 22 --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ba7d61..caf817e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,13 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y cmake build-essential catch2 llvm-dev + sudo apt-get install -y wget lsb-release software-properties-common gnupg catch2 + + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 22 + + echo "LLVM_DIR=/usr/lib/llvm-22/lib/cmake/llvm" >> $GITHUB_ENV - name: Build and Test run: | From 5cc5e94750139bcf16d486858513549fd3a5fd66 Mon Sep 17 00:00:00 2001 From: Thomas <31802793+ThomasNotTom@users.noreply.github.com> Date: Sun, 2 Aug 2026 21:25:37 +0100 Subject: [PATCH 13/13] Change run path --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index caf817e..b3825c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,15 +21,15 @@ jobs: run: | sudo apt-get update sudo apt-get install -y wget lsb-release software-properties-common gnupg catch2 - + wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 22 - + echo "LLVM_DIR=/usr/lib/llvm-22/lib/cmake/llvm" >> $GITHUB_ENV - name: Build and Test run: | cmake . make - ./build/bin/tests + ./bin/tests