diff options
| -rw-r--r-- | doc/cpsc.md | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/doc/cpsc.md b/doc/cpsc.md new file mode 100644 index 0000000..0f45377 --- /dev/null +++ b/doc/cpsc.md @@ -0,0 +1,74 @@ +% CPSC(1) + +# NAME + +cpsc - compile and run CIE pseudocode + +# SYNOPSIS + +**cpsc** [**-r**] [**-o** *output*] *source* + +# DESCRIPTION + +Compile one pseudocode source file to LLVM IR. Options may appear before or +after the source path. Source input from stdin is not supported. + +Without **-o** or **-r**, replace the source filename's extension with `.ir` +and save the output beside the source file. + +# OPTIONS + +**-o** *output* +: Save IR to the specified path. May be specified only once. With **-r**, + keep this file even if execution fails. + +**-r** +: Run the compiled program using `lli` from PATH. Without **-o**, use a + temporary IR file and delete it afterward, including on execution failure. + The program inherits stdin, stdout and stderr; `INPUT` can read terminal + or piped input. + +# EXAMPLES + +Compile and save `test.ir` beside `test.cps`: + +```sh +cpsc test.cps +``` + +Choose the output path: + +```sh +cpsc test.cps -o result.ir +``` + +Run without saving permanent IR: + +```sh +cpsc test.cps -r +``` + +Save IR and run it: + +```sh +cpsc test.cps -r -o result.ir +``` + +# EXIT STATUS + +**0** +: Compilation succeeded. Invoking `cpsc` with no arguments also exits + silently with status 0. + +**1** +: An argument, file, compilation or execution-launch error occurred, + including when `lli` cannot be found in PATH. + +With **-r**, return `lli`'s exit status. Failure to launch it or a process +crash returns 1. + +# NOTES + +Compiler diagnostics go to stderr. Failed compilation does not write IR. +Successful compilation overwrites an existing output file, but an output path +that refers to the source file (including a symbolic or hard link) is rejected. |
