gplz.((o))

The syntax reads as follows:

<code class="python">FILE = SEQUENCE
SEQUENCE = '(' OBJECT [{ (',' OBJECT) }] ')'.
OBJECT = '(' OBJECTDEF ')'.
OBJECTDEF = ASSIGNMENT | WHILE | IF | WHILE_UNLESS | UNTIL_DO |
    IF_ELSE | IF_UNLESS | IF_PROVIDED | FUNCDEF | FUNCCALL | PRINT
    | EXPRESSION.
IF = 'IF ' OBJECT ' DO ' OBJECT.
WHILE = 'WHILE' OBJECT ' DO ' OBJECT.
WHILE_UNLESS = 'WHILE ' OBJECT ' DO ' OBJECT ' UNLESS ' OBJECT.
UNTIL_DO = 'UNTIL ' OBJECT ' DO ' OBJECT.
IF_ELSE = 'IF ' OBJECT ' THEN ' OBJECT ' ELSE ' OBJECT.
IF_UNLESS = 'IF ' OBJECT ' THEN ' OBJECT ' UNLESS ' OBJECT.
IF_PROVIDED = 'IF ' OBJECT ' THEN ' OBJECT ' PROVIDED ' OBJECT.
PRINT = '<<' EXPRESSION.
ASSIGNMENT = VARIABLE ('='|'+='|'-='|'*='|'/='|'%='|'|='|'&=')
    (('(' EXPRESSION ')') | NAME).
FUNCDEF = NAME '(' [NAME {',' NAME}] ')=' SEQUENCE.
FUNCCALL = NAME '(' [EXPRESSION {',' EXPRESSION}] ')'
EXPRESSION = OP0 {('<'|'=='|'>'|'<='|'>='|'!=') OP0}. ')'.
OP0 = OP1 {('+'|'-')OP1}.
OP1 = OP2 {('*'|'/'|'%')OP2}.
OP2 = OP3 {('|')OP3}.
OP3 = OP4 {('&')OP4}.
OP4 = ['!'] ('(' EXPRESSION ')' | '(' FUNCCALL ')' | VARIABLE | LITERAL).
LITERAL = DECINT.
NAME = CHAR { CHAR | DIGIT }.
CHAR = 'a' .. 'z'.
DIGIT = '0' .. '9'.
DECINT = DIGIT {DIGIT}.

Some point to notice:

New statements as of revision 1.4

'.<<' = Print integer as char 
WHILE-x DO-y ELSE-z = The name is a give-away 
FOR x IN y DO z = x is the name of a variable. y is an integer or a variable. z is the expression to execute.

Example

Hello, .((o)) World

# HELLO, WORLD in .((o))

(((<<"Hello, World")

Brackets rule. The following programm will print the first 20 fibonacci numbers

# FIBONACCI in .((o))
((f(x)=((i=x),(j=x),(c=(x-x))),((f(1)),
(WHILE (c<20) DO 
            
    ((<<j),(h=(j+i)),(j=i),(i=h),(c+=1))

The code is so obvious, I could have named this language "easy", but "((o))" is a much cooler name for a programming language.