Minim

= Minim: A Simple, Low Level, Interpreted Language

Minim was

=Minim=

About
Minim is a simple, low-level, interpreted programming language designed by TheNewComposer as part of a final project for a college Java programming course. The original interpreter was then ported to Kotlin, to improve maintainability. The current version is in the fourth iteration of the language's syntax.

Syntax & Semantics
Minim is a imperative, procedural programming language which, true to it's name, is very minimalist in terms of functionality:

Comments
Line comments are marked by a semicolon, and can appear at any point on a line:

There are no block comments.

Values
In Minim, all operable values are bytes. Numeric literals can come in three styles: Other data types are simulated by conversions to bytes, in conjunction with appropriate operator semantics: Floating-point numbers are not supported.

Ranges
A range is a collection consisting of multiple bytes. A range literal is surrounded by curly braces, and the values are separated by commas:

Preprocessor
Since the only values allowed in Minim are bytes, a preprocessor is used to convert all text literals into a form consisting only of numeric literals. Character literals are converted to a single numeric literal, while string literals are converted to a null-terminated range of numeric literals:

''Note that the boolean literals T and F are not preprocessed. They are simply lexed as byte literals inline.''

Memory
All memory is stored in a one-dimensional, zero-indexed tape of bytes, and is accessed in a similar manner to an array. As such, there are no named variables. They simply have a position along the tape:

Memory accessors can be nested:

As well as single value access, ranges can be accessed in any of three ways:

Operators
Most all standard operators are available, though some operate differently, due to the simplified type system: When it comes to expected boolean operands, 0 is evaluated to false, and any other number evaluates to true.

Statements
All statements are one or more expressions terminated by a period:

Assignment
Used to place any number values into memory:

Unsigned Input
Used to place an unsigned number from input into memory:

Unsigned Output
Used to write a byte, unsigned, to the console:

Signed Input
Used to place an signed number from input into memory:

Signed Output
Used to write a byte, signed, to the console:

ASCII Input
Used to place an ASCII character from input into memory:

ASCII Output
Used to write a byte, as ASCII, to the console:

Label
Used to define a goto label:

Goto
Used for control flow: