Это не столько синтаксис, сколько побитовые логические операторы:
Bitwise XOR ^-
http://help.adobe.com/en_US/FlashPla...ml#bitwise_XOR
Bitwise OR | -
http://help.adobe.com/en_US/FlashPla...tml#bitwise_OR
Bitwise AND & -
http://help.adobe.com/en_US/FlashPla...ml#bitwise_AND
Они работают с бинарным представлением числа, что бы понять, можно поигратся с такиви вещами:

Код AS3:
trace( "0001 ^ 0010" );
trace( ( 1 ^ 2 ).toString( 2 ) );
trace( "0011 ^ 0010" );
trace( ( 3 ^ 2 ).toString( 2 ) );
trace( "" );
trace( "0001 | 0010" )
trace( ( 1 | 2 ).toString( 2 ) );
trace( "0011 | 0010" );
trace( ( 3 | 2 ).toString( 2 ) );
trace( "" );
trace( "0001 & 0010" );
trace( ( 1 & 2 ).toString( 2 ) );
trace( "0011 & 0010" );
trace( ( 3 & 2 ).toString( 2 ) );
Один из простейших примеров - Флаги:

Код AS3:
package
{
import flash.display.Sprite;
public class Test extends Sprite
{
protected static const SWEET:uint = 1;
protected static const SOAR:uint = 2;
protected static const HOT:uint = 4;
protected static const SAVORY:uint = 8;
public function Test()
{
super();
trace( taste( SWEET | SOAR ) );
trace( taste( HOT | SAVORY ) );
trace( taste( SOAR | SAVORY ) );
trace( taste( SWEET | HOT | SOAR ) );
trace( taste( SWEET | SAVORY | HOT | SOAR ) );
}
protected function taste( flags:uint ):String
{
var result:Array = [];
if( flags & SWEET )
result.push( "sweet" );
if( flags & SOAR )
result.push( "soar" );
if( flags & HOT )
result.push( "hot" );
if( flags & SAVORY )
result.push( "savory" );
return result.join( " " );
}
}
}