基于llvm的RUST语言简易编译器
本项目依赖于llvm项目,若是采用手动编译llvm项目,请在系统中添加相关环境变量:
-
Linux:
export LLVM_HOME=/path/to/your/llvm/installation -
windows:
- 高级系统设置->环境变量->系统环境变量。
- 新建
变量名 变量值 LLVM_HOMEC:\path\to\your\llvm\installation
在本项目中主要依赖LLVM以下包,请运行前确认已经对这些进行了编译生成。
Support,Core,MC,OrcJIT,X86Disassembler,X86AsmParser,X86CodeGen,X86Info
测试用例文件:test.rs
本项目采用指令进行运行,主要模板:{lexer|parser|generator|run} <your rust file path>
<your rust file path>: test.rs的索引路径lexer rust_file_path: 指定运行词法分析器parser rust_file_path: 指定运行语法分析器generator rust_file_path: 指定运行代码生成器run rust_file_path: 指定运行解释器
let mut x:f32 =8; x=x+1;(3+4)*y;
- 允许多条表达式,但必须有分号
fn main(x:i32,y:f32) -> f32 {let mut x = 3;y=5;}
- 必须有大括号,不能声明无函数体函数
- 函数体内每条语句必须打分号
if x>4 { x =0;x=x+1;} else {x=1;x=x*78;}
- 条件 x>4 不能打括号
- 必须完整包含有 if的双大括号{}, else的双大括号{}
- 大括号内语句必须分号
for X < 0 {x=x+1;}