/*
** Example: expressions intro
** 
** TODO
*/

a: 1;
b: 2;
c: 3;

// @notes See expr_c_like.mdesk for an explanation of why these have to be
//  wrapped in parentheses in some cases.
l: 5*5 + 1;
m: (5*(5 + 1));
n: ((5 + 1)*(5 + 1));

w: 0x100;
x: a;
y: b + w*a;
z: c + w*b + w*w*a;

// @notes The Metadesk expression parser will automatically accept any set with
//  delimiters as a leaf. In this example we are doing an extra custom check to
//  disallow these cases.
range:  ([0,64));
origin: ({50,100});
p:      (origin + {0, -20});

// @notes We can also generate errors that point at operators just as easily:
`no_&`: 5000 & 0xFF;

// @notes The expression parser will produce an error if the series of nodes
//  that form the expression cannot form a complete expression.
bad_1: a b c;
bad_2: z % b;

// @notes Surprising things might count as expressions! Anything can be a leaf
//  so long as it is not recognized as an operator.
`good?`: ! + ? * ==;
