git @ Cat's Eye Technologies PL-GOTO.NET / master README.md
master

Tree @master (Download .tar.gz)

README.md @masterview rendered · raw · history · blame

PL-{GOTO}.NET
=============

<!--
SPDX-FileCopyrightText: Chris Pressey, the original author of this work, has dedicated it to the public domain.
For more information, please refer to <https://unlicense.org/>
SPDX-License-Identifier: Unlicense
-->

_Try it online_ [@ catseye.tc](https://catseye.tc/installation/PL-%7BGOTO%7D)
| _See also:_ [Exanoke](https://codeberg.org/catseye/Exanoke#exanoke)

- - - -

This is the reference distribution of PL-{GOTO}.NET, a literate Haskell
program which compiles a program written in PL-{GOTO} to a [CIL][] file which
can then be assembled by `ilasm` to produce a .NET executable.  PL-{GOTO}
is a pedagogical language, described in Brainerd and Landweber's _Theory of
Computation_ (1974; ISBN 0471095850), in which it is possible to express
only computations which are primitive recursive.

The source code of the compiler is in the file
[`src/PLexceptGOTOdotNET.lhs`](src/PLexceptGOTOdotNET.lhs).  Being written
in literate Haskell, it also serves as documentation for the compiler.

A [test suite](tests/PLexceptGOTOdotNET.md) written in
[Falderal][] format can be found in the `tests` directory and
can be run with the `test.sh` script in the root directory.

The `bin` directory contains
[`bin/PLexceptGOTOdotNET-loadngo`](bin/PLexceptGOTOdotNET-loadngo),
a shell script that demonstrates the end-to-end usage of the compiler.
You'll need `ilasm` installed.  On Ubuntu, this is provided by the
`mono-devel` package.

The materials in this distribution are in the public domain; see the file
[LICENSES/Unlicense.txt](LICENSES/Unlicense.txt) for more information.

[CIL]: https://en.wikipedia.org/wiki/Common_Intermediate_Language
[Falderal]: https://catseye.tc/node/Falderal