2009-12-05 13 views

risposta

3

Ho trovato un riferimento a un progetto chiamato LuaParse:

LuaParse comprende Blex, un obiettivo generale puro-Lua lexer e lparse, una pura Lua Lua parser, così come una varietà di funzioni di utilità e un prototipo di sistema di gestione dei pacchetti.

Forse questo soddisferà le vostre esigenze.

1

Vedere anche gg, mlp e clopts moduli da Metalua.

Questi sono "non-abbastanza" Lua (come Metalua è una lingua separata), ma possono fornire alcune utili informazioni. Anche il codice Metalua compila nel semplice bytecode di Lua, quindi è riutilizzabile.

3

Se l'obiettivo è analizzare un linguaggio di tipo shell (che sembra essere l'obiettivo di progettazione effettivo di shlex), scrivere una grammatica in LPeg come lhf suggests è probabilmente la risposta giusta. Tuttavia, non è così facile scrivere una grammatica che implementa completamente l'assortimento di regole di quotatura a strati che le shell effettivamente seguono. Finché non ti aspetti di analizzare correttamente tutti gli script validi /bin/sh (o peggio, csh), dovrebbe essere semplice scrivere una grammatica che sia utile.

Se l'obiettivo è in realtà creare un "linguaggio piccolo" ragionevole per i file di configurazione o lo scripting dell'applicazione, suggerirei che Lua stessa è già molto vicina a quella lingua. È stato originariamente progettato tenendo presente la descrizione dei dati e il suo parser è abbastanza abile nel gestire anche dichiarazioni di dati abbastanza grandi. Vedi section 10.1 of PiL per un esempio di come usare Lua in questo modo. Il successivo chapter 25 descrive l'integrazione di Lua con un'applicazione più grande per il caso d'uso specifico della configurazione e dimostra un numero di approcci.

+0

Inizialmente l'ho chiesto perché pensavo che shlex fosse uno strumento di analisi della riga di comando :) – RCIX