Salve, ho un piccolo problema nello scorrere una lista per determinare se un dato valore le appartiene o no:
codice:
valorizzazione ::= punteggio:punt identificatore:nome
{: //Recupera l'idenficatore della prodotto selezionato
String identificatoreClasse = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
//Ricerca ed individua nella hash table l'idenficatore corrispondente alla classe corrente (identificatoreClasse)
List lista_attributi = (List)parser.Tabellahash.get(identificatoreClasse);
//Ricerca ed individua nella lista il peso associato a questo attributo
int peso = ((Attributo)lista_attributi.get(lista_attributi.indexOf(new Attributo(nome)))).peso;
for(int i=0;i<lista_attributi.size();i++){
if(lista_attributi.get(i).equals(nome)){
System.out.println(lista_attributi.get(i) ; ) ;
RESULT = new Integer(peso * punt.intValue());}
else {
//Eseguo il calcolo,moltiplica il peso dell'attributo per il valore associato ad esso
RESULT = new Integer(peso * 1);
}
}
:};
In poche parole ho una regola di produzione del parser, che dovrebbe cercare se nella ListaAttributo c'è il termine Idenficatore:nome ed una volta trovato, fare gli opportuni calcoli!
Attributo è una semplice classe allocata quando serve per contenere i dati che si trovano nella hashmap.
Vi sarei grata se qualcuno avesse qualche suggerimento! Sto fondendo!