# Vix-Lang **Repository Path**: Mulang_zty/Vix-lang ## Basic Information - **Project Name**: Vix-Lang - **Description**: 一门轻量级编译型语言,使用c语言编写,语法简单易上手,速度堪比cpp,支持多个后端(gcc,qbe) - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 0 - **Created**: 2025-08-30 - **Last Updated**: 2026-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: program-lang, Compiler ## README # Vix 编程语言详细介绍 Vix(也称为 Velox)是一种轻量级的编译型脚本语言,旨在提供接近原生 C++ 的执行速度,同时保持脚本语言的简洁性和易用性。 ## 语言特性 ### 核心特点 - **轻量级设计**:语言本身精简,易于学习和使用 - **高性能**:编译为原生机器码,提供接近 C++ 的执行速度 - **类型推导**:自动推断变量和表达式的类型,无需显式声明 - **字节码中间表示**:使用字节码作为中间表示形式,简化代码生成过程 - **多后端支持**:支持编译为原生可执行文件或 C++ 代码 也可以使用QBE后端编译为.s(GAS)文件 ### 数据类型 Vix 支持三种基本数据类型: 1. **整数(Integer)**:如 `42`, `-7`, `0` 2. **浮点数(Float)**:如 `3.14`, `-2.5`, `0.0` 3. **字符串(String)**:如 `"Hello"`, `"World"` ### 运算符 Vix 支持丰富的运算符集合: | 运算符 | 描述 | 示例 | | ------ | --------------- | ---------------------------- | | `+` | 加法/字符串连接 | `5 + 3`, `"Hello" + "World"` | | `-` | 减法/负号 | `10 - 4`, `-5` | | `*` | 乘法/字符串重复 | `6 * 7`, `"Ha" * 3` | | `/` | 除法 | `15 / 3` | | `%` | 取模 | `17 % 5` | | `**` | 幂运算 | `2 ** 8` | ## 语法概览 ### 变量声明和赋值 在 Vix 中,变量在首次赋值时自动声明: ```vix a = 10 // 整数变量 b = 3.14 // 浮点数变量 c = "Hello, Vix!" // 字符串变量 ``` ### 输出语句 使用 `print` 函数向控制台输出内容: ```vix print("Hello, World!") print("Value of a:", a) ``` ### 控制结构 Vix 支持常见的控制结构: #### 条件语句 ```vix if (a > 5) { print("a is greater than 5") } elif (a == 5) { print("a is equal to 5") } else { print("a is less than 5") } ``` #### 循环语句 ```vix // While 循环 i = 0 while (i < 3) { print("While loop iteration:", i) i = i + 1 } // For 循环 for (j ; 1 .. 3) { print("For loop iteration:", j) } ``` ### 函数 Vix 内置了一些实用函数: | 函数 | 描述 | 示例 | | -------------- | -------------------- | -------------------- | | `print(...)` | 打印值到控制台 | `print("Hello", 42)` | | `toint(str)` | 将字符串转换为整数 | `toint("123")` | | `tofloat(str)` | 将字符串转换为浮点数 | `tofloat("3.14")` | 使用示例: ```vix str_num = "123" int_num = toint(str_num) float_num = tofloat(str_num) print("String:", str_num) print("Integer:", int_num) print("Float:", float_num) ``` ## 编译和运行 ### 构建编译器 确保系统已安装 GCC、Flex、Bison 和 Make 工具,然后运行: ```bash make # Linux/macOS mingw32-make # Windows ``` ### 使用方式 1. **解析并显示 AST 和字节码**: ```bash ./vixc program.vix ``` 2. **编译为可执行文件**: ```bash ./vixc program.vix -o executable_name ``` 3. **初始化项目(创建运行时库)**: ```bash ./vixc init ``` 4. **编译为qbe ir**: ```bash ./vixc program.vix -q qbe-ir ``` ## 高级特性 ### 类型推导系统 Vix 自动推导变量和表达式的类型,无需显式声明: ```vix x = 10 // 推导为整数类型 y = 3.14 // 推导为浮点数类型 z = x + y // 推导为浮点数类型(整数 + 浮点数 = 浮点数) ``` ### 字节码中间表示 Vix 使用VIC IR作为中间表示形式,这使得: - 代码生成更加简单 - 便于优化和跨平台移植 - 可以轻松地添加新的后端支持 ### 多后端支持 Vix 支持多种编译后端: 1. **原生可执行文件**:通过 QBE 后端编译为机器码 2. **C++ 代码**:将 Vix 代码转换为等效的 C++ 代码 3. **VIC IR文件**:保存中间表示形式供后续处理 ## 扩展建议 如果想要扩展 Vix 语言的功能,可以考虑以下几个方向: 1. **添加新数据类型**: - 在类型系统中添加新的类型枚举值 - 更新类型推导逻辑 - 添加到 C++ 类型的映射 2. **添加新操作符**: - 添加语法分析规则 - 实现代码生成逻辑 3. **添加新语句类型**: - 添加 AST 节点类型 - 添加语法分析规则