语法参考

CH+编程语言的完整语法文档,包含所有关键字、运算符、数据类型和控制流程的详细说明。

基础语法

关键字列表

CH+使用直观的中文关键字,降低学习门槛

🔀

控制流关键字

用于控制程序的执行流程,实现条件判断和循环操作。

关键字 说明 示例
如果 条件判断语句 如果 (条件) { ... }
否则 否则分支 否则 { ... }
否则如果 多条件判断 否则如果 (条件) { ... }
对于 计数循环 对于 (定义 i = 0; i < 10; i++) { ... }
条件循环 当 (条件) { ... }
退出循环 跳出循环 退出循环;
下一层循环 继续下一次循环 下一层循环;
📦

定义与声明关键字

用于定义变量、常量、函数和结构体。

关键字 说明 示例
定义 定义变量或常量 定义(整型) 数值 = 10;
函数 定义函数 函数 函数名(参数) { ... }
返回 返回值 返回 值;
结构体 定义结构体 结构体 名称 { ... }
导入 导入模块 导入("模块名");

逻辑运算关键字

用于逻辑运算和条件组合。

关键字 说明 等价符号
/ 或者 逻辑或运算 ||
/ 并且 逻辑与运算 &&
/ 逻辑非运算 !
布尔真值 true
布尔假值 false
空值 null
基础语法

数据类型

CH+支持多种数据类型,满足不同场景需求

🔢

整型

用于存储整数,支持正负数。范围:-2147483648 到 2147483647。

定义(整型) 年龄 = 25;
📊

小数

用于存储浮点数,支持小数点运算。精度约15-17位有效数字。

定义(小数) 价格 = 99.99;
📝

字符串

用于存储文本数据,支持UTF-8编码,可包含中文字符。

定义(字符串) 名字 = "张三";

布尔型

用于存储逻辑值,只有真和假两个值。

定义(布尔型) 是否通过 = 真;
🔤

字符型

用于存储单个字符,支持ASCII和UTF-8字符。

定义(字符型) 等级 = 'A';

空类型

用于表示函数无返回值,或指针指向未知类型。

定义(空类型) 打印信息() { ... }
基础语法

变量定义

使用定义关键字声明变量

📌

变量定义语法

CH+使用定义关键字来声明变量,支持类型推断和显式类型声明。

变量定义示例
// 显式类型定义
定义(整型) 数量 = 100;
定义(字符串) 消息 = "你好,世界!";
定义(小数) 温度 = 36.5;
定义(布尔型) 已完成 = ;

// 先声明后赋值
定义(整型) 计数;
计数 = 0;

// 多变量定义
定义(整型) 宽度 = 800, 高度 = 600;
💡 提示

变量名支持中文字符,建议使用有意义的名称提高代码可读性。变量名不能以数字开头,不能包含特殊符号。

基础语法

运算符

支持算术、比较、逻辑等多种运算符

算术运算符

+
加法
数值相加或字符串拼接
-
减法
数值相减
*
乘法
数值相乘
/
除法
数值相除
%
取模
取余数
++
自增
变量值加1
--
自减
变量值减1
⚖️

比较运算符

==
等于
判断两值是否相等
!=
不等于
判断两值是否不等
>
大于
判断左边是否大于右边
<
小于
判断左边是否小于右边
>=
大于等于
判断左边是否大于等于右边
<=
小于等于
判断左边是否小于等于右边
🔗

逻辑运算符

&&
两边都为真时结果为真
||
任一边为真时结果为真
!
取反,真变假,假变真
✨ 中文关键字支持

逻辑运算符可以使用中文关键字替代:与/并且(&&)、或/或者(||)、非/不(!),让代码更加易读。

控制流程

条件判断

使用如果、否则、否则如果进行条件分支

🔀

如果语句

根据条件执行不同的代码块。

条件判断示例
// 单条件判断
定义(整型) 分数 = 85;

如果 (分数 >= 90) {
    控制台输出("优秀");
} 否则如果 (分数 >= 80) {
    控制台输出("良好");
} 否则如果 (分数 >= 60) {
    控制台输出("及格");
} 否则 {
    控制台输出("不及格");
}

