Легко ли найти все строковые литералы в файле Lua? - PullRequest
1 голос
/ 15 апреля 2019

В моем проекте я считаю очень полезным, если есть способ найти все строковые литералы в файле Lua, потому что моя команда требует, чтобы каждый строковый литерал, содержащий любой неанглоязычный символ, был помещен в некоторые заданные файлы определений, и яиногда нарушает это правило.Если такой способ доступен, то я могу дополнительно изучить их и легко извлечь из них неанглийские символы.«Найти» здесь, конечно, означает выводить позиции в консоли или файле.

Конечно, наиболее очевидный способ - найти все двойные кавычки в данном файле Lua, но это будет включать строковые литералыв комментариях, и это тоже слишком брутально.Интересно, есть ли какой-нибудь элегантный способ добиться этого?Большое спасибо!

1 Ответ

2 голосов
/ 15 апреля 2019

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...