anchor.diff:        {
            String escopo = pilhaDeTabelas.topo().getEscopo();
            if (!escopo.equals("funcao")) {
  -            infrastructure.ErrorListeners.SemanticErrorListener.ScopeNotAllowed($RETORNAR.line);
  +            SemanticErrorListener.ScopeNotAllowed($RETORNAR.line);
            }
         }
       ;
  
positive.code:     | '^' IDENT
      {   // Logs semantic error if variable wasnt found in any of the simbol tables
          if (!pilhaDeTabelas.existeSimbolo($IDENT.getText().toLowerCase())) {
              infrastructure.ErrorListeners.SemanticErrorListener.VariableDoesntExist($IDENT.line,$IDENT.getText());
          }
      }
        outros_ident dimensao '<-' expressao
      | IDENT
      {   // Logs semantic error if variable wasnt found in any of the simbol tables
          if (!pilhaDeTabelas.existeSimbolo($IDENT.getText().toLowerCase())) {
              infrastructure.ErrorListeners.SemanticErrorListener.VariableDoesntExist($IDENT.line,$IDENT.getText());
          }
      }
        chamada_atribuicao
  
negative.code:         // A type has been consumed:
          // if it has been declared before, logs semantic error.
          // Otherwise, add it to the current simbol table.
          if (pilhaDeTabelas.existeSimbolo($tipo.type.toLowerCase())) {
              SemanticErrorListener.TypeDoesntExist($IDENT.getLine(), $tipo.type);
          } else {
              pilhaDeTabelas.topo().adicionarSimbolo($tipo.type.toLowerCase(), "tipo", $tipo.type.toLowerCase());
          }
      }
      ;
  