我想修改lua 5.2源代码,以允许在全局变量声明之前使用一个可选的“ global”关键字。有没有做到这一点,或者有人知道如何安全地做到这一点?是的,我知道默认情况下变量是全局变量,这纯粹是语法糖。
需要明确的是,添加现有类型的自定义关键字很简单。我不知所措的部分是如何安全地(通过5.2 C源代码)编辑解析器,以便它丢弃或忽略新的“ global”关键字。
答案 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;
据我所知它是可行的。希望它是安全的。