package sexp

  1. Overview
  2. Docs
S-expression swiss knife

Install

Dune Dependency

Authors

Maintainers

Sources

v0.17.0.tar.gz
sha256=c0ad559a13c4eed11f25446016fc776ea147527d186d5b713fcc8d201d26ce6b

Description

A suite of tools for working with s-expressions from the command line. It contains subcommands for pretty printing, querying, and modifying sexps, as well as some conversions to and from other formats.

Published: 26 May 2024

README

Sexp - The s-expression toolkit

A suite of tools for working with s-expressions from the command line. It contains subcommands for pretty printing, querying, and modifying sexps, as well as some conversions to and from other formats.

See also:

$ sexp -help
the s-expression toolkit

  sexp SUBCOMMAND

=== subcommands ===

  assemble        Assemble a lists of parts into sexps. Sexp part lists are
                  separated by newlines.
  change          transform an s-expression
  flatten         Flatten a list of sexp into its parts. Each part on its own
                  line.
  get             extract parts of an s-expression
  of-xml          convert XML from stdin into an s-expression
  pp              Pretty print S expressions in a human-friendly way.
  print           pretty-print an s-expression
  query           query an s-expression
  resolve-macros  resolve macros in a sexp
  restructure     recover structure of an s-expression
  select          Use CSS-style selectors to traverse sexp trees
  to-csv          converts a list of record s-expressions into CSV format
  validate        validate a sequence of s-expressions on stdin
  version         print version information
  help            explain a given subcommand (perhaps recursively)

Examples

Colorize the output of ocamlc -dlambda:

$ ocamlc -dlambda -c fact.ml 2>&1 | sexp pp -color
(setglobal Fact! (
  letrec
  (fact/1008 (
    function n/1009 (
      if (== n/1009 0) 1 (* n/1009 (apply fact/1008 (- n/1009 1))))))
  (makeblock 0 fact/1008)))

Extract the list of command run by jenga:

$ cat query.sexp
(pipe
  (variant Job_started 1)
  (index 1)
  (wrap (cat (field prog) (pipe (field args) each)))
)
$ sexp query -file query.sexp < .jenga/.jenga.debug
(ocamlc -c foo.mli)
(ocamlc -c foo.ml)
...

Dependencies (16)

  1. dune >= "3.11.0"
  2. shell >= "v0.17" & < "v0.18"
  3. sexplib >= "v0.17" & < "v0.18"
  4. sexp_select >= "v0.17" & < "v0.18"
  5. sexp_pretty >= "v0.17" & < "v0.18"
  6. sexp_macro >= "v0.17" & < "v0.18"
  7. sexp_diff >= "v0.17" & < "v0.18"
  8. re2 >= "v0.17" & < "v0.18"
  9. ppx_jane >= "v0.17" & < "v0.18"
  10. jsonaf >= "v0.17" & < "v0.18"
  11. csvfields >= "v0.17" & < "v0.18"
  12. core_unix >= "v0.17" & < "v0.18"
  13. core_kernel >= "v0.17" & < "v0.18"
  14. core >= "v0.17" & < "v0.18"
  15. async >= "v0.17" & < "v0.18"
  16. ocaml >= "5.1.0"

Dev Dependencies

None

Used by

None

Conflicts

None

OCaml

Innovation. Community. Security.