Skip to main content

A python implementation of the MUV 2.0 to FuzzBall MUCK MUF compiler.

Project description

This is a pure python implementation of the MUV 2.0 compiler. It takes C-like MUV language source code, and compiles it to the more inscrutable forth-based MUF language, suitable for uploading to an fb6 (or later) Fuzzball MUCK chat server.

The MUV 2.0 Language

Creating MUF programs is an ugly, painful, nearly write-only experience, and that’s coming from the coder who designed most of the language. Why spend massive amounts of time debugging and keeping track of stack items, when you can write code in a more modern, readable language?

Instead of writing cryptic code like:

: showspecies[  -- ret ]
    var obj
    loc @ contents_array
    foreach obj ! pop
        obj @ player? if
            obj @ "species" getpropstr dup not if pop "Unknown" then
            obj @ "sex" getpropstr dup not if pop "Unknown" then
            obj @
            "%-30D %-10s %-30s"
            fmtstring
            me @ swap notify
        then
    repeat
;

You can write:

func showspecies() {
    for (var obj in contents_array(loc)) {
        if (player?(obj)) {
            ftell(
                "%-30D %-10s %-30s",
                obj,
                getpropstr(obj, "sex") || "Unknown",
                getpropstr(obj, "species") || "Unknown"
            );
        }
    }
}

Installation

Install using PyPi:

pip install pymuv

Installing from sources:

python3 setup.py build install

Usage

The muv program expects the input MUV source file to be given on the command-line. The MUF output will, by default, be written to STDOUT. Error messages will be printed to STDERR, and the return code will be non-zero if errors were found:

muv sourcefile.muv >outfile.muf

You can use -w PROGNAME to wrap the output in MUF editor commands:

muv -w cmd-whospecies whospecies.muv >whospecies.muf

Using -o OUTFILE will write the output MUF code to OUTFILE instead of STDOUT:

muv -o whospecies.muf whospecies.muv

Adding a -d to the command-line will add debugging code to the MUF output. Each line of MUV will add code like: "foo.muv:23" pop to the MUF output:

muv -d -o whospecies.muf whospecies.muv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pymuv-0.9.9-py2.py3-none-any.whl (52.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pymuv-0.9.9-py2.py3-none-any.whl.

File metadata

  • Download URL: pymuv-0.9.9-py2.py3-none-any.whl
  • Upload date:
  • Size: 52.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5

File hashes

Hashes for pymuv-0.9.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 827c1730f0e6099e9abd6391f2bea526b89e82a94a690a296c8542f2dd204fe6
MD5 cca71132a8661fd75d70748958d4be6d
BLAKE2b-256 fcb460ab17addfc6da1b37ed144b0e63f0eca6043ad4b0b6dddd366648d0966f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page