| /* |
| * ***************************************************************************** |
| * |
| * Copyright 2018 Gavin D. Howard |
| * |
| * Permission to use, copy, modify, and/or distribute this software for any |
| * purpose with or without fee is hereby granted. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH |
| * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY |
| * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, |
| * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM |
| * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
| * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| * PERFORMANCE OF THIS SOFTWARE. |
| * |
| * ***************************************************************************** |
| * |
| * The dc help text. |
| * |
| */ |
| |
| usage: %s [options] [file...] |
| |
| dc is a reverse-polish notation command-line calculator which supports unlimited |
| precision arithmetic. For details, see this dc's full manual |
| (https://github.com/gavinhoward/bc/blob/master/manuals/dc.md). |
| |
| This dc is (mostly) compatible with the FreeBSD dc and the GNU dc. See the |
| FreeBSD man page (https://www.unix.com/man-page/FreeBSD/1/dc/) and the GNU dc |
| manual (https://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html) for |
| details. |
| |
| This dc has a few differences from the two above: |
| |
| 1) When printing a byte stream (command "P"), this bc follows what the FreeBSD |
| dc does. |
| 2) This dc implements the GNU extensions for divmod ("~") and modular |
| exponentiation ("|"). |
| 3) This dc implements all FreeBSD extensions, except for "J" and "M". |
| 4) Like the FreeBSD dc, this dc supports extended registers. However, they are |
| implemented differently. When it encounters whitespace where a register |
| should be, it skips the whitespace. If the character following is not |
| a lowercase letter, an error is issued. Otherwise, the register name is |
| parsed by the following regex: |
| |
| [a-z][a-z0-9_]* |
| |
| This generally means that register names will be surrounded by whitespace. |
| |
| Examples: |
| |
| l idx s temp L index S temp2 < do_thing |
| |
| Also note that, unlike the FreeBSD dc, extended registers are not even |
| parsed unless the "-x" option is given. Instead, the space after a command |
| that requires a register name is taken as the register name. |
| |
| Options: |
| |
| -e expr --expression=expr |
| |
| Run "expr" and quit. If multiple expressions or files (see below) are |
| given, they are all run. After running, dc will exit. |
| |
| -f file --file=file |
| |
| Run the dc code in "file" and exit. See above. |
| |
| -h --help |
| |
| Print this usage message and exit. |
| |
| -V --version |
| |
| Print version and copyright and exit. |
| |
| -x --extended-register |
| |
| Enable extended register mode. |