Skip to content

pochtineploho/LMlang

Repository files navigation

src/img.png

Кратко:--------------------------------------------------------------------------------

AST - структура AST и встроенная генерация байткода

byteCodeGener - функции для генерации bytecodeStream для работы в runtime

VM - содержит в себе несколько таблиц:

String Function и Array(в прогрессе) для хранения соотв данных

JITCompile - функция для компиляции куска кода с горячим циклом

GC - автоматический GC на базе boehmGC(прописано в gcMemoryManager.h)

Vaule - стек хранит значения этого типа и взаимодействует с ними

Туториал по установке либ:-------------------------------------------------------

Вне проекта создаёте папку(и) для них:

Example:

D:\1_5sem\PISVJAP\LMLang\LMlang - адрес проекта

D://1_5sem//PISVJAP//boehmGC// - папка для бинарей

D://1_5sem//PISVJAP//LLVM// - папка для бинарей

LLVM:---------------------------------------------------------------------------------

https://github.com/llvm/llvm-project/releases/tag/llvmorg-19.1.0

Качаете: clang+llvm-19.1.0-x86_64-pc-windows-msvc.tar.xz

Распаковываете в соответствующей папке, подвязываете в CmakeLists.txt локально:

find_package(LLVM REQUIRED CONFIG PATHS "D:\1_5sem\PISVJAP\LLVM\clang+llvm-19.1.0-x86_64-pc-windows-msvc\")

LibatomicOps:-----------------------------------------------------------------------------

git clone https://github.com/ivmai/libatomic_ops.git

cd libatomic_ops

mkdir build && cd build

cmake -DCMAKE_INSTALL_PREFIX=D:/path/to/install/libatomic .. - это папка для бинарей libatomic

cmake --build . --target install

Bdwgc:-----------------------------------------------------------------------------------------

git clone https://github.com/ivmai/bdwgc.git

cd bdwgc

mkdir build && cd build

cmake -DCMAKE_C_FLAGS="-I D:/path/to/libatomic_ops/src" -DCMAKE_PREFIX_PATH=D:/path/to/install/libatomic -DCMAKE_INSTALL_PREFIX=D:/path/to/install/bdwgc .. - это папка для бинарей libatomic

cmake --build . --target install

Подвязываете в CmakeLists:

find_package(BDWgc 8.2.0 REQUIRED PATHS "D://1_5sem//PISVJAP//boehmGC//bdwgcInstall") - это как раз D:/path/to/install/bdwgc

Antlr4:-----------------------------------------------------------------------------------------

В папке: D:/1_5sem/PISVJAP/antlr4/

git clone https://github.com/antlr/antlr4

mkdir install

mkdir build && cd build

cmake -DCMAKE_INSTALL_PREFIX=D:/1_5sem/PISVJAP/antlr4/install -DCMAKE_BUILD_TYPE=Debug -DANTLR4_INSTALL=ON D:/1_5sem/PISVJAP/antlr4/antlr4/runtime/Cpp - это папка сурс файлов с CmakeLists.txt

cmake --build . --target install

Подвязываете в CmakeLists:

Пуллите/Копируете CmakeLists.txt (ну или только то, что соотносится с antlr4)

После этого папку antlr4 можно будет удалить из проекта

"D:\1_5sem\PISVJAP\antlr4\install\bin\antlr4-runtime.dll"

Это папка, куда устанавливается antlr4, нужно скопировать этот файл в cmake-build-debug

Compiler(если дефолтный(скорее всего MinGW) не работает):-----------------------------------------------------------------------------------------

В File > Settings > Build, Execution, Deployment > Toolchains находите(или добавляете если нет) Visual Studio и тащите её наверх, чтобы стала дефолтным компилятором

Добавить папку и скопировать в неё файл:

"C:\Program Files\Microsoft Visual Studio\2022\Community\DIA SDK\lib\amd64\diaguids.lib"

Отсюда в:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\DIA SDK\lib\amd64\diaguids.lib"

Именно по этому пути сборщик будет искать этот файл(на linux по-другому, чтобы поймать ошибку нужно сделать всё, что написано до этого и попытаться сбилдить).

P.S.---------------------------------------------------------------------------------------------

Внимательно смотрите на пути установки и генерации бинарей! Если что-то будет не получаться - зовите.

Если у вас не винда, могут быть проблемы

Удачи!!!

About

LastMinute programming language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published