2012-10-24 7 views
7

Qualcuno sa di una libreria Haskell in grado di analizzare gli script Bash arbitrari?Libreria Haskell per l'analisi degli script di Bash?

Una ricerca sommaria di Hackage indica che c'è un pacchetto chiamato bash per scrittura script, ma non vedo niente per analisi loro.

Fondamentalmente ho appena fatto una grande raccolta di script Bash scaricati su di me, e mi piacerebbe fare qualche analisi del codice su di esso. Ma il primo stadio è ovviamente quello di essere in grado di analizzare questa roba.

Non conosco Bash molto bene personalmente. Suppongo che io possa sedermi e passare attraverso la volumosa pagina di manuale per ottenere la grammatica completa di BNF. (Immagino sia molto complesso, data la storia lunga e retrocompatibile della shell.) Mi stavo chiedendo se qualcun altro ha già fatto questo lavoro per me ...

+4

Buona fortuna. Ne avrai bisogno se scrivi tu stesso il parser. – Satvik

+0

Penso che sarebbe meglio provare a guardare il codice bash e lavorare dal parser lì. La probabilità che esista un parser di Haskell bash sembra remota. Ci sono possibili librerie che potresti usare nativamente da Haskell per ottenere un AST. Possibilità: [libbash] (http://dev.gentoo.org/~qiaomuf/libbash.html); [JBash] (http://code.google.com/p/jbash/); [qualcun altro che vuole scrivere un parser] (https://bbs.archlinux.org/viewtopic.php?id=101893), ecc. – Orbling

+0

Sono script di bash o script di shell? Perché la sintassi della shell POSIX è più semplice e l'algoritmo di parsing è descritto nella specifica su opengroup. – singpolyma

risposta

4

Forse estendere language-sh.

Language.Sh è una raccolta di moduli per l'analisi e la manipolazione delle espressioni nella grammatica della shell. Questo fa parte di un progetto più ampio, shsh. Si noti che l'API è alquanto instabile fino a quando non si raggiunge la versione 1.0.