Добавление необязательного «глобального» ключевого слова в источник lua ​​5.2 - PullRequest
0 голосов
/ 23 ноября 2018

Я бы хотел изменить исходный код lua 5.2, чтобы допустить необязательное ключевое слово "global", предшествующее объявлениям глобальных переменных.Кто-нибудь сделал это или кто-нибудь знает, как это сделать (безопасно)?И да, я знаю, что переменные являются глобальными по умолчанию и что это будет чисто синтаксический сахар.

Для ясности, добавление пользовательских ключевых слов существующих типов просто.Часть, из-за которой я в растерянности, это как безопасно отредактировать парсер (через исходный код 5.2 C), чтобы он отбрасывал или игнорировал новое ключевое слово "global".

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Разобрался.Сначала я добавил новый токен TK_GLOBAL в конец перечисления RESERVED.

Затем в 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;

Насколько я могу сказать, это работает.Надеюсь, это безопасно.

0 голосов
/ 23 ноября 2018

Подробности смотрите в этом обсуждении и предлагаемом патче (против 5.3): http://lua.2524044.n2.nabble.com/Say-No-to-global-by-default-summary-of-the-discussion-td7683658.html. Он использует другой (не основанный на ключевых словах) подход, но должен быть хорошей отправной точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...