// 使用中文逻辑关键字
定义(整型) 年龄 = 25;
定义(布尔型) 有证件 = ;

如果 (年龄 >= 18 并且 有证件) {
    控制台输出("可以进入");
} 否则 {
    控制台输出("禁止进入");
}
控制流程

循环结构

使用对于和当关键字实现循环

🔄

对于循环

适用于已知循环次数的场景。

对于循环示例
// 基础计数循环
对于 (定义(整型) i = 0; i < 10; i++) {
    控制台输出("当前值: " + i);
}

// 计算阶乘
定义(整型) 结果 = 1;
对于 (定义(整型) i = 1; i <= 10; i++) {
    结果 = 结果 * i;
}
控制台输出("10的阶乘: " + 结果);

// 循环控制
对于 (定义(整型) i = 0; i < 100; i++) {
    如果 (i == 5) {
        退出循环;  // 跳出循环
    }
    如果 (i % 2 == 0) {
        下一层循环;  // 跳过偶数
    }
    控制台输出(i);
}
🔁

当循环

适用于条件控制的循环场景。

当循环示例
// 条件循环
定义(整型) 计数 = 0;
 (计数 < 5) {
    控制台输出("计数: " + 计数);
    计数++;
}

// 猜数字游戏
定义(整型) 目标 = 42;
定义(整型) 猜测 = 0;
 (猜测 != 目标) {
    控制台输出("请猜一个数字:");
    猜测 = 控制台输入();
    如果 (猜测 < 目标) {
        控制台输出("太小了");
    } 否则如果 (猜测 > 目标) {
        控制台输出("太大了");
    }
}
控制台输出("恭喜你猜对了!");
控制流程

函数定义

使用函数关键字定义可复用代码块

⚙️

函数语法

函数是组织代码的基本单元,支持参数传递和返回值。

函数定义示例
// 无参数无返回值函数
定义(空类型) 打招呼() {
    控制台输出("你好,世界!");
}

// 带参数函数
定义(空类型) 问候(字符串 名字) {
    控制台输出("你好," + 名字 + "!");
}

// 带返回值函数
定义(整型) 加法(整型 甲, 整型 乙) {
    返回 甲 + 乙;
}

// 递归函数
定义(整型) 阶乘(整型 数值) {
    如果 (数值 <= 1) {
        返回 1;
    }
    返回 数值 * 阶乘(数值 - 1);
}

// 主函数
定义(整型) 主函数() {
    打招呼();
    问候("张三");
    
    定义(整型) 结果 = 加法(10, 20);
    控制台输出("10 + 20 = " + 结果);
    
    控制台输出("5的阶乘 = " + 阶乘(5));
    
    返回 0;
}
💡 提示

主函数是程序的入口点,程序从这里开始执行。函数名支持中文字符,建议使用动词开头的名称表示功能。

高级特性

结构体

使用结构体组织复杂数据

🏗️

结构体定义

结构体用于组合多个不同类型的数据成员。

结构体示例
// 定义结构体
结构体 学生信息 {
    字符串 姓名;
    整型 年龄;
    小数 分数;
    布尔型 是否毕业;
};

// 使用结构体
定义(学生信息) 学生一;
学生一.姓名 = "张三";
学生一.年龄 = 20;
学生一.分数 = 85.5;
学生一.是否毕业 = ;

// 访问成员
控制台输出("姓名: " + 学生一.姓名);
控制台输出("年龄: " + 学生一.年龄);
控制台输出("分数: " + 学生一.分数);
高级特性

数组操作

支持一维和多维数组

📊

数组定义与访问

数组用于存储相同类型的多个元素,支持动态大小。

数组示例
// 一维数组
定义(整型) 数值列表[5];
数值列表[0] = 10;
数值列表[1] = 20;
数值列表[2] = 30;

// 遍历数组
对于 (定义(整型) i = 0; i < 5; i++) {
    控制台输出("数值列表[" + i + "] = " + 数值列表[i]);
}

// 二维数组
定义(整型) 矩阵[3][3];
对于 (定义(整型) i = 0; i < 3; i++) {
    对于 (定义(整型) j = 0; j < 3; j++) {
        矩阵[i][j] = i * 3 + j;
    }
}
高级特性

