Lua文件中定位所有字符串字面量是否有易于定位的方法?

在我的项目中,如果有一种方法能够定位Lua文件中的所有字符串字面量是非常有用的,因为我的团队要求将包含任何非英文字符的字符串字面量放置在某些规定的定义文件中,而我偶尔会违反这个规则。如果有这样的方法,那么我就可以进一步检查它们并轻松提取那些具有非英文字符的字符串。这里的“定位”当然是指在控制台或文件中输出它们的位置。

当然,最明显的方法是在给定的Lua文件中查找所有双引号,但这将包括注释中的字符串字面量,并且它也太过粗暴。那么我想知道是否有一种优雅的方法来实现这一点?非常感谢!

点赞
用户107090
用户107090

你可以使用 luac -p -l -l foo.lua,它可以列出在 foo.lua 中使用的常量,包括字符串。

如果你可以使用外部工具,可以尝试使用我的 ltokenp,它使用 Lua 分词器。

下面是一个示例脚本。将其保存为 strings.lua,并使用 ltokenp -s strings.lua foo.lua bar.lua 处理你的文件。

-- token filter: extract strings

local FILE

function FILTER(line,token,text,value)
    if text=="<file>" then
        FILE=value:sub(2)
    elseif text=="<string>" then
        print(FILE,line,string.format("%q",value))
    end
end
2019-04-15 11:50:44