吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1277|回复: 15
上一主题 下一主题
收起左侧

[C&C++ 原创] 中文代码解释器(该发布为版本更新)

[复制链接]
跳转到指定楼层
楼主
abcdefgjh 发表于 2026-1-31 09:27 回帖奖励
本帖最后由 abcdefgjh 于 2026-1-31 14:29 编辑

# .ch 文件中文解释器 - 快速参考

## 项目概述

**chplus** - 使用 C++ 实现的 `.ch` 文件中文解释器,直接解析并执行中文语法代码。

## 快速开始

### 编译
```bash
# 使用 g++ 编译
g++ -std=c++17 -I include main.cpp src/executor/interpreter.cpp src/lexer/lexer.cpp src/parser/parser.cpp src/utils/CodeFormatter.cpp -o chplus.exe

# 使用 CMake
mkdir build && cd build
cmake .. && cmake --build .
```

### 运行示例
```bash
# 运行 Hello World
./chplus.exe examples/hello.ch

# 不格式化运行
./chplus.exe --no-format examples/hello.ch

# 查看帮助
./chplus.exe --help
```

## 核心语法

### 变量定义
```ch
定义(整型) a = 10;
定义(字符串) b = "测试内容";
定义(小数) pi = 3.14;
定义(布尔型) flag = 真;
定义(字符型) ch = 'A';
```

### 函数定义
```ch
定义(整型) 求和(定义(整型) x, 定义(整型) y) {
    返回 x + y;
}

定义(空类型) 主函数() {
    控制台输出("Hello World");
}
```

### 流程控制
```ch
如果 (条件) {
    // 条件为真
} 否则如果 (其他条件) {
    // 其他条件为真
} 否则 {
    // 所有条件为假
}

定义(整型) i = 0;
当 (i < 5) {
    控制台输出(i);
    i = i + 1;
}

对于 (定义(整型) j = 0; j < 3; j = j + 1) {
    控制台输出(j);
}
```

### 数组操作
```ch
定义(整型) arr[10];
arr[0] = 100;
控制台输出(arr[0]);

定义(整型) matrix[3][4];
matrix[1][2] = 42;
```

### 结构体
```ch
定义(结构体) Point {
    整型 x;
    整型 y;
};

定义(空类型) 主函数() {
    定义(Point) p1;
    p1.x = 100;
    p1.y = 200;
    控制台输出("x=" + p1.x + ", y=" + p1.y);
}
```

## 标准库使用

### 导入库文件
```ch
导入("ch_Lib/math.ch");
导入("ch_Lib/string.ch");
导入("ch_Lib/file.ch");
```

### 数学库示例
```ch
导入("ch_Lib/math.ch");
定义(空类型) 主函数() {
    定义(小数) angle = 45.0;
    定义(小数) sin_val = sin(angle);
    定义(小数) cos_val = cos(angle);
    控制台输出("sin(45°) = " + sin_val);
    控制台输出("cos(45°) = " + cos_val);
}
```

### 字符串库示例
```ch
导入("ch_Lib/string.ch");
定义(空类型) 主函数() {
    定义(字符串) text = "Hello World";
    控制台输出(长度(text));           // 输出: 11
    控制台输出(子串(text, 0, 5));    // 输出: Hello
    控制台输出(转大写(text));         // 输出: HELLO WORLD
}
```

### 文件库示例
```ch
导入("ch_Lib/file.ch");
定义(空类型) 主函数() {
    // 写入文件
    写入文件("test.txt", "Hello, File!");
   
    // 读取文件
    定义(字符串) content = 读取文件("test.txt");
    控制台输出("文件内容: " + content);
   
    // 文件重定向
    重定向标准输出("log.txt");
    控制台输出("这条信息写入文件");
    恢复标准输出();
}
```

## 系统命令行

```ch
定义(空类型) 主函数() {
    // 执行系统命令
    系统命令行("echo Hello World");
    系统命令行("dir");
   
    // 获取命令执行结果
    定义(字符串) result = 系统命令行("echo 测试");
    控制台输出("命令结果: " + result);
}
```

## 数据类型对照表

