anchor.diff:      	}
       ;
   
  -bitwiseNegation returns [ExpressionNode expr]
  +bitwiseNegation returns [ExprTree expr] //[ExpressionNode expr]
   	: 	{boolean neg = false;}
   		('~' {if(neg){neg = false;} else{neg = true;}})* unary
   			{
   				if(neg){
  -					$expr = new BitNegNode($unary.expr);
  +					//$expr = new BitNegNode($unary.expr);
  +					$expr = new ExprTree(null, $unary.expr, "~", 'l');
   				}
   				else{
   					$expr = $unary.expr;
  
positive.code:          ';')* '<' '/' 'const' '>'
      ;
  
  //TODO: add global variables to state vector
  globalVariables
  	:	'<' 'var' '>' (var=ID 
  			{
  				// make sure global variables are consistently defined in each lpn file
  				if(GlobalSize == 0){
  					if(GlobalConstHashMap.containsKey($var.text)){
  						System.err.println("error on line" + $var.getLine() + ": " + $var.text + "already exists as a constant"); 
  	                    System.exit(1);
  					}
  					else if(GlobalVarHashMap.containsKey($var.text)){
  						System.err.println("error on line " + $var.getLine() + ": " + $var.text + " has already been defined");
  						System.exit(1);
  					}
  				}
  				else{
  					if(!GlobalVarHashMap.containsKey($var.text)){
  						System.err.println("error on line " + $var.getLine() + ": " + $var.text + " is inconsistently defined");
  						System.exit(1);
  					}
  
negative.code:     	'<' '/' 'inst' '>'
      ;
  
  logic returns [List<String> initMarking, LpnTranList lpnTranSet]//[List<Integer> initMarking, LpnTranList lpnTranSet]
      :   {$lpnTranSet = new LpnTranList();}
      	marking (transition {$lpnTranSet.add($transition.lpnTran);})+
          {
  