Iexp

Iexp or IEXP (pronounced /'jeksp/) is an infix expression based programming language.

Overview
The only datatype in Iexp is a iex, an infix expression. There are two kind of iexes: operative and non-operative. An operative iex consists of two operands and an operator, placed in the middle. A non-operative iex is a single operator, in other words, its operands are both null pointers.

The syntax is very simple. The input file must have a single line of code, a space-separated list of operators and non-operative operators. No parentheses are allowed, they are unnecessary. Iexp has an incredible and innovative syntax which replaces all need for parentheses, called the dot notation. The precedence of an operator is determinated from the number of dots before it. More dots, higher precedence.

a op1 b op2 c = (a op1 b) op2 c a op1 b ·op2 c = a op1 (b op2 c)

The Iexp interpreter, after parsing, starts evaluating iexes following the precedence. If, however, a iex is starred (has a star before the operator after the dots), it is not evaluated. The interpreter instead returns a starless copy of the starred iex. It is not necessary to star non-operative expressions. A lone star signifies an empty, zero-length iex.

p + q         => pq q *+ p         => p + q q *+ p *+ r    => p + q *+ r : left p ·*+ q => p

A colon is typically used if the left operand is ignored. left is a iexo (see below) which returns the left operand of its right operand.

Iexo reference
A list of Iexp operators (iexos):

Hello world
Hello world!

Because it is impossible to create normal spaces in Iexp, the above example uses a non-breaking space.

Fibonacci sequence
fib ·*is : ····2 : ···then : ·······2 : ······-. ·····then * ·······fib : ·········2 : ········-. ······*+ * ·······fib : ·········2 : ········- .. ····*or. ··or * in * ·*fib .....