morbig

A trustworthy parser for POSIX shell
README

A trustworthy static parser for POSIX shell

Morbig is a parser for shell scripts written in the POSIX shell script
language. It parses the scripts statically, that is without executing
them, and constructs a concrete syntax tree for each of them. The
concrete syntax trees are built using constructors according to the
shell grammar of the POSIX standard.

Download

    git clone git@github.com:colis-anr/morbig.git

License and Copyright

please see the file COPYING

Are you in a hurry?

Yes? Pull our docker image:

   docker pull colisanr/morbig:latest

Then, define the following shell function:

   morbig () {
      D=$(cd "$(dirname "$1")"; pwd)
      B=$(basename "$1")
      docker run \
         -v "$D":/mnt \
         colisanr/morbig:latest --as simple /mnt/"$B"
   }

After that, you should be able to run morbig like this:

   morbig my-script.sh

This will create a JSON file named my-script.sh.sjson.

You can also build a local docker image from the root of this repository:

   docker build -t morbig . # to build a docker image with morbig inside.

Now if you want to use more features of morbig, take the time
to follow the building instructions of the next section.

Building instructions

Dependencies

morbig depends on the following software:

  • dune

  • menhir

  • ocaml (≥ 4.04)

  • odoc (for documentation only)

  • yojson and ppx_deriving_yojson

  • visitors

Building

make

Installing

make install            # for opam-based environments
PREFIX=... make install # for system-wide install

Testing

make check
Install
Sources
0.10.3.tar.gz
md5=93ad6f7e3e112e8ffc1b838250085a11
sha512=ee51f1b257b14a780c28bee0190f58c7af9e9bb7393f2a2a47d5b5a02fcb24ca0fb37e8cc51408eafe977e7ea2ee53b1570e3b5345ed74975973c909acdc3507
Dependencies
yojson
< "2.0.0"
visitors
>= "20180513"
odoc
with-doc
ocaml
>= "4.04"
menhir
>= "20180538"
dune
>= "1.4.0"
Reverse Dependencies
morsmall
>= "0.2.0"