本项目所有代码均由 AI 生成,未经人工审核。请谨慎使用。
欢迎来到 RedbookLang(薯言) 的世界!
这是一个全新的编程语言,旨在让编程变得更简单、更有趣。
它的语法灵感来源于 Redbook 社区的交流方式,使用了许多通俗易懂的表达方式。
下面是 RedbookLang 的基本语法和功能介绍。
#
符号开始一行注释。注释内容会被解释器忽略。# 这是一行注释,解释器会忽略我哦
大小写 (Case Sensitivity): RedbookLang 中的关键字和用双引号包裹的标识符(如变量名、函数名)是区分其实际内容的,但关键字本身(如 种草一个
, 听我说,
)必须按照文档中指定的大小写来书写。
语句体 (Statement Bodies): 重要提示: 当前版本的 RedbookLang 中,函数定义、条件语句 (康康是不是
, 或者康康
, 都不是呢
)以及循环语句 (本宝宝坚持
, 盘点清单
) 的执行体都只能包含 单个语句。
RedbookLang 目前支持以下主要数据类型:
数值 (Number): 包括整数和浮点数。负数可以通过在数字前加上 -
(负号) 来表示 (技术上这是一个一元运算符作用于数字)。
10
3.14
-7
字符串 (String): 用单引号 ''
包裹的文本。
'你好, RedbookLang!'
'今天天气真不错☀️'
布尔值 (Boolean): 代表逻辑真或假。
当然啦
(代表 真 / True)才不是
(代表 假 / False)种草一个 "事实" 是 当然啦
种草一个 "谣言" 是 才不是
声明和赋值 (Declaration and Assignment): 使用 种草一个
关键字声明变量,后跟用双引号 ""
包裹的变量名,然后是 是
关键字和赋给变量的值。
种草一个 "我的变量" 是 100
种草一个 "欢迎语" 是 'Hello, RedbookLang!'
种草一个 "笔记赞数" 是 1024
种草一个 "是否周末" 是 当然啦
标识符 (Identifiers): 变量名和函数名等标识符,必须用双引号 ""
包裹。
"myVar"
"计算总价"
"用户昵称"
RedbookLang 支持多种运算符:
算术运算符 (Arithmetic Operators):
加上
(+): 数字加法,或字符串拼接。
听我说, 10 加上 5 # 输出: 15
听我说, '你好' 加上 '薯言' # 输出: 你好薯言
减去
(-): 数字减法。
听我说, 10 减去 5 # 输出: 5
乘以
(*): 数字乘法。
听我说, 10 乘以 5 # 输出: 50
除以
(/): 数字除法。结果通常是浮点数。
听我说, 10 除以 5 # 输出: 2.0
听我说, 7 除以 2 # 输出: 3.5
一元负号 (-): 用于表示负数或取一个数值表达式的负值。
种草一个 "温度" 是 -5
种草一个 "另一个数" 是 10
听我说, -"另一个数" # 输出: -10
比较运算符 (Comparison Operators): 用于比较两个值,结果是布尔值 (当然啦
或 才不是
)。
等于
(==)不等于
(!=)小于
(<)小于等于
(<=)大于
(>)大于等于
(>=)听我说, 10 等于 10 # 输出: True (实际输出可能是 当然啦 的等价值)
听我说, '苹果' 不等于 '香蕉' # 输出: True
听我说, 5 大于 3 # 输出: True
Note: For <
, <=
, >
, >=
operators, comparing values of different types (e.g., a number and a string) may lead to a TypeError
.
逻辑运算符 (Logical Operators): 用于组合布尔表达式。
并且
(AND): 如果两边的表达式都为真,则结果为真。或者
(OR): 如果两边的表达式至少有一个为真,则结果为真。反转魅力
(NOT): 对单个布尔表达式取反。种草一个 "阳光明媚" 是 当然啦
种草一个 "周末" 是 才不是
听我说, "阳光明媚" 并且 "周末" # 输出: False
听我说, "阳光明媚" 或者 "周末" # 输出: True
听我说, 反转魅力 "周末" # 输出: True
运算符优先级 (Operator Precedence): RedbookLang 遵循一定的运算顺序:
()
内的表达式-
作为负号, 反转魅力
)乘以
, 除法 除以
加上
, 减法 减去
等于
, 小于
, 等)并且
或者
可以使用圆括号 ()
来明确控制运算顺序。
听我说, (10 加上 5) 乘以 2 # 输出: 30
听我说, 反转魅力 ("阳光明媚" 并且 "周末") # 先算括号内,再取反
RedbookLang 支持条件语句和循环语句来控制程序的执行流程。
康康是不是
、或者康康
和 都不是呢
。
康康是不是 condition: statement
或者康康 condition: statement
(可选,可有多个)
都不是呢: statement
(可选)
condition
是一个结果为布尔值的表达式。statement
是当条件满足时执行的单个语句。
种草一个 "笔记点赞数" 是 250
康康是不是 "笔记点赞数" 大于 500:
听我说, '哇哦!笔记小爆款!'
或者康康 "笔记点赞数" 大于 200:
听我说, '不错哦,笔记有人气,继续加油!' # 这条会执行
都不是呢:
听我说, '每篇用心分享的笔记都是好笔记!💖'
While 循环 (本宝宝坚持): 当给定条件为真时,重复执行一个语句。
本宝宝坚持 condition: statement
condition
是一个布尔表达式。statement
是在每次循环中执行的单个语句。
为了防止无限循环,存在一个最大循环次数限制 (默认为2000次)。种草一个 "计数器" 是 0
本宝宝坚持 "计数器" 小于 3:
种草一个 "计数器" 是 "计数器" 加上 1
听我说, '计数器最终值为:', "计数器" # 输出: 计数器最终值为: 3
For 循环 (盘点清单): 用于遍历一个数字序列。
盘点清单 "iterator_var" (启动: start_expr, 目标: end_expr [, 跨步: step_expr]): statement
"iterator_var"
: 用双引号包裹的循环变量名。启动: start_expr
: 循环的起始值 (包含)。目标: end_expr
: 循环的结束边界。
跨步
为正,循环继续只要迭代变量 < end_expr
。跨步
为负,循环继续只要迭代变量 > end_expr
。跨步: step_expr
(可选): 每次循环的步长,默认为 1
。步长不能为 0
。start_expr
, end_expr
, step_expr
都必须是数值。
statement
是在每次循环中执行的单个语句。同样有最大循环次数限制。听我说, '* 正向盘点 *'
盘点清单 "序号" (启动: 1, 目标: 4): # 序号: 1, 2, 3
听我说, '当前序号是:', "序号"
听我说, '* 反向盘点 (带步长) *'
盘点清单 "倒计时" (启动: 5, 目标: 0, 跨步: -1): # 倒计时: 5, 4, 3, 2, 1
听我说, '倒计时:', "倒计时"
函数是可重用的代码块。
定义函数 (Defining Functions): 使用 开个新帖
关键字。
叫
: 后跟用双引号 ""
包裹的函数名。
艾特
: 后跟圆括号 ()
包裹的参数列表。参数名也用双引号 ""
包裹,多个参数用逗号 ,
分隔。如果函数没有参数,则 ()
中为空。
函数体以冒号 :
开始,后跟函数执行的单个语句。
绝绝子
: 用于从函数中返回值。
开个新帖 叫 "加法大师" 艾特 ("数字一", "数字二"):
绝绝子 "数字一" 加上 "数字二"
开个新帖 叫 "简单问候" 艾特 (): # 无参数函数
听我说, '你好呀, 薯宝宝!'
开个新帖 叫 "个性化问候" 艾特 ("名字"):
绝绝子 '你好呀, ' 加上 "名字" 加上 '!'
调用函数 (Calling Functions): 使用 调用
关键字。
""
包裹的函数名。用
: 后跟圆括号 ()
包裹的参数值列表。多个参数值用逗号 ,
分隔。如果调用无参函数,()
中为空。种草一个 "计算结果" 是 调用 "加法大师" 用 (15, 7)
听我说, "计算结果" # 输出: 22
调用 "简单问候" 用 () # 输出: 你好呀, 薯宝宝!
种草一个 "问候语" 是 调用 "个性化问候" 用 ('小红薯')
听我说, "问候语" # 输出: 你好呀, 小红薯!
返回值 (Return Values): 函数体中 绝绝子
后面的表达式的值就是函数的返回值。如果函数没有 绝绝子
语句,或者 绝绝子
后面没有显式值,则函数不会返回一个可直接使用的值 (类似于其他语言中的 void
或 None
返回,但在薯言中,你不能直接将这个“无返回值”赋给变量或打印它期待一个值)。
输出 (Output): 使用 听我说,
关键字打印一个或多个值到控制台。多个值用逗号 ,
分隔,输出时它们会用单个空格隔开,并在末尾自动添加换行。
听我说, '欢迎来到 RedbookLang!'
种草一个 "年龄" 是 18
听我说, '我的年龄是:', "年龄", '岁。' # 输出: 我的年龄是: 18 岁。
RedbookLang 会在遇到语法错误或运行时错误时给出中文提示。常见的错误类型包括:
SyntaxError
: 词法分析或语法分析阶段发现代码不符合 RedbookLang 语法。例如,关键字写错,或者括号不匹配。TypeError
: 操作应用于了不兼容的类型。例如,用非数值类型进行 乘以
运算,或者对两个不同类型的值使用某些比较运算符。NameError
: 尝试使用一个未“种草”(定义)的标识符(变量或函数名)。ZeroDivisionError
: 尝试将一个数除以零。ValueError
: 传递给操作或函数的参数类型正确但值不合适。例如,盘点清单
的 跨步
参数为零。RuntimeError
: 一般的运行时错误,例如循环次数超过了预设的最大限制。# RedbookLang (薯言) 来了! yyds!
听我说, '--- 基础变量和打印 ---'
种草一个 "我的昵称" 是 '薯条宝宝'
种草一个 "幸运数字" 是 -7 # 定义负数
听我说, "我的昵称", '的幸运数字是', "幸运数字"
听我说, '--- 函数定义与调用 ---'
开个新帖 叫 "制作元气早餐" 艾特 ("主食", "饮品"):
绝绝子 '元气早餐已上线:' 加上 "主食" 加上 ' + ' 加上 "饮品" 加上 ',开启美好一天!☀️'
种草一个 "我的早餐" 是 调用 "制作元气早餐" 用 ('小面包', '燕麦拿铁')
听我说, "我的早餐"
听我说, '--- 条件语句:康康是不是 ---'
种草一个 "笔记点赞数" 是 250
康康是不是 "笔记点赞数" 大于 500 并且 "幸运数字" 小于 0:
听我说, '哇哦!笔记小爆款,而且今天幸运值拉满!'
或者康康 "笔记点赞数" 大于 200:
听我说, '不错哦,笔记有人气,继续加油!' # <--- 这条会执行
都不是呢:
听我说, '没关系,每篇用心分享的笔记都是好笔记!💖'
康康是不是 反转魅力 ("笔记点赞数" 等于 0): # not (点赞 == 0) -> 点赞 != 0
听我说, '笔记已经有赞啦,不是零蛋宝宝!'
听我说, '--- 循环:本宝宝坚持 ---'
种草一个 "每日目标步数" 是 3
种草一个 "已走步数" 是 0
开个新帖 叫 "走一步" 艾特 ("当前步数"): # 函数体是单个语句
绝绝子 "当前步数" 加上 1
本宝宝坚持 "已走步数" 小于 "每日目标步数": # 循环体是单个语句
种草一个 "已走步数" 是 调用 "走一步" 用 ("已走步数")
听我说, '今日运动KPI完成,共走', "已走步数", '步!🏃♀️'
听我说, '--- 循环:盘点清单 (支持负数和负步长) ---'
开个新帖 叫 "分享第N个草稿" 艾特 ("草稿序号"):
听我说, '正在编辑第', "草稿序号", '个草稿,快要完成了!'
听我说, '* 正向盘点 *'
盘点清单 "草稿ID" (启动: 1, 目标: 4): # 草稿ID: 1, 2, 3
调用 "分享第N个草稿" 用 ("草稿ID") # 循环体是单个语句
听我说, '* 反向盘点 *'
盘点清单 "倒数日" (启动: 3, 目标: 0, 跨步: -1): # 倒数日: 3, 2, 1
听我说, '距离 deadline 还有:', "倒数日", '天! 冲刺!'
种草一个 "我的起点" 是 -2
种草一个 "我的终点" 是 3
种草一个 "我的步调" 是 1
盘点清单 "负数测试" (启动: "我的起点", 目标: "我的终点", 跨步: "我的步调"): # -2, -1, 0, 1, 2
听我说, '负数循环测试值:', "负数测试"
听我说, '--- 布尔与逻辑 ---'
种草一个 "今天下雨" 是 才不是
种草一个 "周末" 是 当然啦
康康是不是 "今天下雨" 或者 反转魅力 "周末": # false or not(true) -> false or false -> false
听我说, '坏天气,宅家刷剧吧!'
都不是呢: # 这条会执行
听我说, '天气不错,或者就是周末,出去玩!'
听我说, '--- 错误处理演示 (注释掉以防中断) ---'
# 种草一个 "空篮子" 是 0
# 下面这行会触发 ZeroDivisionError,如果取消注释
# 听我说, 100 除以 "空篮子"
# 听我说, "一个不存在的变量" # 这会触发 NameError
听我说, '代码执行完毕,感谢使用薯言!'
祝你使用 RedbookLang (薯言) 编程愉快!🎉