Skip to content

jbearer/blimp

Repository files navigation

bl:mp

A minimalist, block-oriented, imperative language.

Project Structure

The bl:mp project is divided into several sections:

  • docs Documentation on the bl:mp language -- what it is, and why it is. This will include an informal description of the language and some brief tutorials on how to use it, as well as a semi-formal semantics, which is considered the "official" bl:mp specification.

  • core An implementation of the bl:mp core language semantics as defined in the spec. This sub-project builds a library libblimp which other projects can link to embed and manipulate a bl:mp interpreter at a high level (parsing and executing programs) or a low level (directly manipulating interpreter state).

  • prelude A pure bl:mp library which implements some useful convenience features.

  • system A plugin library that implements some bl:mp primitives that are not part of the core language specification, but which are necessary to write real-world programs, such as I/O functions and interfaces to system libraries. This sub-project builds bl:mp extensions which can be loaded into the interpreter.

  • blimp A complete bl:mp interpreter. This sub-project builds a standalone executable which links to libblimp and uses it to drive an interpreter.

  • test A multi-purpose test suite. This sub-project contains a number of bl:mp programs which have been annotated to document their expected behavior. These programs can be used to sanity-check the semantics, or to test the interpreter by comparing against the semantics, the annotations, or both. This sub-project builds a standalone executable which runs the test suite and produces a report.

  • utils A library which provides some common functionality used by more than one of the other subprojects.

  • editors Support for bl:mp in various editors. Currently only Sublime is supported.

Building

To build all projects:

mkdir bld-debug
cd bld-debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

To run all tests:

cd bld-debug
ctest

Note: to run the full test suite, you must have Racket installed. If you don't, CTest will run the tests which can be run without Racket.

About

The BLock-oriented :MPperative language

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages