向lua 5.2源添加可选的“全局”关键字

时间:2018-11-22 22:18:52

标签: c lua

我想修改lua 5.2源代码,以允许在全局变量声明之前使用一个可选的“ global”关键字。有没有做到这一点,或者有人知道如何安全地做到这一点?是的,我知道默认情况下变量是全局变量,这纯粹是语法糖。

需要明确的是,添加现有类型的自定义关键字很简单。我不知所措的部分是如何安全地(通过5.2 C源代码)编辑解析器,以便它丢弃或忽略新的“ global”关键字。

2 个答案:

答案 0 :(得分:0)

有关详细信息和建议的补丁程序(针对5.3),请参见此讨论:http://lua.2524044.n2.nabble.com/Say-No-to-global-by-default-summary-of-the-discussion-td7683658.html。它使用了不同的方法(基于非关键字),但是应该是一个很好的起点。

答案 1 :(得分:0)

弄清楚了。首先,我在RESERVED枚举的末尾附加了一个新令牌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;

据我所知它是可行的。希望它是安全的。