SRP语言协议文档

介绍

前言

你好,这里是Nsakrty,最近闲的没事干,搞了一个“所谓的编程语言”,把它当个乐子看就行了:D。

下载

SRP语言(230527)

名字来源

如你所见,这个语言叫做SRP语言,名字来源于我加入的一个组织SRPG的前三个字。

基于谁编写?运行速度如何?

由于它基于苹果的“快捷指令”app开发,所以它的运行速度必然很低,也就6.64行/s(23.01.08)(?。

特点

  1. SRP语言的目的就是为了改善”快捷指令”的开发体验(不得不说,ios15的快捷指令的编写体验简直离谱,bug经常出现,好在ios16好些了)以及让我在闲的没事的时候玩玩(?,所以SRP语言只能在“快捷指令”app运行,非常垃圾。
  2. SRP语言的语法很明显不同于其他语言,以Javascript为例,要输出"hello,world"只需要输入console.log("hello,world");,但是在SRP语言里却是print<<hello,wolrd,在js给定义变量a并且赋值10是let a = 10;,而SRP语言则是var<<a<<10,并且SRP语言没有if,只有goto...(?

语法

大小写

SRP语言区分大小写,Aa是不同的变量

语句

SRP语言中的指令被成为语句,用行进行分割,一条语句只能独占一行,因此,语句末尾不需要加分号。但请注意,SRP语言中的<<和其他东西不能存在空格。

注释

SRP语言的注释并无规定该怎么写,只要你此行的文本的第一个<<前的单词不是所有函数中的其中一个即可,所以
//我是注释
<!-- 我也是注释 -->
我看起来不像是SRP注释,但我真的是一个SRP注释
print可以输出信息(我也是注释)
input<<hi! 可以请求用户输入,并且输入框文字是:hi!(我不是注释)
如果编译器遇到注释,会自动跳过处理。

标签

SRP语言的标签用name:表示,标签独占一行,标签对goto等语句来说很重要

变量

SRP语言的变量可以以大小写字母、中文、下划线和绝大多数标点符号开头,%除外,%不能出现在变量名中。

SRP语言的变量声明格式如下:
var<<name<<value,name和value都必须填上,如果你在声明的时候不想让变量有值,请把value设为0,如果不填value,那么本语句就相当于把name的value赋给临时变量temp

在SRP语言,要读取变量很简单:%name%,在运行程序时,编译器会自动把它替换成对应变量的值,如果这个变量未声明,则会替换成空值。

在SRP语言,很多语句的结果都会赋给临时变量temp,读取temp的方法和普通变量完全一致。SRP语言中的一些操作会用到temp的值,如果你需要把某个变量的值赋给temp,可以直接这么写:var<<name

SRP语言中的变量只能是全局变量

数据类型

SRP语言是弱类型语言,你不需要做任何的类型转换,从编译器的角度来讲,任何东西到了这都是string类型(编译器不能区分东西的类型),但是你依然可以把它分为string(字符串),number(数字),list(列表)几种类型。


计算

表达式的计算统一在number函数进行,请注意,除这个以外,其他要参数的地方不能填表达式!特别是gotoi函数会出现这种情况!表达式计算只能在number函数进行。还有,SRP语言不支持计算条件表达式。这里列举几个常见的错误写法:
var<<a<<number<<3+5
gotoi<<a>>3<<yes


函数

注意,*表示选填,如果是有一个括号扩着多个参数并且加*的,表示括号内的参数必须同时出现或不出现。

alert

alert函数可以显示一个警告框,用来显示文本(content)

写法:alert<<content

choose

choose函数可以在列表(list)中的项目选择一项,参数有列表(list)和提示词(title)。结果返回到temp中。

写法:choose<<list<<title*

round

round函数可以对一个数字(number)进行四舍五入。结果返回到temp中。

写法:round<<number

getDate

getDate函数可以获取当前的日期信息。

写法:getDate

getItem

getItem函数可以从列表(list)中获取一个项目,参数有列表(list)、最小值(min)和最大值(max),如果最大值不填,则获取列表的第min项,请注意,列表项的序号从0开始。

写法:getItem<<list<<min<<max*

getPlace

getPlace函数可以获取当前的位置信息。

写法:getPlace

goto

goto函数可以跳转到指定的标签(id)处。

写法:goto<<id

goton

goton函数可以跳转到指定的标签(id)处,如果temp为负则跳转。

写法:goton<<id

gotoi

gotoi函数可以跳转到指定的标签(id)处,参数有value和标签(id),如果temp和value相等(化为字符串后相等)则跳转,强调:value不能填表达式,表达式计算只能在number函数进行。

写法:gotoi<<value<<id

gotop

gotop函数可以跳转到指定的标签(id)处,如果temp为正则跳转。

写法:gotop<<id

gotoz

gotoz函数可以跳转到指定的标签(id)处,如果temp为0则跳转。

写法:gotoz<<id

hash

hash函数可以让一个东西进行MD5运算

写法:hash<<content

inform

inform函数可以显示一个通知框,用来创建通知,参数有内容(content)和标题(title)。

写法:inform<<content<<title

input

input函数用来获取输入,参数有问题(question)和回答时的默认值(value)。结果返回到temp中。

写法:input<<question<<value

length

length函数可以获取列表的长度(项数)

写法:length<<list

number

number函数可以对数值表达式(expression)进行运算。结果返回到temp中。

写法:number<<expression

random

random函数可以生成一个随机数,参数有最小值(min)和最大值(max),如果不填,则输出一个0~1的浮点数。结果返回到temp中。

写法:random<<(min<<max)

run

run函数可以运行一个快捷指令,参数有快捷指令名称(shortcutName)和参数(parameter)。结果返回到temp中。

写法:run<<shortcutName<<parameter

stop

stop函数可以停止当前程序并输出值。在程序的末尾必须写这个,但是在其他地方也可以写。

写法:stop<<value

temp

temp函数可以快捷地修改temp变量的值,参数仅有value。

写法:temp<<value

var

var函数用来创建一个变量以及给变量赋值,参数有名称(name)和值(value)。如果你在声明的时候不想让变量有值,可不填value。请注意,你只能在这个地方对变量赋值。

写法:var<<name<<value


返回主页