前言
青语言是一门完全基于中文语言习惯打造的编程语言,主要面向青少年、儿童和非专业人士。从零开始实现了代码文本到语法书的构建,整个设计过程中,内核参考了Lisp,语法参考了Js,以C#作为实现,运行在.NET平台上,并使用DLL动态连结库的方式扩展功能。
青语言主页:青语言主页
青语言文档:青语言文档系统
青语言社区:青语言论坛 - 青语言论坛是一个开放的交流平台,可以自由讨论青语言相关内容
青语言仓库:青语言: 简单的中文编程语言
下载及安装
下载
安装
-
青语言的代码文件本质上是纯文本文件,所以你可以使用任何支持纯文本编辑的编辑器进行代码编写。
-
但是,由于语言本身的特性,一个好的编辑器可以在代码编写过程中提供诸如格式化、代码提示等功能,这能大大提高编程效率。因此,官方提供了一个简单的青语言编辑器,虽然尚不完善,但还是希望能够为大家编写代码提供便利。
-
通过上述提供的下载解压后可以得到以下文件:
-
-
这里的青编程.exe文件,双击即可
-
本文以编辑器的角度介绍
快速开始
使用青语言输出 “你好,中文编程世界”
@显示 “你好,编程世界”
基础语法介绍
青语言设计中的一个核心点就是:语法尽量简单
青语言的语法主要参考了JavaScript语言,需要学习的概念较少,是一门难度极低的编程语言。在正式开始学习青语言的语法细节之前,我们先总体上了解一下青语言的语法设计。
关键字
固定值,包括:
元 空 真 假 如果 再则 否则 当 执行 直到 返回 跳出 继续 取反 异步 等待 尝试 排查 例行 遍历
注意:关键字使用时,前后需要留空白(防止产生断句歧义)
符号
符号与关键字一样,都是固定值,包括:
; 中文分号开头表是单行注释
;; 连续两个中文分号是多行注释的开头,一直到另一个连续的双分号
, 逗号没有具体的意义,在青语言中仅表示间隔,解析期会被丢弃,同时支持中英文两种逗号
“” 中文的双引号用来表示字符串
、 中文的顿号用来向函数传递单个参数
{ } 【 】 ( ) 《 》
+ - * / % += -= *= /= %=
> < == >= <= != <> && || = :
注意:虽然部分符号官方提供了对应的中文,但是最好还是使用上述符号。如果使用中文的话,注意前后留白。
变量
以 # 开头的都是变量,不能是单独的 # 号,语法解析上是从#号开始直到下一个分隔标记,包括空白或者符号。例如:
- #变量1
- #甲
- #乙
函数
以 @ 开头的都是变量,不能是单独的 @ 号,语法解析上是从#号开始直到下一个分隔标记,包括空白或者符号。例如:
- @显示
- @读文本文件
核心语法介绍
这里简单列举几个常用的语法,更多的可以前往官方文档查看
注释
所谓注释是编程语言中一个特有的概念,它本身并不实现代码的功能,而是为了对代码进行说明,便于阅读和理解代码。所有,在程序运行过程中,注释会被跳过,不被执行。
单行注释
;以中文分号开头的是单行注释,这部分不会被执行,可以用来对代码进行说明
多行注释
;;这里是多行注释的开头 这里新起了一行,仍然是注释的内容 换行之后也不需要特殊的标记 一直到另一组连续的中文分号结束;;
数据类型
青语言参考了JavaScript语言,只提供了少量的几种基本数据类型
- 空类型:只有一种取值——空,表示不存在或者值为空
- 逻辑类型:有两种取值,表示逻辑上的真或假
- 二进制类型:底层是字节数组,表示方式为 0x开头的十六进制
- 整数类型和小数类型:表示数字,表示方式为日常使用的十进制数字
- 字符串类型:青语言中,使用中文的双引号进行标记。本质上是文本,双引号中的内容可以是任意字符。注意:双引号需要前后闭合。
基于上述几个基本的数据类型,示例如下:
空 ;空类型,表示不存在或者值为空
真 ;逻辑类型,表示逻辑真
假 ;逻辑类型,表示逻辑假
0xFF ;二进制类型,表示二进制数据
123 ;这是整数
4.56 ;这是小数
“这是一段字符串” ;用中文双引号括起来的部分是字符串
变量赋值
基于之前学习的变量命名方式,现在对命名的变量进行赋值
青语言中,赋值操作可以通过等号(=)和冒号(:不区分中英文)进行实现
#变量1 = “这是一个字符串变量” #变量2 : 1.23 @显示 #变量1 @显示 #变量2
集合
集合一般用于存储一组数据,里面包括大量的单个数据
青语言中提供了2中集合类型——数组和对象
数组
青语言中数组可以放任意类型的数据,之后通过位置序号对集合中的数据进行操作
#数组1 = 【1,2,3,4】 #数组2 = 【‘1’, 1,真,1.123】 @显示 “数组1:” + #数组1 + “,数组2:” + #数组2
对象
青语言中对象通过@加中文的大括号@{}来表示,以键值对的方式对数据进行操作
#张三 = @{ ;大括号括起来的部分就是一个对象 #年龄:12, #性别:“男” } @显示 #张三
流程控制
默认情况下,青语言的语句是从上往下执行的,从第一行代码开始,直到最后一行代码,每一行代码都会执行一次,这种执行方式一般称为——顺序执行。
但是,某些情况下,会出现一段代码执行多次或者跳过执行这段代码的情况,这里就需要下方的条件分支语句和循环语句来进行实现。
条件分支语句
如果 条件表达式 {符合条件时要执行的代码}
如果 2 < 1 { @显示 1 }
如果 条件表达式 {符合条件时要执行的代码} 否则 {不符合条件时要执行的代码}
如果 2 < 1 { @显示 1 }否则 { @显示 “2不小于1” }
如果 条件1 {代码1} 再则 条件2 {代码2} 否则 {代码3}
#甲 = 2 如果 #甲 等于 1 { @显示 1 }再则 #甲 等于 2 { @显示 2 }否则{ @显示 3 }
循环语句
本文仅介绍一种,之后需要更多格式可以前往官方文档查看
当 #序:1,#序 小于等于 10,#序 自加 1 { 如果 #序 小于 5 { 继续 ;这会立即开始下一轮循环 } @显示 #序 }
函数
函数是编程语言中一个十分重要的概念,是对程序功能模块化的基本单位。
当我们需要多次使用同一段逻辑代码,但又不是简单的循环,而是希望每次给定一些条件后,得到相应的输出,那么这个时候就可以通过函数来对这段逻辑代码进行封装。
在青语言编辑器中输入@,自动弹出的提示框显示了青语言提供的所有内置函数
函数的调用
调用方式:@函数名称【参数传递】
如果传入的参数个数多于函数所需要的个数,那么函数不会对多出来的参数进行处理
自定义函数
自定义函数的格式如下
@函数名 = @【参数列表】{ …… 函数代码块 …… }
其中参数列表是定义函数可以接收的参数,最基础的形式是变量名的形式,我们也成为形参,例如:
@双倍 = @【#甲】{ #甲 * 2 }
调用方式:
@双倍【5】
自定义函数示例
@乘积 = @ 【#乘数1, #乘数2】 { 返回 #乘数1 * #乘数2 } @乘积【2,3】
结尾
当然,本文内容有限,如果需要了解更多的话还是推荐去官方文档进行阅读