An unconventional programming language with a syntax resembling a poorly written Halloween story.
Here is an example of the process, starting from a source file implementing the game of guessing a number. It shows the compilation and execution process.
Halloween.Storybook.Demo.mp4
To build the transpiler, you can run
sbcl --script build.lisp
to create a halloween-storybook.exe file corresponding to your system.
Then, you can compile files by running
./halloween-storybook.exe [INPUT FILENAME] [OUTPUT FILENAME]
This language does not exist outside of this project. It has mostly familiar semantics, but with some weird grammatical rules due to the nature of the project. You should look through the examples folder if you want to see some (relatively simple) examples of code
This language implements a subset of the functions from common lisp, but in a distinctly procedural style to match the goal of having a storytelling vibe.
| Concept | Translation |
|---|---|
| Variables | Graveyards |
| nil | Nobody |
| True | The user |
| Integers | Zombies |
| Floats | Ghosts |
| Characters | Whispers |
| String | Curse |
| Functions | fable |
| Macros | Storybook |
| Lists | Ghost Trains |
| Maps | Crypts |
| Arrays | Mausoleums |
| Operation | Translation |
|---|---|
| = | "..." had the same feeling as "..." |
| /= | "..." was completely different from "..." |
| "..." was lesser than "..." |
|
| <=t;= | "..." was no better than "..." |
| >gt; | "..." was greater than "..." |
| >=t;= | "..." was no less than "..." |
| + | "..." merged with "..." |
| - | "..." had from it exorcised "..." |
| * | "..." was conflagrated by "..." |
| / | "..." was split into groups of "..." |
| mod | "..." were left as a group of those who couldn't make a group of "..." |
| defvar | observe the faraway graveyard "..." |
| 1+ | a new ghoul joined "..." |
| 1- | a ghoul left from "..." |
| setf | Invade "..." with "..." |
| let* | Let me describe ["...", which is "..."]* |
| abs | the ghouls, spirit world or not in "..." |
| random | a blind apparition of at most "..." |
| max | the largest group in "..." |
| min | the smallest group in "..." |
| when | pretending that "..." then "..." |
| if | if only "..." then "...", but in reality "..." |
| and | "..." in addition to "..." |
| string | the chant "..." |
| or | "..." but alternatively that "..." |
| not | it is untrue that "..." |
| defun | Let me tell you a fable called "..." about "..." but also "..."... {fn body} the end. |
| format | greet "..." with "..." about "..." |
| read-line | the trick or treat cry |
- All expressions will be interpreted in infix notation
- There are no parentheses (if you need this, you can assign intermediate results to a new variable)
- All lines must be terminated by a period
- Extra whitespace will be ignored