anchor.diff:      BRACKET_BRACE_OP body BRACKET_BRACE_CLOSE;
   
   programHeader :
  -    (ctrlImport)+;
  +    (ctrlImport)+ ctrlModuleName;
  +
  +ctrlModuleName :
  +    CTRL_MODULE ID SEMICOLON;
   
   ctrlImport:
  -    CTRL_IMPORT ID SEMICOLON;
  +    CTRL_IMPORT ID (CTRL_DOT ID)* SEMICOLON;
   
   statement :
       ((expression | returnStatement) SEMICOLON) | definition | ifStatement | whileLoop;
  
positive.code:     CTRL_DEF (variableDefinition | functionDefinition);
  
  variableDefinition :
      type ID TAB_SUFFIX? expression SEMICOLON;
  
  value :
      VAL_STRING | VAL_INT | VAL_FLOAT;
  
negative.code:     atomicExpression | (BRACKET_PAREN_OP expression BRACKET_PAREN_CLOSE);
  
  atomicExpression:
      value | identifier | functionInvocation;
  
  assigment :
      identifier (BRACKET_SQUARE_OP VAL_INT BRACKET_SQUARE_CLOSE)? EQUAL expression;
  
  functionDefinition :
      functionHeader bodyBlock;
  
  functionInvocation:
      identifier functionArgs;
  
  functionHeader :
      type identifier functionArgs;
  
  functionArgs :
      BRACKET_PAREN_OP ((expression) (COMMA expression)*)? BRACKET_PAREN_CLOSE;
  
  identifier:
      ID;
  
  type:
      ((INT | FLOAT | STRING) TAB_SUFFIX?) | VOID;
  
  operator :
      OP_PLUS | OP_MINUS | OP_DIVIDE | OP_MULTIPLY | OP_COMPARE | OP_COMPARE_NEG | OP_AND | OP_OR;
  