Cind language documentation

Priority in expression

List of the priority levels in the expression of the Cind language:

priority level operator or statement selecting from
I brackets (...) that separates independent expression
or vector, unless it is a type cast operator
left
II instructions with own statement, e.g. block { ... }, if, enter, etc.,
preservation operator: $x,
and expressions with type operators.
left
III -x (unary negation) applied to numbers and expressions
only at the beginning or when the preceding element is an another operator
right
IV messages: x.msg, x.[msg],
properties: x:y, x:[y],
element operator: x[y],
function execution: x(y,..) but only with a vector or expression in brackets (...)
left
V x++, x-- left
VI ++x, --x, -x, !x, ~x,
type cast operator: (type)x,
and the rest cases of the function execution: f v
right
VII & (bitwise and) left
VIII ^ (bitwise xor) left
IX | (bitwise or) left
X *, /, % (multiplication, division, modulo) left
XI +, - (addition, subtraction) left
XII <<, >> (bitwise left and right shift) left
XIII <, <=, >, >= (less than or greater than or equal to) left
XIV ==, != (equal to or not equal to) left
XV && (logical and) left
XVI || (logical or) left
XVII x?y:z (ternary conditional) left
XVIII -> (functional operator) left
XIX %%, -% (function composition) left
XX =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>= (assignment operators) right

Column "selecting from" says if the expression statement is interpreted from left-to-right or from right-to-left.

Examples:

2 + 2 * 2 // 6 2 / 2 * 2 // 2 2 + - 1 // 2 + (-1) x & y == z // (x & y) == z x = y = z // x = (y = z) x ++ y // (x++)(y) x ++ ++ y // ((x++)++)(y) ++ x -- // ++(x--) x -> x + 1 // fun(x) { return x+1; }

Cind programming language 1.0.4

 

Advertisements