TinyML: A Markup Language for Technical Writing

TinyML is designed for writing technical documentations and blogs.

The TinyML package consists of a text format (.tml) and a supporting program (TinyML). The format allows any text content to be edited in place without using escaping sequences. The format uses a syntax that is clean and as powerful as XML. The supporting program performs a conversion from "TinyML"-formatted files (or strings) into HTML-formatted files (or strings), and can do various transformations during the conversion.

Here is a very simple example (assuming a unix-like shell environment):

$ TinyML Compile String "(p.A light year is a measure of (b.distance).)"
<p>A light year is a measure of <b>distance</b>.</p>

The general syntax for TinyML format is this:

(Tag Key=|Value|.Content)

Please note that a dot separates the "head" and the "body" of a TinyML environment. The content ("body") can contain anything without escaping. If there are parenthesis in the content, we can just add a "@" character to both the beginning and the end of the environment:

(@Code Lang=|C| FileName=|Hello.c|.
#include <stdio.h>

int main()
{
    printf("Naughty!\n");
}
@)

What if we have strings like "(@" and "@)" in the content? We add more matching "@" characters:

(@@div.
    Some weird strings: "(@", "@)".
@@)

What if we want to include even weirder strings like "(@@" and "@@)" in the content? You guessed it, we add even more matching "@" characters:)

(@@@div.
    Some even weirder strings: "(@@", "@@)".
@@@)

As long as the content is known at the time of writing (this is not hard to achieve), nothing needs to be escaped. So the content can always be edited in place within a TinyML document. This makes writing documentations for TinyML in TinyML very easy. In fact, the web page you are reading is written in TinyML.

Hello from Stockholm.