YStudio Y++

Y++ 语言基础(给开发者与 )

Y++ / YStudio 开发文档 · 一点滴

本文是 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.标题 = "确定"。

一个典型窗口程序至少包含:

  1. 窗口/主窗口/主窗口.xml(界面)
  2. 源代码/main.yc(逻辑与事件)
  3. 工程文件 *.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 自定义类型 / 类

见 usertype.md、userclass.md。


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 / 指针 / 资源 / 样式


相关文档