lua支持中文变量名

本文章引用自 http://blog.csdn.net/chrisxie/archive/2008/09/29/2998290.aspx

但有所修正.

默认的LUA不支持中文变量名.

少量修改源代码即可

修改如下:

在lua\src\llex.c中 修改420行-432行内容

原内容

1 else if (isalpha(ls->current) || ls->current == '_') {
2 /* identifier or reserved word */
3 TString *ts;
4 do {
5 save_and_next(ls);
6 } while (isalnum(ls->current) || ls->current == '_');
7 ts = luaX_newstring(ls, luaZ_buffer(ls->buff),
8 luaZ_bufflen(ls->buff));
9 if (ts->tsv.reserved > 0) /* reserved word? */
10 return ts->tsv.reserved - 1 + FIRST_RESERVED;
11 else {
12 seminfo->ts = ts;
13 return TK_NAME;
14 }
15 }
16  

修改为:

1 else if (isalpha(ls->current) || ls->current == '_' || ls->current > 0x80) {
2 /* identifier or reserved word */
3 TString *ts;
4 do {
5 if(ls->current > 0x80)
6 {
7 save_and_next(ls);
8 save_and_next(ls);
9 }
10 else
11 save_and_next(ls);
12 } while (isalnum(ls->current) || ls->current == '_' || ls->current > 0x80);
13 ts = luaX_newstring(ls, luaZ_buffer(ls->buff),
14 luaZ_bufflen(ls->buff));
15 if (ts->tsv.reserved > 0) /* reserved word? */
16 return ts->tsv.reserved - 1 + FIRST_RESERVED;
17 else {
18 seminfo->ts = ts;
19 return TK_NAME;
20 }
21 }
22  

注意我已经打过PATCH2了,可能和实际情况不大一样..不过,代码逻辑很容易,看下,应该也能明白

原文地址:https://www.cnblogs.com/javado/p/1878496.html