***
使用 LLVM 作为后端,dart 为前端实现一个简易的编程语言。
通过 dart FFI 和 `ffi_gen` 调用 LLVM-C 接口;
在dart端处理词法分析、构建模块并生成 .o 目标文件然后使用`clang`完成链接,生成一个可执行文件。
llvm version: >= 16.0.6
在根文件夹下可以简单运行:
```sh
dart run bin/run.dart stack_com
```
stack_com.kc 在 `kc/bin` 文件夹下
测试 所有kc文件:
```sh
dart test test/test_all_test.dart
```
在运行之前要做一些准备
## windows
需要安装Visual Studio, Window SDK, msys2
### 安装 msys2:
- scoop install msys2 [scoop](https://scoop.sh/)
- 官网下载 [msys2](https://www.msys2.org/)
### msys2 三种环境: clang64(推荐) mingw64 ucrt64
选择一个配置环境:
打开cmd/pwsh
## pacman:
```sh
clang64
pacman -S mingw-w64-clang-x86_64-toolchain mingw-w64-clang-x86_64-llvm mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-ninja mingw-w64-clang-x86_64-zstd mingw-w64-clang-x86_64-zlib
```
`clang64`toolchain默认包含`clang`,其他环境使用`gcc`,所以这里需要在`mingw64`环境下装一个`clang`:
```sh
pacman -S mingw-w64-x86_64-clang
```
## pacboy:
首先安装 [pactoys](https://www.msys2.org/docs/package-naming/):
```sh
pacman -S pactoys
```
使用`:p`省略前缀:
`clang64`:
```sh
pacboy -S toolchain:p llvm:p ninja:p cmake:p zlib:p zstd:p
pacman -S mingw-w64-x86_64-lldb
```
`lldb`调试使用,`mingw64`的`lldb`好像支持中文,比较好用
接着进入[llvm_lang](./llvm_lang/)目录:
```sh
cmake -S. -B build -G Ninja
ninja -C build install
cd ..
```
注意在执行`dart run bin/run.dart `时,确保和上面是同一个环境
## 调试
参数添加`-g`开启调试;
如果不是`clang64`环境,`lldb`好像有些问题,可以使用`gdb`
## Mac
直接使用brew安装
```zsh
brew install llvm
```
之后使用 vscode 打开 `llvm_lang`项目运行`install`完成安装。
## dart 调试
windows msys2 需要添加环境变量
将`clang64`添加到环境`PATH`中
修改`.vscode\launch.json`:
下面`<msys2-path>`替换为真实路径
```json
"env":{
"PATH":"<msys2-path>\\clang64\\bin;${env:PATH}",
},
```
没有合适的资源?快使用搜索试试~ 我知道了~
使用 LLVM 作为后端,dart 为前端实现一个简易的编程语言 .zip
共114个文件
dart:59个
kc:42个
yaml:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 193 浏览量
2024-11-28
09:45:37
上传
评论
收藏 199KB ZIP 举报
温馨提示
使用 LLVM 作为后端,dart 为前端实现一个简易的编程语言。使用 LLVM 作为后端,dart 为前端实现一个简易的编程语言。通过 dart FFI 和 ffi_gen 调用 LLVM-C 接口 在dart端处理词法分析、构建模块并生成 .o 目标文件然后使用clang完成链接,生成一个可执行文件。llvm 版本>= 16.0.6在根文件夹下可以简单运行dart run bin/run.dart stack_comstack_com.kc 在 kc/bin 文件夹下测试 所有kc文件dart test test/test_all_test.dart 在运行之前要做一些准备视窗需要安装Visual Studio, Window SDK, msys2安装 msys2:scoop 安装 msys2 scoop官网下载 msys2msys2 三种环境: clang64(推荐) mingw64 ucrt64选择一个配置环境:打开cmd/pwsh吃豆人clang64pacman -S mingw-w64-clang-x86_6
资源推荐
资源详情
资源评论
收起资源包目录
使用 LLVM 作为后端,dart 为前端实现一个简易的编程语言 .zip (114个子文件)
arch.c 2KB
base.c 485B
llvm_core.dart 603KB
parser.dart 40KB
llvm_types.dart 30KB
ast.dart 16KB
build_methods.dart 13KB
expr_op.dart 13KB
stmt.dart 12KB
token_kind.dart 12KB
ast_fn.dart 12KB
llvm_context.dart 11KB
expr_flow.dart 11KB
expr_literal.dart 10KB
ast_new_inst_base.dart 10KB
tys.dart 10KB
flow_mixin.dart 10KB
expr_fn.dart 9KB
abi_x86_64.dart 8KB
analysis_context.dart 8KB
coms.dart 8KB
abi_arm64.dart 8KB
variables.dart 8KB
abi_win_x86_64.dart 8KB
expr.dart 7KB
abi_fn.dart 7KB
manager_base.dart 6KB
buildin.dart 6KB
fn_build_mixin.dart 6KB
match_builder.dart 6KB
identifier.dart 5KB
ast_base.dart 4KB
ast_path_ty.dart 3KB
intrinsics.dart 3KB
runner.dart 3KB
token_it.dart 3KB
fn_context_mixin.dart 3KB
if_builder.dart 3KB
run.dart 3KB
str.dart 2KB
ast_block.dart 2KB
ast_literal.dart 2KB
cursor_test.dart 2KB
build_context_mixin.dart 2KB
memory.dart 2KB
as_builder.dart 1KB
print_ast.dart 1KB
builders.dart 1KB
call_builder.dart 1KB
token_stream.dart 1KB
llvm_dart.dart 1KB
llvm_functions.dart 1KB
run.dart 971B
test_all_test.dart 918B
fs.dart 839B
build_run.dart 801B
free_mixin.dart 670B
find_all_symbols.dart 639B
manager.dart 588B
analyzer.dart 93B
context.dart 33B
.gitignore 143B
.gitmodules 84B
string.kc 2KB
to_string.kc 2KB
final.kc 2KB
arch_fn.kc 2KB
box.kc 2KB
stack_overflow.kc 2KB
main.kc 1KB
vec.kc 1KB
str.kc 1KB
stack_com.kc 1KB
closure.kc 1KB
vec.kc 1KB
c_fn.kc 1004B
stack.kc 938B
array_to_str.kc 846B
enum_gen.kc 837B
box.kc 836B
impl_fn.kc 829B
array.kc 807B
heap_pointer.d.kc 791B
d.kc 669B
c_array.kc 663B
slice.kc 559B
while.kc 527B
debug.kc 478B
delay.kc 464B
math.kc 439B
sret_fn.kc 405B
type_alias.kc 376B
ref.kc 357B
compile_run.kc 325B
fn.kc 317B
com_ty.kc 293B
allocator.kc 239B
swap.kc 180B
heap_pointer.kc 142B
hash_code.kc 102B
共 114 条
- 1
- 2
资源评论
徐浪老师
- 粉丝: 8218
- 资源: 9366
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 小程序配置指引、升级方案.zip
- androidmarket详解中文最新版本
- Android本地数据存储中文最新版本
- yolov9标记的睡岗检测数据集,识别率极高, 可识别在桌子上趴着睡,埋头睡觉,座椅上靠着睡,平躺着睡等多种睡姿的检测,6549张图片
- 信奥中的数学基础学习指南(2024.11.30)
- 小程序项目分层架构.zip
- yolov8标记的睡岗检测数据集,识别率极高, 可识别在桌子上趴着睡,埋头睡觉,座椅上靠着睡,平躺着睡等多种睡姿的检测,6549张图片
- 基于Nagel-Schreckenberg模型对比高速公路车道变换规则的有效性和安全性研究
- 基于多准则模糊综合评价法评估交通流中'靠右行驶让超车规则'
- Android的Tasker如何使用中文2MB最新版本
- 基于 C++实现的哈夫曼编码译码器课程设计
- android的VideoView的使用中文最新版本
- 基于灰关联分析法构建的大学教练绩效评价模型及其应用研究
- androidrtsp流媒体播放介绍中文最新版本
- 基于Django+sqlite 实现的服装仓库管理系统课程设计
- 工程师书架小程序.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功