zia
: Interpreter for the Zia programming language.
The Zia project aims to develop a programming language that can be used to program itself.
Instead of storing the source code as plain text and editing the raw text (which can easily break
the program), the runtime environment of the interpreter (the Context
) can be saved to disk and
used in other programs. All the programming is done using an interactive shell such as
IZia or via an online IDE
(https://zia-lang.org). The commands sent are interpreted based on the Context
. They are used to
incrementally modify, test and debug the Context
.
Expressions for Zia commands represent a binary tree where parentheses group a pair of expressions and a space separates a pair of expressions.
e.g.
(ll lr) (rl rr)
represents the following binary tree:
/ \
/ \
/ \
/ \ / \
ll lr rl rr
The leaves of the tree can be any unicode string without spaces or parentheses. These symbols may be recognised by the intepreter as concepts or if not used to label new concepts.
Currently, only the lowest-level functionality has been implemented. It's important that programs
are represented consistently and transparently within the Context
in order to achieve a
self-describing system. The syntax shown below may appear awkward but more convenient syntax will
be possible once more functionality is added. For example, the need to group pairs of expressions
in parentheses will be alleviated by functionality to set the relative precedence and associativity
of concepts.
API Documentation
Please refer to https://docs.rs/zia for documentation of the latest released version of zia
.
Testing
To test all non-ignored tests:
To test all tests in the documentation:
To test a specific test:
To run a set of integration tests:
Documentation
To generate API documentation:
You can then view ./target/doc/zia/index.html
in a web browser
To generate internal documentation:
Releasing New Versions
In ./Cargo.toml
:
[]
= x.y.z
Then run in the terminal the following