# eva **Repository Path**: Pe73Hua/eva ## Basic Information - **Project Name**: eva - **Description**: Programming Language with LLVM - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-04 - **Last Updated**: 2025-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Programming Language with LLVM(18) xmake+vscode+mingw(llvm18) 命令行测试工具mingw MSYS2_CLANG64 ``` $ clang --version clang version 18.1.6 Target: x86_64-w64-windows-gnu Thread model: posix InstalledDir: C:/msys64/clang64/bin ``` 视频中所用的eva代码放在对应的lesson中 默认生成out.ll 生成out.ll后可以执行lli out.ll运行程序 执行表达式 `./eva-llvm.exe -e '(printf "v = %d\n" (+ 32 10))'` 读入文件执行 `./eva-llvm.exe -f "../../../../lesson/11.eva"` 基于LLVM 18由于18指针没有类型(Opaque pointers)所以代码有所更改 自己没有用debuger代码用有很多print输出命令行没有注释掉 eva解析中用到的llvm指针可以是字符串指针(global char8*)和类结构(heap allocated class)指针 parser 中的resolved_ptr_type会保存AST表达式中被解析的指针 Environment 中的std::map structTy_ 会保存环境中的指针类型 比如在声明函数时函数参数有类结构,那么传入参数就是Opaque pointers,其具体类型会保存在函数环境的structTy_中 # Refer: [基于LLVM设计编程语言](https://www.bilibili.com/video/BV1P2C1YHE2b/?share_source=copy_web&vd_source=f1061ac70718ab42a7642947f637b0db)