anchor.diff:  EQ		 : '==';
   NEQ      : '!=';
   
  -PROD_OP : '->';
  -
  +INCLUDE: 'include';
  +STATE: 'state';
  +NODE: 'node';
  +GRAPH: 'graph';
   BEGIN: 'begin';
   END: 'end';
  -NODE: 'node';
   INPUTS: 'inputs';
   OUTPUTS: 'outputs';
  -GRAPH: 'graph';
  -
   OPTION : 'option';
   
   BOOLEAN_LITERAL
  
positive.code:     ;
  
  path
      :       (REF| SELECT)? segments+=pathSegment ('.' segments+=pathSegment)*
      ;
  
  pathSegment
          :       IDENT
          |       (INPUTS| OUTPUTS) LSQUARE pathIndex RSQUARE
          ;
  
  pathIndex
  	    :	index=(NUMBER
          |   STRING_LITERAL)
  	;
  
  portAssignment
  
negative.code:     : expr NEWLINE
      ;
  
  anonymousGraphStmt
      :   portAssignment
      |   funcDeclInit NEWLINE
      |   funcDecl NEWLINE
      |   anonExpr
      ;
  
  expr : '(' expr ')'						      #parensExpr
  	 |	NOT_OP expr 				          #notExpr
  	 |  MINUS_OP expr      					  #negExpr
  	 |  expr AND_OP expr  		  			  #andExpr
  