@Override
  public void inAAlt(AAlt node) {
    counter = 0;
    processingParsedAlt = true;

    if (node.getAltName() != null) {
      currentAlt = "A" + ResolveIds.name(node.getAltName().getText()) + currentProd;
    } else {
      currentAlt = "A" + currentProd;
    }

    ids.names.put(node, currentAlt);
  }
  /*
   * Here, a map which associate the current alternative with the list of elems
   * is created.
   */
  public void caseAAlt(AAlt alt) {
    // contains all the elements in the alternative, no matter if they are list or not
    listElemsGlobal = new LinkedList();

    // contains only single (without operator * or +) element of the alternative.
    listElems = new LinkedList();

    // contains only element of the alternative which are list(operator * or +).
    listElemslist = new LinkedList();

    currentAlt = (String) ids.names.get(alt);

    AElem[] list_elems = (AElem[]) alt.getElems().toArray(new AElem[0]);
    for (int i = 0; i < list_elems.length; i++) {
      list_elems[i].apply(this);
    }

    alts_elemsGlobal.put(currentAlt, listElemsGlobal);
    alts_elems.put(currentAlt, listElems);
    alts_elems_list.put(currentAlt, listElemslist);
  }