Skip to content
hootrhinoPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

本仓库是 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages