Lua源代码操作:获取给定行的最内层函数位置。

我有一个符号正确的 Lua 5.1 源代码文件。

我有一个位置 (行和字符偏移量),在该文件中。

我需要得到一个字节偏移量,该字节偏移量是包含该位置的最内层 function() 的结尾括号 (或查明该位置属于文件的主块)。

例如:

local function foo()
                    ^ 结果
  print("bar")
           ^ 输入
end
local foo = function()
                      ^ 结果
  print("bar")
           ^ 输入
end
local foo = function()
  return function()
                   ^ 结果
    print("bar")
             ^ 输入
  end
end

......以此类推。

我如何能够做到这样的鲁棒性?

点赞