| 中文类型 | C++ 类型 | 说明 |
|---------|---------|------|
| 整型 | int | 整数类型 |
| 字符串 | string | 字符串类型 |
| 小数 | double | 小数类型 |
| 布尔型 | bool | 布尔类型 |
| 字符型 | char | 字符类型 |
| 空类型 | void | 无返回值类型 |

## 运算符对照表

| 运算符 | 功能 | 示例 |
|--------|------|------|
| +, -, *, / | 算术运算 | a + b, a * b |
| % | 取模 | a % b |
| ^ | 乘方 | a ^ b |
| &&, \|\| | 逻辑运算 | a && b, a \|\| b |
| ! | 逻辑非 | !a |
| ==, != | 相等比较 | a == b, a != b |
| <, >, <=, >= | 大小比较 | a < b, a >= b |

## 目录结构

```
chplus/
├── main.cpp              # 主程序入口
├── include/              # 头文件目录
│   ├── lexer.h           # 词法分析器
│   ├── parser.h          # 语法分析器
│   └── interpreter.h     # 解释器
├── src/                  # 源代码目录
│   ├── lexer/            # 词法分析实现
│   ├── parser/           # 语法分析实现
│   ├── executor/         # 解释器实现
│   └── utils/            # 工具函数
├── examples/             # 示例文件目录
├── ch_Lib/              # 标准库目录
│   ├── math.ch          # 数学函数库
│   ├── string.ch        # 字符串操作库
│   └── file.ch          # 文件操作库
└── tests/               # 测试文件目录
```

## 常用示例文件

- `examples/hello.ch` - Hello World 示例
- `examples/calculator.ch` - 基本运算示例
- `examples/conditions.ch` - 条件判断示例
- `examples/array_demo.ch` - 数组操作示例
- `examples/struct_demo.ch` - 结构体示例
- `examples/file_demo.ch` - 文件操作示例

## 错误处理

所有错误信息都包含精确的行号定位:

```
错误: 变量未定义: x 在第 5 行
错误: 函数未定义: sin(小数) 在第 10 行
错误: 除零错误 在第 15 行
```

## 格式化选项

```bash
# 自动格式化(默认)
./chplus.exe file.ch

# 不自动格式化
./chplus.exe --no-format file.ch

# 格式化并覆盖原文件
./chplus.exe -a file.ch

# 调试模式
./chplus.exe -d file.ch
```

## 版本信息

### v1.4.0(最新)
- 修复函数调用参数类型推断问题
- 修复文件库函数重复定义
- 增强跨平台兼容性

### v1.3.0
- 修复结构体数组语法
- 支持中文标点符号

## 注意事项

1. 使用 UTF-8 编码保存 `.ch` 文件
2. 结构体定义必须在主函数外部
3. 全局作用域只能定义变量和结构体
4. 函数重载支持同名函数不同参数类型

## 快速测试

```bash
# 测试所有示例文件
for file in examples/*.ch; do
    echo "测试: $file"
    ./chplus.exe "$file"
done
```

.ch 文件中文解释器 - 快速参考

项目概述

chplus - 使用 C++ 实现的 .ch 文件中文解释器,直接解析并执行中文语法代码。

快速开始

编译

# 使用 g++ 编译
g++ -std=c++17 -I include main.cpp src/executor/interpreter.cpp src/lexer/lexer.cpp src/parser/parser.cpp src/utils/CodeFormatter.cpp -o chplus.exe

# 使用 CMake
mkdir build && cd build
cmake .. && cmake --build .

运行示例

# 运行 Hello World
./chplus.exe examples/hello.ch

# 不格式化运行
./chplus.exe --no-format examples/hello.ch

# 查看帮助
./chplus.exe --help

核心语法

变量定义

定义(整型) a = 10;
定义(字符串) b = "测试内容";
定义(小数) pi = 3.14;
定义(布尔型) flag = 真;
定义(字符型) ch = 'A';

函数定义

定义(整型) 求和(定义(整型) x, 定义(整型) y) {
    返回 x + y;
}

定义(空类型) 主函数() {
    控制台输出("Hello World");
}

流程控制

如果 (条件) {
    // 条件为真
} 否则如果 (其他条件) {
    // 其他条件为真
} 否则 {
    // 所有条件为假
}

定义(整型) i = 0;
当 (i < 5) {
    控制台输出(i);
    i = i + 1;
}

