51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【架空/伪文档】PinkShell编译模式快速入门

第零章:为什么选择PinkShell?

PinkShell 是由Exquisite开发面向对象的Shell和编程语言具有Shell和编译两种独立模式,本文档是编译模式的教程。

PinkShell的一些特点:

  • 跨平台:Pink OSWindowsLiunxMac OS等操作系统都能兼容PinkShell。
  • 系统支持:Pink OS自带PinkShell环境,此系统的GUI程序和系统软件都是使用PinkShell开发的。
  • 运行效率高:PinkShell的峰值运行效率仅次于C语言。
  • 快速部署:PinkShell可以直接生成可执行文件,如C语言一样便捷。

第一章:环境配置

此文档假设以下条件:

|-------------|-----------------------------| | 操作系统版本 | Pink OS 17.7.0 | | PinkShell版本 | 8.2.0 | | PinkShell位置 | /system/system pack/shell | | 程序位置 | /bin |

PinkShell文件的后缀名是.sh ,在/bin创建一个名为Hello.sh,然后使用文本编辑器打开。

第二章:基础声明

如果这个文件是编译模式的程序,需要在开头加入这样的声明:

$ mode compile ;

否则会以Shell模式运行。

第三章:数据类型

PinkShell严格区分数据类型,使用错误的数据类型会报错或出现逻辑错误。

整数

| 类型 | 范围 | |:------------|-------------------:| | auto_int | 无限 | | short_int | -32768~32767 | | long_int | 小于-32,768或大于32,767 |

浮点数

| 类型 | 范围 | |:--------------|----------------------:| | auto_float | 无限 | | short_float | 2.3E-308~1.7E+308 | | long_float | 小于2.3E-308或大于1.7E+308 |

字符串

| 类型 | 范围 | |:------------|------------:| | auto_str | 无限 | | short_str | 0字节~1024字节 | | long_str | 大于1024字节 |

第四章:函数

函数区分数据类型 ,通常是auto_int

创建和调用函数的语法如下:

defined function <数据类型> <创建的函数名字> (<参数1>,<参数2>...) do
    <代码块> ;
end
调用的函数名字(<参数1>,<参数2>...) ;

PinkShell需要有一个main函数作为程序入口,不需要额外调用,大概是这样

defined function auto_int main() do
    <代码块> ;
end

第五章:输出

output类中的echo函数可以输出数据,语法如下:

output.echo (<参数>) ;

完整的Hello world程序是这样的:

$ mode compile ;
`defined function auto_int main() do
output.echo ("Hello world!\n") ;
end`

第六章:变量

变量也区分数据类型,语法如下:

<数据类型> <变量名> -> <值>

以下是一个示例,用于连接字符串:

$ mode compile ;
`defined function auto_int main() do
auto_str a -> "Hello" ;
auto_str b -> "World" ;
output.echo (a + b + "\n") ;
end`

第七章:输入

input函数可以获取键盘在终端输入的信息,可以传达到变量,语法如下:

input (<参数(通常是空的)>) ;

以下是一个示例,用于获取你的名字:

$ mode compile ;
`defined function auto_int main() do
auto_str name -> input () ;
output.echo ("你好," + name + "\n") ;
end`

第八章:判断

if...elseif...else语句用来进行条件判断,语法如下:

if (<条件>) then
    <代码块> ;
elseif (<条件>) then
    <代码块> ;
else then
    <代码块> ;
end

第九章:循环

while语句可以循环执行一个代码块 ,在没有break的情况不会停止,语法如下:

while do
   <代码块> ;
end

如果需要达到某种条件跳过循环的情况,可以使用break语句配合判断来实现:

while do
    if (<条件>) then
        break ;
    else then
        <代码块> ;
    end
end

第十章:库

PinkShell拥有各种好用的库 ,如与系统通信的system库,简便制作GUI程序的iris库,数学计算的math库,管理服务器的web库...

导入一个库很简单,只需要在开头加入这样的声明:

$ import "<库名称>" ;

第十一章:部署可执行文件

通常情况下,编译的时候会把二进制代码存储在内存中,然后直接运行。

如果要生成一个可执行文件,只需要在开头加入这样的声明:

$ generate "<生成位置>" ;

生成位置可以是相对位置,也可以是绝对位置,比如在程序的同目录下生成就是这样:

$ generate "/bin" ;

第十二章:实战

要求:制作一个实时时钟显示在屏幕(视野)的左上角。

思路:调用system库循环获取时间,在使用iris库显示出来。

代码:

$ mode compile ;
$ generate "/bin" ;
$ import "system" ;
$ import "iris" ;
`defined function auto_int main() do
iris.add.window (name -> "clock", title -> "clock", location -> "above-lift", height -> 14, width -> 60, units -> "px") ; //创建一个窗口,位置在左上角,高5px,宽60px
iris.clock.background_transparency (True) ;  //更改窗口背景的透明度为透明
iris.clock.add.text (color -> "#FFFFFF", size -> 14, units -> "px") ; //创建一个文本,颜色白色,大小14px
while do
auto_int second -> system.time.second() ;  //获取秒
auto_int minute -> system.time.minute() ;  //获取分钟
auto_int hour -> system.time.hour() ;  //获取小时
auto_str time -> hour + ":" + minute + ":" + second ;  //将以上三种变量整合到一个字符串
iris.clock.text.content (time) ; //文本变成time变量的内容
end
end`

赞(1)
未经允许不得转载:工具盒子 » 【架空/伪文档】PinkShell编译模式快速入门