Lua эквивалентен shlex?
-
13-09-2019 - |
Вопрос
Есть ли эквивалент Lua для Python? шлекс библиотека?
Решение
Я нашел ссылку на проект под названием LuaParse:
LuaParse включает в себя Blex, лексер общего назначения на чистом Lua, и lparse, парсер на чистом Lua Lua, а также множество служебных функций и прототип системы управления пакетами.
Возможно, это удовлетворит ваши потребности.
Другие советы
Смотрите также LPeg.
Если цель состоит в том, чтобы проанализировать язык, подобный оболочке (что, по-видимому, является фактической целью разработки shlex), то написание грамматики на LPeg как лхф предлагает вероятно, это правильный ответ.Однако не так-то просто написать грамматику, которая полностью реализует мешанину правил многоуровневого цитирования, которым на самом деле следуют оболочки.Пока вы не ожидаете правильного анализа всех допустимых /bin/sh
(или хуже, csh
) скриптов, написать полезную грамматику должно быть несложно.
Если цель на самом деле состоит в том, чтобы создать разумный «маленький язык» для файлов конфигурации или сценариев приложений, то я бы предположил, что сам Lua уже очень близок к этому языку.Первоначально он был разработан с учетом описания данных, и его синтаксический анализатор вполне способен обрабатывать даже довольно большие объявления данных.Видеть раздел 10.1 ПиЛ для примера того, как использовать Lua таким образом.Позже глава 25 описывает интеграцию Lua с более крупным приложением для конкретного варианта использования конфигурации и демонстрирует ряд подходов.
Смотрите также gg
, mlp
и clopts
модули из Металуа.
Это «не совсем» Lua (поскольку Metalua — отдельный язык), но он может дать некоторую полезную информацию.Кроме того, код Metalua компилируется в простой байт-код Lua, поэтому его можно использовать повторно.