对于 (定义(整型) j = 0; j < 3; j = j + 1) {
    控制台输出(j);
}

数组操作

定义(整型) arr[10];
arr[0] = 100;
控制台输出(arr[0]);

定义(整型) matrix[3][4];
matrix[1][2] = 42;

结构体

定义(结构体) Point {
    整型 x;
    整型 y;
};

定义(空类型) 主函数() {
    定义(Point) p1;
    p1.x = 100;
    p1.y = 200;
    控制台输出("x=" + p1.x + ", y=" + p1.y);
}

标准库使用

导入库文件

导入("ch_Lib/math.ch");
导入("ch_Lib/string.ch");
导入("ch_Lib/file.ch");

数学库示例

导入("ch_Lib/math.ch");
定义(空类型) 主函数() {
    定义(小数) angle = 45.0;
    定义(小数) sin_val = sin(angle);
    定义(小数) cos_val = cos(angle);
    控制台输出("sin(45°) = " + sin_val);
    控制台输出("cos(45°) = " + cos_val);
}

字符串库示例

导入("ch_Lib/string.ch");
定义(空类型) 主函数() {
    定义(字符串) text = "Hello World";
    控制台输出(长度(text));           // 输出: 11
    控制台输出(子串(text, 0, 5));    // 输出: Hello
    控制台输出(转大写(text));         // 输出: HELLO WORLD
}

文件库示例

导入("ch_Lib/file.ch");
定义(空类型) 主函数() {
    // 写入文件
    写入文件("test.txt", "Hello, File!");

    // 读取文件
    定义(字符串) content = 读取文件("test.txt");
    控制台输出("文件内容: " + content);

    // 文件重定向
    重定向标准输出("log.txt");
    控制台输出("这条信息写入文件");
    恢复标准输出();
}

系统命令行

定义(空类型) 主函数() {
    // 执行系统命令
    系统命令行("echo Hello World");
    系统命令行("dir");

    // 获取命令执行结果
    定义(字符串) result = 系统命令行("echo 测试");
    控制台输出("命令结果: " + result);
}

数据类型对照表

中文类型 C++ 类型 说明
整型 int 整数类型
字符串 string 字符串类型
小数 double 小数类型
布尔型 bool 布尔类型
字符型 char 字符类型
空类型 void 无返回值类型

运算符对照表

运算符 功能 示例
+, -, *, / 算术运算 a + b, a * b
% 取模 a % b
^ 乘方 a ^ b
&&, || 逻辑运算 a && b, a || b
! 逻辑非 !a
==, != 相等比较 a == b, a != b
<, >, <=, >= 大小比较 a < b, a >= b

目录结构

chplus/
├── main.cpp              # 主程序入口
├── include/              # 头文件目录
│   ├── lexer.h           # 词法分析器
│   ├── parser.h          # 语法分析器
│   └── interpreter.h     # 解释器
├── src/                  # 源代码目录
│   ├── lexer/            # 词法分析实现
│   ├── parser/           # 语法分析实现
│   ├── executor/         # 解释器实现
│   └── utils/            # 工具函数
├── examples/             # 示例文件目录
├── ch_Lib/              # 标准库目录
│   ├── math.ch          # 数学函数库
│   ├── string.ch        # 字符串操作库
│   └── file.ch          # 文件操作库
└── tests/               # 测试文件目录

常用示例文件

  • examples/hello.ch - Hello World 示例
  • examples/calculator.ch - 基本运算示例
  • examples/conditions.ch - 条件判断示例
  • examples/array_demo.ch - 数组操作示例
  • examples/struct_demo.ch - 结构体示例
  • examples/file_demo.ch - 文件操作示例

错误处理

所有错误信息都包含精确的行号定位:

错误: 变量未定义: x 在第 5 行
错误: 函数未定义: sin(小数) 在第 10 行
错误: 除零错误 在第 15 行

格式化选项

# 自动格式化(默认)
./chplus.exe file.ch

# 不自动格式化
./chplus.exe --no-format file.ch

# 格式化并覆盖原文件
./chplus.exe -a file.ch

# 调试模式
./chplus.exe -d file.ch

版本信息

v1.4.0(最新)

  • 修复函数调用参数类型推断问题
  • 修复文件库函数重复定义
  • 增强跨平台兼容性

