// SPDX-FileCopyrightText: 2017-2019 Philippe Proulx <pproulx@efficios.com>
//
// SPDX-License-Identifier: CC-BY-SA-4.0

The format of 'PARAMS' is a comma-separated list of 'NAME'='VALUE'
assignments:

[verse]
'NAME'='VALUE'[,'NAME'='VALUE']...

'NAME'::
    Parameter name (C~identifier plus the `:`, `.`, and `-`
    characters).

'VALUE'::
    One of:
+
--
* `null`, `nul`, `NULL`: null value.

* `true`, `TRUE`, `yes`, `YES`: true boolean value.

* `false`, `FALSE`, `no`, `NO`: false boolean value.

* Binary (`0b` prefix), octal (`0` prefix), decimal, or hexadecimal
  (`0x` prefix) unsigned (with `+` prefix) or signed 64-bit integer.

* Double precision floating point number (scientific notation is
  accepted).

* Unquoted string with no special characters, and not matching any of
  the null and boolean value symbols above.

* Double-quoted string (accepts escape characters).

* Array, formatted as an opening `[`, a comma-separated list of 'VALUE',
  and a closing `]`.

* Map, formatted as an opening `{`, a comma-separated list of
  'NAME'='VALUE' assignments, and a closing `}`.

You may put whitespaces around the individual `=` (assignment), `,`
(separator), `[` (array beginning), `]` (array end), `{` (map
beginning), and `}` (map end) characters.
--

Example:

[role="term"]
----
--params='many=null, fresh=yes, condition=false, squirrel=-782329,
          play=+23, observe=3.14, simple=beef,
          needs-quotes="some string",
          escape.chars-are:allowed="a \" quote",
          things=[1, "hello", 2.71828],
          frog={slow=2, bath=[bike, 23], blind=NO}'
----

IMPORTANT: Like in the example above, make sure to single-quote the
whole argument when you run this command from a shell, as it can contain
many special characters.
