Started adding Parser

This commit is contained in:
Pasha Bibko
2025-04-16 20:00:28 +01:00
parent 4ac5061f03
commit f28b81ab87
10 changed files with 244 additions and 2 deletions

25
common/LLVM.h Normal file
View File

@@ -0,0 +1,25 @@
#pragma once
// Helper file for including all neccesarry parts of LLVM //
#ifdef _MSC_VER
// Disables all warnings as LLVM files have a lot of Data-loss casts that won't cause issues //
#pragma warning(push)
#pragma warning(disable : 4244)
#pragma warning(disable : 4267)
#pragma warning(disable : 4624)
#pragma warning(disable : 4800)
// Includes the LLVM files //
#include <llvm/IR/IRBuilder.h>
#include <llvm/IR/LLVMContext.h>
#include <llvm/IR/Module.h>
#include <llvm/IR/Verifier.h>
// Re-enables all warnings //
#pragma warning(pop)
#else
#error This code only works with MSVC / VS22
#endif // _MSC_VER

21
common/Parser.h Normal file
View File

@@ -0,0 +1,21 @@
#pragma once
#include <Lexer.h>
#include <LLVM.h>
#include <fstream>
#include <vector>
#include <memory>
namespace LX
{
struct GlobalDeclaration
{
};
struct FunctionDeclaration
{
};
std::vector<std::unique_ptr<GlobalDeclaration>> TurnTokensIntoAbstractSyntaxTree(std::vector<Token>& tokens, std::ofstream* log);
}