在lua 5.2源码中添加一个可选的"全局"关键字

我想修改lua 5.2源代码,以允许在全局变量声明之前添加可选的"global"关键字。有人这样做过或者知道如何做到这一点吗(安全地)?是的,我知道变量默认是全局的,这只是纯语法糖。

要明确,添加现有类型的自定义关键字是很简单的。我无助的部分是如何安全地编辑解析器(通过5.2 C源代码),以使其丢弃或忽略新的"global"关键字。

点赞
用户1442917
用户1442917

请参阅此讨论以获取详细信息和一个针对 5.3 的建议补丁:http://lua-users.org/lists/lua-l/2018-07/msg00422.html。它使用了一种不同的(非关键字基础的)方法,但应该是一个很好的起点。

2018-11-22 23:45:45
用户2418731
用户2418731

我搞定了。首先,我在保留枚举的末尾附加了一个新的令牌 TK_GLOBAL

然后,在 luaX_init() 函数中,我添加了以下内容...

ts = luaS_new(L, "global");
luaS_fix(ts);
ts->tsv.reserved = cast_byte(TK_GLOBAL+1-FIRST_RESERVED);

最后,在 statement() 函数中,我添加了以下内容...

case TK_GLOBAL:
   luaX_next(ls);
break;

据我所知,它能正常工作。希望安全可靠。

2018-11-24 22:34:37