anchor.diff:  COMMA
   :','
   ;
  -
  -
  +UNIFORM
  +:'uniform('INT','INT')'
  +;
   
   booleanNegationExpression
   : (NOT^)* constantValue
  +//: (NOT^)*  (LPARA!)* relationalExpression (RPARA!)*
   ;
     
   always_statement
  -: ALWAYS^  SEMICOL!
  +: ALWAYS^  LCURL! (statement)* RCURL!  //SEMICOL!
   ;
   signExpression
   :(PLUS^|MINUS^)*  booleanNegationExpression
  +//:(PLUS^|MINUS^)* constantValue
   ;
   multiplyingExpression
     : signExpression ((MULT^|DIV^|MOD^) signExpression)*
     ;
   
  +
  +
   addingExpression
     : multiplyingExpression ((PLUS^|MINUS^) multiplyingExpression)*
     ;
  
positive.code: 
  @header {
    package lpn.parser.properties;
    
   // package antlrPackage;
  }
  
  @lexer::header { 
  
negative.code: relationalExpression
    : addingExpression ((EQUAL^|NOT_EQUAL^|GET^|GETEQ^|LET^|LETEQ^|SAMEAS^) addingExpression)*
    ;
  
  logicalExpression
     : relationalExpression ((AND^|OR^) relationalExpression)*
  	 ;
  //logicalExpression
   //  : relationalExpression ((AND^|OR^) relationalExpression)*
  //   ;	 
  
  unaryExpression
    : (NOT^)*  LPARA! logicalExpression RPARA! 
   // : (NOT^)*   logicalExpression 
    ;
  
  combinationalExpression
  : unaryExpression ((AND^|OR^) unaryExpression)*
  ;
  expression
  	//: relational
    //:constantValue
    //|primitiveElement
    //|addingExpression
    //|multiplyingExpression
    //:  unaryExpression 
   // | logicalExpression
    :combinationalExpression
    | logicalExpression
     ;
  
  
  constantValue
  	: INT | ID | UNIFORM
  	;
  
  wait_statement
  	: WAIT^ LPARA! expression RPARA! SEMICOL!
  	| WAIT^ LPARA! expression COMMA!  expression (GET expression)* RPARA! SEMICOL!
  	;
  		
  	
  