aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/cpsc.md74
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.