Expression Syntax

The WorldEdit expression parser is supposed to work like Java and related languages, with a few subtle differences:

  • Final semicolons can be omitted in most cases.

  • The last value in a sequence is always returned, even without a return statement.

  • The binary infix ^ operator is a power operator instead of an xor operator and has an according priority as well.

  • There is a postfix factorial operator (!).

  • There is a binary infix near operator (~=).

  • No objects :)

Operators

The expression parser uses Java’s precedence rules, with the following exceptions and additions:

  • The binary power operator (^) is between priority 2 and 3

  • The postfix factorial operator (!) has a priority of 2

  • The near operator (~=) has a priority of 7

Binary infix

These operators are put between their two operands.

Prefix

These operators precede the expression they apply to.

Postfix

These operators succeed the expression they apply to.

Ternary infix

The ternary operator is used to represent a conditional expression in a compact way:

<condition> ? <true-branch> : <false-branch>

It works exactly like the if/else statement, except that the branches can only be single expressions.

Functions

Constants

Block Statements

Block statements are groups of statements enclosed in braces:

{ x=5; y=6; }

They are mostly used in conjunction with control structures.

Control Structures

Loops

Loops can at most loop 256 times.