语法参考
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;
变量名支持中文字符,建议使用有意义的名称提高代码可读性。变量名不能以数字开头,不能包含特殊符号。
运算符
支持算术、比较、逻辑等多种运算符
算术运算符
比较运算符
逻辑运算符
逻辑运算符可以使用中文关键字替代:与/并且(&&)、或/或者(||)、非/不(!),让代码更加易读。
条件判断
使用如果、否则、否则如果进行条件分支
如果语句
根据条件执行不同的代码块。
// 单条件判断 定义(整型) 分数 = 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系统"); } 否则 { 控制台输出("未知平台"); }