anchor.diff:  returnStat : 'return' expr? ';'
              ;
   
  +ifElseStat : ifStat (elseStat)?
  +           ;
  +
  +ifElseExprStat : block 
  +               | ifElseStat
  +               | returnStat
  +               | assignStat
  +               | exprStat
  +               ;
  +
  +ifStat : 'if' '(' expr ')' ifElseExprStat
  +       ;
  +
  +elseStat : 'else' ifElseExprStat
  +         ;
  +
   exprStat : expr ';'
            ;
   
  
positive.code: RB        : '}';
  
  AS    : '=';
  MUL   : '*';
  DIV   : '/';
  PLUS  : '+';
  MINUS : '-';
  
  ID  : (LETTER) (LETTER | NUMBER)*;
  INT : NUMBER+;
  
  BLOCKCOMMENT : '/*' .*? '*/' -> skip;
  LINECOMMENT  : '//' .*? '\n' -> skip;
  WS           : [ \t\n\r]+ -> skip;
  
  
  
  //Parser
  file : (funcDecl | varDecl)+ EOF?
       ;
  
  varDecl : type ID ('=' expr)? ';'
          ;
  
  type : TYPEINT                                   #FormTypeInt
       ;
  
  funcDecl : type ID '(' paramTypeList? ')' block
  
negative.code: fragment LETTER    : [a-zA-Z];
  
  TYPEINT  : 'int';
  TYPEFLOAT  : 'float';
  TYPEBOOLEAN : 'boolean';
  
  IF     : 'if';
  ELSE   : 'else';
  RETURN : 'return';
  
  LP        : '(';
  