i3abghany/kyoto
GitHub: i3abghany/kyoto
Kyoto 是一个基于 LLVM 的静态类型编译型编程语言项目,包含编译器和模糊测试器,旨在探索语言设计与编译器实现。
Stars: 2 | Forks: 0
Kyoto
这是 Kyoto 编程语言及其编译器 Cyoto 的代码库。Kyoto 是一种静态类型的编译型语言,目前仍处于早期设计阶段。该编译器使用 C++ 编写,并利用 LLVM 进行分析和代码生成。
## 构建
Cyoto 需要以下依赖项:
- LLVM >= 20
- CMake >= 3.20
- Java >= 8
- antlr == 4.13.2
- Boost >= 1.74.0
- GCC >= 13(用于支持 C++23 和 std::fmt)
要在 Ubuntu 上安装依赖项,请运行以下命令:
```
$ sudo apt-get install llvm-20-dev cmake default-jre libboost-all-dev gcc-13 g++-13 libfmt-dev libzstd-dev
```
可以按照以下步骤从官方网站的镜像安装 Antlr 4.13.2:
```
$ export REPO_TOP_LEVEL=`git rev-parse --show-toplevel`
$ mkdir -p $REPO_TOP_LEVEL/thirdparty
$ wget https://www.antlr.org/download/antlr-4.13.2-complete.jar -O $REPO_TOP_LEVEL/thirdparty/antlr-4.13.2-complete.jar
$ chmod +x $REPO_TOP_LEVEL/thirdparty/antlr-4.13.2-complete.jar
$ export PATH="$REPO_TOP_LEVEL/thirdparty:$PATH"
```
如果包管理器中没有 llvm-20,可以使用官方网站提供的脚本按以下步骤进行安装:
```
$ wget https://apt.llvm.org/llvm.sh
$ chmod +x llvm.sh
$ sudo ./llvm.sh 20 all
```
要构建编译器,请运行以下命令:
```
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_CXX_COMPILER=g++-13 -DCMAKE_C_COMPILER=gcc-13
$ make cyoto -j$(nproc)
```
### 运行测试
要运行测试,你可以使用以下命令:
```
$ make ktest -j$(nproc) && ./ktest
```
## 用法
要编译 Kyoto 源文件,请运行以下命令:
```
$ ./cyoto --help
Usage: ./cyoto [OPTIONS] INPUT_FILE
The Kyoto Programming Language Compiler:
-h [ --help ] Print this help message
-r [ --run ] Run the program in `lli` after compilation
-o [ --output ] arg (=a.out) Output file for the executable binary
```
## 对编译器进行模糊测试
本代码库包含一个针对 Cyoto 编译器的基于语法的模糊测试器,它基于定义在 `kyoto/grammar/` 中的 Kyoto ANTLR4 语法。
该模糊测试器使用 Rust 编写。有关如何使用它的更多信息,请参阅 `fuzzer` 目录中的 [README](fuzzer/README.md)。
# 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:ANTLR, Bash脚本, Boost, C++, C++23, CMake, Cyoto编译器, Fuzzer, JS文件枚举, Kyoto语言, LLVM, SOC Prime, 代码生成, 可视化界面, 开发工具, 数据擦除, 渗透测试工具, 系统编程, 编程语言, 编译器, 词法分析, 语法分析, 软件开发, 静态类型语言