v1.3.0

  • 修复结构体数组语法
  • 支持中文标点符号

注意事项

  1. 使用 UTF-8 编码保存 .ch 文件
  2. 结构体定义必须在主函数外部
  3. 全局作用域只能定义变量和结构体
  4. 函数重载支持同名函数不同参数类型

快速测试

# 测试所有示例文件
for file in examples/*.ch; do
    echo "测试: $file"
    ./chplus.exe "$file"
done

项目维护: @abcdefgjha
Bug反馈: 有bug请tg @abcdefgjha反馈


---

**项目维护**: @abcdefgjha  
**Bug反馈**: 有bug请tg @abcdefgjha反馈

.ch 文件中文解释器 - 快速参考

项目概述

chplus - 使用 C++ 实现的 .ch 文件中文解释器,直接解析并执行中文语法代码。

快速开始

编译

# 使用 g++ 编译
g++ -std=c++17 -I include main.cpp src/executor/interpreter.cpp src/lexer/lexer.cpp src/parser/parser.cpp src/utils/CodeFormatter.cpp -o chplus.exe

# 使用 CMake
mkdir build && cd build
cmake .. && cmake --build .

运行示例

# 运行 Hello World
./chplus.exe examples/hello.ch

# 不格式化运行
./chplus.exe --no-format examples/hello.ch

# 查看帮助
./chplus.exe --help

核心语法

变量定义

定义(整型) a = 10;
定义(字符串) b = "测试内容";
定义(小数) pi = 3.14;
定义(布尔型) flag = 真;
定义(字符型) ch = 'A';

函数定义

定义(整型) 求和(定义(整型) x, 定义(整型) y) {
    返回 x + y;
}

定义(空类型) 主函数() {
    控制台输出("Hello World");
}

流程控制

如果 (条件) {
    // 条件为真
} 否则如果 (其他条件) {
    // 其他条件为真
} 否则 {
    // 所有条件为假
}

定义(整型) i = 0;
当 (i < 5) {
    控制台输出(i);
    i = i + 1;
}

对于 (定义(整型) j = 0; j < 3; j = j + 1) {
    控制台输出(j);
}

数组操作

定义(整型) arr[10];
arr[0] = 100;
控制台输出(arr[0]);

定义(整型) matrix[3][4];
matrix[1][2] = 42;

结构体

定义(结构体) Point {
    整型 x;
    整型 y;
};

定义(空类型) 主函数() {
    定义(Point) p1;
    p1.x = 100;
    p1.y = 200;
    控制台输出("x=" + p1.x + ", y=" + p1.y);
}

标准库使用

导入库文件

导入("ch_Lib/math.ch");
导入("ch_Lib/string.ch");
导入("ch_Lib/file.ch");

数学库示例

导入("ch_Lib/math.ch");
定义(空类型) 主函数() {
    定义(小数) angle = 45.0;
    定义(小数) sin_val = sin(angle);
    定义(小数) cos_val = cos(angle);
    控制台输出("sin(45°) = " + sin_val);
    控制台输出("cos(45°) = " + cos_val);
}

字符串库示例

导入("ch_Lib/string.ch");
定义(空类型) 主函数() {
    定义(字符串) text = "Hello World";
    控制台输出(长度(text));           // 输出: 11
    控制台输出(子串(text, 0, 5));    // 输出: Hello
    控制台输出(转大写(text));         // 输出: HELLO WORLD
}

文件库示例

导入("ch_Lib/file.ch");
定义(空类型) 主函数() {
    // 写入文件
    写入文件("test.txt", "Hello, File!");

    // 读取文件
    定义(字符串) content = 读取文件("test.txt");
    控制台输出("文件内容: " + content);

    // 文件重定向
    重定向标准输出("log.txt");
    控制台输出("这条信息写入文件");
    恢复标准输出();
}

系统命令行

定义(空类型) 主函数() {
    // 执行系统命令
    系统命令行("echo Hello World");
    系统命令行("dir");

    // 获取命令执行结果
    定义(字符串) result = 系统命令行("echo 测试");
    控制台输出("命令结果: " + result);
}

数据类型对照表

中文类型 C++ 类型 说明
整型 int 整数类型
字符串 string 字符串类型
小数 double 小数类型
布尔型 bool 布尔类型
字符型 char 字符类型
空类型 void 无返回值类型

运算符对照表

运算符 功能 示例
+, -, *, / 算术运算 a + b, a * b
% 取模 a % b
^ 乘方 a ^ b
&&, || 逻辑运算 a && b, a || b
! 逻辑非 !a
==, != 相等比较 a == b, a != b
<, >, <=, >= 大小比较 a < b, a >= b

目录结构

chplus/
├── main.cpp              # 主程序入口
├── include/              # 头文件目录
│   ├── lexer.h           # 词法分析器
│   ├── parser.h          # 语法分析器
│   └── interpreter.h     # 解释器
├── src/                  # 源代码目录
│   ├── lexer/            # 词法分析实现
│   ├── parser/           # 语法分析实现
│   ├── executor/         # 解释器实现
│   └── utils/            # 工具函数
├── examples/             # 示例文件目录
├── ch_Lib/              # 标准库目录
│   ├── math.ch          # 数学函数库
│   ├── string.ch        # 字符串操作库
│   └── file.ch          # 文件操作库
└── tests/               # 测试文件目录

常用示例文件

  • examples/hello.ch - Hello World 示例
  • examples/calculator.ch - 基本运算示例
  • examples/conditions.ch - 条件判断示例
  • examples/array_demo.ch - 数组操作示例
  • examples/struct_demo.ch - 结构体示例
  • examples/file_demo.ch - 文件操作示例

错误处理

所有错误信息都包含精确的行号定位:

错误: 变量未定义: x 在第 5 行
错误: 函数未定义: sin(小数) 在第 10 行
错误: 除零错误 在第 15 行

格式化选项

# 自动格式化(默认)
./chplus.exe file.ch

# 不自动格式化
./chplus.exe --no-format file.ch

# 格式化并覆盖原文件
./chplus.exe -a file.ch

# 调试模式
./chplus.exe -d file.ch

版本信息

v1.4.0(最新)

  • 修复函数调用参数类型推断问题
  • 修复文件库函数重复定义
  • 增强跨平台兼容性

v1.3.0

  • 修复结构体数组语法
  • 支持中文标点符号

注意事项

  1. 使用 UTF-8 编码保存 .ch 文件
  2. 结构体定义必须在主函数外部
  3. 全局作用域只能定义变量和结构体
  4. 函数重载支持同名函数不同参数类型

快速测试

# 测试所有示例文件
for file in examples/*.ch; do
    echo "测试: $file"
    ./chplus.exe "$file"
done

项目维护: @abcdefgjha
Bug反馈: 有bug请tg @abcdefgjha反馈

1.4.0.zip

350.27 KB, 下载次数: 32, 下载积分: 吾爱币 -1 CB

版本迭代

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
苏紫方璇 发表于 2026-1-31 13:20
对于经常更新的代码,请在原帖进行,不要频繁多次发帖
论坛有markdown编辑器,详情见置顶帖
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
推荐
yuanzhoulv123 发表于 2026-3-16 06:59
命令解析器适用场景更偏向于没有操作系统的场景,比如裸机。那么侧重点应该是在于可移植性,首要的就是要考虑没有没有文件系统和posix标准的符合性
3#
饮食协会 发表于 2026-1-31 21:33
4#
Leon19960120 发表于 2026-1-31 23:26
有无gui界面
5#
lduml 发表于 2026-1-31 23:56
感谢分享 收藏
6#
 楼主| abcdefgjh 发表于 2026-2-1 08:44 |楼主

以后可能会写类似于python那样的
7#
mytomsummer 发表于 2026-2-4 15:59
可以越来越强大
8#
 楼主| abcdefgjh 发表于 2026-2-4 17:44 |楼主

这个版本太老了我删了一堆全部重构了原来的太杂了
9#
 楼主| abcdefgjh 发表于 2026-2-5 20:19 |楼主

写了个测试版的gui你要不要要的话我私信发
10#
Leon19960120 发表于 2026-2-6 08:50
abcdefgjh 发表于 2026-2-5 20:19
写了个测试版的gui你要不要要的话我私信发

可以 你发我吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-3-17 23:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表