2009-12-05 11 views

Respuesta

3

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.

1

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.

3

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.

+0

Originalmente pregunté esto porque pensaba que shlex era una herramienta de análisis de línea de comandos :) – RCIX