anchor.diff:  	;
   	
   side_effect_statement
  -	:	expression
  -	;
  -
  -goto_statement
  -	:	'goto' plain_identifier ;
  -
  -//call_statement
  -//	:	call ;
  -//	
  -//call	:	identifier  '(' actual_argument_list ')' ;
  -//
  -//actual_argument_list
  -//	:	
  -//	|	expression ( ',' expression )* ;
  -	
  -while_statement	:	'while' '(' expression ')' block ( 'continue' block )? ;
  -
  -if_statement
  -	:	'if' '(' expression ')' block ( 'else' block )? ;
  -	
  -return_statement
  -	:	'return' expression? ;
  -
  -loop_control_statement
  -	:	( 'last' | 'next' ) plain_identifier? ;
  -
  -//
  -// Expressions:
  -//
  -
  -//value	:	 literal | lvalue ;
  -
  -construction_expression
  -	:	'new' identifier  ;
  -
  -argument_expression_list
  -	:	assignment_expression ( ',' assignment_expression )*
  -	;
  -
  -additive_expression
  -	:	multiplicative_expression ( '+' multiplicative_expression | '-' multiplicative_expression )*
  -	;
  -
  -multiplicative_expression
  -	:	unary_expression ( '*' unary_expression | '/' unary_expression | '%' unary_expression )*
  -	;
  -
  -unary_expression
  -	: postfix_expression
  -	| '++' unary_expression
  -	| '--' unary_expression
  -	| unary_operator unary_expression
  -	;
  -
  -postfix_expression
  -	:	primary_expression
  -	(	'[' expression ']'
  -	|	'(' ')'
  -	|	'(' argument_expression_list ')'
  -	|	'.' plain_identifier
  -	|	'++'
  -	|	'--'
  -	)*
  -	;
  -
  -unary_operator
  -	:	'+'
  -	|	'-'
  -	|	'!'
  -	;
  -
  -primary_expression
  -	:	identifier
  -	|	literal
  -	|	'(' expression ')'
  -	;
  -
  -expression
  -	:	assignment_expression
  -	|	construction_expression
  -	;
  -
  -assignment_expression
  -	:	lvalue assignment_operator assignment_expression
  -	;
  -	
  -lvalue
  -	:	unary_expression
  +	:	assignment_statement
  +	|	expression
  +	;
  +
  +assignment_statement
  +	:	primary_expression assignment_operator expression
   	;
   
   assignment_operator
  
positive.code: grammar JakoParser;
  
  options {
  //    backtrack=true;
      memoize=true;
  //    k=2;
  }
  
negative.code: 	|	'~='
  	;
  
  goto_statement
  	:	'goto' plain_identifier ;
  	
  while_statement	:	'while' '(' logical_expression ')' block ( 'continue' block )? ;
  
  if_statement
  	:	'if' '(' expression ')' block ( 'else' block )? ;
  	
  return_statement
  	:	'return' expression? ;
  
  loop_control_statement
  	:	( 'last' | 'next' ) plain_identifier? ;
  
  //
  // Expressions:
  //
  
  expression
  	:	primary_expression
  	|	arithmetic_expression
  	|	logical_expression
  	;
  
  primary_expression
  	:	( identifier | literal | '(' expression ')' | 'new' identifier )
  	(	'[' expression ']'
  	|	'(' ')'
  	|	'(' argument_expression_list ')'
  	|	'.' plain_identifier
  	)*
  	;
  
  argument_expression_list
  	:	expression ( ',' expression )*
  	;
  
  arithmetic_expression
  	:	primary_expression
  	|	'-' arithmetic_expression
  	|	'(' arithmetic_expression ( '+' | '-' | '*' | '/' | '%' ) arithmetic_expression ')'
  	;
  
  logical_expression
  	:	primary_expression
  	|	equality_expression
  	|	relational_expression
  	|	'!' logical_expression
  	|	'(' logical_expression ( '||' | '&&' | '==' | '!=' ) logical_expression ')'
  	;
  
  equality_expression
  	:	expression ( ( '==' | '!=' ) expression )*
  	;
  
  relational_expression
  	:	arithmetic_expression ( ( '<' | '>' | '<=' | '>=' ) arithmetic_expression )*
  	;
  
  //
  