打印出所有Lua保留关键字

使用下面的代码可以打印出当前环境中定义的所有 Lua 关键词 (and, break, do, else, elseif, end, false, for, function, if, in, local, nil, not, or, repeat, return, then, true, until, while):

for k, v in pairs(_G) do
  if type(v) == "function" then
    local info = debug.getinfo(v, "S")
    local src = info.source
    if src:sub(1,1) == "@" then
      src = src:sub(2)
    end
    if src == "[C]" then
      src = "builtin"
    end
    if info.linedefined <= 0 then
      print(k .. ": " .. src)
    else
      print(k .. ": " .. src .. ":" .. info.linedefined)
    end
  end
end
点赞
用户936986
用户936986

不,因为保留关键字在内存中不对应任何对象-它们只存在于解析器中。每个版本的手册都有完整的列表,通常在“词法约定”下。例如,对于Lua 5.1,它位于http://www.lua.org/manual/5.1/manual.html#2.1

2016-02-01 12:16:05