模块导入

使用导入关键字引入外部模块

📦

导入语法

使用导入关键字引入标准库或自定义模块。

模块导入示例
// 导入标准库
导入("数学库");
导入("字符串库");
导入("文件库");

// 使用导入的函数
定义(小数) 结果 = 平方根(16);  // 4.0
定义(小数) 正弦值 = 正弦(3.14159 / 2);  // 1.0

// 字符串操作
定义(字符串) 文本 = "你好,世界!";
定义(整型) 长度 = 字符串长度(文本);
📚 标准库模块

CH+提供丰富的标准库:数学库(数学函数)、字符串库(字符串操作)、文件库(文件读写)、系统库(系统调用)等。

系统功能

输入输出

控制台输入输出函数

💬

输入输出函数

CH+提供多种输入输出函数,支持控制台交互。

函数名 说明 示例
控制台输出 输出内容到控制台 控制台输出("你好");
控制台输入 从控制台读取输入 定义(字符串) 名字 = 控制台输入();
控制台换行 输出换行符 控制台换行();
输出 简化输出函数 输出("快捷输出");
输入 简化输入函数 输入(变量名);
系统功能

汇编执行

内嵌汇编代码执行

⚙️

汇编语句

CH+支持内嵌汇编代码,可以直接执行底层指令。支持两种语法形式。

汇编执行示例
// 内联汇编 - 单行形式
asm("mov eax, 1");
asm("add eax, 2");

// 汇编执行 - 代码块形式
汇编执行 {
    mov eax, 10
    mov ebx, 20
    add eax, ebx
    // 结果存储在eax中
}

// 带变量替换的汇编
定义(整型) 数值 = 100;
汇编执行 {
    mov eax, ${数值}
    add eax, 50
    // eax = 150
}

// 获取汇编返回值
定义(整型) 结果;
汇编执行 {
    mov eax, 42
} -> 结果;
控制台输出("结果: " + 结果);  // 输出: 42
⚠️ 注意

汇编代码执行依赖于平台,Windows使用MASM格式,Linux/macOS使用NASM格式。请确保汇编代码与目标平台兼容。

系统功能

系统调用

直接调用操作系统API

🖥️

系统调用语法

CH+支持直接调用系统API,实现底层系统功能访问。

系统调用示例
// 平台检测
控制台输出("当前平台: " + 平台);
控制台输出("操作系统: " + 操作系统);

// Windows API调用
如果 (平台 == "Windows") {
    定义(整型) 进程ID;
    WindowsAPI(24 进程ID);  // GetCurrentProcessId
    控制台输出("进程ID: " + 进程ID);
    
    定义(整型) 运行时间;
    WindowsAPI(0 运行时间);  // GetTickCount
    控制台输出("系统运行时间: " + 运行时间 + " 毫秒");
}

// Linux系统调用
如果 (平台 == "Linux") {
    定义(整型) 进程ID;
    系统调用(39 进程ID);  // getpid
    控制台输出("进程ID: " + 进程ID);
}

// 带参数的系统调用
定义(整型) 结果;
系统调用(调用号 结果 参数1 参数2 参数3);
系统功能

平台检测

自动检测运行平台

🔍

平台变量

CH+提供内置平台变量,自动检测当前运行环境。

变量名 说明 可能的值
平台 当前运行平台 Windows / Linux / macOS / Android / 未知
操作系统 当前操作系统 Windows / Linux / macOS / Android / 未知
平台检测示例
// 显示平台信息
控制台输出("当前平台: " + 平台);
控制台输出("操作系统: " + 操作系统);

// 根据平台执行不同代码
如果 (平台 == "Windows") {
    控制台输出("运行在Windows系统");
} 否则如果 (平台 == "Linux") {
    控制台输出("运行在Linux系统");
} 否则如果 (平台 == "macOS") {
    控制台输出("运行在macOS系统");
} 否则如果 (平台 == "Android") {
    控制台输出("运行在Android系统");
} 否则 {
    控制台输出("未知平台");
}