本文是 Y++ 语言的规范速览,供人类开发者与 生成/修改代码时对照。
- 产品品牌:Y++ / y++
- IDE 名称:YStudio
- 示例命名前缀:
Ypp…(如管道名YppDesk) - 不要使用第三方旧产品名或仓库目录名当作品牌
更细主题见文末链接;官网速览页:https://www.yddphp.cn/lang.html
1. 源文件与工程
| 扩展名 | 用途 |
|---|---|
.yc |
窗体/主逻辑(中文源) |
.yt |
自定义类型(结构体式) |
.ypp |
自定义类 |
.yp |
DLL / 系统 API 声明 |
.yss |
样式表(类似 CSS) |
.xml |
窗口与控件布局(设计器生成) |
工程根目录有 .ysproj。窗口默认路径:窗口/主窗口/主窗口.xml。控件用 XML 里的 名称 在代码中写属性,例如 按钮1.标题 = "确定"。
一个典型窗口程序至少包含:
窗口/主窗口/主窗口.xml(界面)源代码/main.yc(逻辑与事件)- 工程文件
*.ysproj
2. 注释
// 行注释(推荐)
' 也可用单引号行注释(兼容)
没有块注释 /* */。
3. 类型一览
3.1 基本类型
| 类型关键字 | 含义 | 示例 |
|---|---|---|
整数 |
32 位有符号整数 | 整数 n = 0 |
长整数 |
64 位整数 | 长整数 x = 0 |
短整数 |
16 位整数 | 短整数 s = 0 |
字节 |
0~255 | 字节 b = 0 |
小数 / 单浮点 |
单精度浮点 | 小数 r = 1.5 |
双浮点 |
双精度浮点 | 双浮点 d = 1.0 |
文本 |
字符串(源里写 UTF-8/中文即可) | 文本 s = "Y++" |
逻辑 |
布尔 | 逻辑 ok = 真 |
字节集 |
二进制缓冲 | 字节集 buf |
通用 |
可装多种值的装箱类型 | 通用 v |
逻辑常量:真 / 假(不要写 true / false)。
3.2 支持库对象类型
声明即构造(值类型),常见如:HTTP类、JSON类、管道类、定时器类、进程类、TCP类、UDP类、SQLite类 等。
管道类 p
HTTP类 http
3.3 自定义类型 / 类
4. 变量定义
格式: 类型 名字 [= 初值]
- 变量名可用中文或英文。
- 局部变量写在函数体内;需要跨函数时用模块级变量(写在函数外)。
- 赋值用
=;比较用==/!=。
整数 数量 = 0
文本 名字 = "值班台"
逻辑 已连接 = 假
数量 = 数量 + 1
名字 = 名字 + "-客户端"
已连接 = 真
4.1 数组
整数 a[] // 动态数组
整数 b[10] // 定长(视实现)
文本 names[] = 枚举管道()
- 下标从 0 开始。
- 取长度用对应命令(如
取数组成员数,以检查器/文档为准)。
4.2 文本字面量
- 双引号:
"hello"、"你好" - 拼接:
"a" + "b",或数字先到文本(n)再拼 - 路径里的反斜杠在字符串中写
\\,例如"C:\\temp\\a.bin"
5. 程序结构与函数
5.1 函数
函数 名字 (类型 参数1, 类型 参数2) {
返回 (表达式) // 有返回值时
}
// 无参 / 无返回
函数 初始化 () {
输出("ok")
}
返回 ():无值返回(结束函数)返回 (x):返回表达式- 空参数列表也要写括号:
函数 初始化 () { ... }
5.2 窗体 / 控件事件
约定:窗体名.事件() / 控件名.事件()。函数名必须与设计器生成的事件名一致。
函数 主窗口.创建完毕 () {
标签1.标题 = "就绪"
}
函数 按钮1.被单击 () {
信息框(文本框1.内容)
}
常见窗体事件:创建完毕、即将关闭、尺寸改变。常见控件事件:被单击、内容被改变 等(以设计器「事件」菜单为准)。
6. 分支
如果 (条件) {
...
} 否则 {
...
}
// 多分支
如果 (n == 1) {
} 否则 如果 (n == 2) {
} 否则 {
}
选择语句:
选择 (n) {
分支 1 {
}
分支 2, 3 {
}
默认 {
}
}
条件必须写在括号里:如果 (x > 0) { ... }。
7. 循环
// 计数循环:循环 (次数, 循环变量)
整数 i = 0
循环 (10, i) {
输出(到文本(i))
}
// 条件循环
当 (条件) {
...
}
// 遍历(集合/数组)
遍历 (项, 集合) {
}
循环控制(必须带括号):
| 写法 | 含义 |
|---|---|
继续() |
进入下一轮(不要写「到循环尾」等伪命令) |
跳出() |
跳出当前循环 |
8. 运算符与常用命令
| 类别 | 写法 |
|---|---|
| 算术 | + - * / % |
| 比较 | == != > >= < <= |
| 逻辑 | 且 或 非(部分场景兼容 && \|\|,以检查器为准) |
| 文本拼接 | "a" + "b"、到文本(n) |
常用内置命令:输出、信息框、到文本、到整数、取文本长度、读文件、写出文件。
9. 控件属性与多窗口
属性用点号读写,名称与窗口 XML 中 名称 一致:
按钮1.启用 = 假
标签状态.标题 = "已连接"
文本框1.内容 = "hello"
多窗口:
载入("工作台")
工作台.标签1.标题 = "已打开"
关闭("登录窗")
详见 多窗口设计.md、window-xml.md、工程结构.md。
10. 支持库调用模式
HTTP类 http
文本 正文 = http.提交("GET", "https://example.com")
如果 (正文 == "") {
信息框(http.取错误())
返回 ()
}
JSON类 j
如果 (j.解析(正文) == 假) {
信息框(j.取错误())
返回 ()
}
- 管道:pipe.md
- 线程:thread-support.md — 勿在界面线程里长时间阻塞;耗时放任务,回写 UI 必须回到界面线程
11. 异常
尝试 {
...
} 捕获 (文本 错) {
输出(错)
}
12. DLL / 指针 / 资源 / 样式
- API 声明:dllapi.md、dll-pointers.md
- 第三方 DLL:third-party-dll.md
- 嵌入资源:
:/路径,见 resource-embed.md - 样式:YSS,见 YSS.md
相关文档
- 工程结构.md
- usertype.md / userclass.md
- pipe.md / http.md / json.md
- thread-support.md
- 官网语言页:https://www.yddphp.cn/lang.html