anchor.diff:  	;
   
   block
  -	:	LBRACE blockStatement* RBRACE
  -	;
  -
  -localVariableDeclarationStatement
  -	:	localVariableDeclaration SEMI
  -	;
  -
  -localVariableDeclaration
  -	:	nonConstVariableDeclaration
  -	|	constVariableDeclaration
  -	;
  -
  -nonConstVariableDeclaration
  -	:	VAR Identifier ASSIGN expression
  -	;
  -
  -constVariableDeclaration
  -	:	CONST nonConstVariableDeclaration
  +	:	LBRACE statement* RBRACE
   	;
   	
   formalParameter
  
positive.code: 
  // statements
  statement
  	:	block
  	|	IF parExpression statement (ELSE statement)?
  	|	FOR LPAREN forControl RPAREN statement
  	|	WHILE parExpression statement
  	|	BREAK SEMI
  	|	CONTINUE SEMI
  	|	SEMI
  	|	statementExpression SEMI
  	|	attachEmitterStatement SEMI
  	|	fireStatement SEMI
  	|	waitStatement SEMI
  	;
  
  attachEmitterStatement
  	:	Identifier ATTACH Identifier parExpressionList withUpdaterOption?
  	;
  
  fireStatement
  	:	FIRE Identifier parExpressionList fromEmitterOption
  	;
  
  waitStatement
  	:	WAIT expression FRAMES
  	;
  
  fromEmitterOption
  	:	FROM Identifier
  	;
  
negative.code: script
  	:	functionDeclaration*
  	;
  	
  localVariableDeclaration
  	:	VAR Identifier ASSIGN expression
  	;
  
  functionDeclaration
  	:	FUNCTION Identifier formalParameters functionBody
  