¿Hay un equivalente Lua para la biblioteca shlex de python?Lua equivalente a shlex?
Respuesta
I conocer una referencia a un proyecto llamado LuaParse:
LuaParse incluye Blex, un propósito general pura-Lua lexer, y lparse, a-Lua puro Lua analizador, así como una variedad de funciones de utilidad y un prototipo de sistema de gestión de paquetes.
Quizás esto satisfaga sus necesidades.
Véase también LPeg.
Véase también gg
, mlp
y clopts
módulos de Metalua.
Esas son Lua 'no del todo' (como Metalua es un idioma separado), pero puede proporcionar algunas ideas útiles. También el código de Metalua se compila en un código de bytes simple de Lua, por lo que es reutilizable.
Si el objetivo es analizar un lenguaje similar a un intérprete de comandos (que parece ser el objetivo de diseño real de shlex) entonces escribir una gramática en LPeg como lhf suggests es probablemente la respuesta correcta. Sin embargo, no es tan fácil escribir una gramática que implemente por completo el batiburrillo de las reglas de cotización en capas que realmente siguen las cáscaras. Siempre que no espere analizar correctamente todos los scripts /bin/sh
(o peor, csh
), debería ser fácil escribir una gramática que sea útil.
Si el objetivo es realmente crear un "pequeño lenguaje" sensible para los archivos de configuración o secuencias de comandos de la aplicación, entonces sugiero que Lua ya está muy cerca de ser ese lenguaje. Originalmente fue diseñado con la descripción de datos en mente, y su analizador es bastante hábil para manejar incluso declaraciones de datos bastante grandes. Consulte section 10.1 of PiL para ver un ejemplo de cómo usar Lua de esta manera. El último chapter 25 describe la integración de Lua con una aplicación más grande para el caso de uso específico de la configuración, y demuestra una serie de enfoques.
- 1. Lua equivalente de virtualenv?
- 2. shlex alternative for Java
- 3. Cadena Lua a int
- 4. Compilador Lua a JVM?
- 5. Lua, ¿qué es Lua?
- 6. ¿Cómo se hace referencia a un objeto en Lua?
- 7. Código de sangría Lua en Lua
- 8. Concatenación de cadenas en Lua
- 9. Lua = operador como impresión
- 10. portar a Lua 5.2, LUA_GLOBALSINDEX problemas
- 11. Lua: convirtiendo de float a int
- 12. Lua - Operaciones lógicas de bit a bit
- 13. Lua salto a la línea derecha
- 14. iterar a través de la tabla Lua
- 15. función Lua
- 16. Lua - inicializando
- 17. ¿Cómo puedo pasar parámetros a un archivo Lua al cargarlo desde otro archivo Lua?
- 18. ¿Cómo creo una tabla Lua en C++ y la paso a una función Lua?
- 19. pitón equivalente a sed
- 20. JodaTime equivalente a DateUtils.truncate()
- 21. Python equivalente a find2perl
- 22. equivalente comprobado a IllegalArgumentException?
- 23. WPF equivalente a TextRenderer
- 24. MSVC equivalente a __builtin_popcount?
- 25. Flecha equivalente a mapM?
- 26. MVC Equivalente a Page_Load
- 27. Equivalente a 'este' puntero
- 28. C# equivalente a shell_exec
- 29. Haskell equivalente a Boost.Fusion
- 30. Java equivalente a app.config?
Originalmente pregunté esto porque pensaba que shlex era una herramienta de análisis de línea de comandos :) – RCIX