Simple语言文档

Simple语言是什么?

Simple语言是实验性的、极简主义的脚本语言,此语言力求最极简的语法和机制,抛弃一切繁杂特性,比如仅仅只有3种基础功能,而且都是符号表示,因此学起来非常简单。

Simple语言本身就是实验品,只适合教学和研究,非常不建议在生产环境中使用!

数据类型

在标准中,Simple语言有两种数据类型:

num数字(包含整数和小数)
str字符串

没有列表、数组、Table之类的数据结构。

没有布尔值,但可以使用01代替。

字符串使用""''包围,例如:'Hello'

基础语法

声明普通变量

<变量名称>: <变量值>

例如,我想把123存入普通变量var

var: 123

普通变量必须要先声明才能使用,否则报错:

var1: 123
put var1
rem: '输出:123'

put var2
var2: 456
rem: '报错'

声明预处理变量

<变量名称>:: <变量值>

例如,我想把123存入预处理变量var

var:: 123

预处理变量可以先使用再声明,如果出现重复声明,取代码的最后一次声明,但必须要至少一次声明

比如,这是合法的:

put var
var:: 123
rem: '输出:123'

当然,预处理变量还可以当标签用,在变量值填写声明变量的行号即可,比如:

label:: 1
put 'hello'
-> label
rem: '无限打印hello'
其它性质与普通变量一致。

跳转

<条件(可选,默认是1)> -> <代码行数>

跳转代替了条件判断、循环和遍历。

例如,我想在a == b的情况下跳转到17行,可以这么写:

a == b -> 17

如果条件的返回值为1,才会触发跳转到指定的代码行数,否则就跳过。

代码行数支持输入变量,因此预处理变量就可以发挥标签的作用。

API

除基础功能,其它语句都是API。

API在设计中应该是可插拔的、来自外部的、需要提前导入的,类似于外部库提供的功能,但由于技术原因,目前集成在了解释器里。

输出文字到终端

put <输出的文字>

例如,完整的Hello world程序是这样写的:

put 'Hello world!'
put没有自动换行和输出缓存,需要特别注意。

获取键盘输入到变量

ipt <要保存到的变量>

如果我想把键盘输入的内容保存到变量var

ipt var

扩展一下,制作一个可以复读键盘输入的回声桶:

ipt keyboard
put keyboard + '\n'
rem: '输入:hello;输出:hello'

将字符串转换为数字

num <要转换并保存到的变量>

例如,我想转换变量var

num var

扩展一下,做一个简单的加法计算器:

put '第一个数:'
ipt a
num a
put '第二个数:'
ipt b
num b
put '结果:'
put a + b
put '\n'
rem: '分别输入:“1”“1”;输出:“结果:2”'

将数字转换为字符串

str <要转换并保存到的变量>

其它方面与num一致,不多赘述。

杂项

Simple语言没有注释

注释是没必要单独做一个的,可以使用变量代替:

rem: '这就是注释!'

不标准的函数和功能

实际上,你可以运行这个代码:

put len('hello')
rem: '输出:5'

但这不是标准的,而且可能会遇到各种各样奇怪的bug和限制,因为Simple语言的解释器基于Python,最终会解释为Python代码,因此请尽量不要使用不标准的函数和功能。

这个bug会在未来修复。

错乱的语法顺序

实际上,这个代码也可以运行:

'hello' put
rem: '输出:hello'

因为使用了匹配关键字进行语法解析,不会分析语序,所以就导致可以出现这种情况。

这个bug会在未来修复。

示例程序

main:: 1

put '输入要判断奇偶数的数:'
ipt keyboard
num keyboard

keyboard % 2 == 0 -> even
-> odd

even:: 10
put '这是偶数。\n'
-> main

odd:: 14
put '这是奇数。\n'
-> main
注意:
除非另有声明,本文可以自由使用、转载和二次创作,但需注明作者,并以相同许可协议分享,且不得用于商业目的。详情请参阅:CC BY-NC-SA 4.0许可协议。

- 标题:Simple语言文档
- 作者:Pinpe
- 链接:https://blog.pinpe.top/3583/

评论

  1. Evian
    3 周前
    2024-11-01 16:41:10

    如果使用num <要转换并保存到的变量>转换一个非数字的值,比如

    error::"错误" 
    num error

    那么会出现什么结果,如果报错的话有没有办法拦截这个报错让程序不崩溃

    • 博主
      Evian
      3 周前
      2024-11-01 17:34:54

      会TypeError,目前没有错误捕获功能。

  2. 4 周前
    2024-10-26 17:01:00

    厉害

  3. 买只猫陪睡觉
    4 周前
    2024-10-25 22:44:24

    我嘞个这么厉害

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
呼呼
上一篇
下一篇