Difference between revisions of "K65 Evaluator"
From KK's Wiki
m |
m |
||
| Line 1: | Line 1: | ||
[[Category:K65]] | [[Category:K65]] | ||
__FORCETOC__ | __FORCETOC__ | ||
| − | Evaluator in [[K65]] is compile-time executed expression language very similar to C/C++ expressions. | + | Evaluator in '''[[K65]]''' is compile-time executed expression language very similar to C/C++ expressions. |
=== Evaluator operators === | === Evaluator operators === | ||
Revision as of 03:20, 21 December 2014
Evaluator in K65 is compile-time executed expression language very similar to C/C++ expressions.
Evaluator operators
Available operators and their precedence levels are similar to operators in C and C++
| Precedence | Operator | Description | Associativity |
|---|---|---|---|
| 2
highest |
++
|
Suffix increment | Left-to-right |
--
|
Suffix decrement | ||
()
|
Function call | ||
[]
|
Array subscripting | ||
.
|
Single argument function call | ||
| 3 | ++
|
Prefix increment | Right-to-left |
--
|
Prefix decrement | ||
+
|
Unary plus | ||
-
|
Unary minus | ||
!
|
Logical NOT | ||
~
|
Bitwise NOT (One's Complement) | ||
| 5 | *
|
Multiplication | Left-to-right |
/
|
Division | ||
%
|
Modulo (remainder) | ||
| 6 | +
|
Addition | Left-to-right |
-
|
Subtraction | ||
| 7 | <<
|
Bitwise left shift | Left-to-right |
>>
|
Bitwise right shift | ||
| 8 | <
|
Less than | Left-to-right |
<=
|
Less than or equal to | ||
>
|
Greater than | ||
>=
|
Greater than or equal to | ||
?>
|
Select greater value (maximum) | ||
?<
|
Select smaller value (minimum) | ||
| 9 | ==
|
Equal to | Left-to-right |
!=
|
Not equal to | ||
| 10 | &
|
Bitwise AND | Left-to-right |
| 11 | ^
|
Bitwise XOR (exclusive or) | Left-to-right |
| 12 | |
|
Bitwise OR (inclusive or) | Left-to-right |
| 13 | &&
|
Logical AND | Left-to-right |
| 14 | ||
|
Logical OR | Left-to-right |
| 15 | ?:
|
Ternary conditional | Right-to-left |
| 16 | =
|
Direct assignment | Right-to-left |
+=
|
Assignment by sum | ||
-=
|
Assignment by difference | ||
*=
|
Assignment by product | ||
/=
|
Assignment by quotient | ||
%=
|
Assignment by remainder | ||
<<=
|
Assignment by bitwise left shift | ||
>>=
|
Assignment by bitwise right shift | ||
&=
|
Assignment by bitwise AND | ||
^=
|
Assignment by bitwise XOR | ||
|=
|
Assignment by bitwise OR | ||
| 18
lowest |
,
|
Expression list (executes in sequence, returns value of the last) | Left-to-right |
Evaluator functions
Following functions are available within evaluator expressions.
| Function name | Description |
|---|---|
| acos( x ) | Arcus cosinus |
| addbyte( sec, b ) | Add byte b to section sec |
| asin( x ) | Arcus sinus |
| ceil( x ) | Round up to nearest integer |
| clamp( x, min, max ) | Clamp x to range min to max |
| color( r, g, b ) | Return palette index for nearest color to color (r,g,b) |
| color( x ) | Return palette index for nearest color specified in format 0xRRGGBB |
| cos( x ) | Cosinus |
| error( err ) | Print error message err ane terminate compilation |
| floor( x ) | Round down to nearest integer |
| frac( x ) | Get fractional part ( x-floor(x) ) |
| index( tab, x ) | 1-dimensional indexing operator ( same as tab[x] ) |
| index( tab, x, y ) | 2-dimensional indexing operator ( same as tab[x,y] ) |
| max( a, b ) | Maximum |
| min( a, b ) | Minimum |
| pow( x, y ) | Power function |
| print( msg ) | Print message msg |
| rnd( ) | Random value 0 <= x < 1 |
| round( x ) | Round to nearest integer |
| sin( x ) | Sinus |
| size( sec ) | Current size of section sec |
| sqrt( x ) | Square root |