TMMLPTEALPAITAFNFAL

TMMLPTEALPAITAFNFAL ("The Multi-Million Language Project To End All Language Projects And Isn't That A Fine Name For A Language") is not a single language, it is approximately 100.000.000.000.000.000.000.000.000.000.000 languages in one small 26K compiler.  The basic syntax is very simple, however, based on a unique-day-index (relative to january 1, 1900) arbitrary instruction subsets and arbitrary restrictions on identifiers are introduced, thus creating a new language syntax every day ! You no longer have to be bored at work, because each day you can completely rewrite all of your TMMLPTEALPAITAFNFAL applications ! The unemployment rate could be reduced significantly if major companies were to introduce TMMLPTEALPAITAFNFAL programming in their work.

Features

You can get the unique syntax for today by typing

c:\> TMMLPTEALPAITAFNFAL HELP

at a command prompt. For example, the syntax for today, October 13, 2000, read:

Instead, the syntax for October 14, 2000, reads:

Download

You can download the Win32 distribution, complete with sourcecode and binaries, here.

NEW: You can download the Linux distribution, complete with sourcecode and binaries, here.

Syntax

The syntax looks pretty much like an obsolete basic dialect, with small INTERCAL-like diamonds such as "IF-THEN-UNLESS" and "WHILE-DO-PROVIDED". A sample Hello World application that could be used if all restrictions were disabled:

    DECLARE CELL 100 AS READPOS
    DECLARE 10 AS NEWLINE
    WRITE CHAR NEWLINE
    COPY "Hello, World" TO CELL 0
    COPY 0 TO READPOS
    WHILE READPOS INDIRECT DO GOSUB 300
    WRITE CHAR NEWLINE
    RETURN
LINE 300: WRITE CHAR READPOS INDIRECT
    ADD 1 TO READPOS
    RETURN

But of course the program won't run on most days of most years of the next 20 millenia. Here is the syntax for the complete interpreter:

STATEMENT
[LINE_NUMBER] CONTROL_LOGIC | MATH_STATEMENT | IO_STATEMENTS | DECLARATION
DECLARATION
'DECLARE' NUMERIC 'AS' NAME
NAME
NC { (NC | DECINT) }
NC
<non-numeric printable ASCII char>
CONTROL_LOGIC
BRANCH_STATEMENT | IF_FAMILY | WHILE_FAMILY
IF_FAMILY
IF_THEN | IF_THEN_ELSE | IF_THEN_UNLESS | IF_THEN_PROVIDED
WHILE_FAMILY
WHILE_DO | WHILE_DO_UNLESS | WHILE_DO_PROVIDED | UNLESS_DO | REPEAT_UNTIL | REPEAT_UNLESS | DO_WHILE |  DO_UNTIL | DO_UNLESS | UNTIL_DO
IF_THEN
'IF' BOOLEAN_EXPRESSION 'THEN' STATEMENT
IF_THEN_ELSE
'IF' BOOLEAN_EXPRESSION 'THEN' STATEMENT 'ELSE' STATEMENT
IF_THEN_UNLESS
'IF' BOOLEAN_EXPRESSION 'THEN' STATEMENT 'UNLESS' BOOLEAN_EXPRESSION
IF_THEN_PROVIDED
'IF' BOOLEAN_EXPRESSION 'THEN' STATEMENT 'PROVIDED' 'THAT' BOOLEAN_EXPRESSION.
WHILE_DO
'WHILE' BOOLEAN_EXPRESSION 'DO' STATEMENT.
WHILE_DO_UNLESS
'WHILE' BOOLEAN_EXPRESSION 'DO' STATEMENT 'UNLESS' BOOLEAN_EXPRESSION
WHILE_DO_PROVIDED
'WHILE' BOOLEAN_EXPRESSION 'DO' STATEMENT 'PROVIDED' BOOLEAN_EXPRESSION
UNLESS_DO
'UNLESS' BOOLEAN_EXPRESSION 'DO' STATEMENT
UNTIL_DO
'UNTIL' BOOLEAN_EXPRESSION 'DO' STATEMENT
REPEAT_UNTIL
'REPEAT' STATEMENT 'UNTIL' BOOLEAN_EXPRESSION
REPEAT_UNLESS
'REPEAT' STATEMENT 'UNLESS' BOOLEAN_EXPRESSION
DO_WHILE
'DO' STATEMENT 'WHILE' BOOLEAN_EXPRESSION
DO_UNTIL
'DO' STATEMENT 'UNTIL' BOOLEAN_EXPRESSION
DO_UNLESS
'DO' STATEMENT 'UNLESS' BOOLEAN_EXPRESSION
IO_STATEMENTS
READ | WRITE
WRITE
'WRITE' ('CHAR'|'INTEGER') NUMERIC
READ
'READ' ('CHAR'|'INTEGER') NUMERIC
BOOLEAN_EXPRESSION
NUMERIC [ ('>'|'<'|'='|'<>'|'<='|'>=') NUMERIC]
MATH_STATEMENT
ADD | SUB | MUL | MOD | DIV | COPY | NAND
ADD
'ADD' NUMERIC 'TO' NUMERIC
COPY
'COPY' NUMERIC 'TO' NUMERIC
SUB
'SUB' NUMERIC 'FROM' NUMERIC
MUL
'MUL' NUMERIC 'WITH' NUMERIC
NAND
'NAND' NUMERIC 'WITH' NUMERIC
MOD
'MOD' NUMERIC 'BY' NUMERIC
DIV
'DIV' NUMERIC 'BY' NUMERIC
NUMERIC
NAME | INTEGER | 'CELL' INTEGER ['INDIRECT']
BRANCH_STATEMENT
GOTO | GOSUB | STOP | RETURN
STOP
'STOP'
RETURN
'RETURN'
GOSUB
'GOSUB' NUMERIC
GOTO
'GOTO' NUMERIC
LINE_NUMBER
'LINE' INTEGER ':'
INTEGER
DECINT { DECINT }
DECINT
'0' .. '9'