Луа эквивалентно шлексу? - PullRequest
       23

Луа эквивалентно шлексу?

6 голосов
/ 05 декабря 2009

Есть ли Lua-эквивалент для библиотеки shlex python?

Ответы [ 4 ]

4 голосов
/ 06 декабря 2009

См. Также LPeg .

3 голосов
/ 08 декабря 2009

Если цель состоит в том, чтобы проанализировать подобный оболочке язык (который, по-видимому, является реальной целью проектирования shlex), тогда написание грамматики в LPeg , как указывает lhf, , вероятно, является правильным ответом , Однако не так просто написать грамматику, которая полностью реализует мешанину многослойных правил цитирования, которым фактически следуют оболочки. Если вы не собираетесь правильно анализировать все действительные сценарии /bin/sh (или, что еще хуже, csh), написать простую грамматику будет просто.

Если цель на самом деле - создать разумный «маленький язык» для файлов конфигурации или сценариев приложения, то я бы предположил, что сам Lua уже очень близок к тому, чтобы быть этим языком. Первоначально он был разработан с учетом описания данных, и его синтаксический анализатор достаточно искусен в обработке даже довольно больших объявлений данных. См. раздел 10.1 PiL для одного примера того, как использовать Lua таким образом. Более поздняя глава 25 описывает интеграцию Lua с более крупным приложением для конкретного случая использования конфигурации и демонстрирует ряд подходов.

3 голосов
/ 05 декабря 2009

Я нашел ссылку на проект под названием LuaParse :

LuaParse включает в себя Blex, лексер общего назначения pure-Lua, и lparse, парсер чистого Lua Lua, а также различные служебные функции и систему управления пакетами прототипов.

Может быть, это будет соответствовать вашим потребностям.

1 голос
/ 06 декабря 2009

См. Также gg, mlp и clopts модули от Metalua .

Это «не совсем» Lua (поскольку Metalua - это отдельный язык), но может дать некоторые полезные идеи. Также код Metalua компилируется в простой байт-код Lua, поэтому его можно использовать повторно.

...