本仓库是 lua V5.4.5 的官方 Fork 版本.
当前版本在词法层支持了一组中文关键字别名。实现方式是把中文词映射到 Lua 现有保留字 token(不新增语法 token),因此可以与英文关键字混写。
例如:
若/如果->if功能/函数->function且/与/并且->and或/或者->or返回->return
| 英文关键字 | 中文别名 |
|---|---|
| and | 且、与、并且 |
| break | 中断 |
| do | 执行、做 |
| else | 否则 |
| elseif | 否则若、否则如果 |
| end | 结束 |
| false | 假 |
| for | 对于 |
| function | 功能、函数 |
| goto | 跳转 |
| if | 若、如果 |
| in | 于、在 |
| local | 局部 |
| nil | 空 |
| not | 非 |
| or | 或、或者 |
| repeat | 重复 |
| return | 返回 |
| then | 则 |
| true | 真 |
| until | 直到 |
| while | 当 |
示例 1:中文关键字
局部 结果 = 0
若 真 则
函数 加一(n)
返回 n + 1
结束
结果 = 加一(41)
否则
结果 = 1
结束
print(结果)示例 2:中英混写
局部 x = 1
if x == 1 and 真 then
print("ok")
end示例 3:斐波那契数列
函数 斐波那契(n)
若 n <= 1 则
返回 n
结束
局部 a, b = 0, 1
局部 i = 2
当 i <= n 做
a, b = b, a + b
i = i + 1
结束
返回 b
结束
对于 i = 0, 10 做
print(i, 斐波那契(i))
结束示例 4:冒泡排序
函数 冒泡排序(arr)
局部 n = #arr
对于 i = 1, n - 1 做
对于 j = 1, n - i 做
若 arr[j] > arr[j + 1] 则
arr[j], arr[j + 1] = arr[j + 1], arr[j]
结束
结束
结束
返回 arr
结束
局部 data = {5, 1, 4, 2, 8, 3}
冒泡排序(data)
对于 i = 1, #data 做
io.write(data[i], i < #data and " " or "\n")
结束仓库内置了正例/负例测试脚本:
cn_keywords_smoke.lua:正例cn_keywords_negative_then.lua:负例(错误关键字)cn_keywords_negative_function.lua:负例(错误关键字)make cn-test:Linux 下一键回归测试
执行:
make cn-test预期结果为:ALL_CN_KEYWORD_TESTS_PASSED。
make- 维护:wwhai
非常感谢LUA团队的优秀作品:LUA