Files
interpreteur-lir/src/interpreteurlir/donnees/Variable.java
T
SylvanCourtiol 60219ea6d9 Prototype 2.0
2021-05-16 18:17:28 +02:00

94 lines
2.7 KiB
Java

/**
* Variable.java 8 mai 2021
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
*/
package interpreteurlir.donnees;
import interpreteurlir.donnees.litteraux.Chaine;
import interpreteurlir.donnees.litteraux.Entier;
import interpreteurlir.donnees.litteraux.Litteral;
import interpreteurlir.InterpreteurException;
/**
* Associe un littéral à un identificateur
*
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*
*/
public class Variable extends Object implements Comparable<Variable> {
/** Identificateur de cette variable */
private Identificateur identificateur;
/** Valeur de cette variable */
private Litteral valeur;
/**
* Initialise une variable
* @param identificateur associé à cette variable
* @param valeur associé à cette variable
* @throws InterpreteurException en cas d'incompatibilité entre
* l'identificateur et le type de la valeur à lui associer
*/
public Variable(Identificateur identificateur, Litteral valeur) {
if (!isVariable(identificateur, valeur)) {
throw new InterpreteurException("Identificateur '"
+ identificateur.toString()
+ "' et type de "
+ valeur.toString()
+ "incompatible.");
}
this.identificateur = identificateur;
this.valeur = valeur;
}
private static boolean isVariable(Identificateur id, Litteral valeur) {
return id instanceof IdentificateurChaine && valeur instanceof Chaine
|| id instanceof IdentificateurEntier && valeur instanceof Entier;
}
/**
* @return la valeur de cette variable
*/
public Litteral getValeur() {
return valeur;
}
/**
* Modifie la valeur de cette variable
* @param nouvelleValeur
*/
public void setValeur(Litteral nouvelleValeur) {
if (isVariable(identificateur, nouvelleValeur)) {
this.valeur = nouvelleValeur;
}
}
/**
* @return l'identificateur de cette variable
*/
public Identificateur getIdentificateur() {
return identificateur;
}
/* non javadoc @see java.lang.Object#toString() */
@Override
public String toString() {
return identificateur.toString() + " = " + valeur.toString();
}
public int compareTo(Variable aComparer) {
return identificateur.compareTo(aComparer.identificateur);
}
}