r4d 3.1.0

Text oriented macro processor
Documentation
### Strict related modes

Processor's error behaviour can be either **strict, lenient or purge**.

Default mode is strict mode. Within strict mode, certain behaviours is not
allowed. On strict mode,

- Overriding environment variables is an error
- Overriding existing macros is an error
- Failed executions of macros will interrupt a whole processing ( panics )
- Getting non-existent environment arguments yields a warning

Lenient mode is more flexible than strict mode.

- Overriding environment variables is not an error
- Overriding existing macro is not an error.
- Failed macros will be pasted as literal text.

Purge is a special lenient mode that purges non-existent macros without any
error messages or left-over of macros.

```
% On lenient mode
$nono()
% On purge mode nothing is printed.
$nono()
===
$nono()
```

### Hygiene modes.

By default processing is not hygienic, which means that macro's behaviour can
change according to external variance.

For example, following macro can fail according to inner macro's existence.

```
$define(unsafe=$some_random_macro())
$unsafe()
===
% If some_random_macro exists it succeeds. If not, if fails.
```

You can configure this behaviour through processor's method with following
variants.

**Macro hygiene** mode set every further runtime modification as
volatile(temporary). Within hygiene mode, runtime macros gets automatically
deleted after every macro call which resides in first level

**Input hygiene** mode clears every volatile macro after per input. This is
mostly useful in a context of library.

**Aseptic** mode disables runtime macro defintion. You cannot define any
runtime macro and only able to use pre-defined runtime macros.