Started implementing AST

This commit is contained in:
Pasha Bibko
2025-07-22 22:25:20 +01:00
parent 75f84539bd
commit faf34661fb
6 changed files with 57 additions and 4 deletions

View File

@@ -15,10 +15,10 @@ enable_testing()
add_subdirectory(external/googletest)
# Adds the sub-directories of all of the binaries #
# The order is equivalent to which order they are compiled #
add_subdirectory(lexer)
add_subdirectory(ast)
# The app subdirectory #
# Executable directories #
add_subdirectory(LXC)
# Compiles the tests #
add_subdirectory(tests)

View File

@@ -3,6 +3,7 @@ add_executable(LXC LXC.cpp)
# Links the other binaries #
target_link_libraries(LXC PRIVATE Lexer)
target_link_libraries(LXC PRIVATE AST)
# Creates the precompiled header for the binary #
target_include_directories(LXC PRIVATE ${CMAKE_SOURCE_DIR}/common)

View File

@@ -1,8 +1,8 @@
# Fetches all files for in the binary #
file (GLOB LexerSources src/*.cpp inc/*.h)
add_library(Lexer STATIC ${LexerSources})
# Adds the headers in the current directory #
target_include_directories (
Lexer PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/inc

16
ast/CMakeLists.txt Normal file
View File

@@ -0,0 +1,16 @@
# Fetches all files for the binary #
file (GLOB ASTSources src/*.cpp inc/*.h)
add_library(AST STATIC ${ASTSources})
# Adds the headers in the current directory #
target_include_directories (
AST PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/inc
)
# Links to the Lexer so it can use tokens as data types #
target_link_libraries(AST PUBLIC Lexer)
# Creates the precompiled header of the binary #
target_include_directories(AST PRIVATE ${CMAKE_SOURCE_DIR}/common)
target_precompile_headers(AST PRIVATE ${CMAKE_SOURCE_DIR}/common/LXC.h)

35
ast/inc/Node.h Normal file
View File

@@ -0,0 +1,35 @@
#include <LXC.h>
namespace LXC::AST
{
enum class NodeType
{
// General nodes //
Identifier,
Operation,
// Variable nodes //
Var_Declare,
Var_Assign,
Var_Access,
// Control flow nodes //
IfBranch,
ReturnVal
};
class Node
{
public:
Node(NodeType _type)
: m_Type(_type)
{}
protected:
const NodeType m_Type;
};
}

1
ast/src/AST.cpp Normal file
View File

@@ -0,0 +1 @@
#include <Node.h>